Copy disabled (too large)
Download .txt
Showing preview only (18,017K chars total). Download the full file to get everything.
Repository: lynx-family/lynx
Branch: develop
Commit: 826232a2a678
Files: 9795
Total size: 56.3 MB
Directory structure:
gitextract_4zx3e2p3/
├── .clang-format
├── .editorconfig
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── 1-bug-report.en-US.yml
│ │ ├── 2-feature-request.en-US.yml
│ │ └── config.yml
│ ├── PULL_REQUEST_TEMPLATE.md
│ ├── actions/
│ │ ├── android-explorer-build/
│ │ │ └── action.yml
│ │ ├── android-sdk-release/
│ │ │ └── action.yml
│ │ ├── clay-macos-build/
│ │ │ └── action.yml
│ │ ├── common-deps/
│ │ │ └── action.yml
│ │ ├── free-android-disk/
│ │ │ └── action.yml
│ │ ├── generate-changelog/
│ │ │ └── action.yml
│ │ ├── get-latest-tag/
│ │ │ └── action.yml
│ │ ├── harmony-explorer-build/
│ │ │ └── action.yml
│ │ ├── ios-common-deps/
│ │ │ └── action.yml
│ │ ├── ios-explorer-build/
│ │ │ └── action.yml
│ │ ├── ios-sdk-publish/
│ │ │ └── action.yml
│ │ ├── macos-explorer-build/
│ │ │ └── action.yml
│ │ ├── release-changelog/
│ │ │ └── action.yml
│ │ ├── setup-android-env/
│ │ │ └── action.yml
│ │ ├── windows-common-deps/
│ │ │ └── action.yml
│ │ └── windows-explorer-build/
│ │ └── action.yml
│ └── workflows/
│ ├── ci.yml
│ ├── cocoapods_token_keepalive.yml
│ ├── codeql.yml
│ ├── css-defines-publish.yml
│ ├── issue-management.yml
│ ├── lynx-core-publish.yml
│ ├── lynx-types-publish.yml
│ ├── publish-release.yml
│ ├── sdk-release-test.yml
│ ├── tasm-publish.yml
│ ├── type-config-publish.yml
│ └── type-element-api-publish.yml
├── .gitignore
├── .gn
├── .habitat
├── .npmrc
├── .prettierignore
├── .prettierrc
├── .rtf/
│ ├── android-ut-lynx.template
│ ├── config
│ ├── native-ut-devtool.template
│ └── native-ut-lynx.template
├── .tools_shared
├── AGENTS.md
├── BUILD.gn
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── CPPLINT.cfg
├── DEFAULT_REVIEWERS
├── Gemfile
├── LICENSE
├── NOTICE
├── README.md
├── SECURITY.md
├── agents/
│ └── code_review/
│ └── commit_message_format.md
├── base/
│ ├── CPPLINT.cfg
│ ├── README.md
│ ├── include/
│ │ ├── algorithm.h
│ │ ├── auto_create_optional.h
│ │ ├── auto_reset.h
│ │ ├── base_defines.h
│ │ ├── base_export.h
│ │ ├── base_public_headers.gni
│ │ ├── base_trace/
│ │ │ └── trace_event_utils.h
│ │ ├── boost/
│ │ │ └── unordered.h
│ │ ├── bundled_optional.h
│ │ ├── bundled_optional_lldb.py
│ │ ├── cast_util.h
│ │ ├── closure.h
│ │ ├── compiler_specific.h
│ │ ├── concurrent_queue.h
│ │ ├── datauri_utils.h
│ │ ├── debug/
│ │ │ ├── backtrace.h
│ │ │ ├── lynx_assert.h
│ │ │ └── lynx_error.h
│ │ ├── expected.h
│ │ ├── expected_internal.h
│ │ ├── file_utils.h
│ │ ├── flex_optional.h
│ │ ├── float_comparison.h
│ │ ├── fml/
│ │ │ ├── LICENSE
│ │ │ ├── concurrent_message_loop.h
│ │ │ ├── cpu_affinity.h
│ │ │ ├── delayed_task.h
│ │ │ ├── eintr_wrapper.h
│ │ │ ├── fml_trace_event_def.h
│ │ │ ├── hash_combine.h
│ │ │ ├── macros.h
│ │ │ ├── make_copyable.h
│ │ │ ├── memory/
│ │ │ │ ├── ref_counted.h
│ │ │ │ ├── ref_counted_internal.h
│ │ │ │ ├── ref_ptr.h
│ │ │ │ ├── ref_ptr_internal.h
│ │ │ │ ├── task_runner_checker.h
│ │ │ │ ├── weak_ptr.h
│ │ │ │ └── weak_ptr_internal.h
│ │ │ ├── message_loop.h
│ │ │ ├── message_loop_impl.h
│ │ │ ├── message_loop_task_queues.h
│ │ │ ├── platform/
│ │ │ │ ├── android/
│ │ │ │ │ ├── cpu_affinity.h
│ │ │ │ │ └── message_loop_android.h
│ │ │ │ ├── darwin/
│ │ │ │ │ ├── cf_utils.h
│ │ │ │ │ └── message_loop_darwin.h
│ │ │ │ ├── harmony/
│ │ │ │ │ └── message_loop_harmony.h
│ │ │ │ ├── linux/
│ │ │ │ │ ├── message_loop_linux.h
│ │ │ │ │ └── timerfd.h
│ │ │ │ ├── thread_config_setter.h
│ │ │ │ └── win/
│ │ │ │ ├── message_loop_win.h
│ │ │ │ ├── task_runner_win32.h
│ │ │ │ └── task_runner_win32_window.h
│ │ │ ├── raster_thread_merger.h
│ │ │ ├── shared_thread_merger.h
│ │ │ ├── synchronization/
│ │ │ │ ├── atomic_object.h
│ │ │ │ ├── count_down_latch.h
│ │ │ │ ├── semaphore.h
│ │ │ │ ├── shared_mutex.h
│ │ │ │ ├── shared_mutex_posix.h
│ │ │ │ ├── shared_mutex_std.h
│ │ │ │ ├── sync_switch.h
│ │ │ │ └── waitable_event.h
│ │ │ ├── task_queue_id.h
│ │ │ ├── task_runner.h
│ │ │ ├── task_runner_delegate.h
│ │ │ ├── task_source.h
│ │ │ ├── task_source_grade.h
│ │ │ ├── thread.h
│ │ │ ├── thread_host.h
│ │ │ ├── time/
│ │ │ │ ├── chrono_timestamp_provider.h
│ │ │ │ ├── time_delta.h
│ │ │ │ ├── time_point.h
│ │ │ │ ├── timer.h
│ │ │ │ └── timestamp_provider.h
│ │ │ ├── unique_fd.h
│ │ │ ├── unique_object.h
│ │ │ └── wakeable.h
│ │ ├── geometry/
│ │ │ ├── point.h
│ │ │ ├── rect.h
│ │ │ └── size.h
│ │ ├── hybrid_map.h
│ │ ├── linked_hash_map.h
│ │ ├── linked_hash_map_lldb.py
│ │ ├── log/
│ │ │ ├── alog_wrapper.h
│ │ │ ├── log_stream.h
│ │ │ ├── logging.h
│ │ │ ├── logging_base.h
│ │ │ └── logging_darwin.h
│ │ ├── lru_cache.h
│ │ ├── lynx_actor.h
│ │ ├── md5.h
│ │ ├── memory/
│ │ │ └── memory_pressure_level.h
│ │ ├── no_destructor.h
│ │ ├── path_utils.h
│ │ ├── platform/
│ │ │ ├── android/
│ │ │ │ ├── java_type.h
│ │ │ │ ├── jni_convert_helper.h
│ │ │ │ ├── jni_utils.h
│ │ │ │ └── scoped_java_ref.h
│ │ │ ├── darwin/
│ │ │ │ └── type_utils.h
│ │ │ └── harmony/
│ │ │ ├── harmony_vsync_manager.h
│ │ │ └── napi_util.h
│ │ ├── position.h
│ │ ├── shared_vector.h
│ │ ├── sorted_for_each.h
│ │ ├── string/
│ │ │ ├── quickjs_dtoa.h
│ │ │ ├── string_conversion_win.h
│ │ │ ├── string_number_convert.h
│ │ │ └── string_utils.h
│ │ ├── thread/
│ │ │ ├── base_semaphore.h
│ │ │ ├── pthread_rw_lock_guard.h
│ │ │ └── timed_task.h
│ │ ├── timer/
│ │ │ └── time_utils.h
│ │ ├── to_underlying.h
│ │ ├── type_traits_addon.h
│ │ ├── value/
│ │ │ ├── array.h
│ │ │ ├── base_string.h
│ │ │ ├── base_string_lldb.py
│ │ │ ├── base_value.h
│ │ │ ├── byte_array.h
│ │ │ ├── lynx_api_types.h
│ │ │ ├── lynx_value_api.h
│ │ │ ├── lynx_value_extended.h
│ │ │ ├── lynx_value_lldb.py
│ │ │ ├── lynx_value_types.h
│ │ │ ├── path_parser.h
│ │ │ ├── ref_counted_class.h
│ │ │ ├── ref_type.h
│ │ │ └── table.h
│ │ ├── vector.h
│ │ ├── vector2d.h
│ │ ├── vector_helper.h
│ │ ├── vector_lldb.py
│ │ ├── version.h
│ │ └── version_util.h
│ ├── platform/
│ │ ├── android/
│ │ │ ├── .gitignore
│ │ │ ├── BUILD.gn
│ │ │ ├── CMakeLists.txt
│ │ │ ├── build.gradle
│ │ │ ├── gradle.properties
│ │ │ ├── proguard-rules.pro
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── lynx/
│ │ │ │ └── base/
│ │ │ │ ├── CalledByNative.java
│ │ │ │ ├── IBaseNativeLibraryLoader.java
│ │ │ │ ├── LynxBaseEnv.java
│ │ │ │ ├── LynxBaseTrace.java
│ │ │ │ ├── log/
│ │ │ │ │ ├── AbsBaseLogDelegate.java
│ │ │ │ │ └── LynxLog.java
│ │ │ │ └── memory/
│ │ │ │ ├── MemoryPressureCallback.java
│ │ │ │ └── MemoryPressureLevel.java
│ │ │ └── jni/
│ │ │ ├── .gitignore
│ │ │ ├── BUILD.gn
│ │ │ └── jni_configs.yml
│ │ ├── darwin/
│ │ │ ├── BUILD.gn
│ │ │ ├── LynxBaseDefines.h
│ │ │ ├── LynxBaseEnv.h
│ │ │ ├── LynxBaseEnv.mm
│ │ │ ├── log/
│ │ │ │ ├── LynxLog.h
│ │ │ │ └── LynxLog.mm
│ │ │ └── trace/
│ │ │ ├── LynxBaseTrace.h
│ │ │ └── LynxBaseTrace.mm
│ │ ├── harmony/
│ │ │ ├── .gitignore
│ │ │ ├── .ohpmignore
│ │ │ ├── BUILD.gn
│ │ │ ├── Index.ets
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── build-profile.json5
│ │ │ ├── consumer-rules.txt
│ │ │ ├── hvigorfile.ts
│ │ │ ├── obfuscation-rules.txt
│ │ │ ├── oh-package.json5
│ │ │ └── src/
│ │ │ ├── cpp/
│ │ │ │ ├── entry.cc
│ │ │ │ └── types/
│ │ │ │ └── liblynxbase/
│ │ │ │ ├── index.d.ts
│ │ │ │ └── oh-package.json5
│ │ │ └── main/
│ │ │ ├── ets/
│ │ │ │ ├── Index.ets
│ │ │ │ ├── LynxBaseEnv.ets
│ │ │ │ ├── LynxBaseTrace.ets
│ │ │ │ ├── log/
│ │ │ │ │ └── LynxLog.ets
│ │ │ │ └── service/
│ │ │ │ ├── IBaseServiceProvider.ets
│ │ │ │ ├── ILynxBaseLogService.ets
│ │ │ │ ├── ILynxBaseTraceService.ets
│ │ │ │ └── LynxBaseServiceCenter.ets
│ │ │ └── module.json5
│ │ └── windows/
│ │ ├── BUILD.gn
│ │ ├── lynx_base_env.cc
│ │ └── lynx_base_env.h
│ ├── src/
│ │ ├── BUILD.gn
│ │ ├── algorithm_unittest.cc
│ │ ├── auto_create_optional_unittest.cc
│ │ ├── auto_reset_unittest.cc
│ │ ├── base.gni
│ │ ├── base_trace/
│ │ │ ├── base_trace_event_def.h
│ │ │ ├── trace_android.cc
│ │ │ ├── trace_event.h
│ │ │ ├── trace_event_utils.cc
│ │ │ ├── trace_harmony.cc
│ │ │ └── trace_harmony.h
│ │ ├── boost/
│ │ │ └── unordered_unittest.cc
│ │ ├── bundled_optional_unittest.cc
│ │ ├── closure_unittest.cc
│ │ ├── concurrent_queue_unittest.cc
│ │ ├── datauri_utils.cc
│ │ ├── datauri_utils_unittest.cc
│ │ ├── debug/
│ │ │ ├── backtrace.cc
│ │ │ ├── lynx_error.cc
│ │ │ └── lynx_error_unittest.cc
│ │ ├── expected_unittest.cc
│ │ ├── file_utils.cc
│ │ ├── file_utils_unittest.cc
│ │ ├── flex_optional_unittest.cc
│ │ ├── fml/
│ │ │ ├── LICENSE
│ │ │ ├── concurrent_message_loop.cc
│ │ │ ├── cpu_affinity.cc
│ │ │ ├── cpu_affinity_unittests.cc
│ │ │ ├── hash_combine_unittests.cc
│ │ │ ├── memory/
│ │ │ │ ├── ref_counted_unittest.cc
│ │ │ │ ├── task_runner_checker.cc
│ │ │ │ ├── task_runner_checker_unittest.cc
│ │ │ │ └── weak_ptr_unittest.cc
│ │ │ ├── message_loop.cc
│ │ │ ├── message_loop_impl.cc
│ │ │ ├── message_loop_impl_unittests.cc
│ │ │ ├── message_loop_task_queues.cc
│ │ │ ├── message_loop_task_queues_merge_unmerge_unittests.cc
│ │ │ ├── message_loop_task_queues_unittests.cc
│ │ │ ├── message_loop_unittests.cc
│ │ │ ├── platform/
│ │ │ │ ├── android/
│ │ │ │ │ ├── cpu_affinity.cc
│ │ │ │ │ ├── message_loop_android.cc
│ │ │ │ │ ├── message_loop_android_ndk.cc
│ │ │ │ │ └── thread_config_setter_android.cc
│ │ │ │ ├── darwin/
│ │ │ │ │ ├── cf_utils_unittests.mm
│ │ │ │ │ ├── message_loop_darwin.mm
│ │ │ │ │ ├── thread_config_setter_darwin.mm
│ │ │ │ │ └── thread_name_setter_darwin.cc
│ │ │ │ ├── harmony/
│ │ │ │ │ └── message_loop_harmony.cc
│ │ │ │ ├── linux/
│ │ │ │ │ ├── message_loop_linux.cc
│ │ │ │ │ └── timerfd.cc
│ │ │ │ ├── posix/
│ │ │ │ │ └── thread_name_setter_posix.cc
│ │ │ │ └── win/
│ │ │ │ ├── message_loop_win.cc
│ │ │ │ ├── task_runner_win32.cc
│ │ │ │ ├── task_runner_win32_window.cc
│ │ │ │ └── thread_name_setter_win.cc
│ │ │ ├── raster_thread_merger.cc
│ │ │ ├── raster_thread_merger_unittests.cc
│ │ │ ├── shared_thread_merger.cc
│ │ │ ├── synchronization/
│ │ │ │ ├── count_down_latch.cc
│ │ │ │ ├── count_down_latch_unittests.cc
│ │ │ │ ├── semaphore.cc
│ │ │ │ ├── semaphore_unittest.cc
│ │ │ │ ├── shared_mutex_posix.cc
│ │ │ │ ├── shared_mutex_std.cc
│ │ │ │ ├── sync_switch.cc
│ │ │ │ ├── sync_switch_unittest.cc
│ │ │ │ ├── waitable_event.cc
│ │ │ │ └── waitable_event_unittest.cc
│ │ │ ├── task_runner.cc
│ │ │ ├── task_runner_unittests.cc
│ │ │ ├── task_source.cc
│ │ │ ├── task_source_unittests.cc
│ │ │ ├── thread.cc
│ │ │ ├── thread_host.cc
│ │ │ ├── thread_name_setter.h
│ │ │ ├── thread_unittests.cc
│ │ │ ├── time/
│ │ │ │ ├── chrono_timestamp_provider.cc
│ │ │ │ ├── time_delta_unittest.cc
│ │ │ │ ├── time_point.cc
│ │ │ │ ├── time_point_unittest.cc
│ │ │ │ ├── time_unittest.cc
│ │ │ │ └── timer.cc
│ │ │ └── unique_fd.cc
│ │ ├── geometry_unittest.cc
│ │ ├── hybrid_map_unittest.cc
│ │ ├── linked_hash_map_unittest.cc
│ │ ├── log/
│ │ │ ├── alog_wrapper.cc
│ │ │ ├── log_stream.cc
│ │ │ ├── log_stream_unittest.cc
│ │ │ ├── logging.cc
│ │ │ ├── logging_android.cc
│ │ │ ├── logging_base.cc
│ │ │ ├── logging_darwin.mm
│ │ │ ├── logging_harmony.cc
│ │ │ └── logging_harmony.h
│ │ ├── lynx_actor_unittest.cc
│ │ ├── md5.cc
│ │ ├── path_utils_unittest.cc
│ │ ├── platform/
│ │ │ ├── android/
│ │ │ │ ├── java_type.cc
│ │ │ │ ├── jni_convert_helper.cc
│ │ │ │ ├── jni_utils.cc
│ │ │ │ └── scoped_java_ref.cc
│ │ │ └── harmony/
│ │ │ ├── harmony_vsync_manager.cc
│ │ │ └── napi_util.cc
│ │ ├── sorted_for_each_unittest.cc
│ │ ├── string/
│ │ │ ├── quickjs_dtoa.c
│ │ │ ├── string_conversion_win.cc
│ │ │ ├── string_number_convert.cc
│ │ │ ├── string_number_convert_unittest.cc
│ │ │ ├── string_utils.cc
│ │ │ └── string_utils_unittest.cc
│ │ ├── thread/
│ │ │ ├── timed_task.cc
│ │ │ └── timed_task_unittest.cc
│ │ ├── timer/
│ │ │ ├── time_utils.cc
│ │ │ └── time_utils_unittest.cc
│ │ ├── to_underlying_unittest.cc
│ │ ├── type_traits_addon_unittest.cc
│ │ ├── value/
│ │ │ ├── base_string.cc
│ │ │ ├── base_value.cc
│ │ │ ├── base_value_print.cc
│ │ │ ├── base_value_unittest.cc
│ │ │ ├── byte_array.cc
│ │ │ ├── lynx_value_api_impl.cc
│ │ │ ├── lynx_value_extended_empty.cc
│ │ │ ├── path_parser.cc
│ │ │ ├── path_parser_unittest.cc
│ │ │ └── table.cc
│ │ ├── vector.cc
│ │ ├── vector_unittest.cc
│ │ └── version_unittest.cc
│ └── trace/
│ ├── README.md
│ ├── android/
│ │ ├── .gitignore
│ │ ├── BUILD.gn
│ │ ├── CMakeLists.txt
│ │ ├── build.gradle
│ │ ├── gradle.properties
│ │ ├── proguard-rules.pro
│ │ └── src/
│ │ ├── android_test/
│ │ │ └── java/
│ │ │ ├── AndroidManifest.xml
│ │ │ └── com/
│ │ │ └── lynx/
│ │ │ └── trace/
│ │ │ └── TraceControllerTest.java
│ │ └── main/
│ │ ├── AndroidManifest.xml
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── lynx/
│ │ │ ├── tasm/
│ │ │ │ └── base/
│ │ │ │ ├── LynxTraceEnv.java
│ │ │ │ ├── TraceController.java
│ │ │ │ └── TraceEvent.java
│ │ │ └── trace/
│ │ │ └── CalledByNative.java
│ │ └── jni/
│ │ ├── .gitignore
│ │ ├── BUILD.gn
│ │ └── jni_configs.yml
│ ├── darwin/
│ │ ├── .gitignore
│ │ ├── BUILD.gn
│ │ ├── CPPLINT.cfg
│ │ ├── LynxTraceController.h
│ │ ├── LynxTraceController.mm
│ │ ├── LynxTraceController_mock.mm
│ │ ├── LynxTraceEvent.h
│ │ ├── LynxTraceEvent.mm
│ │ ├── LynxTraceEventWrapper.h
│ │ ├── LynxTraceEventWrapper.mm
│ │ └── trace-prefix.h
│ └── native/
│ ├── BUILD.gn
│ ├── hook_systrace/
│ │ ├── cpu_info_trace.cc
│ │ ├── cpu_info_trace.h
│ │ ├── hook_system_trace.h
│ │ ├── hook_system_trace_android.cc
│ │ ├── hook_system_trace_default.cc
│ │ ├── hook_system_trace_harmony.cc
│ │ └── hook_systrace.gni
│ ├── instance_counter_trace.cc
│ ├── instance_counter_trace.h
│ ├── internal_trace_category.h
│ ├── platform/
│ │ ├── android/
│ │ │ ├── trace_controller_android.cc
│ │ │ ├── trace_controller_android.h
│ │ │ ├── trace_controller_android_mock.cc
│ │ │ ├── trace_event_android_mock.cc
│ │ │ ├── trace_event_android_perfetto.cc
│ │ │ └── trace_event_android_systrace.cc
│ │ ├── darwin/
│ │ │ ├── trace_controller_darwin.h
│ │ │ └── trace_controller_darwin.mm
│ │ ├── harmony/
│ │ │ ├── trace_controller_delegate_harmony.cc
│ │ │ ├── trace_controller_delegate_harmony.h
│ │ │ ├── trace_controller_harmony.cc
│ │ │ ├── trace_controller_harmony.h
│ │ │ └── trace_event_utils_systrace_harmony.cc
│ │ ├── platform.gni
│ │ └── windows/
│ │ ├── trace_controller_win.cc
│ │ ├── trace_controller_win.h
│ │ └── trace_controller_win_mock.cc
│ ├── trace_controller.cc
│ ├── trace_controller.h
│ ├── trace_controller_impl.cc
│ ├── trace_controller_impl.h
│ ├── trace_controller_unittest.cc
│ ├── trace_defines.h
│ ├── trace_event.h
│ ├── trace_event_export_symbol.cc
│ ├── trace_event_export_symbol.h
│ ├── trace_event_unittest.cc
│ ├── trace_event_utils_perfetto.h
│ ├── trace_event_utils_perfetto_mock.cc
│ ├── trace_event_utils_systrace.h
│ ├── trace_event_utils_systrace_android.cc
│ ├── trace_event_utils_systrace_default.cc
│ ├── trace_export.h
│ ├── track_event_wrapper.cc
│ ├── track_event_wrapper.h
│ └── track_event_wrapper_mock.cc
├── build_overrides/
│ ├── android.gni
│ ├── angle.gni
│ ├── bindings_files.gni
│ ├── build.gni
│ ├── codec_files.gni
│ ├── darwin.gni
│ ├── fml.gni
│ ├── glslang.gni
│ ├── oliver.gni
│ ├── renderer_utils_files.gni
│ ├── resource_file.gni
│ ├── services_files.gni
│ ├── spirv_tools.gni
│ ├── swiftshader.gni
│ ├── vulkan_headers.gni
│ ├── vulkan_loader.gni
│ ├── vulkan_tools.gni
│ ├── wayland.gni
│ └── windows.gni
├── clay/
│ ├── BUILD.gn
│ ├── LICENSE
│ ├── LICENSE.flutter
│ ├── README.md
│ ├── assets/
│ │ ├── BUILD.gn
│ │ ├── asset_manager.cc
│ │ ├── asset_manager.h
│ │ ├── asset_resolver.h
│ │ ├── directory_asset_bundle.cc
│ │ └── directory_asset_bundle.h
│ ├── build/
│ │ ├── concurrent_jobs.gni
│ │ ├── copy_info_plist.py
│ │ ├── generate_coverage.py
│ │ ├── get_concurrent_jobs.py
│ │ ├── git_revision.py
│ │ ├── zip.py
│ │ └── zip_bundle.gni
│ ├── common/
│ │ ├── BUILD.gn
│ │ ├── config.gni
│ │ ├── constants.h
│ │ ├── element_id.cc
│ │ ├── element_id.h
│ │ ├── exported_symbols.sym
│ │ ├── exported_symbols_mac.sym
│ │ ├── graphics/
│ │ │ ├── BUILD.gn
│ │ │ ├── drawable_image.cc
│ │ │ ├── drawable_image.h
│ │ │ ├── gl/
│ │ │ │ ├── gl_api.h
│ │ │ │ ├── gl_api_common.cc
│ │ │ │ ├── gl_api_common.h
│ │ │ │ ├── gl_api_windows.cc
│ │ │ │ ├── gl_api_windows.h
│ │ │ │ ├── gl_pipeline_helper.cc
│ │ │ │ ├── gl_pipeline_helper.h
│ │ │ │ ├── gl_shader_program.cc
│ │ │ │ ├── gl_shader_program.h
│ │ │ │ ├── scoped_framebuffer_binder.cc
│ │ │ │ ├── scoped_framebuffer_binder.h
│ │ │ │ ├── scoped_texture_binder.cc
│ │ │ │ └── scoped_texture_binder.h
│ │ │ ├── gl_context_switch.cc
│ │ │ ├── gl_context_switch.h
│ │ │ ├── graphic_meminfo.h
│ │ │ ├── msaa_sample_count.h
│ │ │ ├── persistent_cache.cc
│ │ │ ├── persistent_cache.h
│ │ │ ├── screenshot.h
│ │ │ ├── shared_drawable_image.cc
│ │ │ ├── shared_drawable_image.h
│ │ │ ├── shared_image_external_bitmap.cc
│ │ │ ├── shared_image_external_bitmap.h
│ │ │ ├── shared_image_external_texture.cc
│ │ │ └── shared_image_external_texture.h
│ │ ├── recyclable.h
│ │ ├── service/
│ │ │ ├── BUILD.gn
│ │ │ ├── service.cc
│ │ │ ├── service.h
│ │ │ ├── service_manager.cc
│ │ │ ├── service_manager.h
│ │ │ └── service_unittests.cc
│ │ ├── settings.cc
│ │ ├── settings.h
│ │ ├── sha1.cc
│ │ ├── sha1.h
│ │ ├── sha1_include.cc
│ │ ├── sys_info.cc
│ │ ├── sys_info.h
│ │ ├── task_runners.cc
│ │ ├── task_runners.h
│ │ ├── thread_host.cc
│ │ ├── thread_host.h
│ │ ├── thread_host_holder.cc
│ │ └── thread_host_holder.h
│ ├── example/
│ │ └── glfw/
│ │ ├── BUILD.gn
│ │ ├── README.md
│ │ ├── clay_glfw.cc
│ │ ├── clay_logo.h
│ │ ├── custom_task_runner.cc
│ │ ├── custom_task_runner.h
│ │ ├── event_loop.cc
│ │ ├── event_loop.h
│ │ ├── platform_view_impl.h
│ │ ├── shell_impl.cc
│ │ ├── shell_impl.h
│ │ ├── surface_gl_impl.h
│ │ ├── thread_host_holder.cc
│ │ └── thread_host_holder.h
│ ├── flow/
│ │ ├── BUILD.gn
│ │ ├── animation/
│ │ │ ├── animation_host.cc
│ │ │ ├── animation_host.h
│ │ │ ├── animation_mutator.cc
│ │ │ ├── animation_mutator.h
│ │ │ ├── scroll_offset_animation.cc
│ │ │ ├── scroll_offset_animation.h
│ │ │ └── scroll_offset_animation_unittests.cc
│ │ ├── compositor/
│ │ │ ├── compositor_state.cc
│ │ │ ├── compositor_state.h
│ │ │ ├── compositor_state_unittests.cc
│ │ │ └── overlay_views.h
│ │ ├── compositor_context.cc
│ │ ├── compositor_context.h
│ │ ├── diff_context.cc
│ │ ├── diff_context.h
│ │ ├── diff_context_unittests.cc
│ │ ├── drawable_image_unittests.cc
│ │ ├── embedded_view_params_unittests.cc
│ │ ├── embedded_views.cc
│ │ ├── embedded_views.h
│ │ ├── flow_rendering_backend.h
│ │ ├── flow_run_all_unittests.cc
│ │ ├── flow_test_utils.cc
│ │ ├── flow_test_utils.h
│ │ ├── frame_timings.cc
│ │ ├── frame_timings.h
│ │ ├── frame_timings_recorder_unittests.cc
│ │ ├── gl_context_switch_unittests.cc
│ │ ├── layer_snapshot_store.cc
│ │ ├── layer_snapshot_store.h
│ │ ├── layers/
│ │ │ ├── backdrop_filter_layer.cc
│ │ │ ├── backdrop_filter_layer.h
│ │ │ ├── backdrop_filter_layer_unittests.cc
│ │ │ ├── cacheable_layer.cc
│ │ │ ├── cacheable_layer.h
│ │ │ ├── checkerboard_layertree_unittests.cc
│ │ │ ├── clip_path_layer.cc
│ │ │ ├── clip_path_layer.h
│ │ │ ├── clip_path_layer_unittests.cc
│ │ │ ├── clip_rect_layer.cc
│ │ │ ├── clip_rect_layer.h
│ │ │ ├── clip_rect_layer_unittests.cc
│ │ │ ├── clip_rrect_layer.cc
│ │ │ ├── clip_rrect_layer.h
│ │ │ ├── clip_rrect_layer_unittests.cc
│ │ │ ├── clip_shape_layer.h
│ │ │ ├── color_filter_layer.cc
│ │ │ ├── color_filter_layer.h
│ │ │ ├── color_filter_layer_unittests.cc
│ │ │ ├── container_layer.cc
│ │ │ ├── container_layer.h
│ │ │ ├── container_layer_unittests.cc
│ │ │ ├── drawable_image_layer.cc
│ │ │ ├── drawable_image_layer.h
│ │ │ ├── drawable_image_layer_unittests.cc
│ │ │ ├── external_view_layer.cc
│ │ │ ├── external_view_layer.h
│ │ │ ├── image_filter_layer.cc
│ │ │ ├── image_filter_layer.h
│ │ │ ├── image_filter_layer_unittests.cc
│ │ │ ├── layer.cc
│ │ │ ├── layer.h
│ │ │ ├── layer_raster_cache_item.cc
│ │ │ ├── layer_raster_cache_item.h
│ │ │ ├── layer_state_stack.cc
│ │ │ ├── layer_state_stack.h
│ │ │ ├── layer_state_stack_unittests.cc
│ │ │ ├── layer_tree.cc
│ │ │ ├── layer_tree.h
│ │ │ ├── layer_tree_unittests.cc
│ │ │ ├── offscreen_surface.cc
│ │ │ ├── offscreen_surface.h
│ │ │ ├── offscreen_surface_unittests.cc
│ │ │ ├── opacity_layer.cc
│ │ │ ├── opacity_layer.h
│ │ │ ├── opacity_layer_unittests.cc
│ │ │ ├── performance_overlay_layer.cc
│ │ │ ├── performance_overlay_layer.h
│ │ │ ├── performance_overlay_layer_unittests.cc
│ │ │ ├── physical_shape_layer.cc
│ │ │ ├── physical_shape_layer.h
│ │ │ ├── physical_shape_layer_unittests.cc
│ │ │ ├── picture_complexity.cc
│ │ │ ├── picture_complexity.h
│ │ │ ├── picture_complexity_calculator_skity.cc
│ │ │ ├── picture_complexity_calculator_skity.h
│ │ │ ├── picture_complexity_gl.cc
│ │ │ ├── picture_complexity_gl.h
│ │ │ ├── picture_complexity_helper_skia.h
│ │ │ ├── picture_complexity_helper_skity.h
│ │ │ ├── picture_complexity_metal.cc
│ │ │ ├── picture_complexity_metal.h
│ │ │ ├── picture_layer.cc
│ │ │ ├── picture_layer.h
│ │ │ ├── picture_raster_cache_item.cc
│ │ │ ├── picture_raster_cache_item.h
│ │ │ ├── platform_view_layer.cc
│ │ │ ├── platform_view_layer.h
│ │ │ ├── platform_view_layer_unittests.cc
│ │ │ ├── punch_hole_layer.cc
│ │ │ ├── punch_hole_layer.h
│ │ │ ├── punch_hole_layer_unittests.cc
│ │ │ ├── shader_mask_layer.cc
│ │ │ ├── shader_mask_layer.h
│ │ │ ├── shader_mask_layer_unittests.cc
│ │ │ ├── transform_layer.cc
│ │ │ ├── transform_layer.h
│ │ │ └── transform_layer_unittests.cc
│ │ ├── matrix_clip_tracker.cc
│ │ ├── matrix_clip_tracker.h
│ │ ├── matrix_clip_tracker_unittests.cc
│ │ ├── mutators_stack_unittests.cc
│ │ ├── paint_region.cc
│ │ ├── paint_region.h
│ │ ├── paint_utils.cc
│ │ ├── paint_utils.h
│ │ ├── raster_cache.cc
│ │ ├── raster_cache.h
│ │ ├── raster_cache_item.h
│ │ ├── raster_cache_key.cc
│ │ ├── raster_cache_key.h
│ │ ├── raster_cache_unittests.cc
│ │ ├── raster_cache_util.cc
│ │ ├── raster_cache_util.h
│ │ ├── rtree.cc
│ │ ├── rtree.h
│ │ ├── rtree_unittests.cc
│ │ ├── services/
│ │ │ └── animation_event_service.h
│ │ ├── stopwatch.cc
│ │ ├── stopwatch.h
│ │ ├── stopwatch_unittests.cc
│ │ ├── surface.cc
│ │ ├── surface.h
│ │ ├── surface_frame.cc
│ │ ├── surface_frame.h
│ │ ├── surface_frame_unittests.cc
│ │ ├── testing/
│ │ │ ├── diff_context_test.cc
│ │ │ ├── diff_context_test.h
│ │ │ ├── gl_context_switch_test.cc
│ │ │ ├── gl_context_switch_test.h
│ │ │ ├── gpu_object_layer_test.cc
│ │ │ ├── gpu_object_layer_test.h
│ │ │ ├── layer_test.h
│ │ │ ├── mock_drawable_image.cc
│ │ │ ├── mock_drawable_image.h
│ │ │ ├── mock_drawable_image_unittests.cc
│ │ │ ├── mock_layer.cc
│ │ │ ├── mock_layer.h
│ │ │ ├── mock_layer_unittests.cc
│ │ │ ├── mock_raster_cache.cc
│ │ │ ├── mock_raster_cache.h
│ │ │ ├── mock_shared_image_backing.cc
│ │ │ ├── mock_shared_image_backing.h
│ │ │ ├── mock_shared_image_unittests.cc
│ │ │ ├── picture_complexity_unittests.cc
│ │ │ ├── picture_test_utils.cc
│ │ │ └── picture_test_utils.h
│ │ ├── view_slicer.cc
│ │ ├── view_slicer.h
│ │ └── view_slicer_unittests.cc
│ ├── fml/
│ │ ├── BUILD.gn
│ │ ├── LICENSE
│ │ ├── ascii_trie.cc
│ │ ├── ascii_trie.h
│ │ ├── ascii_trie_unittests.cc
│ │ ├── atomic_sequence_num.h
│ │ ├── backtrace.cc
│ │ ├── backtrace.h
│ │ ├── backtrace_android.cc
│ │ ├── backtrace_stub.cc
│ │ ├── backtrace_unittests.cc
│ │ ├── base32.cc
│ │ ├── base32.h
│ │ ├── base32_unittest.cc
│ │ ├── base64.cc
│ │ ├── base64.h
│ │ ├── base64_unittests.cc
│ │ ├── command_line.cc
│ │ ├── command_line.h
│ │ ├── command_line_unittest.cc
│ │ ├── container.h
│ │ ├── container_unittests.cc
│ │ ├── endianness.cc
│ │ ├── endianness.h
│ │ ├── endianness_unittests.cc
│ │ ├── file.cc
│ │ ├── file.h
│ │ ├── file_unittest.cc
│ │ ├── fml.gni
│ │ ├── hex_codec.cc
│ │ ├── hex_codec.h
│ │ ├── hex_codec_unittest.cc
│ │ ├── icu_util.cc
│ │ ├── icu_util.h
│ │ ├── log_level.h
│ │ ├── log_settings.cc
│ │ ├── log_settings.h
│ │ ├── logging.cc
│ │ ├── logging.h
│ │ ├── logging_unittests.cc
│ │ ├── mapping.cc
│ │ ├── mapping.h
│ │ ├── mapping_unittests.cc
│ │ ├── math.h
│ │ ├── math_unittests.cc
│ │ ├── native_library.h
│ │ ├── paths.cc
│ │ ├── paths.h
│ │ ├── paths_unittests.cc
│ │ ├── platform/
│ │ │ ├── android/
│ │ │ │ ├── CPPLINT.cfg
│ │ │ │ ├── jni_android.cc
│ │ │ │ ├── jni_android.h
│ │ │ │ ├── jni_weak_ref.cc
│ │ │ │ ├── jni_weak_ref.h
│ │ │ │ ├── paths_android.cc
│ │ │ │ └── paths_android.h
│ │ │ ├── darwin/
│ │ │ │ ├── cf_utils.cc
│ │ │ │ ├── cf_utils.h
│ │ │ │ ├── cf_utils_unittests.mm
│ │ │ │ ├── paths_darwin.mm
│ │ │ │ ├── platform_version.h
│ │ │ │ ├── platform_version.mm
│ │ │ │ ├── scoped_block.h
│ │ │ │ ├── scoped_block.mm
│ │ │ │ ├── scoped_nsobject.h
│ │ │ │ ├── scoped_nsobject.mm
│ │ │ │ ├── string_range_sanitization.h
│ │ │ │ ├── string_range_sanitization.mm
│ │ │ │ └── string_range_sanitization_unittests.mm
│ │ │ ├── harmony/
│ │ │ │ ├── paths_harmony.cc
│ │ │ │ └── paths_harmony.h
│ │ │ ├── linux/
│ │ │ │ ├── paths_linux.cc
│ │ │ │ ├── proc_maps_linux.cc
│ │ │ │ └── proc_maps_linux.h
│ │ │ ├── posix/
│ │ │ │ ├── command_line_posix.cc
│ │ │ │ ├── file_posix.cc
│ │ │ │ ├── mapping_posix.cc
│ │ │ │ ├── native_library_posix.cc
│ │ │ │ ├── paths_posix.cc
│ │ │ │ └── posix_wrappers_posix.cc
│ │ │ └── win/
│ │ │ ├── command_line_win.cc
│ │ │ ├── errors_win.cc
│ │ │ ├── errors_win.h
│ │ │ ├── file_win.cc
│ │ │ ├── file_win_unittests.cc
│ │ │ ├── mapping_win.cc
│ │ │ ├── native_library_win.cc
│ │ │ ├── paths_win.cc
│ │ │ ├── posix_wrappers_win.cc
│ │ │ ├── wstring_conversion.cc
│ │ │ ├── wstring_conversion.h
│ │ │ └── wstring_conversion_unittests.cc
│ │ ├── posix_wrappers.h
│ │ ├── size.h
│ │ └── status.h
│ ├── gfx/
│ │ ├── BUILD.gn
│ │ ├── animation/
│ │ │ ├── accelerate_decelerate_interpolator.cc
│ │ │ ├── accelerate_decelerate_interpolator.h
│ │ │ ├── accelerate_interpolator.cc
│ │ │ ├── accelerate_interpolator.h
│ │ │ ├── animation_data.cc
│ │ │ ├── animation_data.h
│ │ │ ├── animation_event_handler.h
│ │ │ ├── animation_handler.cc
│ │ │ ├── animation_handler.h
│ │ │ ├── animation_handler_unittests.cc
│ │ │ ├── animation_properties_util.h
│ │ │ ├── animator.cc
│ │ │ ├── animator.h
│ │ │ ├── animator_listener.h
│ │ │ ├── animator_listener_adapter.h
│ │ │ ├── animator_target.h
│ │ │ ├── anticipate_interpolator.cc
│ │ │ ├── anticipate_interpolator.h
│ │ │ ├── anticipate_overshoot_interpolator.cc
│ │ │ ├── anticipate_overshoot_interpolator.h
│ │ │ ├── bounce_animator.cc
│ │ │ ├── bounce_animator.h
│ │ │ ├── bounce_interpolator.cc
│ │ │ ├── bounce_interpolator.h
│ │ │ ├── build.gni
│ │ │ ├── cubic_bezier_interpolator.cc
│ │ │ ├── cubic_bezier_interpolator.h
│ │ │ ├── cubic_bezier_interpolator_unittests.cc
│ │ │ ├── cycle_interpolator.cc
│ │ │ ├── cycle_interpolator.h
│ │ │ ├── decelerate_interpolator.cc
│ │ │ ├── decelerate_interpolator.h
│ │ │ ├── dynamic_animator.cc
│ │ │ ├── dynamic_animator.h
│ │ │ ├── fling_animator.cc
│ │ │ ├── fling_animator.h
│ │ │ ├── interpolator.cc
│ │ │ ├── interpolator.h
│ │ │ ├── keyframe.cc
│ │ │ ├── keyframe.h
│ │ │ ├── keyframe_set.cc
│ │ │ ├── keyframe_set.h
│ │ │ ├── keyframes_manager.cc
│ │ │ ├── keyframes_manager.h
│ │ │ ├── lut_interpolator.cc
│ │ │ ├── lut_interpolator.h
│ │ │ ├── overshoot_interpolator.cc
│ │ │ ├── overshoot_interpolator.h
│ │ │ ├── path_interpolator.cc
│ │ │ ├── path_interpolator.h
│ │ │ ├── picture_animation_type.h
│ │ │ ├── steps_interpolator.cc
│ │ │ ├── steps_interpolator.h
│ │ │ ├── timing_function_data.cc
│ │ │ ├── timing_function_data.h
│ │ │ ├── transition_data.cc
│ │ │ ├── transition_data.h
│ │ │ ├── transition_manager.cc
│ │ │ ├── transition_manager.h
│ │ │ ├── type_evaluator.h
│ │ │ ├── value_animator.cc
│ │ │ ├── value_animator.h
│ │ │ ├── value_animator_unittests.cc
│ │ │ ├── viscous_fluid_interpolator.cc
│ │ │ └── viscous_fluid_interpolator.h
│ │ ├── attributes.h
│ │ ├── attributes_testing.h
│ │ ├── comparable.h
│ │ ├── geometry/
│ │ │ ├── axis.h
│ │ │ ├── box_shadow_operations.cc
│ │ │ ├── box_shadow_operations.h
│ │ │ ├── box_shadow_value.h
│ │ │ ├── build.gni
│ │ │ ├── direction.h
│ │ │ ├── filter_operations.cc
│ │ │ ├── filter_operations.h
│ │ │ ├── filter_value.h
│ │ │ ├── float_point.cc
│ │ │ ├── float_point.h
│ │ │ ├── float_point3d.cc
│ │ │ ├── float_point3d.h
│ │ │ ├── float_rect.cc
│ │ │ ├── float_rect.h
│ │ │ ├── float_rounded_rect.cc
│ │ │ ├── float_rounded_rect.h
│ │ │ ├── float_size.h
│ │ │ ├── float_vector2d.cc
│ │ │ ├── float_vector2d.h
│ │ │ ├── float_vector3d.cc
│ │ │ ├── float_vector3d.h
│ │ │ ├── math_util.h
│ │ │ ├── path.cc
│ │ │ ├── path.h
│ │ │ ├── point.h
│ │ │ ├── quaternion.cc
│ │ │ ├── quaternion.h
│ │ │ ├── rect.h
│ │ │ ├── size.h
│ │ │ ├── sticky_info.h
│ │ │ ├── transform.cc
│ │ │ ├── transform.h
│ │ │ ├── transform_operation.cc
│ │ │ ├── transform_operation.h
│ │ │ ├── transform_operations.cc
│ │ │ ├── transform_operations.h
│ │ │ ├── transform_origin.h
│ │ │ ├── transform_raw.h
│ │ │ ├── transform_util.cc
│ │ │ └── transform_util.h
│ │ ├── gfx_rendering_backend.h
│ │ ├── gfx_utils.cc
│ │ ├── gfx_utils.h
│ │ ├── gpu_object.h
│ │ ├── gpu_object_unittests.cc
│ │ ├── gpu_ref_object.h
│ │ ├── graphics_canvas.cc
│ │ ├── graphics_canvas.h
│ │ ├── graphics_context.cc
│ │ ├── graphics_context.h
│ │ ├── graphics_isolate.cc
│ │ ├── graphics_isolate.h
│ │ ├── image/
│ │ │ ├── animated_image.cc
│ │ │ ├── animated_image.h
│ │ │ ├── base_image.cc
│ │ │ ├── base_image.h
│ │ │ ├── base_image_instance.cc
│ │ │ ├── base_image_instance.h
│ │ │ ├── build.gni
│ │ │ ├── codec.h
│ │ │ ├── decode_priority.h
│ │ │ ├── decoding_image.cc
│ │ │ ├── decoding_image.h
│ │ │ ├── frame_info.h
│ │ │ ├── graphics_image.cc
│ │ │ ├── graphics_image.h
│ │ │ ├── graphics_image_skia.cc
│ │ │ ├── graphics_image_skia.h
│ │ │ ├── graphics_image_skia_lazy.cc
│ │ │ ├── graphics_image_skia_lazy.h
│ │ │ ├── graphics_image_skity.cc
│ │ │ ├── graphics_image_skity.h
│ │ │ ├── graphics_image_skity_lazy.cc
│ │ │ ├── graphics_image_skity_lazy.h
│ │ │ ├── image.cc
│ │ │ ├── image.h
│ │ │ ├── image_data.h
│ │ │ ├── image_data_cache.cc
│ │ │ ├── image_data_cache.h
│ │ │ ├── image_data_cache_unittests.cc
│ │ │ ├── image_decoder.cc
│ │ │ ├── image_decoder.h
│ │ │ ├── image_descriptor.cc
│ │ │ ├── image_descriptor.h
│ │ │ ├── image_descriptor_platform.cc
│ │ │ ├── image_descriptor_platform.h
│ │ │ ├── image_descriptor_skia.cc
│ │ │ ├── image_descriptor_skia.h
│ │ │ ├── image_info.h
│ │ │ ├── image_produce_context.h
│ │ │ ├── image_producer.cc
│ │ │ ├── image_producer.h
│ │ │ ├── image_resource.cc
│ │ │ ├── image_resource.h
│ │ │ ├── image_resource_client.h
│ │ │ ├── image_upload_manager.cc
│ │ │ ├── image_upload_manager.h
│ │ │ ├── multi_frame_codec.cc
│ │ │ ├── multi_frame_codec.h
│ │ │ ├── platform_image.h
│ │ │ ├── single_frame_codec.cc
│ │ │ ├── single_frame_codec.h
│ │ │ ├── skimage_holder.cc
│ │ │ ├── skimage_holder.h
│ │ │ ├── static_image.cc
│ │ │ ├── static_image.h
│ │ │ ├── svg_image.cc
│ │ │ ├── svg_image.h
│ │ │ ├── svg_image_holder.cc
│ │ │ └── svg_image_holder.h
│ │ ├── paint.cc
│ │ ├── paint.h
│ │ ├── paint_decoding_image.h
│ │ ├── paint_image.cc
│ │ ├── paint_image.h
│ │ ├── paint_image_skia.cc
│ │ ├── paint_image_skia.h
│ │ ├── paint_image_skia_lazy.cc
│ │ ├── paint_image_skia_lazy.h
│ │ ├── paint_image_skity.cc
│ │ ├── paint_image_skity.h
│ │ ├── paint_recorder.h
│ │ ├── paint_recorder_skia.cc
│ │ ├── paint_recorder_skity.cc
│ │ ├── paint_unittests.cc
│ │ ├── picture.cc
│ │ ├── picture.h
│ │ ├── pixel_helper.h
│ │ ├── rendering_backend.h
│ │ ├── scroll_direction.h
│ │ ├── shared_image/
│ │ │ ├── BUILD.gn
│ │ │ ├── android/
│ │ │ │ ├── android_hardwarebuffer_utils.cc
│ │ │ │ ├── android_hardwarebuffer_utils.h
│ │ │ │ ├── scoped_a_native_window.cc
│ │ │ │ ├── scoped_a_native_window.h
│ │ │ │ ├── scoped_java_surface.cc
│ │ │ │ ├── scoped_java_surface.h
│ │ │ │ ├── surface_texture.cc
│ │ │ │ ├── surface_texture.h
│ │ │ │ ├── surface_texture_listener.cc
│ │ │ │ └── surface_texture_listener.h
│ │ │ ├── android_egl_image_representation.cc
│ │ │ ├── android_egl_image_representation.h
│ │ │ ├── android_hardwarebuffer_image_backing.cc
│ │ │ ├── android_hardwarebuffer_image_backing.h
│ │ │ ├── android_surface_texture_image_backing.cc
│ │ │ ├── android_surface_texture_image_backing.h
│ │ │ ├── angle_d3d_image_representation.cc
│ │ │ ├── angle_d3d_image_representation.h
│ │ │ ├── angle_software_shm_image_backing.cc
│ │ │ ├── angle_software_shm_image_backing.h
│ │ │ ├── angle_sw_shm_image_representation.cc
│ │ │ ├── angle_sw_shm_image_representation.h
│ │ │ ├── cgl_image_representation.h
│ │ │ ├── cgl_image_representation.mm
│ │ │ ├── cv_pixelbuffer_image_backing.h
│ │ │ ├── cv_pixelbuffer_image_backing.mm
│ │ │ ├── d3d9_texture_image_backing.cc
│ │ │ ├── d3d9_texture_image_backing.h
│ │ │ ├── d3d_image_representation.cc
│ │ │ ├── d3d_image_representation.h
│ │ │ ├── d3d_texture_image_backing.cc
│ │ │ ├── d3d_texture_image_backing.h
│ │ │ ├── eagl_image_representation.h
│ │ │ ├── eagl_image_representation.mm
│ │ │ ├── egl_image_backing.cc
│ │ │ ├── egl_image_backing.h
│ │ │ ├── epoxy_shm_image_backing.cc
│ │ │ ├── epoxy_shm_image_backing.h
│ │ │ ├── epoxy_shm_image_representation.cc
│ │ │ ├── epoxy_shm_image_representation.h
│ │ │ ├── fence_sync.h
│ │ │ ├── iosurface_image_backing.h
│ │ │ ├── iosurface_image_backing.mm
│ │ │ ├── linux_shm_image_representation.cc
│ │ │ ├── linux_shm_image_representation.h
│ │ │ ├── mtl_fence_sync.h
│ │ │ ├── mtl_fence_sync.mm
│ │ │ ├── mtl_image_representation.h
│ │ │ ├── mtl_image_representation.mm
│ │ │ ├── native_image_egl_image_representation.cc
│ │ │ ├── native_image_egl_image_representation.h
│ │ │ ├── native_image_image_backing.cc
│ │ │ ├── native_image_image_backing.h
│ │ │ ├── shared_image_backing.cc
│ │ │ ├── shared_image_backing.h
│ │ │ ├── shared_image_representation.cc
│ │ │ ├── shared_image_representation.h
│ │ │ ├── shared_image_sink.cc
│ │ │ ├── shared_image_sink.h
│ │ │ ├── shared_image_sink_accessor.cc
│ │ │ ├── shared_image_sink_accessor.h
│ │ │ ├── skia_gl_image_representation.cc
│ │ │ ├── skia_gl_image_representation.h
│ │ │ ├── skia_mtl_image_representation.h
│ │ │ ├── skia_mtl_image_representation.mm
│ │ │ ├── skia_shm_image_representation.cc
│ │ │ ├── skia_shm_image_representation.h
│ │ │ ├── skity_gl_image_representation.cc
│ │ │ ├── skity_gl_image_representation.h
│ │ │ ├── skity_mtl_image_representation.h
│ │ │ ├── skity_mtl_image_representation.mm
│ │ │ ├── utils/
│ │ │ │ ├── angle_get_proc.cc
│ │ │ │ ├── angle_get_proc.h
│ │ │ │ ├── dxgi_utils.cc
│ │ │ │ ├── dxgi_utils.h
│ │ │ │ ├── functions_angle.cc
│ │ │ │ ├── functions_angle.h
│ │ │ │ ├── gl_texture_converter.cc
│ │ │ │ ├── gl_texture_converter.h
│ │ │ │ ├── image_utils.cc
│ │ │ │ └── image_utils.h
│ │ │ ├── vulkan_image_hardwarebuffer_representation.cc
│ │ │ └── vulkan_image_hardwarebuffer_representation.h
│ │ ├── skia/
│ │ │ ├── build.gni
│ │ │ ├── picture_skia.cc
│ │ │ ├── picture_skia.h
│ │ │ ├── skia_canvas.cc
│ │ │ ├── skia_canvas.h
│ │ │ ├── skia_concurrent_executor.cc
│ │ │ └── skia_concurrent_executor.h
│ │ ├── skity/
│ │ │ ├── BUILD.gn
│ │ │ ├── picture_skity.cc
│ │ │ ├── picture_skity.h
│ │ │ ├── rendering_material.cc
│ │ │ ├── rendering_material.h
│ │ │ ├── skity_auto_canvas_save.h
│ │ │ ├── skity_canvas.cc
│ │ │ ├── skity_canvas.h
│ │ │ ├── skity_decoding_image.cc
│ │ │ ├── skity_decoding_image.h
│ │ │ ├── skity_image.cc
│ │ │ ├── skity_image.h
│ │ │ ├── skity_lazy_image_traveller.cc
│ │ │ └── skity_lazy_image_traveller.h
│ │ ├── skity_to_skia_utils.h
│ │ ├── style/
│ │ │ ├── blend_mode.h
│ │ │ ├── borders_data.cc
│ │ │ ├── borders_data.h
│ │ │ ├── box_data.h
│ │ │ ├── build.gni
│ │ │ ├── color.cc
│ │ │ ├── color.h
│ │ │ ├── color.tmpl
│ │ │ ├── color_filter.cc
│ │ │ ├── color_filter.h
│ │ │ ├── color_filter_unittests.cc
│ │ │ ├── color_gen.inl
│ │ │ ├── color_source.cc
│ │ │ ├── color_source.h
│ │ │ ├── color_source_unittests.cc
│ │ │ ├── color_unittests.cc
│ │ │ ├── color_unittests_helper.h
│ │ │ ├── enum_unittests.cc
│ │ │ ├── image_filter.cc
│ │ │ ├── image_filter.h
│ │ │ ├── image_filter_unittests.cc
│ │ │ ├── length.h
│ │ │ ├── mask_filter.cc
│ │ │ ├── mask_filter.h
│ │ │ ├── mask_filter_unittests.cc
│ │ │ ├── outline_data.cc
│ │ │ ├── outline_data.h
│ │ │ ├── path_effect.cc
│ │ │ ├── path_effect.h
│ │ │ ├── path_effect_unittests.cc
│ │ │ ├── runtime_effect.cc
│ │ │ ├── runtime_effect.h
│ │ │ ├── sampling_options.h
│ │ │ ├── shadow.h
│ │ │ ├── tile_mode.h
│ │ │ ├── vertices.cc
│ │ │ ├── vertices.h
│ │ │ └── vertices_unittests.cc
│ │ ├── svg/
│ │ │ └── svg_dom.h
│ │ ├── testing_utils.h
│ │ ├── text_blob.cc
│ │ ├── text_blob.h
│ │ ├── text_blob_skia.cc
│ │ ├── text_blob_skia.h
│ │ ├── text_blob_skity.cc
│ │ ├── text_blob_skity.h
│ │ └── vulkan/
│ │ ├── build.gni
│ │ ├── vulkan_buffer.cc
│ │ ├── vulkan_buffer.h
│ │ ├── vulkan_command_pool_helper.cc
│ │ ├── vulkan_command_pool_helper.h
│ │ ├── vulkan_fence_helper.cc
│ │ ├── vulkan_fence_helper.h
│ │ ├── vulkan_helper.cc
│ │ ├── vulkan_helper.h
│ │ ├── vulkan_image.cc
│ │ └── vulkan_image.h
│ ├── lynx_adaptor/
│ │ ├── BUILD.gn
│ │ ├── base_def.h
│ │ ├── clay_value.cc
│ │ ├── clay_value.h
│ │ ├── layout_context_clay.cc
│ │ ├── layout_context_clay.h
│ │ ├── lynx_event_dispatcher.cc
│ │ ├── lynx_event_dispatcher.h
│ │ ├── native_module/
│ │ │ ├── AGENTS.md
│ │ │ ├── build.gni
│ │ │ ├── lynx_config_module.cc
│ │ │ ├── lynx_config_module.h
│ │ │ ├── lynx_exposure_module.cc
│ │ │ ├── lynx_exposure_module.h
│ │ │ ├── lynx_focus_module.cc
│ │ │ ├── lynx_focus_module.h
│ │ │ ├── lynx_intersection_observer_module.cc
│ │ │ ├── lynx_intersection_observer_module.h
│ │ │ ├── lynx_module_base.cc
│ │ │ ├── lynx_module_base.h
│ │ │ ├── lynx_module_factory.cc
│ │ │ ├── lynx_module_factory.h
│ │ │ ├── lynx_text_info_module.cc
│ │ │ ├── lynx_text_info_module.h
│ │ │ ├── lynx_ui_method_module.cc
│ │ │ ├── lynx_ui_method_module.h
│ │ │ ├── lynx_websocket_module.cc
│ │ │ ├── lynx_websocket_module.h
│ │ │ └── spec/
│ │ │ └── lynx_ui_method.spec.md
│ │ ├── native_platform_view.cc
│ │ ├── native_platform_view.h
│ │ ├── native_platform_view_mock.cc
│ │ ├── native_view_service_desktop.cc
│ │ ├── native_view_service_desktop.h
│ │ ├── painting_context_clay.cc
│ │ ├── painting_context_clay.h
│ │ ├── perf_controller_clay.cc
│ │ ├── perf_controller_clay.h
│ │ ├── platform_extra_bundle_clay.h
│ │ ├── prop_bundle_impl.cc
│ │ ├── prop_bundle_impl.h
│ │ ├── resource_loader_embedder.cc
│ │ ├── resource_loader_embedder.h
│ │ ├── ui_delegate_clay.cc
│ │ ├── ui_delegate_clay.h
│ │ ├── value_converter.cc
│ │ └── value_converter.h
│ ├── memory/
│ │ ├── BUILD.gn
│ │ ├── discardable_memory.h
│ │ ├── discardable_memory_allocator.h
│ │ ├── discardable_memory_allocator_impl.cc
│ │ ├── discardable_memory_allocator_impl.h
│ │ ├── discardable_memory_allocator_unittests.cc
│ │ ├── discardable_memory_impl.h
│ │ ├── discardable_memory_impl_posix.cc
│ │ ├── discardable_memory_impl_win.cc
│ │ ├── discardable_memory_unittests.cc
│ │ ├── heap_discardable_memory.h
│ │ ├── heap_discardable_memory_unittests.cc
│ │ ├── memory_pressure_listener.cc
│ │ ├── memory_pressure_listener.h
│ │ ├── memory_pressure_listener_unittests.cc
│ │ ├── memory_pressure_monitor.cc
│ │ ├── memory_pressure_monitor.h
│ │ ├── system_memory_pressure_evaluator.cc
│ │ ├── system_memory_pressure_evaluator.h
│ │ ├── system_memory_pressure_evaluator_mac.cc
│ │ ├── system_memory_pressure_evaluator_mac.h
│ │ ├── system_memory_pressure_evaluator_mac_unittests.cc
│ │ ├── system_memory_pressure_evaluator_win.cc
│ │ ├── system_memory_pressure_evaluator_win.h
│ │ └── system_memory_pressure_evaluator_win_unittests.cc
│ ├── net/
│ │ ├── BUILD.gn
│ │ ├── cache/
│ │ │ ├── build.gni
│ │ │ ├── cache_stats.cc
│ │ │ ├── cache_stats.h
│ │ │ ├── net_disk_cache.cc
│ │ │ ├── net_disk_cache.h
│ │ │ ├── net_resource_cache_key.cc
│ │ │ └── net_resource_cache_key.h
│ │ ├── fetcher/
│ │ │ ├── build.gni
│ │ │ ├── http_resource_fetcher.cc
│ │ │ ├── http_resource_fetcher.h
│ │ │ ├── http_resource_fetcher_factory.cc
│ │ │ ├── http_resource_fetcher_factory.h
│ │ │ ├── http_resource_fetcher_host.cc
│ │ │ ├── http_resource_fetcher_host.h
│ │ │ └── http_resource_fetcher_unittests.cc
│ │ ├── loader/
│ │ │ ├── build.gni
│ │ │ ├── data_image_loader.cc
│ │ │ ├── data_image_loader.h
│ │ │ ├── resource_loader.h
│ │ │ ├── resource_loader_creator_service.h
│ │ │ ├── resource_loader_factory.cc
│ │ │ ├── resource_loader_factory.h
│ │ │ ├── resource_loader_intercept.h
│ │ │ └── resource_loader_platform.h
│ │ ├── macros.h
│ │ ├── net_loader_callback.cc
│ │ ├── net_loader_callback.h
│ │ ├── net_loader_manager.cc
│ │ ├── net_loader_manager.h
│ │ ├── net_loader_manager_unittests.cc
│ │ ├── resource_type.h
│ │ └── url/
│ │ ├── LICENSE.txt
│ │ ├── README.chromium
│ │ ├── README.md
│ │ ├── build.gni
│ │ ├── uri.cc
│ │ ├── uri.h
│ │ ├── url_helper.cc
│ │ ├── url_helper.h
│ │ ├── url_helper_test.cc
│ │ ├── url_parse.cc
│ │ ├── url_parse.h
│ │ ├── url_parse_internal.cc
│ │ └── url_parse_internal.h
│ ├── public/
│ │ ├── clay.h
│ │ ├── event_delegate.h
│ │ ├── layout_delegate.h
│ │ ├── style_types.h
│ │ ├── ui_component_delegate.h
│ │ └── value.h
│ ├── shell/
│ │ ├── common/
│ │ │ ├── BUILD.gn
│ │ │ ├── context_options.cc
│ │ │ ├── context_options.h
│ │ │ ├── devtools_instrumentation.cc
│ │ │ ├── devtools_instrumentation.h
│ │ │ ├── display.cc
│ │ │ ├── display.h
│ │ │ ├── display_manager.cc
│ │ │ ├── display_manager.h
│ │ │ ├── engine.cc
│ │ │ ├── engine.h
│ │ │ ├── expired_on_task_runner.h
│ │ │ ├── frame_timing_listener.h
│ │ │ ├── one_shot_callback.h
│ │ │ ├── output_surface.cc
│ │ │ ├── output_surface.h
│ │ │ ├── pipeline_timing_delegate.h
│ │ │ ├── platform_view.cc
│ │ │ ├── platform_view.h
│ │ │ ├── pointer_data_dispatcher.cc
│ │ │ ├── pointer_data_dispatcher.h
│ │ │ ├── pointer_data_to_event.cc
│ │ │ ├── pointer_data_to_event.h
│ │ │ ├── rasterizer.cc
│ │ │ ├── rasterizer.h
│ │ │ ├── resource_cache_limit_calculator.cc
│ │ │ ├── resource_cache_limit_calculator.h
│ │ │ ├── scheduler/
│ │ │ │ ├── scheduler.cc
│ │ │ │ ├── scheduler.h
│ │ │ │ ├── scheduler_client.h
│ │ │ │ ├── scheduler_state_machine.cc
│ │ │ │ └── scheduler_state_machine.h
│ │ │ ├── screenshot_utils.cc
│ │ │ ├── screenshot_utils.h
│ │ │ ├── scroll_fluency_monitor_delegate.h
│ │ │ ├── serialization_callbacks.cc
│ │ │ ├── serialization_callbacks.h
│ │ │ ├── services/
│ │ │ │ ├── animation_event_service_impl.cc
│ │ │ │ ├── animation_event_service_impl.h
│ │ │ │ ├── animator_info_service.cc
│ │ │ │ ├── animator_info_service.h
│ │ │ │ ├── compositor/
│ │ │ │ │ ├── compositor_service.cc
│ │ │ │ │ ├── compositor_service.h
│ │ │ │ │ ├── platform_overlay_service.h
│ │ │ │ │ ├── platform_overlay_service_fallback.cc
│ │ │ │ │ ├── presenter_service.cc
│ │ │ │ │ ├── presenter_service.h
│ │ │ │ │ └── presenter_service_fallback.cc
│ │ │ │ ├── drag_drop_service.cc
│ │ │ │ ├── drag_drop_service.h
│ │ │ │ ├── gesture_mediate_service.h
│ │ │ │ ├── initialize_service.cc
│ │ │ │ ├── initialize_service.h
│ │ │ │ ├── instrumentation_service.cc
│ │ │ │ ├── instrumentation_service.h
│ │ │ │ ├── platform_const_service.cc
│ │ │ │ ├── platform_const_service.h
│ │ │ │ ├── raster_frame_service.cc
│ │ │ │ ├── raster_frame_service.h
│ │ │ │ ├── rasterizer_service.cc
│ │ │ │ ├── rasterizer_service.h
│ │ │ │ ├── screenshot_encoder.cc
│ │ │ │ ├── screenshot_encoder.h
│ │ │ │ ├── screenshot_service.cc
│ │ │ │ ├── screenshot_service.h
│ │ │ │ ├── sync_compositor_service.cc
│ │ │ │ ├── sync_compositor_service.h
│ │ │ │ ├── ui_frame_service.cc
│ │ │ │ ├── ui_frame_service.h
│ │ │ │ └── vsync_waiter_service.h
│ │ │ ├── shell.cc
│ │ │ ├── shell.h
│ │ │ ├── shell_common_rendering_backend.h
│ │ │ ├── skia_event_tracer_impl.cc
│ │ │ ├── skia_event_tracer_impl.h
│ │ │ ├── switches.cc
│ │ │ ├── switches.h
│ │ │ ├── variable_refresh_rate_display.cc
│ │ │ ├── variable_refresh_rate_display.h
│ │ │ ├── variable_refresh_rate_reporter.h
│ │ │ ├── vsync_waiter.cc
│ │ │ ├── vsync_waiter.h
│ │ │ ├── vsync_waiter_fallback.cc
│ │ │ ├── vsync_waiter_fallback.h
│ │ │ ├── vsync_waiter_macos.h
│ │ │ └── vsync_waiter_macos.mm
│ │ ├── config.gni
│ │ ├── gpu/
│ │ │ ├── BUILD.gn
│ │ │ ├── gpu.gni
│ │ │ ├── gpu_surface_gl_delegate.cc
│ │ │ ├── gpu_surface_gl_delegate.h
│ │ │ ├── gpu_surface_gl_skia.cc
│ │ │ ├── gpu_surface_gl_skia.h
│ │ │ ├── gpu_surface_gl_skity.cc
│ │ │ ├── gpu_surface_gl_skity.h
│ │ │ ├── gpu_surface_metal_delegate.cc
│ │ │ ├── gpu_surface_metal_delegate.h
│ │ │ ├── gpu_surface_metal_skia.h
│ │ │ ├── gpu_surface_metal_skia.mm
│ │ │ ├── gpu_surface_metal_skity.h
│ │ │ ├── gpu_surface_metal_skity.mm
│ │ │ ├── gpu_surface_software.cc
│ │ │ ├── gpu_surface_software.h
│ │ │ ├── gpu_surface_software_delegate.cc
│ │ │ ├── gpu_surface_software_delegate.h
│ │ │ ├── trace_gl_fuctions.cc
│ │ │ └── trace_gl_fuctions.h
│ │ ├── platform/
│ │ │ ├── common/
│ │ │ │ ├── BUILD.gn
│ │ │ │ ├── engine_switches.cc
│ │ │ │ ├── engine_switches.h
│ │ │ │ ├── engine_switches_unittests.cc
│ │ │ │ ├── path_utils.cc
│ │ │ │ ├── path_utils.h
│ │ │ │ ├── path_utils_unittests.cc
│ │ │ │ ├── platform_provided_menu.h
│ │ │ │ ├── text_editing_delta.cc
│ │ │ │ ├── text_editing_delta.h
│ │ │ │ ├── text_editing_delta_unittests.cc
│ │ │ │ ├── text_input_model.cc
│ │ │ │ ├── text_input_model.h
│ │ │ │ ├── text_input_model_unittests.cc
│ │ │ │ ├── text_range.h
│ │ │ │ └── text_range_unittests.cc
│ │ │ ├── darwin/
│ │ │ │ ├── CPPLINT.cfg
│ │ │ │ ├── common/
│ │ │ │ │ ├── BUILD.gn
│ │ │ │ │ ├── clay_service_manager_service_darwin.h
│ │ │ │ │ ├── clay_service_manager_service_darwin.mm
│ │ │ │ │ ├── framework/
│ │ │ │ │ │ ├── Headers/
│ │ │ │ │ │ │ ├── ClayServiceManager.h
│ │ │ │ │ │ │ └── FlutterMacros.h
│ │ │ │ │ │ └── Source/
│ │ │ │ │ │ └── ClayServiceManager.mm
│ │ │ │ │ └── framework_shared.gni
│ │ │ │ ├── graphics/
│ │ │ │ │ ├── BUILD.gn
│ │ │ │ │ ├── FlutterDarwinContextMetalSkia.h
│ │ │ │ │ ├── FlutterDarwinContextMetalSkia.mm
│ │ │ │ │ ├── FlutterDarwinContextMetalSkity.h
│ │ │ │ │ └── FlutterDarwinContextMetalSkity.mm
│ │ │ │ └── macos/
│ │ │ │ ├── BUILD.gn
│ │ │ │ └── framework/
│ │ │ │ ├── Headers/
│ │ │ │ │ ├── ClayMacOS.h
│ │ │ │ │ ├── ClayViewProvider.h
│ │ │ │ │ ├── FlutterAppDelegate.h
│ │ │ │ │ ├── FlutterEngine.h
│ │ │ │ │ ├── FlutterPlatformViews.h
│ │ │ │ │ ├── FlutterPluginMacOS.h
│ │ │ │ │ ├── FlutterPluginRegistrarMacOS.h
│ │ │ │ │ ├── FlutterView.h
│ │ │ │ │ └── FlutterViewController.h
│ │ │ │ └── Source/
│ │ │ │ ├── ClayMouseCursorPlugin.h
│ │ │ │ ├── ClayMouseCursorPlugin.mm
│ │ │ │ ├── ClayViewProvider.mm
│ │ │ │ ├── ClayViewProvider_Internal.h
│ │ │ │ ├── FlutterAppDelegate.mm
│ │ │ │ ├── FlutterEmbedderKeyResponder.h
│ │ │ │ ├── FlutterEmbedderKeyResponder.mm
│ │ │ │ ├── FlutterEngine.mm
│ │ │ │ ├── FlutterEngine_Internal.h
│ │ │ │ ├── FlutterKeyPrimaryResponder.h
│ │ │ │ ├── FlutterKeyboardManager.h
│ │ │ │ ├── FlutterKeyboardManager.mm
│ │ │ │ ├── FlutterKeyboardViewDelegate.h
│ │ │ │ ├── FlutterPlatformViewController.h
│ │ │ │ ├── FlutterPlatformViewController.mm
│ │ │ │ ├── FlutterRenderer.h
│ │ │ │ ├── FlutterRenderer.mm
│ │ │ │ ├── FlutterSurface.h
│ │ │ │ ├── FlutterSurface.mm
│ │ │ │ ├── FlutterSurfaceManager.h
│ │ │ │ ├── FlutterSurfaceManager.mm
│ │ │ │ ├── FlutterTextInputPlugin.h
│ │ │ │ ├── FlutterTextInputPlugin.mm
│ │ │ │ ├── FlutterThreadSynchronizer.h
│ │ │ │ ├── FlutterThreadSynchronizer.mm
│ │ │ │ ├── FlutterView.h
│ │ │ │ ├── FlutterView.mm
│ │ │ │ ├── FlutterViewController.mm
│ │ │ │ ├── FlutterViewController_Internal.h
│ │ │ │ ├── FlutterViewEngineProvider.h
│ │ │ │ ├── FlutterViewEngineProvider.mm
│ │ │ │ ├── FlutterViewProvider.h
│ │ │ │ ├── KeyCodeMap.g.mm
│ │ │ │ └── KeyCodeMap_Internal.h
│ │ │ ├── embedder/
│ │ │ │ ├── BUILD.gn
│ │ │ │ ├── embedder_engine.cc
│ │ │ │ ├── embedder_engine.h
│ │ │ │ ├── embedder_struct_macros.h
│ │ │ │ ├── embedder_surface.cc
│ │ │ │ ├── embedder_surface.h
│ │ │ │ ├── embedder_surface_gl.cc
│ │ │ │ ├── embedder_surface_gl.h
│ │ │ │ ├── embedder_surface_metal.h
│ │ │ │ ├── embedder_surface_metal.mm
│ │ │ │ ├── embedder_surface_software.cc
│ │ │ │ ├── embedder_surface_software.h
│ │ │ │ ├── embedder_task_runner.cc
│ │ │ │ ├── embedder_task_runner.h
│ │ │ │ ├── embedder_thread_host.cc
│ │ │ │ ├── embedder_thread_host.h
│ │ │ │ ├── platform_view_embedder.cc
│ │ │ │ ├── platform_view_embedder.h
│ │ │ │ ├── platform_view_embedder_delegate.cc
│ │ │ │ ├── platform_view_embedder_delegate.h
│ │ │ │ ├── shell_platform_embedder_rendering_backend.h
│ │ │ │ ├── vsync_waiter_embedder.cc
│ │ │ │ └── vsync_waiter_embedder.h
│ │ │ ├── headless/
│ │ │ │ ├── BUILD.gn
│ │ │ │ ├── clay_event_loop.cc
│ │ │ │ ├── clay_event_loop.h
│ │ │ │ ├── clay_headless_engine.cc
│ │ │ │ ├── clay_headless_engine.h
│ │ │ │ ├── clay_headless_renderer.cc
│ │ │ │ ├── clay_headless_renderer.h
│ │ │ │ ├── gl/
│ │ │ │ │ ├── clay_headless_renderer_angle.cc
│ │ │ │ │ ├── clay_headless_renderer_angle.h
│ │ │ │ │ ├── clay_headless_renderer_cgl.cc
│ │ │ │ │ ├── clay_headless_renderer_cgl.h
│ │ │ │ │ ├── clay_headless_renderer_epoxy.cc
│ │ │ │ │ ├── clay_headless_renderer_epoxy.h
│ │ │ │ │ ├── clay_headless_renderer_gl.cc
│ │ │ │ │ ├── clay_headless_renderer_gl.h
│ │ │ │ │ ├── clay_headless_renderer_gles.cc
│ │ │ │ │ ├── clay_headless_renderer_gles.h
│ │ │ │ │ ├── clay_headless_renderer_host_gl.cc
│ │ │ │ │ └── clay_headless_renderer_host_gl.h
│ │ │ │ ├── metal/
│ │ │ │ │ ├── clay_headless_renderer_metal.h
│ │ │ │ │ └── clay_headless_renderer_metal.mm
│ │ │ │ └── public/
│ │ │ │ └── embdder_headless_delegate.h
│ │ │ └── windows/
│ │ │ ├── BUILD.gn
│ │ │ ├── cursor_handler.cc
│ │ │ ├── cursor_handler.h
│ │ │ ├── direct_manipulation.cc
│ │ │ ├── direct_manipulation.h
│ │ │ ├── dpi_utils.cc
│ │ │ ├── dpi_utils.h
│ │ │ ├── egl/
│ │ │ │ ├── child_window_win.cc
│ │ │ │ ├── child_window_win.h
│ │ │ │ ├── context.cc
│ │ │ │ ├── context.h
│ │ │ │ ├── direct_composition_surface.cc
│ │ │ │ ├── direct_composition_surface.h
│ │ │ │ ├── egl.cc
│ │ │ │ ├── egl.h
│ │ │ │ ├── manager.cc
│ │ │ │ ├── manager.h
│ │ │ │ ├── surface.cc
│ │ │ │ ├── surface.h
│ │ │ │ ├── window_surface.cc
│ │ │ │ └── window_surface.h
│ │ │ ├── flutter_key_map.g.cc
│ │ │ ├── flutter_project_bundle.cc
│ │ │ ├── flutter_project_bundle.h
│ │ │ ├── flutter_window.cc
│ │ │ ├── flutter_window.h
│ │ │ ├── flutter_windows_engine.cc
│ │ │ ├── flutter_windows_engine.h
│ │ │ ├── flutter_windows_view.cc
│ │ │ ├── flutter_windows_view.h
│ │ │ ├── keyboard_handler_base.h
│ │ │ ├── keyboard_key_embedder_handler.cc
│ │ │ ├── keyboard_key_embedder_handler.h
│ │ │ ├── keyboard_key_handler.cc
│ │ │ ├── keyboard_key_handler.h
│ │ │ ├── keyboard_manager.cc
│ │ │ ├── keyboard_manager.h
│ │ │ ├── keyboard_utils.cc
│ │ │ ├── keyboard_utils.h
│ │ │ ├── platform_handler.cc
│ │ │ ├── platform_handler.h
│ │ │ ├── sequential_id_generator.cc
│ │ │ ├── sequential_id_generator.h
│ │ │ ├── task_runner.cc
│ │ │ ├── task_runner.h
│ │ │ ├── task_runner_window.cc
│ │ │ ├── task_runner_window.h
│ │ │ ├── text_input_manager.cc
│ │ │ ├── text_input_manager.h
│ │ │ ├── text_input_plugin.cc
│ │ │ ├── text_input_plugin.h
│ │ │ ├── text_input_plugin_delegate.h
│ │ │ ├── window.cc
│ │ │ ├── window.h
│ │ │ ├── window_binding_handler.h
│ │ │ ├── window_binding_handler_delegate.h
│ │ │ ├── window_mouse_drop_handler.cc
│ │ │ ├── window_mouse_drop_handler.h
│ │ │ ├── window_move_handler.cc
│ │ │ ├── window_move_handler.h
│ │ │ ├── window_proc_delegate_manager.cc
│ │ │ ├── window_proc_delegate_manager.h
│ │ │ ├── windows_proc_table.cc
│ │ │ ├── windows_proc_table.h
│ │ │ └── windowsx_shim.h
│ │ └── profiling/
│ │ ├── BUILD.gn
│ │ ├── sampling_profiler.cc
│ │ ├── sampling_profiler.h
│ │ └── sampling_profiler_unittest.cc
│ ├── testing/
│ │ ├── .vpython
│ │ ├── .vpython3
│ │ ├── BUILD.gn
│ │ ├── CPPLINT.cfg
│ │ ├── analysis_options.yaml
│ │ ├── analyze_core_dump.sh
│ │ ├── android_systrace_test.py
│ │ ├── assertions.h
│ │ ├── assertions_skia.cc
│ │ ├── assertions_skia.h
│ │ ├── canvas_test.h
│ │ ├── debugger_detection.cc
│ │ ├── debugger_detection.h
│ │ ├── fixture_test.cc
│ │ ├── fixture_test.h
│ │ ├── lsan_suppressions.txt
│ │ ├── mock_canvas.cc
│ │ ├── mock_canvas.h
│ │ ├── mock_canvas_unittests.cc
│ │ ├── post_task_sync.cc
│ │ ├── post_task_sync.h
│ │ ├── run_all_unittests.cc
│ │ ├── run_tests.py
│ │ ├── run_tests.sh
│ │ ├── sanitizer_suppressions.sh
│ │ ├── test_gl_surface.cc
│ │ ├── test_gl_surface.h
│ │ ├── test_metal_context.h
│ │ ├── test_metal_context.mm
│ │ ├── test_metal_surface.cc
│ │ ├── test_metal_surface.h
│ │ ├── test_metal_surface_impl.h
│ │ ├── test_metal_surface_impl.mm
│ │ ├── test_metal_surface_unittests.cc
│ │ ├── test_timeout_listener.cc
│ │ ├── test_timeout_listener.h
│ │ ├── testing.cc
│ │ ├── testing.gni
│ │ ├── testing.h
│ │ ├── thread_test.cc
│ │ ├── thread_test.h
│ │ ├── tsan_suppressions.txt
│ │ ├── ubsan_suppressions.txt
│ │ └── xvfb.py
│ ├── third_party/
│ │ ├── CPPLINT.cfg
│ │ ├── skity_geometry/
│ │ │ ├── BUILD.gn
│ │ │ ├── include/
│ │ │ │ └── skity/
│ │ │ │ ├── geometry/
│ │ │ │ │ ├── matrix.hpp
│ │ │ │ │ ├── point.hpp
│ │ │ │ │ ├── rect.hpp
│ │ │ │ │ ├── rrect.hpp
│ │ │ │ │ ├── scalar.hpp
│ │ │ │ │ └── vector.hpp
│ │ │ │ └── macros.hpp
│ │ │ └── src/
│ │ │ └── geometry/
│ │ │ ├── glm_helper.hpp
│ │ │ ├── math.hpp
│ │ │ ├── matrix.cc
│ │ │ ├── rect.cc
│ │ │ └── rrect.cc
│ │ └── txt/
│ │ ├── .clang-format
│ │ ├── .gitattributes
│ │ ├── .gitignore
│ │ ├── BUILD.gn
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ ├── benchmarks/
│ │ │ ├── paint_record_benchmarks.cc
│ │ │ ├── paragraph_benchmarks.cc
│ │ │ ├── paragraph_builder_benchmarks.cc
│ │ │ ├── skparagraph_benchmarks.cc
│ │ │ └── txt_run_all_benchmarks.cc
│ │ ├── src/
│ │ │ ├── log/
│ │ │ │ ├── log.cc
│ │ │ │ └── log.h
│ │ │ ├── minikin/
│ │ │ │ ├── CmapCoverage.cpp
│ │ │ │ ├── CmapCoverage.h
│ │ │ │ ├── Emoji.cpp
│ │ │ │ ├── Emoji.h
│ │ │ │ ├── FontCollection.cpp
│ │ │ │ ├── FontCollection.h
│ │ │ │ ├── FontFamily.cpp
│ │ │ │ ├── FontFamily.h
│ │ │ │ ├── FontLanguage.cpp
│ │ │ │ ├── FontLanguage.h
│ │ │ │ ├── FontLanguageListCache.cpp
│ │ │ │ ├── FontLanguageListCache.h
│ │ │ │ ├── FontUtils.cpp
│ │ │ │ ├── FontUtils.h
│ │ │ │ ├── GraphemeBreak.cpp
│ │ │ │ ├── GraphemeBreak.h
│ │ │ │ ├── HbFontCache.cpp
│ │ │ │ ├── HbFontCache.h
│ │ │ │ ├── Hyphenator.cpp
│ │ │ │ ├── Hyphenator.h
│ │ │ │ ├── Layout.cpp
│ │ │ │ ├── Layout.h
│ │ │ │ ├── LayoutUtils.cpp
│ │ │ │ ├── LayoutUtils.h
│ │ │ │ ├── LineBreaker.cpp
│ │ │ │ ├── LineBreaker.h
│ │ │ │ ├── Measurement.cpp
│ │ │ │ ├── Measurement.h
│ │ │ │ ├── MinikinFont.cpp
│ │ │ │ ├── MinikinFont.h
│ │ │ │ ├── MinikinInternal.cpp
│ │ │ │ ├── MinikinInternal.h
│ │ │ │ ├── SparseBitSet.cpp
│ │ │ │ ├── SparseBitSet.h
│ │ │ │ ├── WordBreaker.cpp
│ │ │ │ └── WordBreaker.h
│ │ │ ├── skia/
│ │ │ │ ├── paragraph_builder_skia.cc
│ │ │ │ ├── paragraph_builder_skia.h
│ │ │ │ ├── paragraph_skia.cc
│ │ │ │ └── paragraph_skia.h
│ │ │ ├── tttext/
│ │ │ │ ├── paragraph_builder_tt_text.cc
│ │ │ │ ├── paragraph_builder_tt_text.h
│ │ │ │ ├── paragraph_tt_text.cc
│ │ │ │ ├── paragraph_tt_text.h
│ │ │ │ └── tttext_headers.h
│ │ │ ├── txt/
│ │ │ │ ├── asset_font_manager_skia.cc
│ │ │ │ ├── asset_font_manager_skia.h
│ │ │ │ ├── asset_font_manager_skity.cc
│ │ │ │ ├── asset_font_manager_skity.h
│ │ │ │ ├── font_asset_provider.cc
│ │ │ │ ├── font_asset_provider.h
│ │ │ │ ├── font_asset_provider_skity.h
│ │ │ │ ├── font_collection_skia.cc
│ │ │ │ ├── font_collection_skia.h
│ │ │ │ ├── font_collection_skity.cc
│ │ │ │ ├── font_collection_skity.h
│ │ │ │ ├── font_features.cc
│ │ │ │ ├── font_features.h
│ │ │ │ ├── font_skia.cc
│ │ │ │ ├── font_skia.h
│ │ │ │ ├── font_style.h
│ │ │ │ ├── font_weight.h
│ │ │ │ ├── line_metrics.h
│ │ │ │ ├── paint_record.cc
│ │ │ │ ├── paint_record.h
│ │ │ │ ├── paragraph.h
│ │ │ │ ├── paragraph_builder.cc
│ │ │ │ ├── paragraph_builder.h
│ │ │ │ ├── paragraph_builder_txt.cc
│ │ │ │ ├── paragraph_builder_txt.h
│ │ │ │ ├── paragraph_style.cc
│ │ │ │ ├── paragraph_style.h
│ │ │ │ ├── paragraph_txt.cc
│ │ │ │ ├── paragraph_txt.h
│ │ │ │ ├── placeholder_run.cc
│ │ │ │ ├── placeholder_run.h
│ │ │ │ ├── platform.cc
│ │ │ │ ├── platform.h
│ │ │ │ ├── platform_android.cc
│ │ │ │ ├── platform_fuchsia.cc
│ │ │ │ ├── platform_harmony.cc
│ │ │ │ ├── platform_linux.cc
│ │ │ │ ├── platform_mac.mm
│ │ │ │ ├── platform_windows.cc
│ │ │ │ ├── run_metrics.h
│ │ │ │ ├── styled_runs.cc
│ │ │ │ ├── styled_runs.h
│ │ │ │ ├── test_font_manager.cc
│ │ │ │ ├── test_font_manager.h
│ │ │ │ ├── text_baseline.h
│ │ │ │ ├── text_decoration.cc
│ │ │ │ ├── text_decoration.h
│ │ │ │ ├── text_shadow.cc
│ │ │ │ ├── text_shadow.h
│ │ │ │ ├── text_style.cc
│ │ │ │ ├── text_style.h
│ │ │ │ ├── typeface_font_asset_provider_skia.cc
│ │ │ │ ├── typeface_font_asset_provider_skia.h
│ │ │ │ ├── typeface_font_asset_provider_skity.cc
│ │ │ │ └── typeface_font_asset_provider_skity.h
│ │ │ └── utils/
│ │ │ ├── JenkinsHash.cpp
│ │ │ ├── JenkinsHash.h
│ │ │ ├── LinuxUtils.h
│ │ │ ├── LruCache.h
│ │ │ ├── MacUtils.h
│ │ │ ├── TypeHelpers.h
│ │ │ └── WindowsUtils.h
│ │ └── tests/
│ │ ├── CmapCoverageTest.cpp
│ │ ├── EmojiTest.cpp
│ │ ├── FileUtils.cpp
│ │ ├── FileUtils.h
│ │ ├── FontCollectionItemizeTest.cpp
│ │ ├── FontCollectionTest.cpp
│ │ ├── FontFamilyTest.cpp
│ │ ├── FontLanguageListCacheTest.cpp
│ │ ├── FontTestUtils.cpp
│ │ ├── FontTestUtils.h
│ │ ├── GraphemeBreakTests.cpp
│ │ ├── HbFontCacheTest.cpp
│ │ ├── HyphenatorTest.cpp
│ │ ├── ICUTestBase.h
│ │ ├── LayoutTest.cpp
│ │ ├── LayoutUtilsTest.cpp
│ │ ├── MeasurementTests.cpp
│ │ ├── MinikinFontForTest.cpp
│ │ ├── MinikinFontForTest.h
│ │ ├── SparseBitSetTest.cpp
│ │ ├── UnicodeUtils.cpp
│ │ ├── UnicodeUtils.h
│ │ ├── UnicodeUtilsTest.cpp
│ │ ├── WordBreakerTests.cpp
│ │ ├── fake_provider.h
│ │ ├── font_collection_unittests.cc
│ │ ├── old/
│ │ │ ├── perftests/
│ │ │ │ ├── FontCollection.cpp
│ │ │ │ ├── FontFamily.cpp
│ │ │ │ ├── FontLanguage.cpp
│ │ │ │ ├── GraphemeBreak.cpp
│ │ │ │ ├── Hyphenator.cpp
│ │ │ │ ├── WordBreaker.cpp
│ │ │ │ └── main.cpp
│ │ │ └── stresstest/
│ │ │ └── MultithreadTest.cpp
│ │ ├── paragraph_unittests.cc
│ │ ├── platform_fuchsia_unittests.cc
│ │ ├── render_test.cc
│ │ ├── render_test.h
│ │ ├── txt_run_all_unittests.cc
│ │ ├── txt_test_utils.cc
│ │ └── txt_test_utils.h
│ ├── tools/
│ │ └── make_keywords.py
│ ├── ui/
│ │ ├── BUILD.gn
│ │ ├── common/
│ │ │ ├── attribute_utils.cc
│ │ │ ├── attribute_utils.h
│ │ │ ├── attribute_utils_unittests.cc
│ │ │ ├── background_data.cc
│ │ │ ├── background_data.h
│ │ │ ├── build.gni
│ │ │ ├── editing_misc.h
│ │ │ ├── fps_tracer.cc
│ │ │ ├── fps_tracer.h
│ │ │ ├── frame_timing_collector.cc
│ │ │ ├── frame_timing_collector.h
│ │ │ ├── gap_task.h
│ │ │ ├── gap_worker.cc
│ │ │ ├── gap_worker.h
│ │ │ ├── input_client_manager.h
│ │ │ ├── isolate.cc
│ │ │ ├── isolate.h
│ │ │ ├── json_utils.h
│ │ │ ├── macros.h
│ │ │ ├── measure_constraint.h
│ │ │ ├── overlay_manager.cc
│ │ │ ├── overlay_manager.h
│ │ │ ├── render_settings.cc
│ │ │ ├── render_settings.h
│ │ │ ├── text_input_type_traits.h
│ │ │ ├── text_selection.h
│ │ │ ├── type_info.h
│ │ │ ├── utils/
│ │ │ │ ├── floating_comparison.h
│ │ │ │ ├── value_change_notifier.h
│ │ │ │ ├── watch_dog.cc
│ │ │ │ └── watch_dog.h
│ │ │ ├── value_utils.cc
│ │ │ └── value_utils.h
│ │ ├── component/
│ │ │ ├── base_image_view.cc
│ │ │ ├── base_image_view.h
│ │ │ ├── base_view.cc
│ │ │ ├── base_view.h
│ │ │ ├── base_view_animation_mutator.cc
│ │ │ ├── base_view_animation_mutator.h
│ │ │ ├── base_view_unittests.cc
│ │ │ ├── bounce_view/
│ │ │ │ ├── bounce_view.cc
│ │ │ │ └── bounce_view.h
│ │ │ ├── build.gni
│ │ │ ├── builtin_views.cc
│ │ │ ├── builtin_views.h
│ │ │ ├── component.cc
│ │ │ ├── component.h
│ │ │ ├── component_constants.cc
│ │ │ ├── component_constants.h
│ │ │ ├── css_property.cc
│ │ │ ├── css_property.h
│ │ │ ├── editable/
│ │ │ │ ├── editable_view.cc
│ │ │ │ ├── editable_view.h
│ │ │ │ ├── ime_listener.h
│ │ │ │ ├── ime_utils.cc
│ │ │ │ ├── ime_utils.h
│ │ │ │ ├── input_ng_view.cc
│ │ │ │ ├── input_ng_view.h
│ │ │ │ ├── input_view.cc
│ │ │ │ ├── input_view.h
│ │ │ │ ├── text_editing_controller.cc
│ │ │ │ ├── text_editing_controller.h
│ │ │ │ ├── text_input_controller.cc
│ │ │ │ ├── text_input_controller.h
│ │ │ │ ├── text_span.cc
│ │ │ │ ├── text_span.h
│ │ │ │ ├── text_utils.h
│ │ │ │ ├── textarea_ng_view.cc
│ │ │ │ ├── textarea_ng_view.h
│ │ │ │ ├── textarea_ng_view_unittests.cc
│ │ │ │ ├── textarea_view.cc
│ │ │ │ └── textarea_view.h
│ │ │ ├── expose_manager/
│ │ │ │ ├── expose_observer.cc
│ │ │ │ └── expose_observer.h
│ │ │ ├── focus/
│ │ │ │ ├── focus_isolate.cc
│ │ │ │ └── focus_isolate.h
│ │ │ ├── focus_event_handler.h
│ │ │ ├── focus_node.cc
│ │ │ ├── focus_node.h
│ │ │ ├── hittest_request.h
│ │ │ ├── image_view.cc
│ │ │ ├── image_view.h
│ │ │ ├── inline_image_view.cc
│ │ │ ├── inline_image_view.h
│ │ │ ├── intersection_observer.cc
│ │ │ ├── intersection_observer.h
│ │ │ ├── intersection_observer_manager.cc
│ │ │ ├── intersection_observer_manager.h
│ │ │ ├── isolated_gesture_detector.h
│ │ │ ├── key_event_handler.cc
│ │ │ ├── key_event_handler.h
│ │ │ ├── keyframe_animator_unittests.cc
│ │ │ ├── keywords.cc
│ │ │ ├── keywords.h
│ │ │ ├── keywords.in
│ │ │ ├── layout_controller.cc
│ │ │ ├── layout_controller.h
│ │ │ ├── list/
│ │ │ │ ├── base_list_view.cc
│ │ │ │ ├── base_list_view.h
│ │ │ │ ├── base_list_view_unittests.cc
│ │ │ │ ├── focus_list_adapter.cc
│ │ │ │ ├── focus_list_adapter.h
│ │ │ │ ├── focus_list_item_view_holder.cc
│ │ │ │ ├── focus_list_item_view_holder.h
│ │ │ │ ├── focus_list_view.cc
│ │ │ │ ├── focus_list_view.h
│ │ │ │ ├── focus_list_view_unittests.cc
│ │ │ │ ├── list_adapter.cc
│ │ │ │ ├── list_adapter.h
│ │ │ │ ├── list_adapter_helper.cc
│ │ │ │ ├── list_adapter_helper.h
│ │ │ │ ├── list_adapter_updater.cc
│ │ │ │ ├── list_adapter_updater.h
│ │ │ │ ├── list_children_helper.cc
│ │ │ │ ├── list_children_helper.h
│ │ │ │ ├── list_common/
│ │ │ │ │ ├── layout_types.cc
│ │ │ │ │ └── layout_types.h
│ │ │ │ ├── list_container/
│ │ │ │ │ ├── list_container_view.cc
│ │ │ │ │ ├── list_container_view.h
│ │ │ │ │ ├── list_container_wrapper.cc
│ │ │ │ │ └── list_container_wrapper.h
│ │ │ │ ├── list_item_length_cache.cc
│ │ │ │ ├── list_item_length_cache.h
│ │ │ │ ├── list_item_length_cache_unittests.cc
│ │ │ │ ├── list_item_view.cc
│ │ │ │ ├── list_item_view.h
│ │ │ │ ├── list_item_view_holder.cc
│ │ │ │ ├── list_item_view_holder.h
│ │ │ │ ├── list_layout_manager.cc
│ │ │ │ ├── list_layout_manager.h
│ │ │ │ ├── list_layout_manager_grid.cc
│ │ │ │ ├── list_layout_manager_grid.h
│ │ │ │ ├── list_layout_manager_linear.cc
│ │ │ │ ├── list_layout_manager_linear.h
│ │ │ │ ├── list_layout_manager_staggered_grid.cc
│ │ │ │ ├── list_layout_manager_staggered_grid.h
│ │ │ │ ├── list_orientation_helper.cc
│ │ │ │ ├── list_orientation_helper.h
│ │ │ │ ├── list_recycler.cc
│ │ │ │ ├── list_recycler.h
│ │ │ │ ├── list_scroller.cc
│ │ │ │ ├── list_scroller.h
│ │ │ │ ├── list_view.cc
│ │ │ │ ├── list_view.h
│ │ │ │ ├── list_wrapper.cc
│ │ │ │ ├── list_wrapper.h
│ │ │ │ ├── lynx_list_adapter.cc
│ │ │ │ ├── lynx_list_adapter.h
│ │ │ │ ├── lynx_list_data.cc
│ │ │ │ ├── lynx_list_data.h
│ │ │ │ ├── lynx_list_item_view_holder.cc
│ │ │ │ ├── lynx_list_item_view_holder.h
│ │ │ │ └── macros.h
│ │ │ ├── measurable.h
│ │ │ ├── mouse_cursor.h
│ │ │ ├── native_view.cc
│ │ │ ├── native_view.h
│ │ │ ├── native_view_unittests.cc
│ │ │ ├── nested_scroll/
│ │ │ │ ├── nested_scroll_manager.cc
│ │ │ │ ├── nested_scroll_manager.h
│ │ │ │ ├── nested_scrollable.cc
│ │ │ │ ├── nested_scrollable.h
│ │ │ │ ├── nested_scrollable_unittests.cc
│ │ │ │ ├── overscroll_effect.cc
│ │ │ │ ├── overscroll_effect.h
│ │ │ │ ├── raster_fling_manager.cc
│ │ │ │ └── raster_fling_manager.h
│ │ │ ├── overlay_view.cc
│ │ │ ├── overlay_view.h
│ │ │ ├── overlay_view_unittests.cc
│ │ │ ├── page_view.cc
│ │ │ ├── page_view.h
│ │ │ ├── page_view_unittests.cc
│ │ │ ├── rubberband_distance.cc
│ │ │ ├── rubberband_distance.h
│ │ │ ├── scroll_view.cc
│ │ │ ├── scroll_view.h
│ │ │ ├── scroll_view_unittests.cc
│ │ │ ├── scroll_wrapper.cc
│ │ │ ├── scroll_wrapper.h
│ │ │ ├── scrollable.cc
│ │ │ ├── scrollable.h
│ │ │ ├── scrollbar/
│ │ │ │ ├── scrollbar_orientation_helper.cc
│ │ │ │ ├── scrollbar_orientation_helper.h
│ │ │ │ ├── scrollbar_view.cc
│ │ │ │ ├── scrollbar_view.h
│ │ │ │ ├── scrollbar_wrapper.cc
│ │ │ │ └── scrollbar_wrapper.h
│ │ │ ├── scroller.cc
│ │ │ ├── scroller.h
│ │ │ ├── scroller_animator.cc
│ │ │ ├── scroller_animator.h
│ │ │ ├── selection_handle_view.cc
│ │ │ ├── selection_handle_view.h
│ │ │ ├── selection_popup_view.cc
│ │ │ ├── selection_popup_view.h
│ │ │ ├── soft_keyboard_resources.cc
│ │ │ ├── soft_keyboard_resources.h
│ │ │ ├── tappable_image_view.h
│ │ │ ├── text/
│ │ │ │ ├── base_text_view.cc
│ │ │ │ ├── base_text_view.h
│ │ │ │ ├── inline_spec_styles.h
│ │ │ │ ├── inline_text_view.cc
│ │ │ │ ├── inline_text_view.h
│ │ │ │ ├── internal_text_view.cc
│ │ │ │ ├── internal_text_view.h
│ │ │ │ ├── layout_client.h
│ │ │ │ ├── layout_context.cc
│ │ │ │ ├── layout_context.h
│ │ │ │ ├── raw_text_view.cc
│ │ │ │ ├── raw_text_view.h
│ │ │ │ ├── tappable_text_view.h
│ │ │ │ ├── text_paragraph_builder.cc
│ │ │ │ ├── text_paragraph_builder.h
│ │ │ │ ├── text_style.h
│ │ │ │ ├── text_view.cc
│ │ │ │ ├── text_view.h
│ │ │ │ ├── text_view_unittests.cc
│ │ │ │ ├── tttext_headers.h
│ │ │ │ └── unicode_util.h
│ │ │ ├── title_bar_view.cc
│ │ │ ├── title_bar_view.h
│ │ │ ├── view.cc
│ │ │ ├── view.h
│ │ │ ├── view_callback/
│ │ │ │ ├── list_container_event_callback_manager.cc
│ │ │ │ ├── list_container_event_callback_manager.h
│ │ │ │ ├── list_event_callback_manager.cc
│ │ │ │ ├── list_event_callback_manager.h
│ │ │ │ ├── scroll_event_callback_manager.cc
│ │ │ │ └── scroll_event_callback_manager.h
│ │ │ ├── view_context.cc
│ │ │ ├── view_context.h
│ │ │ ├── view_registry.cc
│ │ │ ├── view_registry.h
│ │ │ ├── view_tree_observer.cc
│ │ │ └── view_tree_observer.h
│ │ ├── compositing/
│ │ │ ├── build.gni
│ │ │ ├── frame_builder.cc
│ │ │ ├── frame_builder.h
│ │ │ ├── frame_builder_unittests.cc
│ │ │ ├── pending_container_layer.cc
│ │ │ ├── pending_container_layer.h
│ │ │ ├── pending_container_layer_unittests.cc
│ │ │ ├── pending_drawable_image_layer.cc
│ │ │ ├── pending_drawable_image_layer.h
│ │ │ ├── pending_effect_layer.cc
│ │ │ ├── pending_effect_layer.h
│ │ │ ├── pending_external_view_layer.cc
│ │ │ ├── pending_external_view_layer.h
│ │ │ ├── pending_layer.cc
│ │ │ ├── pending_layer.h
│ │ │ ├── pending_layer_unittests.cc
│ │ │ ├── pending_offset_layer.cc
│ │ │ ├── pending_offset_layer.h
│ │ │ ├── pending_picture_layer.cc
│ │ │ ├── pending_picture_layer.h
│ │ │ ├── pending_platform_view_layer.cc
│ │ │ ├── pending_platform_view_layer.h
│ │ │ ├── pending_punch_hole_layer.cc
│ │ │ ├── pending_punch_hole_layer.h
│ │ │ ├── pending_scroll_offset_layer.cc
│ │ │ ├── pending_scroll_offset_layer.h
│ │ │ ├── pending_transform_layer.cc
│ │ │ ├── pending_transform_layer.h
│ │ │ └── testing/
│ │ │ └── mock_pending_layer.h
│ │ ├── event/
│ │ │ ├── build.gni
│ │ │ ├── event_utils.cc
│ │ │ ├── event_utils.h
│ │ │ ├── focus_isolate_unittests.cc
│ │ │ ├── focus_manager.cc
│ │ │ ├── focus_manager.h
│ │ │ ├── focus_manager_unittests.cc
│ │ │ ├── gesture_event.cc
│ │ │ ├── gesture_event.h
│ │ │ ├── gesture_event_unittests.cc
│ │ │ ├── key_code_converter.cc
│ │ │ ├── key_code_converter.h
│ │ │ ├── key_codes.h
│ │ │ ├── key_event.cc
│ │ │ ├── key_event.h
│ │ │ └── keyboard_key.h
│ │ ├── gesture/
│ │ │ ├── arena.h
│ │ │ ├── arena_manager.cc
│ │ │ ├── arena_manager.h
│ │ │ ├── arena_member.h
│ │ │ ├── build.gni
│ │ │ ├── drag_drop_manager.cc
│ │ │ ├── drag_drop_manager.h
│ │ │ ├── drag_gesture_recognizer.cc
│ │ │ ├── drag_gesture_recognizer.h
│ │ │ ├── gesture_manager.cc
│ │ │ ├── gesture_manager.h
│ │ │ ├── gesture_manager_unittests.cc
│ │ │ ├── gesture_recognizer.cc
│ │ │ ├── gesture_recognizer.h
│ │ │ ├── hit_test.h
│ │ │ ├── hit_test_responsive_result.h
│ │ │ ├── long_press_gesture_recognizer.cc
│ │ │ ├── long_press_gesture_recognizer.h
│ │ │ ├── macros.h
│ │ │ ├── mouse_cursor_manager.cc
│ │ │ ├── mouse_cursor_manager.h
│ │ │ ├── mouse_region_manager.cc
│ │ │ ├── mouse_region_manager.h
│ │ │ ├── mouse_region_manager_unittests.cc
│ │ │ ├── mouse_wheel_phase_handler.cc
│ │ │ ├── mouse_wheel_phase_handler.h
│ │ │ ├── multi_tap_gesture_recognizer.cc
│ │ │ ├── multi_tap_gesture_recognizer.h
│ │ │ ├── pointer_router.cc
│ │ │ ├── pointer_router.h
│ │ │ ├── scrollable_direction.h
│ │ │ ├── tap_gesture_recognizer.cc
│ │ │ ├── tap_gesture_recognizer.h
│ │ │ ├── velocity_tracker.cc
│ │ │ ├── velocity_tracker.h
│ │ │ └── velocity_tracker_unittests.cc
│ │ ├── lynx_module/
│ │ │ ├── build.gni
│ │ │ ├── lynx_module_unittests.cc
│ │ │ ├── lynx_ui_method_registrar.cc
│ │ │ ├── lynx_ui_method_registrar.h
│ │ │ ├── lynx_ui_method_types.h
│ │ │ ├── lynx_ui_method_unittests.cc
│ │ │ ├── type_utils.cc
│ │ │ ├── type_utils.h
│ │ │ ├── types.cc
│ │ │ └── types.h
│ │ ├── painter/
│ │ │ ├── border_side.h
│ │ │ ├── box_decoration_data.h
│ │ │ ├── box_painter.cc
│ │ │ ├── box_painter.h
│ │ │ ├── box_painter_unittests.cc
│ │ │ ├── box_shadow_painter.cc
│ │ │ ├── box_shadow_painter.h
│ │ │ ├── build.gni
│ │ │ ├── gradient.cc
│ │ │ ├── gradient.h
│ │ │ ├── gradient_factory.cc
│ │ │ ├── gradient_factory.h
│ │ │ ├── gradient_unittests.cc
│ │ │ ├── image_painter.cc
│ │ │ ├── image_painter.h
│ │ │ ├── image_painter_unittests.cc
│ │ │ ├── object_painter.cc
│ │ │ ├── object_painter.h
│ │ │ ├── painter_graphics_test.cc
│ │ │ ├── painter_graphics_test.h
│ │ │ ├── painting_context.cc
│ │ │ ├── painting_context.h
│ │ │ ├── painting_context_unittests.cc
│ │ │ ├── text_painter.cc
│ │ │ └── text_painter.h
│ │ ├── platform/
│ │ │ ├── build.gni
│ │ │ ├── common/
│ │ │ │ ├── native_view_service_common.cc
│ │ │ │ ├── native_view_service_common.h
│ │ │ │ ├── resource_loader_common.cc
│ │ │ │ ├── resource_loader_common_net.cc
│ │ │ │ ├── resource_loader_common_net.h
│ │ │ │ └── utils.h
│ │ │ ├── cursor_types.cc
│ │ │ ├── cursor_types.h
│ │ │ ├── keyboard_bridge.cc
│ │ │ ├── keyboard_bridge.h
│ │ │ ├── keyboard_types.h
│ │ │ └── native_view_service.h
│ │ ├── public/
│ │ │ ├── build.gni
│ │ │ ├── clay.cc
│ │ │ └── value.cc
│ │ ├── render_delegate.h
│ │ ├── rendering/
│ │ │ ├── abstract_node.cc
│ │ │ ├── abstract_node.h
│ │ │ ├── abstract_node_unittests.cc
│ │ │ ├── build.gni
│ │ │ ├── decode_utils.cc
│ │ │ ├── decode_utils.h
│ │ │ ├── editable/
│ │ │ │ ├── render_editable.cc
│ │ │ │ └── render_editable.h
│ │ │ ├── render_bounce.h
│ │ │ ├── render_box.cc
│ │ │ ├── render_box.h
│ │ │ ├── render_box_unittests.cc
│ │ │ ├── render_container.cc
│ │ │ ├── render_container.h
│ │ │ ├── render_dummy.h
│ │ │ ├── render_external_content.cc
│ │ │ ├── render_external_content.h
│ │ │ ├── render_external_view.cc
│ │ │ ├── render_external_view.h
│ │ │ ├── render_image.cc
│ │ │ ├── render_image.h
│ │ │ ├── render_list.cc
│ │ │ ├── render_list.h
│ │ │ ├── render_object.cc
│ │ │ ├── render_object.h
│ │ │ ├── render_object_child_list.cc
│ │ │ ├── render_object_child_list.h
│ │ │ ├── render_object_child_list_unittests.cc
│ │ │ ├── render_object_unittests.cc
│ │ │ ├── render_overlay.cc
│ │ │ ├── render_overlay.h
│ │ │ ├── render_page.cc
│ │ │ ├── render_page.h
│ │ │ ├── render_scroll.cc
│ │ │ ├── render_scroll.h
│ │ │ ├── renderer.cc
│ │ │ ├── renderer.h
│ │ │ └── text/
│ │ │ ├── render_inline_text.cc
│ │ │ ├── render_inline_text.h
│ │ │ ├── render_text.cc
│ │ │ └── render_text.h
│ │ ├── resource/
│ │ │ ├── asset_font_manager_clay.h
│ │ │ ├── asset_manager_font_provider_skia.cc
│ │ │ ├── asset_manager_font_provider_skia.h
│ │ │ ├── asset_manager_font_provider_skity.cc
│ │ │ ├── asset_manager_font_provider_skity.h
│ │ │ ├── build.gni
│ │ │ ├── font_collection.cc
│ │ │ ├── font_collection.h
│ │ │ ├── font_resource_manager.cc
│ │ │ ├── font_resource_manager.h
│ │ │ ├── font_resource_manager_unittests.cc
│ │ │ ├── gpu_resource_cache.cc
│ │ │ ├── gpu_resource_cache.h
│ │ │ ├── image_cache.h
│ │ │ ├── image_fetcher.cc
│ │ │ ├── image_fetcher.h
│ │ │ ├── image_manager.cc
│ │ │ ├── image_manager.h
│ │ │ ├── image_resource_fetcher.cc
│ │ │ └── image_resource_fetcher.h
│ │ ├── semantics/
│ │ │ ├── build.gni
│ │ │ ├── semantics_node.cc
│ │ │ ├── semantics_node.h
│ │ │ ├── semantics_owner.cc
│ │ │ ├── semantics_owner.h
│ │ │ ├── semantics_update_builder.cc
│ │ │ ├── semantics_update_builder.h
│ │ │ └── semantics_update_node.h
│ │ ├── shadow/
│ │ │ ├── base_text_shadow_node.cc
│ │ │ ├── base_text_shadow_node.h
│ │ │ ├── build.gni
│ │ │ ├── bundle.h
│ │ │ ├── editable_ng_shadow_node.cc
│ │ │ ├── editable_ng_shadow_node.h
│ │ │ ├── editable_shadow_node.cc
│ │ │ ├── editable_shadow_node.h
│ │ │ ├── icu_no_substitute.cc
│ │ │ ├── icu_substitute.cc
│ │ │ ├── icu_substitute.h
│ │ │ ├── image_shadow_node.cc
│ │ │ ├── image_shadow_node.h
│ │ │ ├── inline_image_shadow_node.cc
│ │ │ ├── inline_image_shadow_node.h
│ │ │ ├── inline_text_shadow_node.cc
│ │ │ ├── inline_text_shadow_node.h
│ │ │ ├── inline_truncation_shadow_node.cc
│ │ │ ├── inline_truncation_shadow_node.h
│ │ │ ├── inline_view_shadow_node.cc
│ │ │ ├── inline_view_shadow_node.h
│ │ │ ├── inner_inline_text_shadow_node.cc
│ │ │ ├── inner_inline_text_shadow_node.h
│ │ │ ├── inner_text_shadow_node.cc
│ │ │ ├── inner_text_shadow_node.h
│ │ │ ├── measure_utils.h
│ │ │ ├── native_view_shadow_node.cc
│ │ │ ├── native_view_shadow_node.h
│ │ │ ├── raw_text_shadow_node.cc
│ │ │ ├── raw_text_shadow_node.h
│ │ │ ├── shadow_layout_context.cc
│ │ │ ├── shadow_layout_context.h
│ │ │ ├── shadow_node.cc
│ │ │ ├── shadow_node.h
│ │ │ ├── shadow_node_owner.cc
│ │ │ ├── shadow_node_owner.h
│ │ │ ├── text_render.cc
│ │ │ ├── text_render.h
│ │ │ ├── text_shadow_node.cc
│ │ │ ├── text_shadow_node.h
│ │ │ ├── text_unittests.cc
│ │ │ ├── text_update_bundle.cc
│ │ │ ├── text_update_bundle.h
│ │ │ └── vertical_align_style.h
│ │ ├── testing/
│ │ │ ├── test_utils.cc
│ │ │ ├── test_utils.h
│ │ │ ├── test_utils_unittests.cc
│ │ │ ├── ui_test.cc
│ │ │ └── ui_test.h
│ │ ├── ui_rendering_backend.h
│ │ └── window/
│ │ ├── build.gni
│ │ ├── key_data.cc
│ │ ├── key_data.h
│ │ ├── key_data_helper.cc
│ │ ├── key_data_helper.h
│ │ ├── key_data_packet.cc
│ │ ├── key_data_packet.h
│ │ ├── pointer_data.cc
│ │ ├── pointer_data.h
│ │ ├── pointer_data_helper.cc
│ │ ├── pointer_data_helper.h
│ │ ├── pointer_data_packet.cc
│ │ ├── pointer_data_packet.h
│ │ ├── pointer_data_packet_converter.cc
│ │ ├── pointer_data_packet_converter.h
│ │ ├── pointer_data_packet_converter_unittests.cc
│ │ ├── pointer_data_packet_unittests.cc
│ │ ├── viewport_metrics.cc
│ │ └── viewport_metrics.h
│ └── version/
│ ├── BUILD.gn
│ ├── version.cc
│ ├── version.gni
│ ├── version.h
│ └── write_file.py
├── config.gni
├── core/
│ ├── AGENTS.md
│ ├── BUILD.gn
│ ├── Lynx.gni
│ ├── animation/
│ │ ├── AGENTS.md
│ │ ├── BUILD.gn
│ │ ├── LICENSE
│ │ ├── animation.cc
│ │ ├── animation.h
│ │ ├── animation_curve.cc
│ │ ├── animation_curve.h
│ │ ├── animation_delegate.h
│ │ ├── animation_trace_event_def.h
│ │ ├── animation_unittest.cc
│ │ ├── basic_animation/
│ │ │ ├── AGENTS.md
│ │ │ ├── BUILD.gn
│ │ │ ├── animation_effect.cc
│ │ │ ├── animation_effect.h
│ │ │ ├── animation_effect_timing.cc
│ │ │ ├── animation_effect_timing.h
│ │ │ ├── animation_event_listener.h
│ │ │ ├── animation_frame_callback.h
│ │ │ ├── animation_frame_callback_provider.h
│ │ │ ├── animation_timeline.cc
│ │ │ ├── animation_timeline.h
│ │ │ ├── animator_target.h
│ │ │ ├── basic_animatable_values/
│ │ │ │ ├── animatable_values_unittest.cc
│ │ │ │ ├── color_property_value.cc
│ │ │ │ ├── color_property_value.h
│ │ │ │ ├── float_property_value.cc
│ │ │ │ ├── float_property_value.h
│ │ │ │ ├── int_property_value.cc
│ │ │ │ └── int_property_value.h
│ │ │ ├── basic_animation.cc
│ │ │ ├── basic_animation.h
│ │ │ ├── basic_animation_curve.cc
│ │ │ ├── basic_animation_curve.h
│ │ │ ├── basic_keyframe_effect.cc
│ │ │ ├── basic_keyframe_effect.h
│ │ │ ├── basic_keyframe_model.cc
│ │ │ ├── basic_keyframe_model.h
│ │ │ ├── keyframe.cc
│ │ │ ├── keyframe.h
│ │ │ ├── property_value.h
│ │ │ ├── thread_local_animation_handler.cc
│ │ │ └── thread_local_animation_handler.h
│ │ ├── constants.h
│ │ ├── css_keyframe_manager.cc
│ │ ├── css_keyframe_manager.h
│ │ ├── css_keyframe_manager_unittest.cc
│ │ ├── css_transition_manager.cc
│ │ ├── css_transition_manager.h
│ │ ├── css_transition_manager_unittest.cc
│ │ ├── keyframe_effect.cc
│ │ ├── keyframe_effect.h
│ │ ├── keyframe_effect_unittest.cc
│ │ ├── keyframe_model.cc
│ │ ├── keyframe_model.h
│ │ ├── keyframe_model_unittest.cc
│ │ ├── keyframed_animation_curve.cc
│ │ ├── keyframed_animation_curve.h
│ │ ├── keyframed_animation_curve_unittest.cc
│ │ ├── lynx_basic_animator/
│ │ │ ├── AGENTS.md
│ │ │ ├── BUILD.gn
│ │ │ ├── basic_animator.cc
│ │ │ ├── basic_animator.h
│ │ │ ├── basic_animator_event_listener.cc
│ │ │ ├── basic_animator_event_listener.h
│ │ │ ├── basic_animator_frame_callback_provider.cc
│ │ │ ├── basic_animator_frame_callback_provider.h
│ │ │ ├── basic_property_value.cc
│ │ │ ├── basic_property_value.h
│ │ │ └── lynx_basic_animator_unittest.cc
│ │ ├── testing/
│ │ │ ├── mock_animation.cc
│ │ │ ├── mock_animation.h
│ │ │ ├── mock_css_keyframe_manager.cc
│ │ │ ├── mock_css_keyframe_manager.h
│ │ │ ├── mock_css_transition_manager.cc
│ │ │ └── mock_css_transition_manager.h
│ │ ├── transform_animation_curve.cc
│ │ ├── transform_animation_curve.h
│ │ ├── transform_animation_curve_unittest.cc
│ │ └── utils/
│ │ ├── BUILD.gn
│ │ ├── cubic_bezier.cc
│ │ ├── cubic_bezier.h
│ │ ├── cubic_bezier_unittest.cc
│ │ ├── timing_function.cc
│ │ ├── timing_function.h
│ │ └── timing_function_unittest.cc
│ ├── base/
│ │ ├── BUILD.gn
│ │ ├── android/
│ │ │ ├── android_jni.cc
│ │ │ ├── android_jni.h
│ │ │ ├── android_jni_unittest.cc
│ │ │ ├── callstack_util_android.cc
│ │ │ ├── callstack_util_android.h
│ │ │ ├── device_utils_android.cc
│ │ │ ├── device_utils_android.h
│ │ │ ├── fresco_blur_filter.c
│ │ │ ├── fresco_blur_filter.h
│ │ │ ├── java_only_array.cc
│ │ │ ├── java_only_array.h
│ │ │ ├── java_only_map.cc
│ │ │ ├── java_only_map.h
│ │ │ ├── java_value.cc
│ │ │ ├── java_value.h
│ │ │ ├── java_value_unittest.cc
│ │ │ ├── jni_helper.cc
│ │ │ ├── jni_helper.h
│ │ │ ├── jni_helper_unittest.cc
│ │ │ ├── lynx_android_blur.cc
│ │ │ ├── lynx_error_android.cc
│ │ │ ├── lynx_error_android.h
│ │ │ ├── lynx_white_board_android.cc
│ │ │ ├── message_loop_android_vsync.cc
│ │ │ ├── message_loop_android_vsync.h
│ │ │ ├── piper_data.cc
│ │ │ ├── piper_data.h
│ │ │ ├── vsync_monitor_android.cc
│ │ │ └── vsync_monitor_android.h
│ │ ├── darwin/
│ │ │ ├── config_darwin.h
│ │ │ ├── config_darwin.mm
│ │ │ ├── lynx_env_darwin.h
│ │ │ ├── lynx_env_darwin.mm
│ │ │ ├── lynx_trail_hub_impl_darwin.h
│ │ │ ├── lynx_trail_hub_impl_darwin.mm
│ │ │ ├── message_loop_darwin_vsync.cc
│ │ │ ├── message_loop_darwin_vsync.h
│ │ │ ├── vsync_monitor_darwin.h
│ │ │ └── vsync_monitor_darwin.mm
│ │ ├── debug/
│ │ │ ├── BUILD.gn
│ │ │ ├── memory_tracer.cc
│ │ │ ├── memory_tracer.h
│ │ │ └── memory_tracer_android.cc
│ │ ├── harmony/
│ │ │ ├── harmony_function_loader.cc
│ │ │ ├── harmony_function_loader.h
│ │ │ ├── harmony_napi_env_holder.cc
│ │ │ ├── harmony_napi_env_holder.h
│ │ │ ├── harmony_trace_event_def.h
│ │ │ ├── napi_convert_helper.cc
│ │ │ ├── napi_convert_helper.h
│ │ │ ├── props_constant.h
│ │ │ ├── threading/
│ │ │ │ └── js_thread_config_getter_harmony.cc
│ │ │ ├── vsync_monitor_harmony.cc
│ │ │ └── vsync_monitor_harmony.h
│ │ ├── js_constants.h
│ │ ├── json/
│ │ │ ├── json_util.h
│ │ │ ├── json_utils.cc
│ │ │ └── json_utils_unittests.cc
│ │ ├── lynx_export.h
│ │ ├── lynx_trace_categories.h
│ │ ├── memory/
│ │ │ ├── memory_pressure_callback.cc
│ │ │ ├── memory_pressure_callback.h
│ │ │ └── memory_pressure_callback_unittest.cc
│ │ ├── observer/
│ │ │ ├── observer.h
│ │ │ ├── observer_list.cc
│ │ │ └── observer_list.h
│ │ ├── thread/
│ │ │ ├── atomic_lifecycle.cc
│ │ │ ├── atomic_lifecycle.h
│ │ │ ├── blocking_queue.h
│ │ │ ├── blocking_queue_unittest.cc
│ │ │ ├── once_task.h
│ │ │ ├── once_task_unittest.cc
│ │ │ ├── thread_utils.cc
│ │ │ ├── thread_utils.h
│ │ │ └── thread_utils_unittest.cc
│ │ ├── threading/
│ │ │ ├── js_thread_config_getter.cc
│ │ │ ├── js_thread_config_getter.h
│ │ │ ├── task_runner_manufactor.cc
│ │ │ ├── task_runner_manufactor.h
│ │ │ ├── task_runner_manufactor_unittest.cc
│ │ │ ├── task_runner_vsync.cc
│ │ │ ├── task_runner_vsync.h
│ │ │ ├── task_runner_vsync_unittest.cc
│ │ │ ├── thread_merger.cc
│ │ │ ├── thread_merger.h
│ │ │ ├── thread_merger_unittest.cc
│ │ │ ├── vsync_monitor.cc
│ │ │ ├── vsync_monitor.h
│ │ │ ├── vsync_monitor_default.cc
│ │ │ └── vsync_monitor_unittest.cc
│ │ ├── trace/
│ │ │ └── trace_event_def.h
│ │ └── utils/
│ │ ├── any.h
│ │ ├── paths_mac.h
│ │ ├── paths_mac.mm
│ │ ├── paths_win.cc
│ │ └── paths_win.h
│ ├── base_targets.gni
│ ├── build/
│ │ ├── AGENTS.md
│ │ └── BUILD.gn
│ ├── event/
│ │ ├── AGENTS.md
│ │ ├── BUILD.gn
│ │ ├── custom_event.cc
│ │ ├── custom_event.h
│ │ ├── event.cc
│ │ ├── event.h
│ │ ├── event_dispatch_result.h
│ │ ├── event_dispatcher.cc
│ │ ├── event_dispatcher.h
│ │ ├── event_listener.cc
│ │ ├── event_listener.h
│ │ ├── event_listener_map.cc
│ │ ├── event_listener_map.h
│ │ ├── event_listener_map_test.cc
│ │ ├── event_listener_map_test.h
│ │ ├── event_listener_test.cc
│ │ ├── event_listener_test.h
│ │ ├── event_target.cc
│ │ ├── event_target.h
│ │ ├── event_target_test.cc
│ │ ├── event_target_test.h
│ │ ├── keyboard_event.cc
│ │ ├── keyboard_event.h
│ │ ├── touch_event.cc
│ │ └── touch_event.h
│ ├── include/
│ │ ├── AGENTS.md
│ │ └── starlight_standalone/
│ │ ├── starlight.h
│ │ ├── starlight_config.h
│ │ ├── starlight_enums.h
│ │ ├── starlight_standalone.h
│ │ └── starlight_value.h
│ ├── inspector/
│ │ ├── BUILD.gn
│ │ ├── console_message_postman.h
│ │ ├── lepus_inspector_manager.h
│ │ ├── observer/
│ │ │ ├── inspector_common_observer.h
│ │ │ ├── inspector_element_observer.h
│ │ │ ├── inspector_lepus_observer.h
│ │ │ └── inspector_runtime_observer_ng.h
│ │ ├── runtime_inspector_manager.h
│ │ ├── runtime_inspector_manager_unittest.cc
│ │ ├── runtime_inspector_manager_unittest.h
│ │ └── style_sheet.h
│ ├── list/
│ │ ├── BUILD.gn
│ │ ├── decoupled_adapter_helper.cc
│ │ ├── decoupled_adapter_helper.h
│ │ ├── decoupled_batch_list_adapter.cc
│ │ ├── decoupled_batch_list_adapter.h
│ │ ├── decoupled_default_list_adapter.cc
│ │ ├── decoupled_default_list_adapter.h
│ │ ├── decoupled_default_list_adapter_unittest.cc
│ │ ├── decoupled_grid_layout_manager.cc
│ │ ├── decoupled_grid_layout_manager.h
│ │ ├── decoupled_item_holder.cc
│ │ ├── decoupled_item_holder.h
│ │ ├── decoupled_linear_layout_manager.cc
│ │ ├── decoupled_linear_layout_manager.h
│ │ ├── decoupled_list_adapter.cc
│ │ ├── decoupled_list_adapter.h
│ │ ├── decoupled_list_adapter_unittest.cc
│ │ ├── decoupled_list_anchor_manager.cc
│ │ ├── decoupled_list_anchor_manager.h
│ │ ├── decoupled_list_anchor_manager_unittest.cc
│ │ ├── decoupled_list_children_helper.cc
│ │ ├── decoupled_list_children_helper.h
│ │ ├── decoupled_list_children_helper_unittest.cc
│ │ ├── decoupled_list_container_default.cc
│ │ ├── decoupled_list_container_default.h
│ │ ├── decoupled_list_container_impl.cc
│ │ ├── decoupled_list_container_impl.h
│ │ ├── decoupled_list_container_impl_unittest.cc
│ │ ├── decoupled_list_event_manager.cc
│ │ ├── decoupled_list_event_manager.h
│ │ ├── decoupled_list_event_manager_unittest.cc
│ │ ├── decoupled_list_layout_manager.cc
│ │ ├── decoupled_list_layout_manager.h
│ │ ├── decoupled_list_layout_manager_unittest.cc
│ │ ├── decoupled_list_orientation_helper.cc
│ │ ├── decoupled_list_orientation_helper.h
│ │ ├── decoupled_list_types.h
│ │ ├── decoupled_staggered_grid_layout_manager.cc
│ │ ├── decoupled_staggered_grid_layout_manager.h
│ │ ├── decoupled_staggered_grid_layout_manager_unittest.cc
│ │ ├── list_animation_manager.cc
│ │ ├── list_animation_manager.h
│ │ ├── list_animation_manager_default.cc
│ │ ├── list_animation_manager_default.h
│ │ ├── list_animation_manager_impl.cc
│ │ ├── list_animation_manager_impl.h
│ │ ├── list_container_delegate.h
│ │ ├── list_element_delegate.h
│ │ ├── list_item_element_delegate.h
│ │ └── testing/
│ │ ├── fiber_data_source.h
│ │ ├── mock_list_element.h
│ │ ├── mock_list_item_element.h
│ │ ├── radon_data_source.h
│ │ └── utils.h
│ ├── napi.gni
│ ├── parser/
│ │ ├── BUILD.gn
│ │ ├── input_stream.cc
│ │ └── input_stream.h
│ ├── public/
│ │ ├── BUILD.gn
│ │ ├── box_model.h
│ │ ├── devtool/
│ │ │ ├── lynx_devtool_proxy.h
│ │ │ └── lynx_inspector_owner.h
│ │ ├── jsb/
│ │ │ ├── extension_module_factory.h
│ │ │ ├── lynx_extension_module.h
│ │ │ ├── lynx_module_callback.h
│ │ │ ├── lynx_native_module.h
│ │ │ └── native_module_factory.h
│ │ ├── layout_ctx_platform_impl.h
│ │ ├── layout_node_manager.h
│ │ ├── layout_node_value.h
│ │ ├── list_container_proxy.h
│ │ ├── list_data.h
│ │ ├── list_engine_proxy.h
│ │ ├── lynx_engine_proxy.h
│ │ ├── lynx_extension_delegate.h
│ │ ├── lynx_layout_proxy.h
│ │ ├── lynx_resource_loader.h
│ │ ├── lynx_runtime_proxy.h
│ │ ├── page_options.h
│ │ ├── painting_ctx_platform_impl.h
│ │ ├── perf_controller_proxy.h
│ │ ├── performance_controller_platform_impl.h
│ │ ├── pipeline_option.h
│ │ ├── platform_extra_bundle.h
│ │ ├── platform_renderer_type.h
│ │ ├── prop_bundle.h
│ │ ├── pub_value.h
│ │ ├── runtime_lifecycle_observer.h
│ │ ├── text_layout_impl.h
│ │ ├── text_utils.h
│ │ ├── timing_key.h
│ │ ├── ui_delegate.h
│ │ ├── ui_operation_queue_interface.h
│ │ ├── vsync_monitor_platform_impl.h
│ │ └── vsync_observer_interface.h
│ ├── renderer/
│ │ ├── BUILD.gn
│ │ ├── build.gni
│ │ ├── css/
│ │ │ ├── .gitignore
│ │ │ ├── BUILD.gn
│ │ │ ├── android/
│ │ │ │ ├── css_color_utils.cc
│ │ │ │ └── css_gradient_utils.cc
│ │ │ ├── build.gni
│ │ │ ├── computed_css_style.cc
│ │ │ ├── computed_css_style.h
│ │ │ ├── computed_css_style_css_text_helper.cc
│ │ │ ├── computed_css_style_css_text_helper.h
│ │ │ ├── computed_css_style_css_text_helper_unittest.cc
│ │ │ ├── css_color.cc
│ │ │ ├── css_color.h
│ │ │ ├── css_color_unittest.cc
│ │ │ ├── css_content_data.cc
│ │ │ ├── css_content_data.h
│ │ │ ├── css_debug_msg.h
│ │ │ ├── css_decoder.cc
│ │ │ ├── css_decoder.h
│ │ │ ├── css_font_face_token.cc
│ │ │ ├── css_font_face_token.h
│ │ │ ├── css_font_face_token_unittest.cc
│ │ │ ├── css_fragment.cc
│ │ │ ├── css_fragment.h
│ │ │ ├── css_fragment_decorator.cc
│ │ │ ├── css_fragment_decorator.h
│ │ │ ├── css_fragment_unittest.cc
│ │ │ ├── css_keyframes_token.cc
│ │ │ ├── css_keyframes_token.h
│ │ │ ├── css_keyframes_token_unittest.cc
│ │ │ ├── css_keywords.cc
│ │ │ ├── css_keywords.h
│ │ │ ├── css_keywords.tmpl
│ │ │ ├── css_keywords_unittest.cc
│ │ │ ├── css_parser_token.cc
│ │ │ ├── css_parser_token.h
│ │ │ ├── css_parser_token_unittest.cc
│ │ │ ├── css_property.cc
│ │ │ ├── css_property.h
│ │ │ ├── css_property_bitset.h
│ │ │ ├── css_property_bitset_unittest.cc
│ │ │ ├── css_property_unittest.cc
│ │ │ ├── css_selector_constants.cc
│ │ │ ├── css_selector_constants.h
│ │ │ ├── css_sheet.cc
│ │ │ ├── css_sheet.h
│ │ │ ├── css_style_sheet_manager.cc
│ │ │ ├── css_style_sheet_manager.h
│ │ │ ├── css_style_sheet_manager_unittest.cc
│ │ │ ├── css_style_utils.cc
│ │ │ ├── css_style_utils.h
│ │ │ ├── css_style_utils_unittest.cc
│ │ │ ├── css_utils.cc
│ │ │ ├── css_utils.h
│ │ │ ├── css_utils_unittest.cc
│ │ │ ├── css_value.cc
│ │ │ ├── css_value.h
│ │ │ ├── css_value_lldb.py
│ │ │ ├── css_value_unittest.cc
│ │ │ ├── css_variable_handler.cc
│ │ │ ├── css_variable_handler.h
│ │ │ ├── css_variable_handler_unittest.cc
│ │ │ ├── dynamic_css_configs.h
│ │ │ ├── dynamic_css_styles_manager.cc
│ │ │ ├── dynamic_css_styles_manager.h
│ │ │ ├── dynamic_direction_styles_manager.cc
│ │ │ ├── dynamic_direction_styles_manager.h
│ │ │ ├── layout_node_unittest.cc
│ │ │ ├── layout_property.cc
│ │ │ ├── measure_context.cc
│ │ │ ├── measure_context.h
│ │ │ ├── ng/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── css_ng_utils.cc
│ │ │ │ ├── css_ng_utils.h
│ │ │ │ ├── invalidation/
│ │ │ │ │ ├── invalidation_set.cc
│ │ │ │ │ ├── invalidation_set.h
│ │ │ │ │ ├── invalidation_set_feature.h
│ │ │ │ │ ├── invalidation_set_test.cc
│ │ │ │ │ ├── rule_invalidation_set.cc
│ │ │ │ │ ├── rule_invalidation_set.h
│ │ │ │ │ └── rule_invalidation_set_test.cc
│ │ │ │ ├── matcher/
│ │ │ │ │ ├── selector_matcher.cc
│ │ │ │ │ ├── selector_matcher.h
│ │ │ │ │ └── selector_matcher_test.cc
│ │ │ │ ├── parser/
│ │ │ │ │ ├── css_parser_idioms.cc
│ │ │ │ │ ├── css_parser_idioms.h
│ │ │ │ │ ├── css_parser_token.cc
│ │ │ │ │ ├── css_parser_token.h
│ │ │ │ │ ├── css_parser_token_range.cc
│ │ │ │ │ ├── css_parser_token_range.h
│ │ │ │ │ ├── css_parser_token_stream.cc
│ │ │ │ │ ├── css_parser_token_stream.h
│ │ │ │ │ ├── css_parser_token_stream_test.cc
│ │ │ │ │ ├── css_tokenizer.cc
│ │ │ │ │ ├── css_tokenizer.h
│ │ │ │ │ ├── css_tokenizer_codepoints.cc
│ │ │ │ │ ├── css_tokenizer_input_stream.cc
│ │ │ │ │ ├── css_tokenizer_input_stream.h
│ │ │ │ │ ├── css_tokenizer_test.cc
│ │ │ │ │ ├── number_parsing_options.h
│ │ │ │ │ ├── string_to_number.cc
│ │ │ │ │ └── string_to_number.h
│ │ │ │ ├── selector/
│ │ │ │ │ ├── css_parser_context.h
│ │ │ │ │ ├── css_selector_parser.cc
│ │ │ │ │ ├── css_selector_parser.h
│ │ │ │ │ ├── css_selector_parser_test.cc
│ │ │ │ │ ├── lynx_css_selector.cc
│ │ │ │ │ ├── lynx_css_selector.h
│ │ │ │ │ ├── lynx_css_selector_empty.cc
│ │ │ │ │ ├── lynx_css_selector_extra_data.cc
│ │ │ │ │ ├── lynx_css_selector_extra_data.h
│ │ │ │ │ ├── lynx_css_selector_impl.cc
│ │ │ │ │ ├── lynx_css_selector_list.cc
│ │ │ │ │ ├── lynx_css_selector_list.h
│ │ │ │ │ └── lynx_css_selector_test.cc
│ │ │ │ └── style/
│ │ │ │ ├── rule_data.h
│ │ │ │ ├── rule_set.cc
│ │ │ │ ├── rule_set.h
│ │ │ │ ├── rule_set_unittest.cc
│ │ │ │ └── style_rule.h
│ │ │ ├── parser/
│ │ │ │ ├── BUILD.gn
│ │ │ │ ├── animation_direction_handler.cc
│ │ │ │ ├── animation_direction_handler.h
│ │ │ │ ├── animation_direction_handler_unittest.cc
│ │ │ │ ├── animation_fill_mode_handler.cc
│ │ │ │ ├── animation_fill_mode_handler.h
│ │ │ │ ├── animation_fill_mode_handler_unittest.cc
│ │ │ │ ├── animation_iteration_count_handler.cc
│ │ │ │ ├── animation_iteration_count_handler.h
│ │ │ │ ├── animation_iteration_count_handler_unittest.cc
│ │ │ │ ├── animation_name_handler.cc
│ │ │ │ ├── animation_name_handler.h
│ │ │ │ ├── animation_play_state_handler.cc
│ │ │ │ ├── animation_play_state_handler.h
│ │ │ │ ├── animation_property_handler.cc
│ │ │ │ ├── animation_property_handler_unittest.cc
│ │ │ │ ├── animation_shorthand_handler.cc
│ │ │ │ ├── animation_shorthand_handler.h
│ │ │ │ ├── animation_shorthand_handler_unittest.cc
│ │ │ │ ├── aspect_ratio_handler.cc
│ │ │ │ ├── aspect_ratio_handler.h
│ │ │ │ ├── aspect_ratio_handler_unittest.cc
│ │ │ │ ├── auto_font_size_handler.cc
│ │ │ │ ├── auto_font_size_handler.h
│ │ │ │ ├── auto_font_size_handler_unittest.cc
│ │ │ │ ├── auto_font_size_preset_sizes_handler.cc
│ │ │ │ ├── auto_font_size_preset_sizes_handler.h
│ │ │ │ ├── auto_font_size_preset_sizes_handler_unittest.cc
│ │ │ │ ├── background_box_handler.cc
│ │ │ │ ├── background_box_handler.h
│ │ │ │ ├── background_box_handler_unittest.cc
│ │ │ │ ├── background_clip_handler.cc
│ │ │ │ ├── background_clip_handler.h
│ │ │ │ ├── background_clip_handler_unittest.cc
│ │ │ │ ├── background_image_handler.cc
│ │ │ │ ├── background_image_handler.h
│ │ │ │ ├── background_image_handler_unittest.cc
│ │ │ │ ├── background_position_handler.cc
│ │ │ │ ├── background_position_handler.h
│ │ │ │ ├── background_position_handler_unittest.cc
│ │ │ │ ├── background_repeat_handler.cc
│ │ │ │ ├── background_repeat_handler.h
│ │ │ │ ├── background_repeat_handler_unittest.cc
│ │ │ │ ├── background_shorthand_handler.cc
│ │ │ │ ├── background_shorthand_handler.h
│ │ │ │ ├── background_shorthand_handler_unittest.cc
│ │ │ │ ├── background_size_handler.cc
│ │ │ │ ├── background_size_handler.h
│ │ │ │ ├── background_size_handler_unittest.cc
│ │ │ │ ├── bool_handler.cc
│ │ │ │ ├── bool_handler_unittest.cc
│ │ │ │ ├── border_handler.cc
│ │ │ │ ├── border_handler.h
│ │ │ │ ├── border_handler_unittest.cc
│ │ │ │ ├── border_radius_handler.cc
│ │ │ │ ├── border_radius_handler.h
│ │ │ │ ├── border_radius_handler_unittest.cc
│ │ │ │ ├── border_style_handler.cc
│ │ │ │ ├── border_width_handler.cc
│ │ │ │ ├── clip_path_handler.cc
│ │ │ │ ├── clip_path_handler.h
│ │ │ │ ├── clip_path_handler_unittest.cc
│ │ │ │ ├── color_handler.cc
│ │ │ │ ├── color_handler_unittest.cc
│ │ │ │ ├── css_parser_configs.h
│ │ │ │ ├── css_string_parser.cc
│ │ │ │ ├── css_string_parser.h
│ │ │ │ ├── css_string_parser_unittest.cc
│ │ │ │ ├── css_string_scanner.cc
│ │ │ │ ├── css_string_scanner.h
│ │ │ │ ├── css_string_scanner_unittest.cc
│ │ │ │ ├── cursor_handler.cc
│ │ │ │ ├── cursor_handler.h
│ │ │ │ ├── enum_handler.cc
│ │ │ │ ├── enum_handler.h
│ │ │ │ ├── enum_handler_unittest.cc
│ │ │ │ ├── filter_handler.cc
│ │ │ │ ├── filter_handler.h
│ │ │ │ ├── filter_handler_unittest.cc
│ │ │ │ ├── flex_flow_handler.cc
│ │ │ │ ├── flex_flow_handler.h
│ │ │ │ ├── flex_flow_handler_unittest.cc
│ │ │ │ ├── flex_handler.cc
│ │ │ │ ├── flex_handler.h
│ │ │ │ ├── flex_handler_unittest.cc
│ │ │ │ ├── font_feature_settings_handler.cc
│ │ │ │ ├── font_feature_settings_handler.h
│ │ │ │ ├── font_length_handler.cc
│ │ │ │ ├── font_length_handler.h
│ │ │ │ ├── font_length_handler_unittest.cc
│ │ │ │ ├── font_variation_settings_handler.cc
│ │ │ │ ├── font_variation_settings_handler.h
│ │ │ │ ├── four_sides_shorthand_handler.cc
│ │ │ │ ├── four_sides_shorthand_handler.h
│ │ │ │ ├── four_sides_shorthand_handler_unittest.cc
│ │ │ │ ├── gap_handler.cc
│ │ │ │ ├── gap_handler.h
│ │ │ │ ├── grid_position_handler.cc
│ │ │ │ ├── grid_position_handler.h
│ │ │ │ ├── grid_template_handler.cc
│ │ │ │ ├── grid_template_handler.h
│ │ │ │ ├── grid_template_handler_unittest.cc
│ │ │ │ ├── handler_defines.h
│ │ │ │ ├── length_handler.cc
│ │ │ │ ├── length_handler_unittest.cc
│ │ │ │ ├── list_gap_handler.cc
│ │ │ │ ├── list_gap_handler.h
│ │ │ │ ├── list_gap_handler_unittest.cc
│ │ │ │ ├── mask_shorthand_handler.cc
│ │ │ │ ├── mask_shorthand_handler.h
│ │ │ │ ├── number_handler.cc
│ │ │ │ ├── number_handler_unittest.cc
│ │ │ │ ├── offset_rotate_handler.cc
│ │ │ │ ├── offset_rotate_handler.h
│ │ │ │ ├── relative_align_handler.cc
│ │ │ │ ├── relative_align_handler.h
│ │ │ │ ├── shadow_handler.cc
│ │ │ │ ├── shadow_handler.h
│ │ │ │ ├── shadow_handler_unittest.cc
│ │ │ │ ├── string_handler.cc
│ │ │ │ ├── string_handler_unittest.cc
│ │ │ │ ├── text_decoration_handler.cc
│ │ │ │ ├── text_decoration_handler.h
│ │ │ │ ├── text_decoration_handler_unittest.cc
│ │ │ │ ├── text_stroke_handler.cc
│ │ │ │ ├── text_stroke_handler.h
│ │ │ │ ├── text_stroke_handler_unittest.cc
│ │ │ │ ├── time_handler.cc
│ │ │ │ ├── time_handler_unittest.cc
│ │ │ │ ├── timing_function_handler.cc
│ │ │ │ ├── timing_function_handler_unittest.cc
│ │ │ │ ├── transform_handler.cc
│ │ │ │ ├── transform_handler.h
│ │ │ │ ├── transform_handler_unittest.cc
│ │ │ │ ├── transform_origin_handler.cc
│ │ │ │ ├── transform_origin_handler.h
│ │ │ │ ├── transform_origin_handler_unittest.cc
│ │ │ │ ├── transition_shorthand_handler.cc
│ │ │ │ ├── transition_shorthand_handler.h
│ │ │ │ ├── transition_shorthand_handler_unittest.cc
│ │ │ │ ├── vertical_align_handler.cc
│ │ │ │ └── vertical_align_handler.h
│ │ │ ├── select_element_token.cc
│ │ │ ├── select_element_token.h
│ │ │ ├── select_element_token_unittest.cc
│ │ │ ├── shared_css_fragment.cc
│ │ │ ├── shared_css_fragment.h
│ │ │ ├── shared_css_fragment_unittest.cc
│ │ │ ├── style_node.cc
│ │ │ ├── style_node.h
│ │ │ ├── text_attributes.cc
│ │ │ ├── text_attributes.h
│ │ │ ├── transforms/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── transform_operation.cc
│ │ │ │ ├── transform_operation.h
│ │ │ │ ├── transform_operation_unittest.cc
│ │ │ │ ├── transform_operations.cc
│ │ │ │ ├── transform_operations.h
│ │ │ │ └── transform_operations_unittest.cc
│ │ │ ├── unit_handler.cc
│ │ │ ├── unit_handler.h
│ │ │ └── unit_handler_unittest.cc
│ │ ├── data/
│ │ │ ├── BUILD.gn
│ │ │ ├── android/
│ │ │ │ ├── platform_data_android.cc
│ │ │ │ └── platform_data_android.h
│ │ │ ├── build.gni
│ │ │ ├── harmony/
│ │ │ │ ├── platform_data_harmony.cc
│ │ │ │ ├── platform_data_harmony.h
│ │ │ │ ├── template_data_harmony.cc
│ │ │ │ └── template_data_harmony.h
│ │ │ ├── ios/
│ │ │ │ ├── platform_data_darwin.h
│ │ │ │ └── platform_data_darwin.mm
│ │ │ ├── lynx_view_data_manager.cc
│ │ │ ├── lynx_view_data_manager.h
│ │ │ ├── platform_data.h
│ │ │ ├── template_data.cc
│ │ │ └── template_data.h
│ │ ├── dom/
│ │ │ ├── BUILD.gn
│ │ │ ├── air/
│ │ │ │ ├── BUILD.gn
│ │ │ │ ├── air_element/
│ │ │ │ │ ├── air_block_element.cc
│ │ │ │ │ ├── air_block_element.h
│ │ │ │ │ ├── air_block_element_unittest.cc
│ │ │ │ │ ├── air_component_element.cc
│ │ │ │ │ ├── air_component_element.h
│ │ │ │ │ ├── air_element.cc
│ │ │ │ │ ├── air_element.h
│ │ │ │ │ ├── air_element_container.cc
│ │ │ │ │ ├── air_element_container.h
│ │ │ │ │ ├── air_element_container_unittest.cc
│ │ │ │ │ ├── air_element_unittest.cc
│ │ │ │ │ ├── air_for_element.cc
│ │ │ │ │ ├── air_for_element.h
│ │ │ │ │ ├── air_if_element.cc
│ │ │ │ │ ├── air_if_element.h
│ │ │ │ │ ├── air_page_element.cc
│ │ │ │ │ └── air_page_element.h
│ │ │ │ ├── air_touch_event_handler.cc
│ │ │ │ ├── air_touch_event_handler.h
│ │ │ │ ├── air_touch_event_handler_unittest.cc
│ │ │ │ ├── lynx_air_parsed_style_store.cc
│ │ │ │ ├── lynx_air_parsed_style_store.h
│ │ │ │ └── testing/
│ │ │ │ └── air_lepus_context_mock.h
│ │ │ ├── android/
│ │ │ │ ├── environment_android.cc
│ │ │ │ ├── environment_android.h
│ │ │ │ ├── lepus_message_consumer.cc
│ │ │ │ ├── lepus_message_consumer.h
│ │ │ │ ├── lynx_get_ui_result_android.cc
│ │ │ │ ├── lynx_get_ui_result_android.h
│ │ │ │ ├── lynx_template_bundle_android.cc
│ │ │ │ ├── lynx_template_bundle_android.h
│ │ │ │ ├── lynx_view_data_manager_android.cc
│ │ │ │ └── lynx_view_data_manager_android.h
│ │ │ ├── attribute_holder.cc
│ │ │ ├── attribute_holder.h
│ │ │ ├── attribute_holder_unittest.cc
│ │ │ ├── base_element_container.cc
│ │ │ ├── base_element_container.h
│ │ │ ├── build.gni
│ │ │ ├── component_attributes.cc
│ │ │ ├── component_attributes.h
│ │ │ ├── component_config.h
│ │ │ ├── element.cc
│ │ │ ├── element.h
│ │ │ ├── element_bundle.cc
│ │ │ ├── element_bundle.h
│ │ │ ├── element_container.cc
│ │ │ ├── element_container.h
│ │ │ ├── element_container_unittest.cc
│ │ │ ├── element_context_delegate.cc
│ │ │ ├── element_context_delegate.h
│ │ │ ├── element_context_delegate_unittest.cc
│ │ │ ├── element_context_task_queue.cc
│ │ │ ├── element_context_task_queue.h
│ │ │ ├── element_layout_node_manager.cc
│ │ │ ├── element_layout_node_manager.h
│ │ │ ├── element_manager.cc
│ │ │ ├── element_manager.h
│ │ │ ├── element_manager_delegate.h
│ │ │ ├── element_manager_unittest.cc
│ │ │ ├── element_property.cc
│ │ │ ├── element_property.h
│ │ │ ├── element_unittest.cc
│ │ │ ├── element_vsync_proxy.cc
│ │ │ ├── element_vsync_proxy.h
│ │ │ ├── element_vsync_proxy_unittest.cc
│ │ │ ├── fiber/
│ │ │ │ ├── BUILD.gn
│ │ │ │ ├── block_element.cc
│ │ │ │ ├── block_element.h
│ │ │ │ ├── block_element_unittest.cc
│ │ │ │ ├── component_element.cc
│ │ │ │ ├── component_element.h
│ │ │ │ ├── fiber_element.cc
│ │ │ │ ├── fiber_element.h
│ │ │ │ ├── fiber_element_unittest.cc
│ │ │ │ ├── fiber_node_info.cc
│ │ │ │ ├── fiber_node_info.h
│ │ │ │ ├── fiber_node_info_unittest.cc
│ │ │ │ ├── for_element.cc
│ │ │ │ ├── for_element.h
│ │ │ │ ├── frame_element.cc
│ │ │ │ ├── frame_element.h
│ │ │ │ ├── if_element.cc
│ │ │ │ ├── if_element.h
│ │ │ │ ├── image_element.cc
│ │ │ │ ├── image_element.h
│ │ │ │ ├── list_element.cc
│ │ │ │ ├── list_element.h
│ │ │ │ ├── list_element_unittest.cc
│ │ │ │ ├── list_item_scheduler_adapter.cc
│ │ │ │ ├── list_item_scheduler_adapter.h
│ │ │ │ ├── list_item_scheduler_adapter_unittest.cc
│ │ │ │ ├── none_element.cc
│ │ │ │ ├── none_element.h
│ │ │ │ ├── page_element.cc
│ │ │ │ ├── page_element.h
│ │ │ │ ├── platform_layout_function_wrapper.cc
│ │ │ │ ├── platform_layout_function_wrapper.h
│ │ │ │ ├── platform_types.h
│ │ │ │ ├── pseudo_element.cc
│ │ │ │ ├── pseudo_element.h
│ │ │ │ ├── pseudo_element_unittest.cc
│ │ │ │ ├── raw_text_element.cc
│ │ │ │ ├── raw_text_element.h
│ │ │ │ ├── raw_text_element_unittest.cc
│ │ │ │ ├── scroll_element.cc
│ │ │ │ ├── scroll_element.h
│ │ │ │ ├── scroll_element_unittest.cc
│ │ │ │ ├── text_element.cc
│ │ │ │ ├── text_element.h
│ │ │ │ ├── text_element_unittest.cc
│ │ │ │ ├── text_props.h
│ │ │ │ ├── tree_resolver.cc
│ │ │ │ ├── tree_resolver.h
│ │ │ │ ├── view_element.cc
│ │ │ │ ├── view_element.h
│ │ │ │ ├── wrapper_element.cc
│ │ │ │ └── wrapper_element.h
│ │ │ ├── fragment/
│ │ │ │ ├── BUILD.gn
│ │ │ │ ├── box_model_recorder.cc
│ │ │ │ ├── box_model_recorder.h
│ │ │ │ ├── box_model_recorder_unittest.cc
│ │ │ │ ├── display_list.cc
│ │ │ │ ├── display_list.h
│ │ │ │ ├── display_list_builder.cc
│ │ │ │ ├── display_list_builder.h
│ │ │ │ ├── display_list_builder_unittest.cc
│ │ │ │ ├── display_list_unittest.cc
│ │ │ │ ├── event/
│ │ │ │ │ ├── platform_event_bundle.h
│ │ │ │ │ ├── platform_event_emitter.cc
│ │ │ │ │ ├── platform_event_emitter.h
│ │ │ │ │ ├── platform_event_handler.cc
│ │ │ │ │ ├── platform_event_handler.h
│ │ │ │ │ ├── platform_event_target.cc
│ │ │ │ │ ├── platform_event_target.h
│ │ │ │ │ ├── platform_event_target_exposure.cc
│ │ │ │ │ ├── platform_event_target_exposure.h
│ │ │ │ │ ├── platform_event_target_helper.cc
│ │ │ │ │ ├── platform_event_target_helper.h
│ │ │ │ │ ├── platform_input_event.cc
│ │ │ │ │ ├── platform_input_event.h
│ │ │ │ │ ├── platform_pointer_event.cc
│ │ │ │ │ └── platform_pointer_event.h
│ │ │ │ ├── fragment.cc
│ │ │ │ ├── fragment.h
│ │ │ │ ├── fragment_behavior.cc
│ │ │ │ ├── fragment_behavior.h
│ │ │ │ ├── fragment_unittest.cc
│ │ │ │ ├── image_fragment_behavior.cc
│ │ │ │ ├── image_fragment_behavior.h
│ │ │ │ ├── layout_info.cc
│ │ │ │ ├── layout_info.h
│ │ │ │ ├── layout_info_unittest.cc
│ │ │ │ ├── list_fragment_behavior.cc
│ │ │ │ ├── list_fragment_behavior.h
│ │ │ │ ├── list_item_fragment_behavior.cc
│ │ │ │ ├── list_item_fragment_behavior.h
│ │ │ │ ├── page_fragment_behavior.cc
│ │ │ │ ├── page_fragment_behavior.h
│ │ │ │ ├── platform_extended_fragment_behavior.cc
│ │ │ │ ├── platform_extended_fragment_behavior.h
│ │ │ │ ├── rounded_rectangle.h
│ │ │ │ ├── rounded_rectangle_unittest.cc
│ │ │ │ ├── text_fragment_behavior.cc
│ │ │ │ ├── text_fragment_behavior.h
│ │ │ │ ├── text_fragment_behavior_unittest.cc
│ │ │ │ ├── view_fragment_behavior.cc
│ │ │ │ └── view_fragment_behavior.h
│ │ │ ├── harmony/
│ │ │ │ ├── lynx_template_bundle_harmony.cc
│ │ │ │ └── lynx_template_bundle_harmony.h
│ │ │ ├── ios/
│ │ │ │ ├── lepus_value_converter.h
│ │ │ │ └── lepus_value_converter.mm
│ │ │ ├── layout_bundle.h
│ │ │ ├── list_component_info.cc
│ │ │ ├── list_component_info.h
│ │ │ ├── lynx_get_ui_result.h
│ │ │ ├── selector/
│ │ │ │ ├── BUILD.gn
│ │ │ │ ├── element_selector.cc
│ │ │ │ ├── element_selector.h
│ │ │ │ ├── fiber_element_selector.cc
│ │ │ │ ├── fiber_element_selector.h
│ │ │ │ ├── matching/
│ │ │ │ │ ├── attribute_selector_matching.cc
│ │ │ │ │ └── attribute_selector_matching.h
│ │ │ │ ├── select_result.h
│ │ │ │ ├── select_result_unittest.cc
│ │ │ │ └── selector_item.h
│ │ │ ├── style_resolver.cc
│ │ │ ├── style_resolver.h
│ │ │ ├── style_resolver_unittest.cc
│ │ │ ├── testing/
│ │ │ │ ├── fiber_element_test.cc
│ │ │ │ ├── fiber_element_test.h
│ │ │ │ ├── fiber_mock_painting_context.cc
│ │ │ │ ├── fiber_mock_painting_context.h
│ │ │ │ ├── fiber_mock_text_layout.cc
│ │ │ │ ├── fiber_mock_text_layout.h
│ │ │ │ └── fiber_new_fixed_test.cc
│ │ │ └── vdom/
│ │ │ └── radon/
│ │ │ ├── BUILD.gn
│ │ │ ├── base_component.cc
│ │ │ ├── base_component.h
│ │ │ ├── list_reuse_pool.cc
│ │ │ ├── list_reuse_pool.h
│ │ │ ├── node_path_info.cc
│ │ │ ├── node_path_info.h
│ │ │ ├── node_select_options.h
│ │ │ ├── node_selector.cc
│ │ │ ├── node_selector.h
│ │ │ ├── radon_base.cc
│ │ │ ├── radon_base.h
│ │ │ ├── radon_component.cc
│ │ │ ├── radon_component.h
│ │ │ ├── radon_diff_list_node.cc
│ │ │ ├── radon_diff_list_node.h
│ │ │ ├── radon_diff_list_node2.cc
│ │ │ ├── radon_diff_list_node2.h
│ │ │ ├── radon_dispatch_option.cc
│ │ │ ├── radon_dispatch_option.h
│ │ │ ├── radon_factory.cc
│ │ │ ├── radon_factory.h
│ │ │ ├── radon_lazy_component.cc
│ │ │ ├── radon_lazy_component.h
│ │ │ ├── radon_list_base.cc
│ │ │ ├── radon_list_base.h
│ │ │ ├── radon_node.cc
│ │ │ ├── radon_node.h
│ │ │ ├── radon_node_unittest.cc
│ │ │ ├── radon_page.cc
│ │ │ ├── radon_page.h
│ │ │ ├── radon_slot.cc
│ │ │ ├── radon_slot.h
│ │ │ ├── radon_types.h
│ │ │ └── set_css_variable_op.h
│ │ ├── element_manager_delegate_impl.cc
│ │ ├── element_manager_delegate_impl.h
│ │ ├── events/
│ │ │ ├── BUILD.gn
│ │ │ ├── closure_event_listener.cc
│ │ │ ├── closure_event_listener.h
│ │ │ ├── closure_event_listener_test.cc
│ │ │ ├── event_handler.cc
│ │ │ ├── events.h
│ │ │ ├── gesture.h
│ │ │ ├── touch_event_handler.cc
│ │ │ ├── touch_event_handler.h
│ │ │ └── touch_event_handler_unittest.cc
│ │ ├── js_bundle_holder_impl.cc
│ │ ├── js_bundle_holder_impl.h
│ │ ├── layout_scheduler/
│ │ │ ├── BUILD.gn
│ │ │ ├── layout_scheduler.cc
│ │ │ └── layout_scheduler.h
│ │ ├── lynx_env_config.cc
│ │ ├── lynx_env_config.h
│ │ ├── lynx_global_pool.cc
│ │ ├── lynx_global_pool.h
│ │ ├── page_config_unittests.cc
│ │ ├── page_proxy.cc
│ │ ├── page_proxy.h
│ │ ├── pipeline/
│ │ │ ├── BUILD.gn
│ │ │ ├── pipeline_context.cc
│ │ │ ├── pipeline_context.h
│ │ │ ├── pipeline_context_manager.cc
│ │ │ ├── pipeline_context_manager.h
│ │ │ ├── pipeline_context_manager_unittest.cc
│ │ │ ├── pipeline_context_manager_unittest.h
│ │ │ ├── pipeline_context_unittest.cc
│ │ │ ├── pipeline_context_unittest.h
│ │ │ ├── pipeline_layout_data.h
│ │ │ ├── pipeline_lifecycle.cc
│ │ │ ├── pipeline_lifecycle.h
│ │ │ ├── pipeline_lifecycle_observer.h
│ │ │ ├── pipeline_lifecycle_unittest.cc
│ │ │ ├── pipeline_lifecycle_unittest.h
│ │ │ ├── pipeline_scope.cc
│ │ │ ├── pipeline_scope.h
│ │ │ ├── pipeline_scope_unittest.cc
│ │ │ ├── pipeline_scope_unittest.h
│ │ │ ├── pipeline_version.h
│ │ │ ├── pipeline_version_unittest.cc
│ │ │ └── pipeline_version_unittest.h
│ │ ├── signal/
│ │ │ ├── BUILD.gn
│ │ │ ├── computation.cc
│ │ │ ├── computation.h
│ │ │ ├── computation_unittest.cc
│ │ │ ├── computation_unittest.h
│ │ │ ├── lynx_signal.cc
│ │ │ ├── lynx_signal.h
│ │ │ ├── lynx_signal_unittest.cc
│ │ │ ├── lynx_signal_unittest.h
│ │ │ ├── memo.cc
│ │ │ ├── memo.h
│ │ │ ├── memo_unittest.cc
│ │ │ ├── memo_unittest.h
│ │ │ ├── scope.cc
│ │ │ ├── scope.h
│ │ │ ├── scope_unittest.cc
│ │ │ ├── scope_unittest.h
│ │ │ ├── signal_context.cc
│ │ │ ├── signal_context.h
│ │ │ ├── signal_context_unittest.cc
│ │ │ └── signal_context_unittest.h
│ │ ├── simple_styling/
│ │ │ ├── BUILD.gn
│ │ │ ├── simple_style_node.h
│ │ │ ├── simple_styling.gni
│ │ │ ├── style_object.cc
│ │ │ ├── style_object.h
│ │ │ ├── style_object_decoder.h
│ │ │ └── style_object_unittest.cc
│ │ ├── starlight/
│ │ │ ├── BUILD.gn
│ │ │ ├── event/
│ │ │ │ ├── layout_event.h
│ │ │ │ ├── layout_event_data.h
│ │ │ │ └── layout_event_handler.h
│ │ │ ├── layout/
│ │ │ │ ├── box_info.cc
│ │ │ │ ├── box_info.h
│ │ │ │ ├── cache_manager.cc
│ │ │ │ ├── cache_manager.h
│ │ │ │ ├── container_node.cc
│ │ │ │ ├── container_node.h
│ │ │ │ ├── container_node_unittest.cc
│ │ │ │ ├── direction_selector.h
│ │ │ │ ├── elastic_layout_utils.cc
│ │ │ │ ├── elastic_layout_utils.h
│ │ │ │ ├── flex_info.cc
│ │ │ │ ├── flex_info.h
│ │ │ │ ├── flex_layout_algorithm.cc
│ │ │ │ ├── flex_layout_algorithm.h
│ │ │ │ ├── grid_item_info.cc
│ │ │ │ ├── grid_item_info.h
│ │ │ │ ├── grid_layout_algorithm.cc
│ │ │ │ ├── grid_layout_algorithm.h
│ │ │ │ ├── layout_algorithm.cc
│ │ │ │ ├── layout_algorithm.h
│ │ │ │ ├── layout_global.cc
│ │ │ │ ├── layout_global.h
│ │ │ │ ├── layout_object.cc
│ │ │ │ ├── layout_object.h
│ │ │ │ ├── linear_layout_algorithm.cc
│ │ │ │ ├── linear_layout_algorithm.h
│ │ │ │ ├── logic_direction_utils.cc
│ │ │ │ ├── logic_direction_utils.h
│ │ │ │ ├── node.h
│ │ │ │ ├── position_layout_utils.cc
│ │ │ │ ├── position_layout_utils.h
│ │ │ │ ├── property_resolving_utils.cc
│ │ │ │ ├── property_resolving_utils.h
│ │ │ │ ├── relative_layout_algorithm.cc
│ │ │ │ ├── relative_layout_algorithm.h
│ │ │ │ ├── staggered_grid_layout_algorithm.cc
│ │ │ │ └── staggered_grid_layout_algorithm.h
│ │ │ ├── style/
│ │ │ │ ├── borders_data.cc
│ │ │ │ ├── borders_data.h
│ │ │ │ ├── box_data.cc
│ │ │ │ ├── box_data.h
│ │ │ │ ├── copyable.h
│ │ │ │ ├── css_type.h
│ │ │ │ ├── data_ref.h
│ │ │ │ ├── data_ref_unittest.cc
│ │ │ │ ├── default_layout_style.h
│ │ │ │ ├── flex_data.cc
│ │ │ │ ├── flex_data.h
│ │ │ │ ├── grid_data.cc
│ │ │ │ ├── grid_data.h
│ │ │ │ ├── layout_computed_style.cc
│ │ │ │ ├── layout_computed_style.h
│ │ │ │ ├── layout_style_utils.cc
│ │ │ │ ├── layout_style_utils.h
│ │ │ │ ├── linear_data.cc
│ │ │ │ ├── linear_data.h
│ │ │ │ ├── relative_data.cc
│ │ │ │ ├── relative_data.h
│ │ │ │ ├── surround_data.cc
│ │ │ │ └── surround_data.h
│ │ │ └── types/
│ │ │ ├── layout_attribute.h
│ │ │ ├── layout_configs.h
│ │ │ ├── layout_constraints.h
│ │ │ ├── layout_directions.h
│ │ │ ├── layout_measurefunc.h
│ │ │ ├── layout_result.h
│ │ │ ├── layout_types.h
│ │ │ ├── layout_unit.h
│ │ │ ├── nlength.cc
│ │ │ └── nlength.h
│ │ ├── tasm/
│ │ │ ├── config.cc
│ │ │ ├── config.h
│ │ │ ├── i18n/
│ │ │ │ ├── i18n.cc
│ │ │ │ ├── i18n.h
│ │ │ │ ├── i18n_binder_android.cc
│ │ │ │ ├── i18n_binder_android.h
│ │ │ │ ├── i18n_binder_darwin.h
│ │ │ │ └── i18n_binder_darwin.mm
│ │ │ ├── napi_bind.cc
│ │ │ ├── react/
│ │ │ │ ├── android/
│ │ │ │ │ └── mapbuffer/
│ │ │ │ │ ├── BUILD.gn
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── base_buffer.h
│ │ │ │ │ ├── base_buffer_builder.h
│ │ │ │ │ ├── compact_array_buffer.cc
│ │ │ │ │ ├── compact_array_buffer.h
│ │ │ │ │ ├── compact_array_buffer_builder.cc
│ │ │ │ │ ├── compact_array_buffer_builder.h
│ │ │ │ │ ├── map_buffer.cc
│ │ │ │ │ ├── map_buffer.h
│ │ │ │ │ ├── map_buffer_builder.cc
│ │ │ │ │ ├── map_buffer_builder.h
│ │ │ │ │ ├── readable_compact_array_buffer.cc
│ │ │ │ │ ├── readable_compact_array_buffer.h
│ │ │ │ │ ├── readable_map_buffer.cc
│ │ │ │ │ ├── readable_map_buffer.h
│ │ │ │ │ └── testing/
│ │ │ │ │ ├── compact_array_buffer_unittest.cc
│ │ │ │ │ └── map_buffer_unittest.cc
│ │ │ │ └── testing/
│ │ │ │ └── mock_painting_context.h
│ │ │ ├── sysinfo/
│ │ │ │ ├── sysinfo_android.cc
│ │ │ │ ├── sysinfo_default.cc
│ │ │ │ ├── sysinfo_harmony.cc
│ │ │ │ ├── sysinfo_headless.cc
│ │ │ │ └── sysinfo_ios.cc
│ │ │ └── testing/
│ │ │ ├── event_tracker_mock.cc
│ │ │ ├── event_tracker_mock.h
│ │ │ └── mock_attribute_holder.h
│ │ ├── tasm_runtime_bundle.h
│ │ ├── template_assembler.cc
│ │ ├── template_assembler.h
│ │ ├── template_entry.cc
│ │ ├── template_entry.h
│ │ ├── template_entry_holder.cc
│ │ ├── template_entry_holder.h
│ │ ├── template_themed.h
│ │ ├── trace/
│ │ │ ├── BUILD.gn
│ │ │ └── renderer_trace_event_def.h
│ │ ├── ui_component/
│ │ │ └── list/
│ │ │ ├── BUILD.gn
│ │ │ ├── adapter_helper.cc
│ │ │ ├── adapter_helper.h
│ │ │ ├── animation_item_holder.cc
│ │ │ ├── animation_item_holder.h
│ │ │ ├── batch_list_adapter.cc
│ │ │ ├── batch_list_adapter.h
│ │ │ ├── batch_list_adapter_unittest.cc
│ │ │ ├── default_list_adapter.cc
│ │ │ ├── default_list_adapter.h
│ │ │ ├── default_list_adapter_unittest.cc
│ │ │ ├── grid_layout_manager.cc
│ │ │ ├── grid_layout_manager.h
│ │ │ ├── item_holder.cc
│ │ │ ├── item_holder.h
│ │ │ ├── linear_layout_manager.cc
│ │ │ ├── linear_layout_manager.h
│ │ │ ├── list_adapter.cc
│ │ │ ├── list_adapter.h
│ │ │ ├── list_adapter_unittest.cc
│ │ │ ├── list_anchor_manager.cc
│ │ │ ├── list_anchor_manager.h
│ │ │ ├── list_anchor_manager_unittest.cc
│ │ │ ├── list_children_helper.cc
│ │ │ ├── list_children_helper.h
│ │ │ ├── list_children_helper_unittest.cc
│ │ │ ├── list_container_animation_manager.cc
│ │ │ ├── list_container_animation_manager.h
│ │ │ ├── list_container_default.cc
│ │ │ ├── list_container_default.h
│ │ │ ├── list_container_delegate_internal.h
│ │ │ ├── list_container_impl.cc
│ │ │ ├── list_container_impl.h
│ │ │ ├── list_event_manager.cc
│ │ │ ├── list_event_manager.h
│ │ │ ├── list_event_manager_unittest.cc
│ │ │ ├── list_layout_manager.cc
│ │ │ ├── list_layout_manager.h
│ │ │ ├── list_orientation_helper.cc
│ │ │ ├── list_orientation_helper.h
│ │ │ ├── list_types.h
│ │ │ ├── mediator/
│ │ │ │ ├── BUILD.gn
│ │ │ │ ├── list_item_mediator.cc
│ │ │ │ ├── list_item_mediator.h
│ │ │ │ ├── list_mediator.cc
│ │ │ │ └── list_mediator.h
│ │ │ ├── staggered_grid_layout_manager.cc
│ │ │ ├── staggered_grid_layout_manager.h
│ │ │ ├── staggered_grid_layout_manager_unittest.cc
│ │ │ └── testing/
│ │ │ ├── mock_diff_result.h
│ │ │ ├── mock_list_element.h
│ │ │ ├── utils.cc
│ │ │ └── utils.h
│ │ ├── ui_wrapper/
│ │ │ ├── BUILD.gn
│ │ │ ├── common/
│ │ │ │ ├── BUILD.gn
│ │ │ │ ├── android/
│ │ │ │ │ ├── platform_extra_bundle_android.cc
│ │ │ │ │ ├── platform_extra_bundle_android.h
│ │ │ │ │ ├── prop_bundle_android.cc
│ │ │ │ │ ├── prop_bundle_android.h
│ │ │ │ │ ├── prop_bundle_android_test.cc
│ │ │ │ │ └── prop_bundle_android_test.h
│ │ │ │ ├── harmony/
│ │ │ │ │ ├── platform_extra_bundle_harmony.cc
│ │ │ │ │ ├── platform_extra_bundle_harmony.h
│ │ │ │ │ ├── prop_bundle_harmony.cc
│ │ │ │ │ └── prop_bundle_harmony.h
│ │ │ │ ├── ios/
│ │ │ │ │ ├── platform_extra_bundle_darwin.h
│ │ │ │ │ ├── platform_extra_bundle_darwin.mm
│ │ │ │ │ ├── prop_bundle_darwin.h
│ │ │ │ │ └── prop_bundle_darwin.mm
│ │ │ │ ├── native_prop_bundle.cc
│ │ │ │ ├── native_prop_bundle.h
│ │ │ │ ├── prop_bundle_creator_default.cc
│ │ │ │ ├── prop_bundle_creator_default.h
│ │ │ │ └── testing/
│ │ │ │ ├── prop_bundle_mock.cc
│ │ │ │ └── prop_bundle_mock.h
│ │ │ ├── layout/
│ │ │ │ ├── BUILD.gn
│ │ │ │ ├── android/
│ │ │ │ │ ├── layout_context_android.cc
│ │ │ │ │ ├── layout_context_android.h
│ │ │ │ │ ├── layout_node_android.cc
│ │ │ │ │ ├── layout_node_android.h
│ │ │ │ │ ├── layout_node_manager_android.cc
│ │ │ │ │ ├── layout_node_manager_android.h
│ │ │ │ │ ├── text_layout_android.cc
│ │ │ │ │ └── text_layout_android.h
│ │ │ │ ├── empty/
│ │ │ │ │ └── layout_context_empty_implementation.h
│ │ │ │ ├── harmony/
│ │ │ │ │ ├── layout_context_harmony.cc
│ │ │ │ │ └── layout_context_harmony.h
│ │ │ │ ├── ios/
│ │ │ │ │ ├── layout_context_darwin.h
│ │ │ │ │ ├── layout_context_darwin.mm
│ │ │ │ │ ├── text_layout_darwin.h
│ │ │ │ │ └── text_layout_darwin.mm
│ │ │ │ ├── layout_context.cc
│ │ │ │ ├── layout_context.h
│ │ │ │ ├── layout_context_data.h
│ │ │ │ ├── layout_node.cc
│ │ │ │ ├── layout_node.h
│ │ │ │ ├── list_node.cc
│ │ │ │ ├── list_node.h
│ │ │ │ ├── no_needed_layout_list.h
│ │ │ │ └── textra/
│ │ │ │ ├── text_layout_api.h
│ │ │ │ ├── text_layout_textra.cc
│ │ │ │ └── text_layout_textra.h
│ │ │ └── painting/
│ │ │ ├── BUILD.gn
│ │ │ ├── android/
│ │ │ │ ├── native_painting_context_android.cc
│ │ │ │ ├── native_painting_context_android.h
│ │ │ │ ├── native_painting_context_platform_android_ref.cc
│ │ │ │ ├── native_painting_context_platform_android_ref.h
│ │ │ │ ├── painting_context_android.cc
│ │ │ │ ├── painting_context_android.h
│ │ │ │ ├── platform_renderer_android.cc
│ │ │ │ ├── platform_renderer_android.h
│ │ │ │ ├── platform_renderer_context.cc
│ │ │ │ ├── platform_renderer_context.h
│ │ │ │ ├── ui_delegate_android.cc
│ │ │ │ └── ui_delegate_android.h
│ │ │ ├── catalyzer.cc
│ │ │ ├── catalyzer.h
│ │ │ ├── empty/
│ │ │ │ └── painting_context_implementation.h
│ │ │ ├── harmony/
│ │ │ │ ├── painting_context_harmony.cc
│ │ │ │ ├── painting_context_harmony.h
│ │ │ │ ├── ui_delegate_harmony.cc
│ │ │ │ └── ui_delegate_harmony.h
│ │ │ ├── ios/
│ │ │ │ ├── native_painting_context_darwin.h
│ │ │ │ ├── native_painting_context_darwin.mm
│ │ │ │ ├── native_painting_context_platform_darwin_ref.h
│ │ │ │ ├── native_painting_context_platform_darwin_ref.mm
│ │ │ │ ├── painting_context_darwin.h
│ │ │ │ ├── painting_context_darwin.mm
│ │ │ │ ├── painting_context_darwin_UnitTest.mm
│ │ │ │ ├── painting_context_darwin_utils.h
│ │ │ │ ├── painting_context_darwin_utils.mm
│ │ │ │ ├── platform_renderer_context_darwin.h
│ │ │ │ ├── platform_renderer_context_darwin.mm
│ │ │ │ ├── platform_renderer_darwin.h
│ │ │ │ ├── platform_renderer_darwin.mm
│ │ │ │ ├── platform_renderer_darwin_factory.h
│ │ │ │ ├── platform_renderer_darwin_factory.mm
│ │ │ │ ├── ui_delegate_darwin.h
│ │ │ │ └── ui_delegate_darwin.mm
│ │ │ ├── native_painting_context.cc
│ │ │ ├── native_painting_context.h
│ │ │ ├── native_painting_context_platform_ref.cc
│ │ │ ├── native_painting_context_platform_ref.h
│ │ │ ├── painting_context.cc
│ │ │ ├── painting_context.h
│ │ │ ├── platform_renderer.h
│ │ │ ├── platform_renderer_impl.cc
│ │ │ └── platform_renderer_impl.h
│ │ ├── utils/
│ │ │ ├── BUILD.gn
│ │ │ ├── android/
│ │ │ │ ├── device_display_info.cc
│ │ │ │ ├── devtool_lifecycle_android.cc
│ │ │ │ ├── devtool_lifecycle_android.h
│ │ │ │ ├── event_converter_android.cc
│ │ │ │ ├── event_converter_android.h
│ │ │ │ ├── event_converter_android_unittest.cc
│ │ │ │ ├── lynx_env_android.cc
│ │ │ │ ├── lynx_env_android.h
│ │ │ │ ├── lynx_trail_hub_impl_android.cc
│ │ │ │ ├── lynx_trail_hub_impl_android.h
│ │ │ │ ├── text_utils_android.cc
│ │ │ │ ├── text_utils_android.h
│ │ │ │ ├── value_converter_android.cc
│ │ │ │ └── value_converter_android.h
│ │ │ ├── base/
│ │ │ │ ├── base_def.h
│ │ │ │ ├── element_template_info.h
│ │ │ │ ├── tasm_constants.h
│ │ │ │ ├── tasm_utils.cc
│ │ │ │ ├── tasm_utils.h
│ │ │ │ ├── tasm_worker_basic_task_runner.cc
│ │ │ │ ├── tasm_worker_basic_task_runner.h
│ │ │ │ ├── tasm_worker_task_runner.cc
│ │ │ │ ├── tasm_worker_task_runner.h
│ │ │ │ └── tasm_worker_task_runner_unittest.cc
│ │ │ ├── build.gni
│ │ │ ├── darwin/
│ │ │ │ ├── event_converter_darwin.h
│ │ │ │ ├── event_converter_darwin.mm
│ │ │ │ └── event_converter_darwin_unittest.mm
│ │ │ ├── devtool_lifecycle.cc
│ │ │ ├── devtool_lifecycle.h
│ │ │ ├── devtool_lifecycle_unittest.cc
│ │ │ ├── devtool_state.h
│ │ │ ├── diff_algorithm.h
│ │ │ ├── diff_algorithm_unittest.cc
│ │ │ ├── harmony/
│ │ │ │ ├── lynx_trail_hub_impl_harmony.cc
│ │ │ │ ├── lynx_trail_hub_impl_harmony.h
│ │ │ │ └── sys_env_harmony.cc
│ │ │ ├── ios/
│ │ │ │ ├── text_utils_ios.h
│ │ │ │ └── text_utils_ios.mm
│ │ │ ├── lynx_env.cc
│ │ │ ├── lynx_env.h
│ │ │ ├── lynx_trail_hub.cc
│ │ │ ├── lynx_trail_hub.h
│ │ │ ├── lynx_trail_hub_impl_default.cc
│ │ │ ├── prop_bundle_style_writer.cc
│ │ │ ├── prop_bundle_style_writer.h
│ │ │ ├── prop_bundle_style_writer_unittest.cc
│ │ │ ├── prop_bundle_style_writer_unittest.h
│ │ │ ├── sys_lynx_env/
│ │ │ │ └── sys_env_default.cc
│ │ │ ├── test/
│ │ │ │ ├── text_utils_mock.cc
│ │ │ │ └── text_utils_mock.h
│ │ │ ├── value_utils.cc
│ │ │ └── value_utils.h
│ │ └── worklet/
│ │ ├── BUILD.gn
│ │ ├── base/
│ │ │ ├── worklet_utils.cc
│ │ │ └── worklet_utils.h
│ │ ├── lepus_component.cc
│ │ ├── lepus_component.h
│ │ ├── lepus_element.cc
│ │ ├── lepus_element.h
│ │ ├── lepus_gesture.cc
│ │ ├── lepus_gesture.h
│ │ ├── lepus_lynx.cc
│ │ ├── lepus_lynx.h
│ │ ├── lepus_raf_handler.cc
│ │ ├── lepus_raf_handler.h
│ │ └── test/
│ │ ├── worklet_api_unittest.cc
│ │ ├── worklet_event_unittest.cc
│ │ └── worklet_utils_unittest.cc
│ ├── resource/
│ │ ├── BUILD.gn
│ │ ├── external_resource/
│ │ │ ├── external_resource_loader.cc
│ │ │ └── external_resource_loader.h
│ │ ├── lazy_bundle/
│ │ │ ├── bundle_resource_info.h
│ │ │ ├── lazy_bundle_lifecycle_option.cc
│ │ │ ├── lazy_bundle_lifecycle_option.h
│ │ │ ├── lazy_bundle_loader.cc
│ │ │ ├── lazy_bundle_loader.h
│ │ │ ├── lazy_bundle_request.h
│ │ │ ├── lazy_bundle_unittest.cc
│ │ │ ├── lazy_bundle_utils.cc
│ │ │ └── lazy_bundle_utils.h
│ │ ├── lynx_info_reporter_helper_harmony.cc
│ │ ├── lynx_info_reporter_helper_harmony.h
│ │ ├── lynx_resource_loader.cc
│ │ ├── lynx_resource_loader_android.cc
│ │ ├── lynx_resource_loader_android.h
│ │ ├── lynx_resource_loader_darwin.h
│ │ ├── lynx_resource_loader_darwin.mm
│ │ ├── lynx_resource_loader_harmony.cc
│ │ ├── lynx_resource_loader_harmony.h
│ │ ├── lynx_resource_setting.cc
│ │ ├── lynx_resource_setting.h
│ │ └── trace/
│ │ ├── BUILD.gn
│ │ └── resource_trace_event_def.h
│ ├── runtime/
│ │ ├── BUILD.gn
│ │ ├── common/
│ │ │ ├── BUILD.gn
│ │ │ ├── bindings/
│ │ │ │ ├── event/
│ │ │ │ │ ├── BUILD.gn
│ │ │ │ │ ├── context_proxy.cc
│ │ │ │ │ ├── context_proxy.h
│ │ │ │ │ ├── context_proxy_test.cc
│ │ │ │ │ ├── context_proxy_test.h
│ │ │ │ │ ├── message_event.cc
│ │ │ │ │ ├── message_event.h
│ │ │ │ │ ├── message_event_test.cc
│ │ │ │ │ ├── message_event_test.h
│ │ │ │ │ └── runtime_constants.h
│ │ │ │ ├── modules/
│ │ │ │ │ ├── BUILD.gn
│ │ │ │ │ ├── lynx_native_module_manager.cc
│ │ │ │ │ ├── lynx_native_module_manager.h
│ │ │ │ │ ├── lynx_native_module_manager_unittest.cc
│ │ │ │ │ └── mock_native_module.h
│ │ │ │ └── resource/
│ │ │ │ ├── BUILD.gn
│ │ │ │ ├── response_handler_proxy.h
│ │ │ │ ├── response_promise.h
│ │ │ │ ├── response_promise_unittest.cc
│ │ │ │ └── response_promise_unittest.h
│ │ │ ├── js_error_reporter.cc
│ │ │ ├── js_error_reporter.h
│ │ │ ├── js_error_reporter_unittest.cc
│ │ │ ├── lynx_console_helper.h
│ │ │ └── napi/
│ │ │ ├── BUILD.gn
│ │ │ ├── jsbinding_napi_v8_ios_imp.cc
│ │ │ ├── napi.gni
│ │ │ ├── napi_bench_object.h
│ │ │ ├── napi_environment.cc
│ │ │ ├── napi_environment.h
│ │ │ ├── napi_environment_unittest.cc
│ │ │ ├── napi_runtime_proxy.cc
│ │ │ ├── napi_runtime_proxy.h
│ │ │ ├── napi_runtime_proxy_jsc.cc
│ │ │ ├── napi_runtime_proxy_jsc.h
│ │ │ ├── napi_runtime_proxy_jsvm.cc
│ │ │ ├── napi_runtime_proxy_jsvm.h
│ │ │ ├── napi_runtime_proxy_jsvm_factory.h
│ │ │ ├── napi_runtime_proxy_quickjs.cc
│ │ │ ├── napi_runtime_proxy_quickjs.h
│ │ │ ├── napi_runtime_proxy_quickjs_factory.h
│ │ │ ├── napi_runtime_proxy_v8.cc
│ │ │ ├── napi_runtime_proxy_v8.h
│ │ │ ├── napi_runtime_proxy_v8_factory.h
│ │ │ └── shim/
│ │ │ ├── README.md
│ │ │ ├── shim_napi_env_jsc.h
│ │ │ ├── shim_napi_env_quickjs.h
│ │ │ └── shim_napi_env_v8.h
│ │ ├── js/
│ │ │ ├── BUILD.gn
│ │ │ ├── bindings/
│ │ │ │ ├── BUILD.gn
│ │ │ │ ├── api_call_back-inl.h
│ │ │ │ ├── api_call_back.cc
│ │ │ │ ├── api_call_back.h
│ │ │ │ ├── api_call_back_unittest.cc
│ │ │ │ ├── api_invoke_ctrl.h
│ │ │ │ ├── big_int/
│ │ │ │ │ ├── big_integer.h
│ │ │ │ │ ├── constants.cc
│ │ │ │ │ ├── jsbi.cc
│ │ │ │ │ └── jsbi.h
│ │ │ │ ├── console.h
│ │ │ │ ├── event/
│ │ │ │ │ ├── BUILD.gn
│ │ │ │ │ ├── context_proxy_in_js.cc
│ │ │ │ │ ├── context_proxy_in_js.h
│ │ │ │ │ ├── context_proxy_in_js_test.cc
│ │ │ │ │ ├── context_proxy_in_js_test.h
│ │ │ │ │ ├── js_event_listener.cc
│ │ │ │ │ ├── js_event_listener.h
│ │ │ │ │ ├── js_event_listener_test.cc
│ │ │ │ │ └── js_event_listener_test.h
│ │ │ │ ├── global.cc
│ │ │ │ ├── global.h
│ │ │ │ ├── interceptor/
│ │ │ │ │ ├── BUILD.gn
│ │ │ │ │ ├── interceptor_factory.cc
│ │ │ │ │ └── interceptor_factory.h
│ │ │ │ ├── java_script_element.cc
│ │ │ │ ├── java_script_element.h
│ │ │ │ ├── js_app.cc
│ │ │ │ ├── js_app.h
│ │ │ │ ├── js_app_unittest.cc
│ │ │ │ ├── js_object_destruction_observer.h
│ │ │ │ ├── js_task_adapter.cc
│ │ │ │ ├── js_task_adapter.h
│ │ │ │ ├── js_task_adapter_unittest.cc
│ │ │ │ ├── lynx.cc
│ │ │ │ ├── lynx.h
│ │ │ │ ├── lynx_console.cc
│ │ │ │ ├── lynx_js_error.cc
│ │ │ │ ├── lynx_js_error.h
│ │ │ │ ├── mock_module_delegate.h
│ │ │ │ ├── modules/
│ │ │ │ │ ├── android/
│ │ │ │ │ │ ├── BUILD.gn
│ │ │ │ │ │ ├── callback_impl.cc
│ │ │ │ │ │ ├── callback_impl.h
│ │ │ │ │ │ ├── java_attribute_descriptor.cc
│ │ │ │ │ │ ├── java_attribute_descriptor.h
│ │ │ │ │ │ ├── java_method_descriptor.cc
│ │ │ │ │ │ ├── java_method_descriptor.h
│ │ │ │ │ │ ├── jni_v8_bridge.cc
│ │ │ │ │ │ ├── lynx_module_android.cc
│ │ │ │ │ │ ├── lynx_module_android.h
│ │ │ │ │ │ ├── lynx_promise_impl.cc
│ │ │ │ │ │ ├── lynx_promise_impl.h
│ │ │ │ │ │ ├── lynx_proxy_runtime_helper.cc
│ │ │ │ │ │ ├── lynx_proxy_runtime_helper.h
│ │ │ │ │ │ ├── method_invoker.cc
│ │ │ │ │ │ ├── method_invoker.h
│ │ │ │ │ │ ├── module_factory_android.cc
│ │ │ │ │ │ ├── module_factory_android.h
│ │ │ │ │ │ ├── platform_jsi/
│ │ │ │ │ │ │ ├── BUILD.gn
│ │ │ │ │ │ │ ├── jsi_object_utils.cc
│ │ │ │ │ │ │ ├── jsi_object_utils.h
│ │ │ │ │ │ │ ├── lynx_jsi_object_descriptor.cc
│ │ │ │ │ │ │ ├── lynx_jsi_object_descriptor.h
│ │ │ │ │ │ │ ├── lynx_platform_jsi_object_android.cc
│ │ │ │ │ │ │ └── lynx_platform_jsi_object_android.h
│ │ │ │ │ │ └── webassembly_bridge.cc
│ │ │ │ │ ├── harmony/
│ │ │ │ │ │ ├── module_factory_harmony.cc
│ │ │ │ │ │ ├── module_factory_harmony.h
│ │ │ │ │ │ ├── native_module_harmony.cc
│ │ │ │ │ │ ├── native_module_harmony.h
│ │ │ │ │ │ ├── platform_module_manager.cc
│ │ │ │ │ │ └── platform_module_manager.h
│ │ │ │ │ ├── ios/
│ │ │ │ │ │ ├── common_module_creator.h
│ │ │ │ │ │ ├── common_module_creator.mm
│ │ │ │ │ │ ├── lynx_module_creator_darwin.h
│ │ │ │ │ │ ├── lynx_module_darwin.h
│ │ │ │ │ │ ├── lynx_module_darwin.mm
│ │ │ │ │ │ ├── lynx_module_interceptor.h
│ │ │ │ │ │ ├── lynx_module_interceptor.mm
│ │ │ │ │ │ ├── module_factory_darwin.h
│ │ │ │ │ │ ├── module_factory_darwin.mm
│ │ │ │ │ │ ├── shared_module_creator.h
│ │ │ │ │ │ └── shared_module_creator.mm
│ │ │ │ │ ├── lynx_jsi_module.cc
│ │ │ │ │ ├── lynx_jsi_module.h
│ │ │ │ │ ├── lynx_jsi_module_binding.cc
│ │ │ │ │ ├── lynx_jsi_module_binding.h
│ │ │ │ │ ├── lynx_jsi_module_callback.cc
│ │ │ │ │ ├── lynx_jsi_module_callback.h
│ │ │ │ │ ├── lynx_module.cc
│ │ │ │ │ ├── lynx_module.h
│ │ │ │ │ ├── lynx_module_manager.cc
│ │ │ │ │ ├── lynx_module_manager.h
│ │ │ │ │ ├── lynx_module_manager_unittest.cc
│ │ │ │ │ ├── lynx_module_timing.cc
│ │ │ │ │ ├── lynx_module_timing.h
│ │ │ │ │ ├── module_delegate.h
│ │ │ │ │ ├── module_interceptor.cc
│ │ │ │ │ ├── module_interceptor.h
│ │ │ │ │ └── native_module_factory_unittest.cc
│ │ │ │ ├── resource/
│ │ │ │ │ ├── BUILD.gn
│ │ │ │ │ ├── response_handler_in_js.cc
│ │ │ │ │ ├── response_handler_in_js.h
│ │ │ │ │ └── response_handler_in_js_unittest.cc
│ │ │ │ ├── text_codec_helper.cc
│ │ │ │ ├── text_codec_helper.h
│ │ │ │ └── text_codec_helper_unittest.cc
│ │ │ ├── bytecode/
│ │ │ │ ├── BUILD.gn
│ │ │ │ ├── android/
│ │ │ │ │ ├── bytecode_callback.cc
│ │ │ │ │ ├── bytecode_callback.h
│ │ │ │ │ └── js_cache_manager_android.cc
│ │ │ │ ├── cache_generator.h
│ │ │ │ ├── harmony/
│ │ │ │ │ ├── js_cache_manager_harmony.cc
│ │ │ │ │ └── js_cache_manager_harmony.h
│ │ │ │ ├── ios/
│ │ │ │ │ └── js_cache_manager_darwin.mm
│ │ │ │ ├── js_cache_manager.cc
│ │ │ │ ├── js_cache_manager.h
│ │ │ │ ├── js_cache_manager_facade.cc
│ │ │ │ ├── js_cache_manager_facade.h
│ │ │ │ ├── js_cache_manager_facade_unittest.cc
│ │ │ │ ├── js_cache_manager_mock.cc
│ │ │ │ ├── js_cache_manager_unittest.cc
│ │ │ │ ├── js_cache_tracker.cc
│ │ │ │ ├── js_cache_tracker.h
│ │ │ │ ├── js_cache_tracker_unittest.cc
│ │ │ │ ├── js_cache_tracker_unittest.h
│ │ │ │ ├── meta_data.cc
│ │ │ │ ├── meta_data.h
│ │ │ │ ├── meta_data_unittest.cc
│ │ │ │ ├── quickjs/
│ │ │ │ │ ├── bytecode/
│ │ │ │ │ │ ├── quickjs_bytecode.h
│ │ │ │ │ │ ├── quickjs_bytecode_debug_info_unittest.cc
│ │ │ │ │ │ ├── quickjs_bytecode_provider.cc
│ │ │ │ │ │ ├── quickjs_bytecode_provider.h
│ │ │ │ │ │ ├── quickjs_bytecode_provider_src.cc
│ │ │ │ │ │ ├── quickjs_bytecode_provider_src.h
│ │ │ │ │ │ └── quickjs_bytecode_provider_unittest.cc
│ │ │ │ │ ├── quickjs_cache.gni
│ │ │ │ │ ├── quickjs_cache_generator.cc
│ │ │ │ │ └── quickjs_cache_generator.h
│ │ │ │ └── v8/
│ │ │ │ ├── v8_cache_generator.cc
│ │ │ │ └── v8_cache_generator.h
│ │ │ ├── js_bundle.cc
│ │ │ ├── js_bundle.h
│ │ │ ├── js_bundle_holder.h
│ │ │ ├── js_bundle_unittest.cc
│ │ │ ├── js_context_wrapper.cc
│ │ │ ├── js_context_wrapper.h
│ │ │ ├── js_executor.cc
│ │ │ ├── js_executor.h
│ │ │ ├── jsi/
│ │ │ │ ├── BUILD.gn
│ │ │ │ ├── LICENSE
│ │ │ │ ├── args_converter.h
│ │ │ │ ├── args_converter_unittest.cc
│ │ │ │ ├── instrumentation.h
│ │ │ │ ├── jsc/
│ │ │ │ │ ├── jsc.gni
│ │ │ │ │ ├── jsc_api.h
│ │ │ │ │ ├── jsc_context_group_wrapper.cc
│ │ │ │ │ ├── jsc_context_group_wrapper.h
│ │ │ │ │ ├── jsc_context_wrapper.cc
│ │ │ │ │ ├── jsc_context_wrapper.h
│ │ │ │ │ ├── jsc_exception.cc
│ │ │ │ │ ├── jsc_exception.h
│ │ │ │ │ ├── jsc_helper.cc
│ │ │ │ │ ├── jsc_helper.h
│ │ │ │ │ ├── jsc_host_function.cc
│ │ │ │ │ ├── jsc_host_function.h
│ │ │ │ │ ├── jsc_host_object.cc
│ │ │ │ │ ├── jsc_host_object.h
│ │ │ │ │ ├── jsc_runtime.cc
│ │ │ │ │ └── jsc_runtime.h
│ │ │ │ ├── jsi-inl.h
│ │ │ │ ├── jsi.cc
│ │ │ │ ├── jsi.h
│ │ │ │ ├── jsi_unittest.cc
│ │ │ │ ├── jsi_unittest.h
│ │ │ │ ├── jslib.h
│ │ │ │ ├── jsvm/
│ │ │ │ │ ├── BUILD.gn
│ │ │ │ │ ├── jsvm_api.h
│ │ │ │ │ ├── jsvm_context_wrapper.cc
│ │ │ │ │ ├── jsvm_context_wrapper.h
│ │ │ │ │ ├── jsvm_declare.def
│ │ │ │ │ ├── jsvm_dyn_load.h
│ │ │ │ │ ├── jsvm_exception.cc
│ │ │ │ │ ├── jsvm_exception.h
│ │ │ │ │ ├── jsvm_helper.cc
│ │ │ │ │ ├── jsvm_helper.h
│ │ │ │ │ ├── jsvm_host_function.cc
│ │ │ │ │ ├── jsvm_host_function.h
│ │ │ │ │ ├── jsvm_host_object.cc
│ │ │ │ │ ├── jsvm_host_object.h
│ │ │ │ │ ├── jsvm_runtime.cc
│ │ │ │ │ ├── jsvm_runtime.h
│ │ │ │ │ ├── jsvm_runtime_wrapper.cc
│ │ │ │ │ ├── jsvm_runtime_wrapper.h
│ │ │ │ │ └── jsvm_util.h
│ │ │ │ ├── quickjs/
│ │ │ │ │ ├── BUILD.gn
│ │ │ │ │ ├── build.gni
│ │ │ │ │ ├── quickjs_api.h
│ │ │ │ │ ├── quickjs_context_wrapper.cc
│ │ │ │ │ ├── quickjs_context_wrapper.h
│ │ │ │ │ ├── quickjs_exception.cc
│ │ │ │ │ ├── quickjs_exception.h
│ │ │ │ │ ├── quickjs_helper.cc
│ │ │ │ │ ├── quickjs_helper.h
│ │ │ │ │ ├── quickjs_helper_unittest.cc
│ │ │ │ │ ├── quickjs_host_function.cc
│ │ │ │ │ ├── quickjs_host_function.h
│ │ │ │ │ ├── quickjs_host_object.cc
│ │ │ │ │ ├── quickjs_host_object.h
│ │ │ │ │ ├── quickjs_inspector_manager.h
│ │ │ │ │ ├── quickjs_runtime.cc
│ │ │ │ │ ├── quickjs_runtime.h
│ │ │ │ │ ├── quickjs_runtime_unittest.cc
│ │ │ │ │ ├── quickjs_runtime_wrapper.cc
│ │ │ │ │ └── quickjs_runtime_wrapper.h
│ │ │ │ └── v8/
│ │ │ │ ├── BUILD.gn
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── v8.gni
│ │ │ │ ├── v8_api.h
│ │ │ │ ├── v8_context_wrapper.h
│ │ │ │ ├── v8_context_wrapper_impl.cc
│ │ │ │ ├── v8_context_wrapper_impl.h
│ │ │ │ ├── v8_exception.cc
│ │ │ │ ├── v8_exception.h
│ │ │ │ ├── v8_helper.cc
│ │ │ │ ├── v8_helper.h
│ │ │ │ ├── v8_host_function.cc
│ │ │ │ ├── v8_host_function.h
│ │ │ │ ├── v8_host_object.cc
│ │ │ │ ├── v8_host_object.h
│ │ │ │ ├── v8_inspector_manager.h
│ │ │ │ ├── v8_isolate_wrapper.h
│ │ │ │ ├── v8_isolate_wrapper_impl.cc
│ │ │ │ ├── v8_isolate_wrapper_impl.h
│ │ │ │ ├── v8_runtime.cc
│ │ │ │ └── v8_runtime.h
│ │ │ ├── jsi_object_wrapper.cc
│ │ │ ├── jsi_object_wrapper.h
│ │ │ ├── lynx_api_handler.cc
│ │ │ ├── lynx_api_handler.h
│ │ │ ├── lynx_runtime_helper.h
│ │ │ ├── mock_template_delegate.h
│ │ │ ├── napi/
│ │ │ │ ├── BUILD.gn
│ │ │ │ ├── napi_loader_js.cc
│ │ │ │ └── napi_loader_js.h
│ │ │ ├── runtime_constant.h
│ │ │ ├── runtime_lifecycle_listener_delegate.h
│ │ │ ├── runtime_lifecycle_observer_impl.cc
│ │ │ ├── runtime_lifecycle_observer_impl.h
│ │ │ ├── runtime_lifecycle_observer_unittest.cc
│ │ │ ├── runtime_manager.cc
│ │ │ ├── runtime_manager.h
│ │ │ ├── template_delegate.h
│ │ │ ├── update_data_type.h
│ │ │ ├── utils.cc
│ │ │ ├── utils.h
│ │ │ └── utils_unittest.cc
│ │ ├── lepus/
│ │ │ ├── BUILD.gn
│ │ │ ├── array_api.cc
│ │ │ ├── array_api.h
│ │ │ ├── ast_dump.cc
│ │ │ ├── ast_dump.h
│ │ │ ├── base_api.cc
│ │ │ ├── base_api.h
│ │ │ ├── base_binary_reader.cc
│ │ │ ├── base_binary_reader.h
│ │ │ ├── big_object.js
│ │ │ ├── binary_input_stream.cc
│ │ │ ├── binary_input_stream.h
│ │ │ ├── binary_input_stream_unittest.cc
│ │ │ ├── binary_input_stream_unittest.h
│ │ │ ├── binary_reader.cc
│ │ │ ├── binary_reader.h
│ │ │ ├── binary_writer.cc
│ │ │ ├── binary_writer.h
│ │ │ ├── bindings/
│ │ │ │ ├── BUILD.gn
│ │ │ │ ├── build.gni
│ │ │ │ ├── empty_renderer_functions.cc
│ │ │ │ ├── event/
│ │ │ │ │ ├── BUILD.gn
│ │ │ │ │ ├── context_proxy_in_lepus.cc
│ │ │ │ │ ├── context_proxy_in_lepus.h
│ │ │ │ │ ├── context_proxy_in_lepus_test.cc
│ │ │ │ │ ├── context_proxy_in_lepus_test.h
│ │ │ │ │ ├── lepus_event_listener.cc
│ │ │ │ │ ├── lepus_event_listener.h
│ │ │ │ │ ├── lepus_event_listener_test.cc
│ │ │ │ │ └── lepus_event_listener_test.h
│ │ │ │ ├── ios/
│ │ │ │ │ ├── lynx_lepus_module_darwin.h
│ │ │ │ │ └── lynx_lepus_module_darwin.mm
│ │ │ │ ├── modules/
│ │ │ │ │ ├── BUILD.gn
│ │ │ │ │ ├── lepus_module_callback.cc
│ │ │ │ │ ├── lepus_module_callback.h
│ │ │ │ │ ├── lynx_lepus_module.cc
│ │ │ │ │ ├── lynx_lepus_module.h
│ │ │ │ │ ├── lynx_lepus_module_manager.cc
│ │ │ │ │ └── lynx_lepus_module_manager.h
│ │ │ │ ├── renderer.h
│ │ │ │ ├── renderer_functions.cc
│ │ │ │ ├── renderer_functions.h
│ │ │ │ ├── renderer_functions_def.h
│ │ │ │ ├── resource/
│ │ │ │ │ ├── BUILD.gn
│ │ │ │ │ ├── response_handler_in_lepus.cc
│ │ │ │ │ ├── response_handler_in_lepus.h
│ │ │ │ │ └── response_handler_in_lepus_unittest.cc
│ │ │ │ └── style/
│ │ │ │ ├── runtime_css_reader.h
│ │ │ │ └── shared_css_fragment_wrapper.h
│ │ │ ├── build.gni
│ │ │ ├── builtin.cc
│ │ │ ├── builtin.h
│ │ │ ├── builtin_function_table.h
│ │ │ ├── bytecode_generator.cc
│ │ │ ├── bytecode_generator.h
│ │ │ ├── bytecode_print.cc
│ │ │ ├── bytecode_print.h
│ │ │ ├── code_generator.cc
│ │ │ ├── code_generator.h
│ │ │ ├── compiler/
│ │ │ │ ├── BUILD.gn
│ │ │ │ ├── encode_main.cc
│ │ │ │ ├── lepus_compiler_unittests.cc
│ │ │ │ └── unit_test/
│ │ │ │ ├── LepusDate_test.js
│ │ │ │ ├── URIComponent.js
│ │ │ │ ├── array.map_test.js
│ │ │ │ ├── array.prototype.concat.js
│ │ │ │ ├── array.prototype.filter.js
│ │ │ │ ├── array.prototype.filter_test.js
│ │ │ │ ├── array.prototype.find.js
│ │ │ │ ├── array.prototype.findIndex.js
│ │ │ │ ├── array.prototype.foreach.js
│ │ │ │ ├── array.prototype.includes.js
│ │ │ │ ├── array.prototype.join.js
│ │ │ │ ├── array.prototype.map_test.js
│ │ │ │ ├── array.prototype.shift.js
│ │ │ │ ├── array.prototype.slice.js
│ │ │ │ ├── array.prototype.substring.js
│ │ │ │ ├── array_prototype_test.js
│ │ │ │ ├── assignment_args.js
│ │ │ │ ├── carash_resolved.js
│ │ │ │ ├── check_default_parameters.js
│ │ │ │ ├── closure.js
│ │ │ │ ├── closure_simple.js
│ │ │ │ ├── closure_test.js
│ │ │ │ ├── closure_top_level.js
│ │ │ │ ├── double_to_size_ub.js
│ │ │ │ ├── export_and_import_test.js
│ │ │ │ ├── for_statement_test.js
│ │ │ │ ├── global_this.js
│ │ │ │ ├── lepus_undefined.js
│ │ │ │ ├── logical_AND_and_logical_Or.js
│ │ │ │ ├── math.js
│ │ │ │ ├── nullish_coalescing.js
│ │ │ │ ├── nullish_coalescing_break_change.js
│ │ │ │ ├── number.prototype.tofixed.js
│ │ │ │ ├── numbertostring.js
│ │ │ │ ├── object.assign.js
│ │ │ │ ├── object.freeze.js
│ │ │ │ ├── object_keys.js
│ │ │ │ ├── optional_chaining.js
│ │ │ │ ├── p0_feature.js
│ │ │ │ ├── parseFloat_test.js
│ │ │ │ ├── parseInt_test.js
│ │ │ │ ├── regexp_test.js
│ │ │ │ ├── str_len_test.js
│ │ │ │ ├── string.length.js
│ │ │ │ ├── string.prototype.replace.js
│ │ │ │ ├── string.prototype.slice.js
│ │ │ │ ├── string.prototype.substr.js
│ │ │ │ ├── string.prototype.trim.js
│ │ │ │ ├── string_prototype_split_test.js
│ │ │ │ ├── string_prototype_test.js
│ │ │ │ ├── ternary_test.js
│ │ │ │ ├── to_fixed.js
│ │ │ │ ├── try_catch_throw.js
│ │ │ │ ├── typeof_test.js
│ │ │ │ └── unary_operation.js
│ │ │ ├── context_binary_writer.cc
│ │ │ ├── context_binary_writer.h
│ │ │ ├── context_decoder_unittests.cc
│ │ │ ├── context_pool.cc
│ │ │ ├── context_pool.h
│ │ │ ├── context_pool_unittest.cc
│ │ │ ├── date_api.h
│ │ │ ├── exception.h
│ │ │ ├── function.cc
│ │ │ ├── function.h
│ │ │ ├── function_api.cc
│ │ │ ├── function_api.h
│ │ │ ├── function_api_unittest.cc
│ │ │ ├── guard.h
│ │ │ ├── heap.h
│ │ │ ├── js_object.cc
│ │ │ ├── js_object.h
│ │ │ ├── json_api.h
│ │ │ ├── json_parser.cc
│ │ │ ├── json_parser.h
│ │ │ ├── json_parser_unittest.cc
│ │ │ ├── lepus_context_cell.cc
│ │ │ ├── lepus_context_cell.h
│ │ │ ├── lepus_date.cc
│ │ │ ├── lepus_date.h
│ │ │ ├── lepus_date_api.cc
│ │ │ ├── lepus_date_api.h
│ │ │ ├── lepus_error_helper.cc
│ │ │ ├── lepus_error_helper.h
│ │ │ ├── lepus_error_helper_unittest.cc
│ │ │ ├── lepus_global.cc
│ │ │ ├── lepus_global.h
│ │ │ ├── lepus_inspector.h
│ │ │ ├── lepus_utils.h
│ │ │ ├── lepus_value_unittest.cc
│ │ │ ├── lynx_value_extended.cc
│ │ │ ├── lynx_value_extended_unittest.cc
│ │ │ ├── marco.h
│ │ │ ├── math_api.h
│ │ │ ├── op_code.h
│ │ │ ├── output_stream.cc
│ │ │ ├── output_stream.h
│ │ │ ├── parser.cc
│ │ │ ├── parser.h
│ │ │ ├── regexp.h
│ │ │ ├── regexp_api.cc
│ │ │ ├── regexp_api.h
│ │ │ ├── restricted_value.cc
│ │ │ ├── restricted_value.h
│ │ │ ├── restricted_value_unittest.cc
│ │ │ ├── scanner.cc
│ │ │ ├── scanner.h
│ │ │ ├── semantic_analysis.cc
│ │ │ ├── semantic_analysis.h
│ │ │ ├── string_api.cc
│ │ │ ├── string_api.h
│ │ │ ├── string_api_unittest.cc
│ │ │ ├── switch.cc
│ │ │ ├── switch.h
│ │ │ ├── syntax_tree.cc
│ │ │ ├── syntax_tree.h
│ │ │ ├── table_api.cc
│ │ │ ├── table_api.h
│ │ │ ├── tasks/
│ │ │ │ ├── BUILD.gn
│ │ │ │ ├── lepus_callback_manager.cc
│ │ │ │ ├── lepus_callback_manager.h
│ │ │ │ ├── lepus_callback_manager_unittest.cc
│ │ │ │ ├── lepus_raf_manager.cc
│ │ │ │ └── lepus_raf_manager.h
│ │ │ ├── token.h
│ │ │ ├── tt_tm.h
│ │ │ ├── upvalue.h
│ │ │ ├── value_deep_check_unittest.cc
│ │ │ ├── value_utils_unittest.cc
│ │ │ ├── visitor.h
│ │ │ ├── vm_context.cc
│ │ │ └── vm_context.h
│ │ ├── lepusng/
│ │ │ ├── BUILD.gn
│ │ │ ├── bindings/
│ │ │ │ └── renderer_ng.cc
│ │ │ ├── compiler/
│ │ │ │ └── lepusng_unit_test/
│ │ │ │ └── closure_block.js
│ │ │ ├── jsvalue_helper.cc
│ │ │ ├── jsvalue_helper.h
│ │ │ ├── lynx_api_context_lepusng.h
│ │ │ ├── napi/
│ │ │ │ ├── BUILD.gn
│ │ │ │ ├── test/
│ │ │ │ │ ├── BUILD.gn
│ │ │ │ │ ├── napi_test_context.cc
│ │ │ │ │ ├── napi_test_context.h
│ │ │ │ │ ├── napi_test_element.cc
│ │ │ │ │ ├── napi_test_element.h
│ │ │ │ │ ├── test_context.h
│ │ │ │ │ ├── test_context.idl
│ │ │ │ │ ├── test_element.h
│ │ │ │ │ ├── test_element.idl
│ │ │ │ │ ├── test_module.cc
│ │ │ │ │ └── test_module.h
│ │ │ │ └── worklet/
│ │ │ │ ├── lepus_component.idl
│ │ │ │ ├── lepus_element.idl
│ │ │ │ ├── lepus_gesture.idl
│ │ │ │ ├── lepus_lynx.idl
│ │ │ │ ├── napi_frame_callback.cc
│ │ │ │ ├── napi_frame_callback.h
│ │ │ │ ├── napi_func_callback.cc
│ │ │ │ ├── napi_func_callback.h
│ │ │ │ ├── napi_lepus_component.cc
│ │ │ │ ├── napi_lepus_component.h
│ │ │ │ ├── napi_lepus_element.cc
│ │ │ │ ├── napi_lepus_element.h
│ │ │ │ ├── napi_lepus_gesture.cc
│ │ │ │ ├── napi_lepus_gesture.h
│ │ │ │ ├── napi_lepus_lynx.cc
│ │ │ │ ├── napi_lepus_lynx.h
│ │ │ │ ├── napi_loader_ui.cc
│ │ │ │ └── napi_loader_ui.h
│ │ │ ├── qjs_callback.cc
│ │ │ ├── qjs_callback.h
│ │ │ ├── quick_context.cc
│ │ │ ├── quick_context.h
│ │ │ ├── quickjs_debug_info.cc
│ │ │ ├── quickjs_debug_info.h
│ │ │ ├── quickjs_promise_unittest.cc
│ │ │ └── quickjs_stack_size_unittest.cc
│ │ ├── mts_context.h
│ │ ├── mts_context_factory.cc
│ │ ├── mts_context_factory.h
│ │ ├── profile/
│ │ │ ├── BUILD.gn
│ │ │ ├── lepusng/
│ │ │ │ ├── BUILD.gn
│ │ │ │ ├── lepusng_profiler.cc
│ │ │ │ ├── lepusng_profiler.h
│ │ │ │ └── lepusng_profiler_unittest.cc
│ │ │ ├── quickjs/
│ │ │ │ ├── BUILD.gn
│ │ │ │ ├── quickjs_runtime_profiler.cc
│ │ │ │ ├── quickjs_runtime_profiler.h
│ │ │ │ └── quickjs_runtime_profiler_unittest.cc
│ │ │ ├── runtime_profiler.cc
│ │ │ ├── runtime_profiler.h
│ │ │ ├── runtime_profiler_manager.cc
│ │ │ ├── runtime_profiler_manager.h
│ │ │ ├── runtime_profiler_unittest.cc
│ │ │ └── v8/
│ │ │ ├── BUILD.gn
│ │ │ ├── v8_runtime_profiler.cc
│ │ │ ├── v8_runtime_profiler.h
│ │ │ ├── v8_runtime_profiler_helper.cc
│ │ │ ├── v8_runtime_profiler_helper.h
│ │ │ ├── v8_runtime_profiler_unittest.cc
│ │ │ ├── v8_runtime_profiler_wrapper.h
│ │ │ ├── v8_runtime_profiler_wrapper_impl.cc
│ │ │ └── v8_runtime_profiler_wrapper_impl.h
│ │ └── trace/
│ │ ├── BUILD.gn
│ │ └── runtime_trace_event_def.h
│ ├── services/
│ │ ├── event_report/
│ │ │ ├── BUILD.gn
│ │ │ ├── android/
│ │ │ │ └── event_tracker_platform_impl.cc
│ │ │ ├── darwin/
│ │ │ │ ├── event_tracker_platform_impl.mm
│ │ │ │ └── event_tracker_platform_impl_unittest.mm
│ │ │ ├── embedder/
│ │ │ │ └── event_tracker_platform_embedder_impl.cc
│ │ │ ├── event_tracker.cc
│ │ │ ├── event_tracker.h
│ │ │ ├── event_tracker_nodejs.cc
│ │ │ ├── event_tracker_platform_impl.cc
│ │ │ ├── event_tracker_platform_impl.h
│ │ │ └── harmony/
│ │ │ ├── event_tracker_harmony.h
│ │ │ └── event_tracker_platform_impl.cc
│ │ ├── feature_count/
│ │ │ ├── BUILD.gn
│ │ │ ├── android/
│ │ │ │ └── feature_counter_android.cc
│ │ │ ├── feature_counter.cc
│ │ │ ├── feature_counter.h
│ │ │ ├── global_feature_counter.cc
│ │ │ └── global_feature_counter.h
│ │ ├── fluency/
│ │ │ ├── BUILD.gn
│ │ │ ├── android/
│ │ │ │ └── fluency_sample_android.cc
│ │ │ ├── fluency_tracer.cc
│ │ │ ├── fluency_tracer.h
│ │ │ └── harmony/
│ │ │ ├── fluency_trace_helper_harmony.cc
│ │ │ └── fluency_trace_helper_harmony.h
│ │ ├── fsp_tracing/
│ │ │ ├── BUILD.gn
│ │ │ ├── area/
│ │ │ │ ├── fsp_area_tracer_impl.cc
│ │ │ │ └── fsp_area_tracer_impl.h
│ │ │ ├── axial/
│ │ │ │ ├── fsp_axial_tracer_impl.cc
│ │ │ │ └── fsp_axial_tracer_impl.h
│ │ │ ├── base/
│ │ │ │ ├── fsp_snapshot.h
│ │ │ │ └── fsp_tracer_impl.h
│ │ │ ├── fsp_config.h
│ │ │ ├── fsp_tracer.cc
│ │ │ └── fsp_tracer.h
│ │ ├── long_task_timing/
│ │ │ ├── BUILD.gn
│ │ │ ├── android/
│ │ │ │ └── long_task_monitor_android.cc
│ │ │ ├── long_batched_tasks_monitor.cc
│ │ │ ├── long_batched_tasks_monitor.h
│ │ │ ├── long_task_monitor.cc
│ │ │ ├── long_task_monitor.h
│ │ │ └── long_task_timing.h
│ │ ├── performance/
│ │ │ ├── BUILD.gn
│ │ │ ├── android/
│ │ │ │ ├── performance_controller_android.cc
│ │ │ │ └── performance_controller_android.h
│ │ │ ├── darwin/
│ │ │ │ ├── performance_controller_darwin.h
│ │ │ │ └── performance_controller_darwin.mm
│ │ │ ├── fsp_tracing/
│ │ │ │ ├── fsp_snapshot.cc
│ │ │ │ ├── fsp_snapshot.h
│ │ │ │ ├── fsp_tracer.cc
│ │ │ │ └── fsp_tracer.h
│ │ │ ├── harmony/
│ │ │ │ ├── performance_controller_harmony.cc
│ │ │ │ └── performance_controller_harmony.h
│ │ │ ├── js_blocking_monitor/
│ │ │ │ ├── js_blocking_monitor.cc
│ │ │ │ ├── js_blocking_monitor.h
│ │ │ │ └── js_blocking_trace_event_def.h
│ │ │ ├── memory_monitor/
│ │ │ │ ├── memory_monitor.cc
│ │ │ │ ├── memory_monitor.h
│ │ │ │ ├── memory_record.cc
│ │ │ │ └── memory_record.h
│ │ │ ├── performance_controller.cc
│ │ │ ├── performance_controller.h
│ │ │ ├── performance_event_sender.h
│ │ │ ├── performance_mediator.cc
│ │ │ └── performance_mediator.h
│ │ ├── recorder/
│ │ │ ├── BUILD.gn
│ │ │ ├── ios/
│ │ │ │ ├── template_assembler_recorder_darwin.h
│ │ │ │ └── template_assembler_recorder_darwin.mm
│ │ │ ├── lynxview_init_recorder.cc
│ │ │ ├── lynxview_init_recorder.h
│ │ │ ├── native_module_recorder.cc
│ │ │ ├── native_module_recorder.h
│ │ │ ├── recorder_constants.h
│ │ │ ├── recorder_controller.cc
│ │ │ ├── recorder_controller.h
│ │ │ ├── template_assembler_recorder.cc
│ │ │ ├── template_assembler_recorder.h
│ │ │ ├── template_assembler_recorder_unittest.cc
│ │ │ ├── testbench_base_recorder.cc
│ │ │ ├── testbench_base_recorder.h
│ │ │ └── testbench_base_recorder_unittest.cc
│ │ ├── replay/
│ │ │ ├── BUILD.gn
│ │ │ ├── layout_tree_testbench.cc
│ │ │ ├── layout_tree_testbench.h
│ │ │ ├── layout_tree_testbench_unittest.cc
│ │ │ ├── lynx_callback_testbench.cc
│ │ │ ├── lynx_callback_testbench.h
│ │ │ ├── lynx_module_binding_testbench.cc
│ │ │ ├── lynx_module_binding_testbench.h
│ │ │ ├── lynx_module_manager_testbench.cc
│ │ │ ├── lynx_module_manager_testbench.h
│ │ │ ├── lynx_module_testbench.cc
│ │ │ ├── lynx_module_testbench.h
│ │ │ ├── lynx_module_testbench_unittest.cc
│ │ │ ├── lynx_replay_helper.cc
│ │ │ ├── lynx_replay_helper.h
│ │ │ ├── lynx_replay_helper_unittest.cc
│ │ │ ├── replay_controller.cc
│ │ │ ├── replay_controller.h
│ │ │ ├── testbench_test_replay.cc
│ │ │ ├── testbench_test_replay.h
│ │ │ ├── testbench_utils_embedder.cc
│ │ │ └── testbench_utils_embedder.h
│ │ ├── ssr/
│ │ │ ├── BUILD.gn
│ │ │ ├── client/
│ │ │ │ ├── ssr_client_utils.cc
│ │ │ │ ├── ssr_client_utils.h
│ │ │ │ ├── ssr_data_update_manager.cc
│ │ │ │ ├── ssr_data_update_manager.h
│ │ │ │ ├── ssr_event_utils.cc
│ │ │ │ ├── ssr_event_utils.h
│ │ │ │ ├── ssr_hydrate_info.h
│ │ │ │ └── ssr_style_sheet.h
│ │ │ └── ssr_type_info.h
│ │ ├── starlight_standalone/
│ │ │ ├── BUILD.gn
│ │ │ ├── android/
│ │ │ │ ├── starlight_android.cc
│ │ │ │ └── starlight_android.h
│ │ │ ├── core/
│ │ │ │ ├── BUILD.gn
│ │ │ │ └── src/
│ │ │ │ ├── starlight.cc
│ │ │ │ └── starlight_config.cc
│ │ │ └── starlight.gni
│ │ ├── timing_handler/
│ │ │ ├── BUILD.gn
│ │ │ ├── timing.cc
│ │ │ ├── timing.h
│ │ │ ├── timing_constants.h
│ │ │ ├── timing_constants_deprecated.h
│ │ │ ├── timing_handler.cc
│ │ │ ├── timing_handler.h
│ │ │ ├── timing_handler_delegate.h
│ │ │ ├── timing_handler_ng.cc
│ │ │ ├── timing_handler_ng.h
│ │ │ ├── timing_info.cc
│ │ │ ├── timing_info.h
│ │ │ ├── timing_info_ng.cc
│ │ │ ├── timing_info_ng.h
│ │ │ ├── timing_map.cc
│ │ │ ├── timing_map.h
│ │ │ ├── timing_mediator.cc
│ │ │ ├── timing_mediator.h
│ │ │ ├── timing_utils.cc
│ │ │ └── timing_utils.h
│ │ ├── trace/
│ │ │ ├── BUILD.gn
│ │ │ └── service_trace_event_def.h
│ │ └── watch_dog/
│ │ ├── BUILD.gn
│ │ └── watch_dog.h
│ ├── shared_data/
│ │ ├── BUILD.gn
│ │ ├── lynx_white_board.cc
│ │ ├── lynx_white_board.h
│ │ ├── lynx_white_board_unittest.cc
│ │ ├── shared_data_trace_event_def.h
│ │ ├── white_board_delegate.cc
│ │ ├── white_board_delegate.h
│ │ ├── white_board_inspector.h
│ │ ├── white_board_runtime_delegate.cc
│ │ ├── white_board_runtime_delegate.h
│ │ ├── white_board_tasm_delegate.cc
│ │ └── white_board_tasm_delegate.h
│ ├── shell/
│ │ ├── BUILD.gn
│ │ ├── README.md
│ │ ├── android/
│ │ │ ├── js_proxy_android.cc
│ │ │ ├── js_proxy_android.h
│ │ │ ├── list_container_proxy_android.cc
│ │ │ ├── lynx_engine_proxy_android.cc
│ │ │ ├── lynx_engine_proxy_android.h
│ │ │ ├── lynx_engine_wrapper_android.cc
│ │ │ ├── lynx_engine_wrapper_android.h
│ │ │ ├── lynx_layout_proxy_android.cc
│ │ │ ├── lynx_layout_proxy_android.h
│ │ │ ├── lynx_runtime_wrapper_android.cc
│ │ │ ├── lynx_runtime_wrapper_android.h
│ │ │ ├── lynx_template_render_android.cc
│ │ │ ├── native_facade_android.cc
│ │ │ ├── native_facade_android.h
│ │ │ ├── platform_call_back_android.cc
│ │ │ ├── platform_call_back_android.h
│ │ │ ├── runtime_lifecycle_listener_delegate_android.cc
│ │ │ ├── runtime_lifecycle_listener_delegate_android.h
│ │ │ ├── tasm_platform_invoker_android.cc
│ │ │ └── tasm_platform_invoker_android.h
│ │ ├── bts_runtime_mediator_unittest.cc
│ │ ├── common/
│ │ │ ├── platform_call_back.cc
│ │ │ ├── platform_call_back.h
│ │ │ ├── platform_call_back_manager.cc
│ │ │ ├── platform_call_back_manager.h
│ │ │ ├── platform_call_back_manager_unittest.cc
│ │ │ └── shell_trace_event_def.h
│ │ ├── dynamic_ui_operation_queue.cc
│ │ ├── dynamic_ui_operation_queue.h
│ │ ├── dynamic_ui_operation_queue_unittest.cc
│ │ ├── engine_thread_switch.cc
│ │ ├── engine_thread_switch.h
│ │ ├── engine_thread_switch_unittest.cc
│ │ ├── harmony/
│ │ │ ├── embedder_platform_harmony.cc
│ │ │ ├── embedder_platform_harmony.h
│ │ │ ├── native_facade_harmony.cc
│ │ │ ├── native_facade_harmony.h
│ │ │ ├── tasm_platform_invoker_harmony.cc
│ │ │ └── tasm_platform_invoker_harmony.h
│ │ ├── ios/
│ │ │ ├── data_utils.h
│ │ │ ├── data_utils.mm
│ │ │ ├── js_proxy_darwin.h
│ │ │ ├── js_proxy_darwin.mm
│ │ │ ├── lynx_engine_proxy_darwin.h
│ │ │ ├── lynx_engine_proxy_darwin.mm
│ │ │ ├── lynx_layout_proxy_darwin.h
│ │ │ ├── lynx_layout_proxy_darwin.mm
│ │ │ ├── lynx_runtime_facade_darwin.h
│ │ │ ├── lynx_runtime_facade_darwin.mm
│ │ │ ├── native_facade_darwin.h
│ │ │ ├── native_facade_darwin.mm
│ │ │ ├── runtime_lifecycle_listener_delegate_darwin.h
│ │ │ ├── runtime_lifecycle_listener_delegate_darwin.mm
│ │ │ ├── tasm_platform_invoker_darwin.h
│ │ │ └── tasm_platform_invoker_darwin.mm
│ │ ├── layout_mediator.cc
│ │ ├── layout_mediator.h
│ │ ├── layout_result_manager.cc
│ │ ├── layout_result_manager.h
│ │ ├── layout_result_manager_unittest.cc
│ │ ├── list_container_proxy.cc
│ │ ├── list_engine_proxy_impl.cc
│ │ ├── list_engine_proxy_impl.h
│ │ ├── lynx_actor_specialization.h
│ │ ├── lynx_card_cache_data_manager.cc
│ │ ├── lynx_card_cache_data_manager.h
│ │ ├── lynx_card_cache_data_manager_unittest.cc
│ │ ├── lynx_card_cache_data_op.h
│ │ ├── lynx_engine.cc
│ │ ├── lynx_engine.h
│ │ ├── lynx_engine_proxy_impl.cc
│ │ ├── lynx_engine_proxy_impl.h
│ │ ├── lynx_engine_proxy_impl_unittest.cc
│ │ ├── lynx_engine_wrapper.cc
│ │ ├── lynx_engine_wrapper.h
│ │ ├── lynx_layout_proxy_impl.cc
│ │ ├── lynx_layout_proxy_impl.h
│ │ ├── lynx_shell.cc
│ │ ├── lynx_shell.h
│ │ ├── lynx_shell_builder.cc
│ │ ├── lynx_shell_builder.h
│ │ ├── lynx_shell_builder_unitest.cc
│ │ ├── lynx_shell_unittest.cc
│ │ ├── lynx_ui_operation_async_queue.cc
│ │ ├── lynx_ui_operation_async_queue.h
│ │ ├── lynx_ui_operation_async_queue_unittest.cc
│ │ ├── lynx_ui_operation_queue.cc
│ │ ├── lynx_ui_operation_queue.h
│ │ ├── lynx_ui_operation_queue_unittest.cc
│ │ ├── native_facade.h
│ │ ├── native_facade_empty_implementation.h
│ │ ├── perf_controller_proxy_impl.cc
│ │ ├── perf_controller_proxy_impl.h
│ │ ├── runtime/
│ │ │ ├── bts/
│ │ │ │ ├── bts_runtime.cc
│ │ │ │ ├── bts_runtime.h
│ │ │ │ ├── bts_runtime_mediator.cc
│ │ │ │ ├── bts_runtime_mediator.h
│ │ │ │ ├── bts_runtime_standalone_helper.cc
│ │ │ │ ├── bts_runtime_standalone_helper.h
│ │ │ │ ├── lynx_bts_runtime_proxy_impl.cc
│ │ │ │ └── lynx_bts_runtime_proxy_impl.h
│ │ │ ├── common/
│ │ │ │ ├── module_delegate_impl.cc
│ │ │ │ ├── module_delegate_impl.h
│ │ │ │ └── module_delegate_mock.cc
│ │ │ └── mts/
│ │ │ ├── mts_runtime.cc
│ │ │ └── mts_runtime.h
│ │ ├── tasm_mediator.cc
│ │ ├── tasm_mediator.h
│ │ ├── tasm_operation_queue.cc
│ │ ├── tasm_operation_queue.h
│ │ ├── tasm_operation_queue_async.cc
│ │ ├── tasm_operation_queue_async.h
│ │ ├── tasm_operation_queue_async_unittest.cc
│ │ ├── tasm_operation_queue_unittest.cc
│ │ ├── tasm_platform_invoker.h
│ │ ├── testing/
│ │ │ ├── BUILD.gn
│ │ │ ├── mock_layout_delegate.h
│ │ │ ├── mock_layout_platform.h
│ │ │ ├── mock_native_facade.cc
│ │ │ ├── mock_native_facade.h
│ │ │ ├── mock_runner_manufactor.cc
│ │ │ ├── mock_runner_manufactor.h
│ │ │ ├── mock_tasm_delegate.cc
│ │ │ └── mock_tasm_delegate.h
│ │ ├── update_mode.h
│ │ ├── vsync_observer_impl.cc
│ │ └── vsync_observer_impl.h
│ ├── style/
│ │ ├── BUILD.gn
│ │ ├── animation_data.cc
│ │ ├── animation_data.h
│ │ ├── background_data.cc
│ │ ├── background_data.h
│ │ ├── color.h
│ │ ├── content_data.h
│ │ ├── default_computed_style.h
│ │ ├── filter_data.cc
│ │ ├── filter_data.h
│ │ ├── layout_animation_data.cc
│ │ ├── layout_animation_data.h
│ │ ├── outline_data.cc
│ │ ├── outline_data.h
│ │ ├── perspective_data.cc
│ │ ├── perspective_data.h
│ │ ├── shadow_data.cc
│ │ ├── shadow_data.h
│ │ ├── style.gni
│ │ ├── timing_function_data.cc
│ │ ├── timing_function_data.h
│ │ ├── transform/
│ │ │ ├── decomposed_transform.cc
│ │ │ ├── decomposed_transform.h
│ │ │ ├── matrix44.cc
│ │ │ ├── matrix44.h
│ │ │ ├── quaternion.cc
│ │ │ ├── quaternion.h
│ │ │ └── quaternion_unittest.cc
│ │ ├── transform_origin_data.cc
│ │ ├── transform_origin_data.h
│ │ ├── transform_raw_data.cc
│ │ ├── transform_raw_data.h
│ │ ├── transition_data.cc
│ │ └── transition_data.h
│ ├── template_bundle/
│ │ ├── BUILD.gn
│ │ ├── lynx_template_bundle.cc
│ │ ├── lynx_template_bundle.h
│ │ ├── lynx_template_bundle_converter.cc
│ │ ├── lynx_template_bundle_converter.h
│ │ └── template_codec/
│ │ ├── BUILD.gn
│ │ ├── binary_decoder/
│ │ │ ├── BUILD.gn
│ │ │ ├── binary_decoder_trace_event_def.h
│ │ │ ├── element_binary_reader.cc
│ │ │ ├── element_binary_reader.h
│ │ │ ├── lynx_binary_base_css_reader.cc
│ │ │ ├── lynx_binary_base_css_reader.h
│ │ │ ├── lynx_binary_base_template_reader.cc
│ │ │ ├── lynx_binary_base_template_reader.h
│ │ │ ├── lynx_binary_config_decoder.cc
│ │ │ ├── lynx_binary_config_decoder.h
│ │ │ ├── lynx_binary_config_decoder_unittest.cc
│ │ │ ├── lynx_binary_config_decoder_unittest.h
│ │ │ ├── lynx_binary_config_helper.cc
│ │ │ ├── lynx_binary_config_helper.h
│ │ │ ├── lynx_binary_lazy_reader_delegate.h
│ │ │ ├── lynx_binary_reader.cc
│ │ │ ├── lynx_binary_reader.h
│ │ │ ├── lynx_config.yml
│ │ │ ├── lynx_config_cc.tmpl
│ │ │ ├── lynx_config_constant.tmpl
│ │ │ ├── lynx_config_decoder.h
│ │ │ ├── lynx_config_decoder.tmpl
│ │ │ ├── lynx_config_header.tmpl
│ │ │ ├── page_config.cc
│ │ │ ├── page_config.h
│ │ │ ├── parallel_parse_task_scheduler.cc
│ │ │ ├── parallel_parse_task_scheduler.h
│ │ │ ├── template_binary_reader.cc
│ │ │ └── template_binary_reader.h
│ │ ├── binary_encoder/
│ │ │ ├── BUILD.gn
│ │ │ ├── csr_element_binary_writer.cc
│ │ │ ├── csr_element_binary_writer.h
│ │ │ ├── css_encoder/
│ │ │ │ ├── BUILD.gn
│ │ │ │ ├── css_font_face_token.cc
│ │ │ │ ├── css_font_face_token.h
│ │ │ │ ├── css_font_face_token_unittest.cc
│ │ │ │ ├── css_keyframes_token.cc
│ │ │ │ ├── css_keyframes_token.h
│ │ │ │ ├── css_keyframes_token_unittest.cc
│ │ │ │ ├── css_parse_token_group.h
│ │ │ │ ├── css_parser.cc
│ │ │ │ ├── css_parser.h
│ │ │ │ ├── css_parser_token.cc
│ │ │ │ ├── css_parser_token.h
│ │ │ │ ├── css_parser_token_unittest.cc
│ │ │ │ ├── css_parser_unittest.cc
│ │ │ │ ├── shared_css_fragment.cc
│ │ │ │ ├── shared_css_fragment.h
│ │ │ │ └── shared_css_fragment_unittest.cc
│ │ │ ├── encode_util.cc
│ │ │ ├── encode_util.h
│ │ │ ├── encoder.cc
│ │ │ ├── encoder.h
│ │ │ ├── repack_binary_reader.cc
│ │ │ ├── repack_binary_reader.h
│ │ │ ├── repack_binary_writer.cc
│ │ │ ├── repack_binary_writer.h
│ │ │ ├── style_object_encoder/
│ │ │ │ ├── BUILD.gn
│ │ │ │ ├── style_object_parser.cc
│ │ │ │ ├── style_object_parser.h
│ │ │ │ └── style_object_parser_unittest.cc
│ │ │ ├── template_binary_writer.cc
│ │ │ └── template_binary_writer.h
│ │ ├── compile_options.h
│ │ ├── generator/
│ │ │ ├── BUILD.gn
│ │ │ ├── base_struct.h
│ │ │ ├── list_parser.cc
│ │ │ ├── list_parser.h
│ │ │ ├── meta_factory.cc
│ │ │ ├── meta_factory.h
│ │ │ ├── source_generator.cc
│ │ │ ├── source_generator.h
│ │ │ ├── template_dynamic_component_parser.cc
│ │ │ ├── template_dynamic_component_parser.h
│ │ │ ├── template_page_parser.cc
│ │ │ ├── template_page_parser.h
│ │ │ ├── template_parser.cc
│ │ │ ├── template_parser.h
│ │ │ ├── template_scope.cc
│ │ │ ├── template_scope.h
│ │ │ ├── ttml_holder.cc
│ │ │ └── ttml_holder.h
│ │ ├── header_ext_info.h
│ │ ├── lepus_cmd.cc
│ │ ├── lepus_cmd.h
│ │ ├── magic_number.cc
│ │ ├── magic_number.h
│ │ ├── moulds.h
│ │ ├── template_binary.h
│ │ ├── ttml_constant.h
│ │ ├── version.h
│ │ └── wasm_bind.cc
│ └── value_wrapper/
│ ├── BUILD.gn
│ ├── android/
│ │ ├── value_impl_android.cc
│ │ ├── value_impl_android.h
│ │ └── value_impl_android_unittest.cc
│ ├── darwin/
│ │ ├── value_impl_darwin.h
│ │ ├── value_impl_darwin.mm
│ │ └── value_impl_darwin_unittest.mm
│ ├── harmony/
│ │ ├── value_impl_napi.cc
│ │ └── value_impl_napi.h
│ ├── napi/
│ │ ├── napi_util_primjs.cc
│ │ ├── napi_util_primjs.h
│ │ ├── value_impl_napi_primjs.cc
│ │ ├── value_impl_napi_primjs.h
│ │ ├── value_impl_napi_primjs_unittest.cc
│ │ └── value_impl_opaque_napi_primjs.h
│ ├── value_impl_lepus.cc
│ ├── value_impl_lepus.h
│ ├── value_impl_piper.h
│ ├── value_impl_unittest.cc
│ ├── value_wrapper_utils.cc
│ └── value_wrapper_utils.h
├── dependencies/
│ ├── DEPS
│ ├── DEPS.clay
│ ├── DEPS.dev
│ ├── DEPS.extension
│ ├── DEPS.lynxtron
│ ├── DEPS.tasm
│ └── DEPS.tools_shared
├── devtool/
│ ├── base_devtool/
│ │ ├── android/
│ │ │ └── base_devtool/
│ │ │ ├── .gitignore
│ │ │ ├── BUILD.gn
│ │ │ ├── CMakeLists.txt
│ │ │ ├── base_devtool_android_source.gni
│ │ │ ├── build.gradle
│ │ │ ├── consumer-rules.pro
│ │ │ ├── gradle.properties
│ │ │ ├── proguard-rules.pro
│ │ │ └── src/
│ │ │ ├── android_test/
│ │ │ │ └── java/
│ │ │ │ └── com/
│ │ │ │ └── lynx/
│ │ │ │ └── basedevtool/
│ │ │ │ ├── LogBoxEnvTest.java
│ │ │ │ └── LogBoxManagerTest.java
│ │ │ └── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── lynx/
│ │ │ │ └── basedevtool/
│ │ │ │ ├── BaseDevToolLoadSoUtils.java
│ │ │ │ ├── CalledByNative.java
│ │ │ │ ├── DevToolGlobalSlot.java
│ │ │ │ ├── DevToolSlot.java
│ │ │ │ ├── logbox/
│ │ │ │ │ ├── ILogBoxResourceProvider.java
│ │ │ │ │ ├── LogBoxDialog.java
│ │ │ │ │ ├── LogBoxDialogBase.java
│ │ │ │ │ ├── LogBoxEnv.java
│ │ │ │ │ ├── LogBoxLifeCycleListenerFragment.java
│ │ │ │ │ ├── LogBoxLogLevel.java
│ │ │ │ │ ├── LogBoxManager.java
│ │ │ │ │ ├── LogBoxNotification.java
│ │ │ │ │ ├── LogBoxOwner.java
│ │ │ │ │ └── LogBoxProxy.java
│ │ │ │ └── utils/
│ │ │ │ ├── DevToolDownloader.java
│ │ │ │ ├── DevToolFileLoadCallback.java
│ │ │ │ ├── DevToolFileLoadUtils.java
│ │ │ │ ├── DownloadCallback.java
│ │ │ │ └── UIThreadUtils.java
│ │ │ ├── jni/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── BUILD.gn
│ │ │ │ └── jni_configs.yml
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ ├── devtool_notification_background.xml
│ │ │ │ ├── devtool_notification_close_circle.xml
│ │ │ │ └── devtool_notification_log_count_circle.xml
│ │ │ ├── layout/
│ │ │ │ └── devtool_logbox_notification.xml
│ │ │ └── values/
│ │ │ └── devtool_colors.xml
│ │ ├── common/
│ │ │ ├── BUILD.gn
│ │ │ ├── devtool_global_slot_common.cc
│ │ │ ├── devtool_global_slot_common.h
│ │ │ ├── devtool_slot_common.cc
│ │ │ └── devtool_slot_common.h
│ │ ├── darwin/
│ │ │ ├── common/
│ │ │ │ └── utils/
│ │ │ │ ├── DevToolDownloader.h
│ │ │ │ ├── DevToolDownloader.m
│ │ │ │ ├── DevToolFileLoadUtils.h
│ │ │ │ ├── DevToolFileLoadUtils.mm
│ │ │ │ ├── DevToolToast.h
│ │ │ │ └── DevToolToast.m
│ │ │ └── ios/
│ │ │ ├── .gitignore
│ │ │ ├── BUILD.gn
│ │ │ ├── DevToolGlobalSlotIOS.h
│ │ │ ├── DevToolGlobalSlotIOS.mm
│ │ │ ├── DevToolSlotIOS.h
│ │ │ ├── DevToolSlotIOS.mm
│ │ │ └── logbox/
│ │ │ ├── DevToolLogBox.h
│ │ │ ├── DevToolLogBox.mm
│ │ │ ├── DevToolLogBoxEnv.h
│ │ │ ├── DevToolLogBoxEnv.mm
│ │ │ ├── DevToolLogBoxHelper.h
│ │ │ ├── DevToolLogBoxManager.h
│ │ │ ├── DevToolLogBoxManager.m
│ │ │ ├── DevToolLogBoxManagerUnitTest.m
│ │ │ ├── DevToolLogBoxNotification.h
│ │ │ ├── DevToolLogBoxNotification.m
│ │ │ ├── DevToolLogBoxOwner.h
│ │ │ ├── DevToolLogBoxOwner.mm
│ │ │ ├── DevToolLogBoxProxy.h
│ │ │ ├── DevToolLogBoxProxy.mm
│ │ │ └── DevToolLogBoxResProvider.h
│ │ ├── js_libraries/
│ │ │ ├── logbox/
│ │ │ │ ├── .eslintrc.json
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .prettierignore
│ │ │ │ ├── .prettierrc
│ │ │ │ ├── build.py
│ │ │ │ ├── package.json
│ │ │ │ ├── rsbuild.config.ts
│ │ │ │ ├── src/
│ │ │ │ │ ├── api/
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── app.tsx
│ │ │ │ │ ├── common/
│ │ │ │ │ │ ├── LICENSE.txt
│ │ │ │ │ │ └── stackFrame.ts
│ │ │ │ │ ├── global.css
│ │ │ │ │ ├── jsbridge/
│ │ │ │ │ │ ├── implementations/
│ │ │ │ │ │ │ ├── delay.ts
│ │ │ │ │ │ │ ├── immediate.ts
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── interface.ts
│ │ │ │ │ ├── models/
│ │ │ │ │ │ ├── errorEffects.ts
│ │ │ │ │ │ ├── errorReducer.ts
│ │ │ │ │ │ ├── store.ts
│ │ │ │ │ │ └── viewsInfo.ts
│ │ │ │ │ ├── pages/
│ │ │ │ │ │ ├── content/
│ │ │ │ │ │ │ ├── displayError.less
│ │ │ │ │ │ │ ├── displayError.tsx
│ │ │ │ │ │ │ └── error-container/
│ │ │ │ │ │ │ ├── LICENSE.txt
│ │ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ │ ├── CodeBlock.jsx
│ │ │ │ │ │ │ │ ├── Collapsible.jsx
│ │ │ │ │ │ │ │ └── ErrorOverlay.jsx
│ │ │ │ │ │ │ ├── containers/
│ │ │ │ │ │ │ │ ├── RuntimeError.jsx
│ │ │ │ │ │ │ │ ├── RuntimeErrorContainer.jsx
│ │ │ │ │ │ │ │ ├── StackFrame.jsx
│ │ │ │ │ │ │ │ ├── StackFrameCodeBlock.jsx
│ │ │ │ │ │ │ │ └── StackTrace.jsx
│ │ │ │ │ │ │ ├── index.tsx
│ │ │ │ │ │ │ └── styles.ts
│ │ │ │ │ │ ├── footer/
│ │ │ │ │ │
================================================
FILE CONTENTS
================================================
================================================
FILE: .clang-format
================================================
BasedOnStyle: Google
================================================
FILE: .editorconfig
================================================
# EditorConfig is awesome: https://EditorConfig.org
# top-most EditorConfig file
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = false
insert_final_newline = true
================================================
FILE: .github/ISSUE_TEMPLATE/1-bug-report.en-US.yml
================================================
name: '🐞 Bug Report'
description: Report a bug to Lynx
title: '[Bug]: '
type: Bug
labels: ['pending triage']
body:
- type: markdown
attributes:
value: |
Thank you for taking the time to report this issue! Before submitting, please note:
- Confirm that your problem cannot be solved by official documentation.
- Make sure you've searched in the [Issues](https://github.com/lynx-family/lynx/issues) and haven't found the same issue.
- If it's not bug report, please post on the [Discussions](https://github.com/lynx-family/lynx/discussions).
- type: textarea
id: system-info
attributes:
label: System Info
description: Output of `npx envinfo --system --npmPackages '@lynx-js/*' --binaries`
placeholder: |
System:
Binaries:
npmPackages:
validations:
required: true
- type: textarea
id: details
attributes:
label: Details
description: Please describe the bug, it would be better to provide some screenshots.
validations:
required: true
- type: input
id: reproduce
attributes:
label: Reproduce link
description: 'Please provide a URL of the repository that reproduces the problem. We recommend the [Lynx repro template](https://github.com/lynx-family/lynx-repro) for creating a minimal reproducible example.'
placeholder: paste link here
- type: textarea
id: reproduce-steps
attributes:
label: Reproduce Steps
description: Please provide the simplest steps so that we can quickly reproduce the problem.
placeholder: |
For example:
1. Run `npm run dev`
2. Find some error messages
validations:
required: true
================================================
FILE: .github/ISSUE_TEMPLATE/2-feature-request.en-US.yml
================================================
name: '✨ Feature Request'
description: Submit a new feature request to Lynx
title: '[Feature]: '
type: Feature
labels: ['pending triage']
body:
- type: markdown
attributes:
value: |
Thank you for submitting a new feature request! Before submitting, please note:
- Confirm that this is a common feature and cannot be implemented using existing APIs.
- Make sure you've searched in the [Issues](https://github.com/lynx-family/lynx/issues) and haven't found the same request.
- You can discuss the feature in the [Discussions](https://github.com/lynx-family/lynx/discussions) first.
- type: textarea
id: description
attributes:
label: What problem does this feature solve?
description: Please describe the use case for this feature.
validations:
required: true
- type: textarea
id: api
attributes:
label: What does the proposed API of configuration look like?
description: Describe the new API, give some code examples.
validations:
required: true
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
---
contact_links:
- about: 'Please raise issues about framework or toolset on its own repo.'
name: Framework or Toolset
url: 'https://github.com/lynx-family/lynx-stack/issues'
- about: 'Please raise issues about the site on its own repo.'
name: Website
url: 'https://github.com/lynx-family/lynx-website/issues'
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!--
Thank you for submitting a pull request!
We appreciate the time and effort you have invested in making these changes. Please ensure that you provide enough information to allow others to review your pull request.
Upon submission, your pull request will be automatically assigned with reviewers.
If you want to learn more about contributing to this project, please visit: https://github.com/lynx-family/lynx/blob/develop/CONTRIBUTING.md.
-->
## Summary
<!-- Can you explain the reasoning behind implementing this change? What problem or issue does this pull request resolve? -->
<!-- It would be helpful if you could provide any relevant context, such as GitHub issues or related discussions. -->
## Checklist
<!--- Check and mark with an "x" -->
- [ ] Tests updated (or not required).
- [ ] Documentation updated (or not required).
================================================
FILE: .github/actions/android-explorer-build/action.yml
================================================
name: build android explorer
description: build android explorer apk
inputs:
abi-list:
description: The abi list of the sdk to publish
required: false
default: 'armeabi-v7a'
build-params:
description: Set project properties for gradle when building explorer
required: false
default: ''
runs:
using: composite
steps:
- name: Python Setup
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
- name: Build Explorer App
shell: bash
run: |-
cd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
pushd explorer/android
./gradlew :LynxExplorer:assembleNoasanRelease -Penable_trace=perfetto -PabiList=${{ inputs.abi-list }} -no-daemon ${{ inputs.build-params }}
popd
- name: upload artifact
uses: lynx-infra/upload-artifact@332ec52e99f7cbf1fbbdc9bcc09280d49147d092
continue-on-error: true
with:
name: android-lynx-explorer
path: '${{ github.workspace }}/lynx/explorer/android/lynx_explorer/build/outputs/apk/noasan/release/LynxExplorer-noasan-release.apk'
================================================
FILE: .github/actions/android-sdk-release/action.yml
================================================
name: build android sdk
description: build android sdk and publish aar to maven if build-type is 'release'
inputs:
version:
description: The version of the sdk to publish
required: true
signingKeyId:
description: The key id of the sdk to publish
required: false
default: ''
signingPassword:
description: The password of the sdk to publish
required: false
signingSecretKey:
description: The secret key of the sdk to publish
required: false
abiList:
description: The abi list of the sdk to publish
required: false
default: 'armeabi-v7a'
runs:
using: composite
steps:
- name: Build artifact
shell: bash
run: |-
cd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
pushd platform/android
./gradlew assembleAllModulesRelease -Penable_trace=none -PabiList=${{ inputs.abiList }} -PbuildLynxDebugSo -no-daemon
./gradlew assembleAllModulesDevRelease -Penable_trace=perfetto -PabiList=${{ inputs.abiList }} -no-daemon
./gradlew publishAllModules \
-Pversion=${{ inputs.version || '0.0.1-alpha.1' }} \
-Psigning.keyId=${{ inputs.signingKeyId }} \
-Psigning.password=${{ inputs.signingPassword }} \
-Psigning.secretKey=${{ inputs.signingSecretKey }}
./gradlew publishAllModulesDevRelease \
-Pversion="${{ inputs.version || '0.0.1-alpha.1' }}-dev" \
-Psigning.keyId=${{ inputs.signingKeyId }} \
-Psigning.password=${{ inputs.signingPassword }} \
-Psigning.secretKey=${{ inputs.signingSecretKey }}
popd
================================================
FILE: .github/actions/clay-macos-build/action.yml
================================================
name: build clay example
description: build clay example
runs:
using: composite
steps:
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
with:
target: 'clay'
- name: Build Clay Example
shell: bash
run: |-
cd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
buildtools/gn/gn gen out/Default --args='enable_clay_standalone = true disable_visibility_hidden = true use_ndk_static_cxx = false enable_linker_map = false enable_clay = true is_headless = true skia_enable_flutter_defines = true skia_use_dng_sdk = false skia_use_sfntly = false skia_enable_pdf = false skia_enable_svg = true enable_svg = true skia_enable_skottie = true skia_use_x11 = false skia_use_wuffs = true skia_use_expat = true skia_use_fontconfig = false clay_enable_skshaper = true skia_use_icu = true skia_gl_standard = "" allow_deprecated_api_calls = true stripped_symbols = true is_official_build = true is_debug = false use_clang_static_analyzer = false enable_lto = false' --export-compile-commands
buildtools/ninja/ninja -C out/Default clay/example/glfw
================================================
FILE: .github/actions/common-deps/action.yml
================================================
name: install common dependencies
description: pull common source and binary dependencies via habitat.
inputs:
concurrency:
description: concurrency of requests
default: '2'
required: false
cache-backend:
description: cache backend for habitat
default: 'lynx-infra'
required: false
target:
description: habitat target
default: ''
required: false
# actions/cache stores files with relative directory, which causes inconsistency between self-hosted runner and
# container runner. Therefore, add this temporary option to modify cache key prefix as a workaround. Delete this when
# we are able to adjust the container runner's directory structure to the same as self-hosted runner.
cache-key-prefix:
description: cache key prefix for cache action
default: ''
required: false
runs:
using: composite
steps:
- name: Get habitat cache key
id: hab
shell: bash
run: |
if [[ "${{ inputs.target }}" == "" ]]; then
python3 lynx/tools/ci/habitat_cache_helper.py
else
python3 lynx/tools/ci/habitat_cache_helper.py --target ${{ inputs.target }}
fi
- name: Setup cache action
if: ${{ inputs.cache-backend == 'lynx-infra' }}
uses: lynx-infra/cache@5c6160a6a4c7fca80a2f3057bb9dfc9513fcb732
with:
path: ~/.habitat_cache
key: hab${{ inputs.cache-key-prefix }}-${{ runner.os }}-${{ steps.hab.outputs.HABITAT_TARGETS }}-${{ steps.hab.outputs.HABITAT_DEPS_FILE_DIGEST }}
restore-keys: |
hab${{ inputs.cache-key-prefix }}-${{ runner.os }}-${{ steps.hab.outputs.HABITAT_TARGETS }}-
- name: Setup cache action
if: ${{ inputs.cache-backend == 'github' }}
uses: actions/cache@v4
with:
path: ~/.habitat_cache
key: hab-${{ runner.os }}-${{ steps.hab.outputs.HABITAT_TARGETS }}-${{ steps.hab.outputs.HABITAT_DEPS_FILE_DIGEST }}
restore-keys: |
hab-${{ runner.os }}-${{ steps.hab.outputs.HABITAT_TARGETS }}-
- name: Get Python Cache Directory
id: pip
shell: bash
if: ${{ inputs.cache-backend == 'lynx-infra' }}
run: echo "PIP_CACHE_DIR=$(python3 -m pip cache dir)" >> $GITHUB_OUTPUT
- name: Python Requirements Cache
if: ${{ inputs.cache-backend == 'lynx-infra' }}
uses: lynx-infra/cache@5c6160a6a4c7fca80a2f3057bb9dfc9513fcb732
with:
path: ${{ steps.pip.outputs.PIP_CACHE_DIR }}
key: pip${{ inputs.cache-key-prefix }}-${{ runner.os }}-${{ hashFiles('lynx/tools/vpython_tools/requirements.txt', 'lynx/testing/integration_test/test_script/requirements.txt') }}
restore-keys: |
pip${{ inputs.cache-key-prefix }}-${{ runner.os }}-
- name: Cache pnpm Dependencies
if: ${{ inputs.cache-backend == 'lynx-infra' && inputs.cache-key-prefix == '' }}
uses: lynx-infra/cache@5c6160a6a4c7fca80a2f3057bb9dfc9513fcb732
with:
# set pnpm store path to a specific value since we can't get it via `pnpm store path` before pnpm is setup.
path: ~/.local/share/pnpm/store
key: pnpm-${{ runner.os }}-${{ hashFiles('lynx/pnpm-lock.yaml') }}
restore-keys: |
pnpm-${{ runner.os }}-
- name: Install Python dependencies
uses: nick-fields/retry@v3
with:
max_attempts: 3
retry_wait_seconds: 3
timeout_minutes: 20
command: |
set -e
if [ "$RUNNER_OS" == "macOS" ]; then
python3 -m pip install -r lynx/tools/vpython_tools/requirements.txt --break-system-packages --retries 10 --timeout 60
python3 -m pip install -r lynx/testing/integration_test/test_script/requirements.txt --break-system-packages --retries 10 --timeout 60
else
python3 -m pip install -r lynx/tools/vpython_tools/requirements.txt --retries 10 --timeout 60
python3 -m pip install -r lynx/testing/integration_test/test_script/requirements.txt --retries 10 --timeout 60
fi
- name: run habitat sync
shell: bash
working-directory: lynx
run: |
if [[ "${{ inputs.target }}" == "" ]]; then
tools/hab sync .
else
tools/hab sync . --target ${{ inputs.target }}
fi
env:
HABITAT_CONCURRENCY: ${{ inputs.concurrency }}
npm_config_store_dir: ~/.local/share/pnpm/store
================================================
FILE: .github/actions/free-android-disk/action.yml
================================================
name: Free Android Disk Space
description: Free up disk space on Android runner.
runs:
using: composite
steps:
- name: Free up disk space
shell: bash
working-directory: /home/runner
run: |
CLEAN_DIRS=(
"/var/lib/docker"
"/usr/local/lib/node_modules"
)
for dir in "${CLEAN_DIRS[@]}"; do
if [ -d "$dir" ]; then
echo "Deleting $dir..."
sudo rm -rf "$dir"
else
echo "$dir does not exist, skipping..."
fi
done
sudo apt-get clean > /dev/null 2>&1
================================================
FILE: .github/actions/generate-changelog/action.yml
================================================
name: generate changelog
description: Using git-cliff to generate changelog according to the given reference range
inputs:
ref-from:
description: The starting git reference (tag name or commit hash) (excluded) from which the changelog will be generated
required: true
ref-to:
description: The ending git reference (tag name or commit hash) (included) up to which the changelog will be generated
required: true
running-path:
description: Path to the running of git-cliff command
required: false
default: 'lynx'
config-path:
description: Path to the configuration file for git-cliff, relative to lynx/
required: false
default: 'tools/cliff.toml'
changelog-path:
description: Path to the generated changelog file, relative to lynx/
required: false
default: 'CHANGELOG.md'
runs:
using: composite
steps:
- name: Download git-cliff
shell: bash
env:
GITHUB_TOKEN: ${{ env.GITHUB_TOKEN }}
run: |-
ARCHIVE_EXT='tar.gz'
ARCHIVE_CMD='tar -xf'
GIT_CLIFF_BIN='git-cliff'
ARCH=$(uname -m | tr '[:upper:]' '[:lower:]')
case "$ARCH" in
arm64) ARCH=aarch64 ;;
arm) ARCH=pc-windows-msvc ;;
x86) ARCH=i686 ;;
*) ARCH=x86_64 ;;
esac
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
case "$OS" in
darwin) OS=apple-darwin ;;
*) OS=unknown-linux-gnu ;;
esac
INSTALL_DIR="$RUNNER_TEMP/git-cliff"
mkdir -p "$INSTALL_DIR"
cd "$INSTALL_DIR"
echo "git-cliff-${ARCH}-${OS}.${ARCHIVE_EXT}"
RELEASE_URL='https://api.github.com/repos/orhun/git-cliff/releases/latest'
RELEASE_INFO="$(curl --silent --show-error --fail \
--header "authorization: Bearer ${GITHUB_TOKEN}" \
--header 'Cache-Control: no-cache, must-revalidate' \
"${RELEASE_URL}")"
TAG_NAME="$(echo "${RELEASE_INFO}" | jq --raw-output ".tag_name")"
TARGET="git-cliff-${TAG_NAME:1}-${ARCH}-${OS}.${ARCHIVE_EXT}"
LOCATION="$(echo "${RELEASE_INFO}" |
jq --raw-output ".assets[].browser_download_url" |
grep "${TARGET}$")"
echo "Found release: ${LOCATION}"
mkdir -p ./bin
if [[ ! -e "$TARGET" ]]; then
echo "Downloading ${TARGET}..."
curl --silent --show-error --fail --location --output "$TARGET" "$LOCATION"
echo "Unpacking ${TARGET}..."
${ARCHIVE_CMD} "$TARGET"
mv git-cliff-${TAG_NAME:1}/${GIT_CLIFF_BIN} "./bin/$GIT_CLIFF_BIN"
else
echo "Using cached git-cliff binary."
fi
chmod +x "./bin/$GIT_CLIFF_BIN"
echo "git-cliff is ready to use!"
- name: Generate Changelog
shell: bash
env:
GITHUB_TOKEN: ${{ env.GITHUB_TOKEN }}
run: |-
cd "$GITHUB_WORKSPACE/${{ inputs.running-path }}"
DIR_PATH=$(dirname "${{ inputs.changelog-path }}")
mkdir -p "$DIR_PATH"
"$RUNNER_TEMP/git-cliff/bin/git-cliff" ${{ inputs.ref-from }}..${{ inputs.ref-to }} -c ${{ inputs.config-path }} -o ${{ inputs.changelog-path }}
if [[ "$(uname)" == "Darwin" ]]; then
sed -i '' '/^\t*$/d' "${{ inputs.changelog-path }}"
else
sed -i '/^\t*$/d' "${{ inputs.changelog-path }}"
fi
echo "changelog-path: $GITHUB_WORKSPACE/${{ inputs.running-path }}/${{ inputs.changelog-path }}"
================================================
FILE: .github/actions/get-latest-tag/action.yml
================================================
name: Get Latest Ancestor Tag
description: Get the latest ancestor tag of the current commit.
inputs:
current-tag:
description: The current publishing tag
required: true
outputs:
latest-tag:
description: 'The latest tag'
value: ${{ steps.get-tag.outputs.latest-tag }}
runs:
using: composite
steps:
- name: get latest ancestor tag
id: get-ancestor-tag
working-directory: lynx
shell: bash
run: |
set -e
pwd
ANCESTOR_TAG=$(git describe --tags --exclude=${{ inputs.current-tag }} --abbrev=0 2>/dev/null)
echo "ANCESTOR_TAG=$ANCESTOR_TAG" >> $GITHUB_ENV
- name: get latest tag from api
id: get-latest-tag-from-api
shell: bash
run: |
REPO="${{ github.repository }}"
LATEST_TAG=$(curl -s "https://api.github.com/repos/$REPO/releases/latest" | jq -r '.tag_name')
if [ "$LATEST_TAG" = "null" ] || [ "$LATEST_TAG" = "${{ inputs.current-tag }}" ]; then
LATEST_TAG=$(curl -s "https://api.github.com/repos/$REPO/releases?per_page=20" \
| jq -r --arg CURRENT "${{ inputs.current-tag }}" \
'.[] | select(
.draft == false and
.tag_name != $CURRENT
) | .tag_name' \
| head -n 1)
fi
echo "LATEST_TAG=$LATEST_TAG" >> $GITHUB_ENV
- id: get-tag
shell: bash
run: |
if [ -n "${{ env.ANCESTOR_TAG }}" ]; then
FINAL_TAG="${{ env.ANCESTOR_TAG }}"
else
FINAL_TAG="${{ env.LATEST_TAG }}"
fi
echo "Latest tag found: $FINAL_TAG"
echo "latest-tag=$FINAL_TAG" >> $GITHUB_OUTPUT
================================================
FILE: .github/actions/harmony-explorer-build/action.yml
================================================
name: build harmony explorer
description: build harmony explorer hap
runs:
using: composite
steps:
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
with:
cache-key-prefix: '-container'
- name: Build Explorer App
shell: bash
working-directory: lynx
run: |-
source tools/envsetup.sh
pushd platform/harmony && ohpm install && popd
pushd explorer/harmony && ohpm install && popd
python3 explorer/harmony/script/build.py --dev --build_lynx_core --build_bundle --build_hap
- name: upload artifact
uses: lynx-infra/upload-artifact@332ec52e99f7cbf1fbbdc9bcc09280d49147d092
continue-on-error: true
with:
name: harmony-lynx-explorer
path: '${{ github.workspace }}/lynx/explorer/harmony/lynx_explorer/build/default/outputs/default/lynx_explorer-default-unsigned.hap'
================================================
FILE: .github/actions/ios-common-deps/action.yml
================================================
name: setup ruby cache
description: setup ruby cache for the Lynx iOS build stage
inputs:
path:
default: 'lynx/ruby'
required: false
type: string
cache-backend:
description: cache backend for habitat
default: 'lynx-infra'
required: false
runs:
using: composite
steps:
- name: get ruby version
id: get_ruby_version
shell: bash
run: |-
ruby_version=$(ruby -v | awk '{print $2}')
ruby_version=$(echo $ruby_version | grep -oE '[0-9]+\.[0-9]+\.[0-9]+')
ruby_version=$(echo $ruby_version | awk -F. '{print $1"."$2".0"}')
echo "VERSION=$ruby_version" >> $GITHUB_OUTPUT;
- name: setup ruby cache action
if: ${{ inputs.cache-backend == 'lynx-infra' }}
uses: lynx-infra/cache@5c6160a6a4c7fca80a2f3057bb9dfc9513fcb732
with:
path: ${{ inputs.path }}/${{ steps.get_ruby_version.outputs.VERSION }}
key: ${{ runner.os }}-ruby-${{ steps.get_ruby_version.outputs.VERSION }}-${{ hashFiles('lynx/Gemfile.lock') }}
restore-keys: |
${{ runner.os }}-ruby-${{ steps.get_ruby_version.outputs.VERSION }}
- name: setup cache action
if: ${{ inputs.cache-backend == 'github' }}
uses: actions/cache@v4
with:
path: ${{ inputs.path }}/${{ steps.get_ruby_version.outputs.VERSION }}
key: ${{ runner.os }}-ruby-${{ steps.get_ruby_version.outputs.VERSION }}-${{ hashFiles('lynx/Gemfile.lock') }}
restore-keys: |
${{ runner.os }}-ruby-${{ steps.get_ruby_version.outputs.VERSION }}
================================================
FILE: .github/actions/ios-explorer-build/action.yml
================================================
name: build ios explorer
description: build ios explorer app
inputs:
build-arch:
description: The architecture of explorer we are building. It could be x86_64,arm64
required: true
build-params:
description: The build params of explorer we are building.
required: false
default: ''
runs:
using: composite
steps:
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
- name: Setup Ruby Cache
uses: ./lynx/.github/actions/ios-common-deps
- name: Install iOS Dependencies
uses: nick-fields/retry@v2
with:
timeout_minutes: 20
max_attempts: 3
command: |-
set -e
cd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
pushd explorer/darwin/ios/lynx_explorer
git config --global url."https://github.com/".insteadOf "git@github.com:"
bash bundle_install.sh ${{ inputs.build-params }}
popd
- name: Build Explorer App
shell: bash
run: |-
cd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
pushd explorer/darwin/ios/lynx_explorer
xcodebuild -workspace LynxExplorer.xcworkspace -scheme LynxExplorer -configuration Debug -arch ${{ inputs.build-arch }} -archivePath build/LynxExplorer.xcarchive -derivedDataPath iOSCoreBuild/DerivedData -resultBundlePath results_bundle -showBuildTimingSummary -sdk iphonesimulator LD_GENERATE_MAP_FILE=YES LD_MAP_FILE_PATH=Build/linkmap.txt -jobs 24 build
popd
tar --strip-components 10 -czvf LynxExplorer-${{ inputs.build-arch }}.app.tar.gz explorer/darwin/ios/lynx_explorer/iOSCoreBuild/DerivedData/Build/Products/Debug-iphonesimulator/LynxExplorer.app
================================================
FILE: .github/actions/ios-sdk-publish/action.yml
================================================
name: publish ios sdk
description: package ios source code, upload the zip to release and publish the podspec file to cocoapods
inputs:
version:
required: false
description: The version of pod.
type: string
tag:
required: false
type: string
description: The tag for release.
component:
required: false
type: string
default: 'all'
cocoapods_trunk_token:
description: The secret key of the sdk to publish
type: string
github_token:
description: The github token
type: string
runs:
using: composite
steps:
- name: Prepare cocoapods publish source
shell: bash
run: |-
cd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
python3 tools/ios_tools/cocoapods_publish_helper.py --prepare-source --tag ${{ inputs.tag }} --version ${{ inputs.version }} --component ${{ inputs.component }}
- name: Push iOS SDK to release
uses: ncipollo/release-action@v1
with:
tag: ${{ inputs.tag }}
token: ${{ inputs.github_token }}
artifacts: '${{ github.workspace }}/lynx/*.zip'
replacesArtifacts: true
allowUpdates: true
body: ''
- name: Publish to CocoaPods Repo
env:
COCOAPODS_TRUNK_TOKEN: ${{ inputs.cocoapods_trunk_token }}
shell: bash
run: |-
cd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
git config --global user.name "lynx.authors"
git config --global user.email "lynx.authors@users.noreply.github.com"
python3 tools/ios_tools/skip_pod_lint.py --source public
python3 tools/ios_tools/cocoapods_publish_helper.py --publish --component ${{ inputs.component }}
================================================
FILE: .github/actions/macos-explorer-build/action.yml
================================================
name: build macos explorer
description: build macos explorer
inputs:
build-arch:
description: The architecture of explorer we are building. It could be x64,arm64
required: true
runs:
using: composite
steps:
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
with:
target: 'clay'
- name: Build macOS Explorer
shell: bash
run: |-
cd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
pnpm install
buildtools/gn/gn gen out/Default --args='target_cpu = "${{ inputs.build-arch }}" desktop_enable_embedder_layer = true enable_clay_standalone = true disable_visibility_hidden = true use_ndk_static_cxx = false enable_linker_map = false enable_clay = true is_headless = true skia_enable_flutter_defines = true skia_use_dng_sdk = false skia_use_sfntly = false skia_enable_pdf = false skia_enable_svg = true enable_svg = true skia_enable_skottie = true skia_use_x11 = false skia_use_wuffs = true skia_use_expat = true skia_use_fontconfig = false clay_enable_skshaper = true skia_use_icu = true skia_gl_standard = "" skia_use_metal = true shell_enable_metal = true allow_deprecated_api_calls = true stripped_symbols = true is_official_build = true use_clang_static_analyzer = false enable_lto = false enable_lepusng_worklet = true enable_napi_binding = true enable_inspector = true jsengine_type="quickjs" use_flutter_cxx = false is_debug = false'
buildtools/ninja/ninja -C out/Default explorer platform/darwin/macos:package_sdk
tar --strip-components 2 -czvf LynxExplorer-macos-${{ inputs.build-arch }}.app.tar.gz out/Default/LynxExplorer.app
================================================
FILE: .github/actions/release-changelog/action.yml
================================================
name: release changelog
description: Truncating changelog to max 124000 chars and pushing changelog to release note
inputs:
version:
description: Version (tag) of the release
required: true
changelog-path:
description: Path to the changelog file, relative to lynx/
required: false
default: 'CHANGELOG.md'
token:
description: secrets.GITHUB_TOKEN
required: true
runs:
using: composite
steps:
- name: Truncate Changelog If Necessary
shell: bash
run: |-
cd $GITHUB_WORKSPACE/lynx
MAX_CHARS=124000
CHANGELOG="${{ inputs.changelog-path }}"
TRUNCATED="$CHANGELOG-truncated.md"
if [[ ! -f "$CHANGELOG" ]]; then
echo "Error: file '$CHANGELOG' not found.">&2
exit 1
fi
content=$(cat "$CHANGELOG")
if [[ ${#content} -le $MAX_CHARS ]]; then
cp "$CHANGELOG" "$TRUNCATED"
exit 0
fi
truncated=$(head -c "$MAX_CHARS" <<< "$content")
full_body="$truncated\n\n---\n📄 View the full changelog [here]($GITHUB_SERVER_URL/$GITHUB_REPOSITORY/blob/$GITHUB_SHA/$CHANGELOG)"
echo -e "$full_body" > "$TRUNCATED"
- name: Push to Release
uses: ncipollo/release-action@v1
with:
tag: ${{ inputs.version }}
token: ${{ inputs.token }}
artifacts: '${{ github.workspace }}/lynx/${{ inputs.changelog-path }}'
bodyFile: '${{ github.workspace }}/lynx/${{ inputs.changelog-path }}-truncated.md'
allowUpdates: true
================================================
FILE: .github/actions/setup-android-env/action.yml
================================================
name: setup android enviroment
description: Setup Android enviroment, which includes JDK, Android SDK and NDK.
runs:
using: composite
steps:
- name: Setup Java SDK
uses: actions/setup-java@v3
with:
java-version: 11
distribution: 'zulu'
cache: 'gradle'
- name: Setup Android SDK
uses: android-actions/setup-android@v3
with:
cmdline-tools-version: 9862592
include-emulator: false
include-preview: false
- name: Setup Android NDK
shell: bash
run: |-
sdkmanager "ndk;21.1.6352462"
export ANDROID_NDK_HOME=$ANDROID_HOME/ndk/21.1.6352462
================================================
FILE: .github/actions/windows-common-deps/action.yml
================================================
name: install windows common dependencies
description: pull common source and binary dependencies via habitat for windows.
inputs:
concurrency:
description: concurrency of requests
default: '2'
required: false
cache-backend:
description: cache backend for habitat
default: 'lynx-infra'
required: false
target:
description: habitat target
default: ''
required: false
# actions/cache stores files with relative directory, which causes inconsistency between self-hosted runner and
# container runner. Therefore, add this temporary option to modify cache key prefix as a workaround. Delete this when
# we are able to adjust the container runner's directory structure to the same as self-hosted runner.
cache-key-prefix:
description: cache key prefix for cache action
default: ''
required: false
runs:
using: composite
steps:
- name: Get habitat cache key
id: hab
shell: pwsh
run: |
if ([string]::IsNullOrEmpty("${{ inputs.target }}")) {
python lynx/tools/ci/habitat_cache_helper.py
} else {
python lynx/tools/ci/habitat_cache_helper.py --target ${{ inputs.target }}
}
- name: Get habitat cache directory
id: hab-cache-dir
shell: pwsh
run: |
$habitat_cache_dir = python -c "import os; import tempfile; print(os.path.join(os.environ.get('HOME', tempfile.gettempdir()), '.habitat_cache'))"
echo "HABITAT_CACHE_DIR=$habitat_cache_dir" >> ${env:GITHUB_OUTPUT}
- name: Get npm cache directory
id: npm-cache-dir
shell: pwsh
run: |
$npm_cache_dir = python -c "import os; import pathlib; print(os.path.join(pathlib.Path.home(), '.local', 'share', 'pnpm', 'store'))"
echo "NPM_CACHE_DIR=$npm_cache_dir" >> ${env:GITHUB_OUTPUT}
- name: Get Python Cache Directory
id: pip
shell: pwsh
if: ${{ inputs.cache-backend == 'lynx-infra' }}
run: |
$cache = python -m pip cache dir
$correctPath = (Get-Item $cache).FullName
echo "PIP_CACHE_DIR=$correctPath" >> ${env:GITHUB_OUTPUT}
- name: Setup cache action
if: ${{ inputs.cache-backend == 'lynx-infra' }}
uses: lynx-infra/cache@5c6160a6a4c7fca80a2f3057bb9dfc9513fcb732
with:
path: ${{ steps.hab-cache-dir.outputs.HABITAT_CACHE_DIR }}
key: hab${{ inputs.cache-key-prefix }}-${{ runner.os }}-${{ steps.hab.outputs.HABITAT_TARGETS }}-${{ steps.hab.outputs.HABITAT_DEPS_FILE_DIGEST }}
restore-keys: |
hab${{ inputs.cache-key-prefix }}-${{ runner.os }}-${{ steps.hab.outputs.HABITAT_TARGETS }}-
- name: Setup cache action
if: ${{ inputs.cache-backend == 'github' }}
uses: actions/cache@v4
with:
path: ${{ steps.hab-cache-dir.outputs.HABITAT_CACHE_DIR }}
key: hab-${{ runner.os }}-${{ steps.hab.outputs.HABITAT_TARGETS }}-${{ steps.hab.outputs.HABITAT_DEPS_FILE_DIGEST }}
restore-keys: |
hab-${{ runner.os }}-${{ steps.hab.outputs.HABITAT_TARGETS }}-
- name: Python Requirements Cache
if: ${{ inputs.cache-backend == 'lynx-infra' }}
uses: lynx-infra/cache@5c6160a6a4c7fca80a2f3057bb9dfc9513fcb732
with:
path: ${{ steps.pip.outputs.PIP_CACHE_DIR }}
key: pip${{ inputs.cache-key-prefix }}-${{ runner.os }}-${{ hashFiles('lynx/tools/vpython_tools/requirements.txt', 'lynx/testing/integration_test/test_script/requirements.txt') }}
restore-keys: |
pip${{ inputs.cache-key-prefix }}-${{ runner.os }}-
- name: Cache pnpm Dependencies
if: ${{ inputs.cache-backend == 'lynx-infra' && inputs.cache-key-prefix == '' }}
uses: lynx-infra/cache@5c6160a6a4c7fca80a2f3057bb9dfc9513fcb732
with:
# set pnpm store path to a specific value since we can't get it via `pnpm store path` before pnpm is setup.
path: ${{ steps.npm-cache-dir.outputs.NPM_CACHE_DIR }}
key: pnpm-${{ runner.os }}-${{ hashFiles('lynx/pnpm-lock.yaml') }}
restore-keys: |
pnpm-${{ runner.os }}-
- name: Install Python dependencies
shell: pwsh
run: |
python -m pip install -r lynx/tools/vpython_tools/requirements.txt
python -m pip install -r lynx/testing/integration_test/test_script/requirements.txt
- name: run habitat sync
shell: pwsh
working-directory: lynx
run: |
if ([string]::IsNullOrEmpty("${{ inputs.target }}")) {
powershell.exe -Command "& .\tools\hab.ps1 sync ."
} else {
powershell.exe -Command "& .\tools\hab.ps1 sync . --target ${{ inputs.target }}"
}
env:
HABITAT_CONCURRENCY: ${{ inputs.concurrency }}
npm_config_store_dir: ${{ steps.npm-cache-dir.outputs.NPM_CACHE_DIR }}
================================================
FILE: .github/actions/windows-explorer-build/action.yml
================================================
name: build windows explorer
description: build windows explorer apk.
inputs:
build-arch:
description: The architecture of explorer we are building. It could be x64,x86
required: true
runs:
using: composite
steps:
- name: Python Setup
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Setup Node.js 18.20.0
uses: actions/setup-node@v6
with:
node-version: '18.20.0'
- name: Get npm customcache directory
id: npm-custom-cache-dir
shell: pwsh
run: |
$npm_custom_cache_dir = python -c "import os; import pathlib; print(os.path.join(pathlib.Path.home(), '.pnpm', 'v3'))"
echo "NPM_CUSTOM_CACHE_DIR=$npm_custom_cache_dir" >> ${env:GITHUB_OUTPUT}
- name: Cache pnpm Dependencies
uses: lynx-infra/cache@5c6160a6a4c7fca80a2f3057bb9dfc9513fcb732
with:
path: ${{ steps.npm-custom-cache-dir.outputs.NPM_CUSTOM_CACHE_DIR }}
key: pnpm-custom-${{ runner.os }}-${{ hashFiles('lynx/pnpm-lock.yaml') }}
restore-keys: |
pnpm-custom-${{ runner.os }}-
- name: Install Common Dependencies
uses: ./lynx/.github/actions/windows-common-deps
with:
target: 'clay'
- name: Build Explorer App
shell: pwsh
run: |-
cd lynx
$env:vs2022_install = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2022\BuildTools"
$env:DEPOT_TOOLS_WIN_TOOLCHAIN = 0
$env:GYP_MSVS_OVERRIDE_PATH = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2022\BuildTools"
$env:WINDOWSSDKDIR = "${env:ProgramFiles(x86)}\Windows Kits\10"
.\tools\envsetup.ps1
.\buildtools\node\pnpm install
$PSNativeCommandArgumentPassing = 'Legacy'
.\buildtools\gn\gn.exe gen out\Default --args='target_cpu=\"${{ inputs.build-arch }}\" desktop_enable_embedder_layer=true enable_clay_standalone=true disable_visibility_hidden=true use_ndk_static_cxx=false enable_linker_map=false enable_clay=true is_headless=true skia_enable_flutter_defines=true skia_use_dng_sdk=false skia_use_sfntly=false skia_enable_pdf=false skia_enable_svg=true enable_svg=true skia_enable_skottie=true skia_use_x11=false skia_use_wuffs=true skia_use_expat=true skia_use_fontconfig=false clay_enable_skshaper=true skia_use_icu=true allow_deprecated_api_calls=true stripped_symbols=true is_official_build=true enable_lto=false is_clang=true enable_lepusng_worklet=true enable_napi_binding=true is_debug=false enable_inspector=true jsengine_type=\"quickjs\"' --ide=vs
.\buildtools\ninja\ninja.exe -C out\Default explorer
================================================
FILE: .github/workflows/ci.yml
================================================
name: ci
on:
pull_request:
push:
branches:
- CQ-*
- cq-*
defaults:
run:
working-directory: lynx
jobs:
static-check:
runs-on: lynx-ubuntu-22.04-medium
timeout-minutes: 30
steps:
- name: Python Setup
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Download Source
uses: actions/checkout@v4.2.2
with:
fetch-depth: 2
ref: ${{ github.event.pull_request.head.sha }}
path: lynx
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
- name: Run file type check
run: |
source tools/envsetup.sh
python3 tools_shared/git_lynx.py check --checkers file-type
- name: Run cpplint check
run: |
source tools/envsetup.sh
python3 tools_shared/git_lynx.py check --checkers cpplint
- name: Run java-lint check
run: |
source tools/envsetup.sh
python3 tools_shared/git_lynx.py check --checkers java-lint
- name: Run commit-message check
run: |
source tools/envsetup.sh
python3 tools_shared/git_lynx.py check --checkers commit-message
- name: Run coding-style check
run: |
source tools/envsetup.sh
python3 tools_shared/git_lynx.py check --checkers coding-style
- name: Run android-check-style check
run: |
source tools/envsetup.sh
python3 tools_shared/git_lynx.py check --checkers android-check-style
- name: Run api check
run: |
source tools/envsetup.sh
python3 tools_shared/git_lynx.py check --checkers api-check --all
- name: Run gn relative path check
run: |
source tools/envsetup.sh
python3 tools_shared/git_lynx.py check --checkers gn-relative-path-check
darwin-native-unittests-check:
timeout-minutes: 60
runs-on: lynx-darwin-14-medium
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
- name: Run Unittests
run: |
set -e
source tools/envsetup.sh
tools/rtf/rtf native-ut run --names lynx
linux-native-unittests-check:
runs-on: lynx-ubuntu-22.04-large
timeout-minutes: 60
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
- name: Python Setup
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
- name: Run Unittests
run: |
set -e
source tools/envsetup.sh
tools/rtf/rtf native-ut run --names lynx
linux-native-devtool-unittests-check:
runs-on: lynx-ubuntu-22.04-large
timeout-minutes: 60
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
- name: Python Setup
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
- name: Run Unittests
run: |
set -e
source tools/envsetup.sh
tools/rtf/rtf native-ut run --names devtool
ios-unittests-check:
timeout-minutes: 60
runs-on: lynx-darwin-14-medium
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
- name: Setup Ruby Cache
uses: ./lynx/.github/actions/ios-common-deps
with:
cache-backend: 'lynx-infra'
- name: Install iOS Dependencies
uses: nick-fields/retry@v2
with:
timeout_minutes: 20
max_attempts: 3
command: |
set -e
cd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
pushd explorer/darwin/ios/lynx_explorer
git config --global url."https://github.com/".insteadOf "git@github.com:"
bash bundle_install.sh --skip-card-build
popd
- name: Run Unittests
run: |
set -e
source tools/envsetup.sh
pushd explorer/darwin/ios/lynx_explorer
xcodebuild -showsdks | grep -Eo -m 1 "iphonesimulator([0-9]{1,}\.)+[0-9]{1,}" > sdk.txt
sdkVersion=$(awk '{ sub(/iphonesimulator/,""); print $0 }' sdk.txt)
echo $sdkVersion > sdk.txt
xcodebuild build-for-testing ARCHS=arm64 -workspace LynxExplorer.xcworkspace -scheme LynxExplorerTests -enableCodeCoverage YES -configuration Debug -sdk iphonesimulator$(cat sdk.txt) COMPILER_INDEX_STORE_ENABLE=NO -derivedDataPath iOSCoreBuild/DerivedData -dest"platform=iOS Simulator,OS=$(cat sdk.txt),name=iPhone 11" SYMROOT=`pwd`/Build/Products -testPlan UTTest
chmod u+x xctestrunner
./xctestrunner --xctestrun `pwd`/Build/Products/LynxExplorerTests_UTTest_iphonesimulator$(cat sdk.txt)-arm64.xctestrun --work_dir `pwd` --output_dir `pwd`/iOSCoreBuild/DerivedData simulator_test
popd
tasm-linux-build:
runs-on: lynx-ubuntu-22.04-large
timeout-minutes: 60
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
- name: Python Setup
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
- name: Build Linux Tasm
run: |
source tools/envsetup.sh
pushd oliver/lynx-tasm
npm install
npm run build:release:linux
popd
tasm-darwin-build:
timeout-minutes: 60
runs-on: lynx-darwin-14-medium
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
- name: Build Darwin Tasm
run: |
source tools/envsetup.sh
python3 tools/oliver/lynx-tasm/gn_to_cmake_oliver.py
pushd oliver/lynx-tasm
npm install
../../buildtools/cmake/bin/cmake .
../../buildtools/cmake/bin/cmake --build .
./lepus_cmd
npm run build:release:darwin
popd
tasm-wasm-build:
timeout-minutes: 60
runs-on: lynx-darwin-14-medium
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
with:
target: tasm
- name: Build Wasm Tasm
run: |
source tools/envsetup.sh
pushd oliver/lynx-tasm
npm install
npm run build:wasm
popd
lynx-types-check:
runs-on: lynx-ubuntu-22.04-medium
timeout-minutes: 60
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
- name: Python Setup
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
- name: Lynx Types Check
run: |
cd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
pushd js_libraries/types
npm run test
popd
android-unittests-check:
timeout-minutes: 60
runs-on: lynx-ubuntu-22.04-physical-medium
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
- name: Python Setup
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
- name: Setup gradle cache
uses: lynx-infra/cache@5c6160a6a4c7fca80a2f3057bb9dfc9513fcb732
with:
path: ~/.gradle/caches/modules-2
key: gradle-android-unittests-check
- name: Build Example App
run: |
source tools/envsetup.sh
tools/rtf/rtf android-ut run --name lynx
android-explorer-build:
runs-on: lynx-ubuntu-22.04-large
timeout-minutes: 60
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
- name: Setup gradle cache
uses: lynx-infra/cache@5c6160a6a4c7fca80a2f3057bb9dfc9513fcb732
with:
path: ~/.gradle/caches/modules-2
key: gradle-android-explorer-build
- name: Build Explorer App
uses: ./lynx/.github/actions/android-explorer-build
with:
abi-list: x86,arm64-v8a
build-params: -PIntegrationTest
windows-explorer-build:
# Disable temporarily due to flakiness
if: false
runs-on: lynx-windows-2022-large
strategy:
matrix:
arch: [x86, x64]
steps:
- name: Configure Git
shell: PowerShell
run: |
git config --global core.autocrlf false
git config --global core.eol lf
git config --global http.sslBackend "schannel"
working-directory: ./
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
- name: Build windows Explorer
uses: ./lynx/.github/actions/windows-explorer-build
with:
build-arch: ${{ matrix.arch }}
android-sdk-release:
timeout-minutes: 60
runs-on: lynx-ubuntu-22.04-large
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
- name: Python Setup
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
with:
cache-backend: 'lynx-infra'
- name: Setup gradle cache
uses: lynx-infra/cache@5c6160a6a4c7fca80a2f3057bb9dfc9513fcb732
with:
path: ~/.gradle/caches/modules-2
key: gradle-android-sdk-release
- name: Build Android SDK
uses: ./lynx/.github/actions/android-sdk-release
with:
version: 0.0.1-alpha.1
- name: Collect and zip artifacts
run: |
cd $GITHUB_WORKSPACE/lynx/platform/android
./gradlew zipAllArtifacts
- name: upload zip artifact
uses: lynx-infra/upload-artifact@332ec52e99f7cbf1fbbdc9bcc09280d49147d092
continue-on-error: true
with:
name: android-sdk-release
path: '${{ github.workspace }}/lynx/platform/android/build/artifacts-collection.zip'
android-e2e-test:
timeout-minutes: 60
needs: [android-explorer-build]
env:
APPIUM_TEST_SERVER_PORT: 4723
APPIUM_TEST_SERVER_HOST: 127.0.0.1
runs-on: lynx-ubuntu-22.04-physical-medium
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
- name: Python Setup
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
- name: Install Appium
run: |
pushd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
pnpm install appium@2.11.2 -w
pnpm install appium-espresso-driver@4.0.0 -w
popd
- name: Setup Java SDK
uses: actions/setup-java@v3
with:
java-version: 17
distribution: 'zulu'
- name: Gradle Wrapper Cache
uses: lynx-infra/cache@5c6160a6a4c7fca80a2f3057bb9dfc9513fcb732
with:
path: ~/.gradle/wrapper/dists
key: gradle-8.7-${{ runner.os }}
- name: Start Android 28 emulator
run: |
set -x
target_avd=$(emulator -list-avds | head -n 1)
if [ -z "$target_avd" ]; then
echo "No available emulator was found!"
exit 1
fi
export QT_QPA_PLATFORM=offscreen
nohup $ANDROID_HOME/emulator/emulator -no-window -avd $target_avd -no-snapshot -no-audio -no-boot-anim &
max_wait_time=300
start_time=$(date +%s)
while true; do
current_time=$(date +%s)
elapsed_time=$((current_time - start_time))
if [ $elapsed_time -gt $max_wait_time ]; then
echo "Emulator startup timed out."
exit 1
fi
$ANDROID_HOME/platform-tools/adb devices
if $ANDROID_HOME/platform-tools/adb devices | grep -q "device$"; then
echo "Emulator startup completed."
break
fi
echo "Waiting for emulator to startup..."
sleep 10
done
$ANDROID_HOME/platform-tools/adb devices
- name: Download Explorer APK
uses: lynx-infra/download-artifact@79d9914484f933089c2840552cf439bac85debad
with:
name: android-lynx-explorer
path: lynx/explorer/android/lynx_explorer/build_temp
- name: Repack and Install Explorer App
run: |
pushd $GITHUB_WORKSPACE/lynx
LATEST_VERSION=$(ls -1 "$ANDROID_HOME/build-tools" | sort -V | tail -n 1)
target_dir=$(find ./node_modules/.pnpm -type d -name "appium-adb@*" | head -n 1)
ESPRESSO_SIGN_KEYS_DIR=""
if [ -n "$target_dir" ]; then
ESPRESSO_SIGN_KEYS_DIR="$target_dir/node_modules/appium-adb/keys"
else
echo "node_modules/.pnpm/appium-adb is not founded!"
exit 1
fi
APK_PATH=${{ github.workspace }}/lynx/explorer/android/lynx_explorer/build_temp
java -jar $ANDROID_HOME/build-tools/$LATEST_VERSION/lib/apksigner.jar sign --key $ESPRESSO_SIGN_KEYS_DIR/testkey.pk8 --cert $ESPRESSO_SIGN_KEYS_DIR/testkey.x509.pem --out $APK_PATH/LynxExplorer-noasan-release-signed.apk $APK_PATH/LynxExplorer-noasan-release.apk
adb install $APK_PATH/LynxExplorer-noasan-release-signed.apk
- name: Start Appium server
run: |
pushd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
pushd node_modules/appium/node_modules/.bin
ls
nohup ./appium server \
--port=$APPIUM_TEST_SERVER_PORT \
--address=$APPIUM_TEST_SERVER_HOST \
--log-no-colors \
--log-timestamp \
2>&1 > "$GITHUB_WORKSPACE/lynx/appium.log" &
adb logcat > "$GITHUB_WORKSPACE/lynx/device.log" 2>&1 &
popd
popd
- name: Check if Appium Server is running
run: |
max_attempts=10
attempt=0
while [ $attempt -lt $max_attempts ]; do
if nc -z $APPIUM_TEST_SERVER_HOST $APPIUM_TEST_SERVER_PORT; then
echo "Appium Server is running."
break
else
attempt=$((attempt + 1))
echo "Attempt $attempt: Appium Server is not yet running. Retrying in 2 seconds..."
sleep 2
fi
done
if [ $attempt -eq $max_attempts ]; then
echo "Failed to start Appium Server."
exit 1
fi
- name: Run Android E2E Test
uses: nick-fields/retry@v3
with:
max_attempts: 2
retry_wait_seconds: 5
timeout_minutes: 20
command: |
set -e
source $GITHUB_WORKSPACE/lynx/tools/envsetup.sh
pushd $GITHUB_WORKSPACE/lynx/testing/integration_test/test_script
export server_port=$APPIUM_TEST_SERVER_PORT
export platform=android
python3 -m pip install -r requirements.txt
python3 manage.py runtest android_test.core
echo "TASK_STATUS=success" >> $GITHUB_OUTPUT
id: run_test
- name: Collect Lynx-E2E execution logs
if: always()
run: |
TASK_STATUS="${{ steps.run_test.outputs.TASK_STATUS }}"
if [ -n "$TASK_STATUS" ] && [ "$TASK_STATUS" = "success" ]; then
echo "Test execution succeeded."
else
echo "Test execution failed, collecting logs..."
pushd $GITHUB_WORKSPACE/lynx/testing/integration_test/test_script
ls | grep -E "^lynx_e2e_devtools_.*\.log$" | xargs cat
popd
fi
- name: Collect Appium Server logs
if: always()
run: |
TASK_STATUS="${{ steps.run_test.outputs.TASK_STATUS }}"
if [ -n "$TASK_STATUS" ] && [ "$TASK_STATUS" = "success" ]; then
echo "Test execution succeeded."
else
echo "Test execution failed, collecting logs..."
pushd $GITHUB_WORKSPACE/lynx/
if [ -f "appium.log" ]; then
cat appium.log
else
echo "Warning: appium.log file not found"
fi
popd
fi
- name: Collect Generated Resource Files
if: always()
run: |
TASK_STATUS="${{ steps.run_test.outputs.TASK_STATUS }}"
if [ -n "$TASK_STATUS" ] && [ "$TASK_STATUS" = "success" ]; then
echo "Test execution succeeded."
else
pushd $GITHUB_WORKSPACE/lynx/testing/integration_test/test_script
if [ -d "screenshots" ]; then
zip -r screenshots.zip ./screenshots/
echo "Successfully created screenshots.zip"
echo "ZIP_RESOURCES=success" >> $GITHUB_OUTPUT
else
echo "Warning: screenshot directory not found"
fi
fi
id: collect_resource
- name: Upload Generated Resource Files
if: always() && steps.collect_resource.outputs.ZIP_RESOURCES == 'success'
uses: lynx-infra/upload-artifact@332ec52e99f7cbf1fbbdc9bcc09280d49147d092
continue-on-error: true
with:
name: android-e2e-resources
path: '${{ github.workspace }}/lynx/testing/integration_test/test_script/screenshots.zip'
android-integeration-test:
needs: [android-sdk-release]
timeout-minutes: 15
runs-on: lynx-ubuntu-22.04-large
steps:
- name: Download Integeration Demo Source Code
uses: actions/checkout@v4.2.2
with:
repository: lynx-family/integrating-lynx-demo-projects
ref: b106f7f21d5221acfed645f4afa9d829a1cc0cc2
path: lynx
- name: Cherry Pick Commit To Build With Local AAR
run: |
echo "GITHUB_WORKSPACE: $GITHUB_WORKSPACE"
git config user.name "GitHub Actions"
git config user.email "actions@github.com"
git fetch origin 12858f5a4f51454057f738f0b1d2bb001986dc91
git cherry-pick 12858f5a4f51454057f738f0b1d2bb001986dc91
- name: Download Lynx SDK Artifacts
uses: lynx-infra/download-artifact@79d9914484f933089c2840552cf439bac85debad
with:
name: android-sdk-release
path: lynx
- name: Python Setup
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Setup Java SDK
uses: actions/setup-java@v3
with:
java-version: 17
distribution: 'zulu'
- name: Gradle Wrapper Cache
uses: lynx-infra/cache@5c6160a6a4c7fca80a2f3057bb9dfc9513fcb732
with:
path: ~/.gradle/wrapper/dists
key: gradle-wrapper-${{ runner.os }}
- name: Setup cache action
uses: lynx-infra/cache@5c6160a6a4c7fca80a2f3057bb9dfc9513fcb732
with:
path: ~/.gradle/caches/modules-2
key: gradle-integration-deps-${{ runner.os }}
- name: Build With Local AAR
id: build_apk
run: |
set -e
pushd android/JavaEmptyProject/
python3 shell/prepare_package_with_local_aar.py $GITHUB_WORKSPACE/lynx/artifacts-collection.zip 0.0.1-alpha.1
./gradlew publishAllZips
./gradlew :app:assembleDebug
popd
harmony-explorer-build:
runs-on: lynx-custom-container
container:
image: ghcr.io/lynx-family/ubuntu24.04-harmony@sha256:bf493c3710de3c44bfa84caf402c0727b9310c42497f6e52580ad441ea640ef1
credentials:
username: lynx-family
password: ${{ secrets.GITHUB_TOKEN }}
defaults:
run:
shell: bash
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
- name: Build Explorer App
uses: ./lynx/.github/actions/harmony-explorer-build
ios-explorer-build:
timeout-minutes: 60
runs-on: lynx-darwin-14-medium
strategy:
matrix:
arch: [arm64, x86_64]
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
- name: Build Explorer App
uses: ./lynx/.github/actions/ios-explorer-build
with:
build-arch: ${{ matrix.arch }}
build-params: '--integration-test'
- name: upload artifact
uses: lynx-infra/upload-artifact@332ec52e99f7cbf1fbbdc9bcc09280d49147d092
continue-on-error: true
with:
name: ios-explorer-build-${{ matrix.arch }}
path: '${{ github.workspace }}/lynx/LynxExplorer-${{ matrix.arch }}.app.tar.gz'
ios-integration-test:
timeout-minutes: 15
runs-on: lynx-darwin-14-medium
env:
LOCAL_POD_NAME: 'local_pod'
POD_VERSION: '0.0.1-alpha.1'
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
fetch-depth: 2
ref: ${{ github.event.pull_request.head.sha }}
path: lynx
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
- name: Setup Ruby Cache
uses: ./lynx/.github/actions/ios-common-deps
with:
cache-backend: 'lynx-infra'
- name: Prepare cocoapods publish source
run: |-
source tools/envsetup.sh
export LANG=en_US.UTF-8
python3 tools/ios_tools/cocoapods_publish_helper.py --prepare-source --tag $POD_VERSION --version $POD_VERSION --component all
- name: Publish to Local Pod Source
run: |-
cd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
git config --global user.name "lynx.authors"
git config --global user.email "lynx.authors@users.noreply.github.com"
python3 tools/ios_tools/cocoapods_publish_helper.py --publish_local $LOCAL_POD_NAME --component all
- name: Download the Demo Project
uses: actions/checkout@v4.2.2
with:
path: demo
repository: lynx-family/integrating-lynx-demo-projects
ref: 0ab9340e1e560f07d3d4c4331f8b62b0702d067a
- name: Build the Demo Project
run: |-
cd $GITHUB_WORKSPACE
python3 lynx/tools/ios_tools/process_podfile.py --action replace_pod_version --component Lynx --version $POD_VERSION --podfile demo/ios/HelloLynxObjc/Podfile
python3 lynx/tools/ios_tools/process_podfile.py --action replace_pod_version --component LynxService --version $POD_VERSION --podfile demo/ios/HelloLynxObjc/Podfile
python3 lynx/tools/ios_tools/process_podfile.py --action replace_pod_version --component XElement --version $POD_VERSION --podfile demo/ios/HelloLynxObjc/Podfile
python3 lynx/tools/ios_tools/process_podfile.py --action insert_pod_source --podfile demo/ios/HelloLynxObjc/Podfile --pod_source "file://$GITHUB_WORKSPACE/lynx/$LOCAL_POD_NAME"
cd demo/ios/HelloLynxObjc
export LANG=en_US.UTF-8
BUNDLE_GEMFILE=$GITHUB_WORKSPACE/lynx/Gemfile bundle --version
BUNDLE_GEMFILE=$GITHUB_WORKSPACE/lynx/Gemfile bundle exec pod install
xcodebuild -workspace Hello-Lynx-OC.xcworkspace/ -scheme Hello-Lynx-OC CODE_SIGNING_ALLOWED=NO build
ios-e2e-test:
timeout-minutes: 60
needs: [ios-explorer-build]
env:
APPIUM_TEST_SERVER_PORT: 4723
APPIUM_TEST_SERVER_HOST: 127.0.0.1
runs-on: lynx-darwin-14-medium
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
- name: Setup Ruby Cache
uses: ./lynx/.github/actions/ios-common-deps
with:
cache-backend: 'lynx-infra'
- name: Get iOS simulator SDK version
run: |
xcodebuild -showsdks | grep -Eo -m 1 "iphonesimulator([0-9]{1,}\.)+[0-9]{1,}" > sdk.txt
sdkVersion=$(awk '{ sub(/iphonesimulator/,""); print $0 }' sdk.txt)
echo "SDK_VERSION=$sdkVersion" >> $GITHUB_ENV
- name: Build WebDriverAgent
uses: nick-fields/retry@v3
with:
max_attempts: 2
retry_wait_seconds: 5
timeout_minutes: 5
command: |
pushd $GITHUB_WORKSPACE
git clone https://github.com/appium/WebDriverAgent.git
xcodebuild build-for-testing \
-project ./WebDriverAgent/WebDriverAgent.xcodeproj \
-scheme WebDriverAgentRunner \
-configuration Release \
-sdk iphonesimulator${{ env.SDK_VERSION }} \
-derivedDataPath ./WebDriverAgent/DerivedData \
-destination "platform=iOS Simulator,OS=${{ env.SDK_VERSION }},name=iPhone 15" \
SYMROOT=$GITHUB_WORKSPACE/Build/Products
popd
- name: Start iOS Simulator
run: |
xcrun simctl boot "iPhone 15"
- name: Install WebDriverAgent to Simulator
run: |
set -e
SIMULATOR_UDID=$(xcrun simctl list devices "iOS ${{ env.SDK_VERSION }}" | grep "iPhone 15 (" | grep -oE '[0-9A-F-]{36}')
echo "SIMULATOR_UDID=$SIMULATOR_UDID" >> $GITHUB_ENV
xcrun simctl install $SIMULATOR_UDID \
$GITHUB_WORKSPACE/Build/Products/Release-iphonesimulator/WebDriverAgentRunner-Runner.app
- name: Install Appium
run: |
pushd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
pnpm install appium@2.11.2 -w
pnpm install appium-xcuitest-driver@7.24.18 -w
pnpm install appium-ios-simulator@6.2.6 -w
popd
env:
npm_config_store_dir: ~/.local/share/pnpm/store
- name: Download Explorer App
uses: lynx-infra/download-artifact@79d9914484f933089c2840552cf439bac85debad
with:
name: ios-explorer-build-arm64
path: lynx/explorer/darwin/ios/lynx_explorer/build_temp
- name: Install Explorer App
run: |
mkdir -p $GITHUB_WORKSPACE/lynx/explorer/darwin/ios/lynx_explorer/build_temp/LynxExplorer.app
tar -xzvf $GITHUB_WORKSPACE/lynx/explorer/darwin/ios/lynx_explorer/build_temp/LynxExplorer-arm64.app.tar.gz -C $GITHUB_WORKSPACE/lynx/explorer/darwin/ios/lynx_explorer/build_temp/LynxExplorer.app
xcrun simctl install $SIMULATOR_UDID $GITHUB_WORKSPACE/lynx/explorer/darwin/ios/lynx_explorer/build_temp/LynxExplorer.app
- name: Start Appium server
run: |
pushd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
pushd node_modules/appium/node_modules/.bin
ls
./appium server \
--port=$APPIUM_TEST_SERVER_PORT \
--address=$APPIUM_TEST_SERVER_HOST \
--log-no-colors \
--log-timestamp \
2>&1 > "$GITHUB_WORKSPACE/lynx/appium.log" < /dev/null &
popd
popd
- name: Check if Appium Server is running
run: |
max_attempts=10
attempt=0
while [ $attempt -lt $max_attempts ]; do
if nc -z $APPIUM_TEST_SERVER_HOST $APPIUM_TEST_SERVER_PORT; then
echo "Appium Server is running."
break
else
attempt=$((attempt + 1))
echo "Attempt $attempt: Appium Server is not yet running. Retrying in 2 seconds..."
sleep 2
fi
done
if [ $attempt -eq $max_attempts ]; then
echo "Failed to start Appium Server."
exit 1
fi
- name: Run iOS E2E Test
uses: nick-fields/retry@v3
with:
max_attempts: 2
retry_wait_seconds: 5
timeout_minutes: 20
command: |
set -e
pushd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
pushd $GITHUB_WORKSPACE/lynx/testing/integration_test/test_script
export server_port=$APPIUM_TEST_SERVER_PORT
export platform=ios
export APPIUM_isHeadless=True
pip3 install -r requirements.txt
python3 manage.py runtest ios_test.core
echo "TASK_STATUS=success" >> $GITHUB_OUTPUT
popd
popd
id: run_test
- name: Collect Lynx-E2E execution logs
if: always()
run: |
TASK_STATUS="${{ steps.run_test.outputs.TASK_STATUS }}"
if [ -n "$TASK_STATUS" ] && [ "$TASK_STATUS" = "success" ]; then
echo "Test execution succeeded."
else
echo "Test execution failed, collecting logs..."
pushd $GITHUB_WORKSPACE/lynx/testing/integration_test/test_script
ls | grep -E "^lynx_e2e_devtools_.*\.log$" | xargs cat
popd
fi
- name: Collect Appium Server logs
if: always()
run: |
TASK_STATUS="${{ steps.run_test.outputs.TASK_STATUS }}"
if [ -n "$TASK_STATUS" ] && [ "$TASK_STATUS" = "success" ]; then
echo "Test execution succeeded."
else
echo "Test execution failed, collecting logs..."
pushd $GITHUB_WORKSPACE/lynx/
if [ -f "appium.log" ]; then
cat appium.log
else
echo "Warning: appium.log file not found"
fi
popd
fi
- name: Collect Generated Resource Files
if: always()
run: |
TASK_STATUS="${{ steps.run_test.outputs.TASK_STATUS }}"
if [ -n "$TASK_STATUS" ] && [ "$TASK_STATUS" = "success" ]; then
echo "Test execution succeeded."
else
pushd $GITHUB_WORKSPACE/lynx/testing/integration_test/test_script
if [ -d "screenshots" ]; then
zip -r screenshots.zip ./screenshots/
echo "Successfully created screenshots.zip"
echo "ZIP_RESOURCES=success" >> $GITHUB_OUTPUT
else
echo "Warning: screenshot directory not found"
fi
fi
id: collect_resource
- name: Upload Generated Resource Files
if: always() && steps.collect_resource.outputs.ZIP_RESOURCES == 'success'
uses: lynx-infra/upload-artifact@332ec52e99f7cbf1fbbdc9bcc09280d49147d092
continue-on-error: true
with:
name: ios-e2e-resources
path: '${{ github.workspace }}/lynx/testing/integration_test/test_script/screenshots.zip'
clay-macos-build:
timeout-minutes: 60
runs-on: lynx-darwin-14-medium
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
- name: Build Clay Example
uses: ./lynx/.github/actions/clay-macos-build
- name: upload artifact
uses: lynx-infra/upload-artifact@332ec52e99f7cbf1fbbdc9bcc09280d49147d092
with:
name: clay_glfw
path: '${{ github.workspace }}/lynx/out/Default/clay_glfw'
macos-explorer-build:
timeout-minutes: 60
runs-on: lynx-darwin-14-medium
strategy:
matrix:
arch: [arm64, x64]
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
- name: Build macOS Explorer
uses: ./lynx/.github/actions/macos-explorer-build
with:
build-arch: ${{ matrix.arch }}
- name: upload artifact
uses: lynx-infra/upload-artifact@332ec52e99f7cbf1fbbdc9bcc09280d49147d092
with:
name: macos-explorer-build-${{ matrix.arch }}
path: '${{ github.workspace }}/lynx/LynxExplorer-macos-${{ matrix.arch }}.app.tar.gz'
================================================
FILE: .github/workflows/cocoapods_token_keepalive.yml
================================================
name: CocoaPods Token Keepalive
on:
schedule:
- cron: '0 4 * * *'
workflow_dispatch:
jobs:
token-keepalive:
runs-on: lynx-darwin-14-medium
env:
COCOAPODS_TRUNK_TOKEN: ${{ secrets.COCOAPODS_TRUNK_TOKEN }}
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
- name: Setup Ruby Cache
uses: ./lynx/.github/actions/ios-common-deps
with:
cache-backend: 'lynx-infra'
- name: Keep CocoaPods Token alive
run: |
cd $GITHUB_WORKSPACE/lynx
SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk bundle install --path .bundle
bundle exec pod trunk me --silent
================================================
FILE: .github/workflows/codeql.yml
================================================
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: 'CodeQL Advanced'
on:
schedule:
- cron: '28 19 * * *'
jobs:
analyze:
name: Analyze (${{ matrix.language }})
# Runner size impacts CodeQL analysis time. To learn more, please see:
# - https://gh.io/recommended-hardware-resources-for-running-codeql
# - https://gh.io/supported-runners-and-hardware-resources
# - https://gh.io/using-larger-runners (GitHub.com only)
# Consider using larger runners or machines with greater resources for possible analysis time improvements.
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
permissions:
# required for all workflows
security-events: write
# required to fetch internal or private CodeQL packs
packages: read
# only required for workflows in private repositories
actions: read
contents: read
strategy:
fail-fast: false
matrix:
include:
- language: actions
build-mode: none
- language: c-cpp
build-mode: autobuild
- language: java-kotlin
build-mode: autobuild
- language: javascript-typescript
build-mode: none
- language: python
build-mode: none
- language: ruby
build-mode: none
# CodeQL supports the following values keywords for 'language': 'actions', 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'rust', 'swift'
# Use `c-cpp` to analyze code written in C, C++ or both
# Use 'java-kotlin' to analyze code written in Java, Kotlin or both
# Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
# To learn more about changing the languages that are analyzed or customizing the build mode for your analysis,
# see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.
# If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how
# your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
steps:
- name: Checkout repository
uses: actions/checkout@v4
# Add any setup steps before running the `github/codeql-action/init` action.
# This includes steps like installing compilers or runtimes (`actions/setup-node`
# or others). This is typically only required for manual builds.
# - name: Setup runtime (example)
# uses: actions/setup-example@v1
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality
# If the analyze step fails for one of the languages you are analyzing with
# "We were unable to automatically build your code", modify the matrix above
# to set the build mode to "manual" for that language. Then modify this step
# to build your code.
# ℹ️ Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
- name: Run manual build steps
if: matrix.build-mode == 'manual'
shell: bash
run: |
echo 'If you are using a "manual" build mode for one or more of the' \
'languages you are analyzing, replace this with the commands to build' \
'your code, for example:'
echo ' make bootstrap'
echo ' make release'
exit 1
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
with:
category: '/language:${{matrix.language}}'
================================================
FILE: .github/workflows/css-defines-publish.yml
================================================
name: css_defines_publish
on: workflow_dispatch
jobs:
css-defines-publish:
runs-on: ubuntu-latest
environment: npm
permissions:
contents: read
id-token: write
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
- name: Python Setup
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Install SSH Key
uses: kielabokkie/ssh-key-and-known-hosts-action@v1
with:
ssh-private-key: ${{ secrets.PRIVATE_SSH_KEY }}
ssh-host: github.com
- uses: actions/setup-node@v4
with:
node-version: 22
registry-url: 'https://registry.npmjs.org'
- name: Setup Package Managers
run: |
npm install -g npm@latest
npm --version
- name: Build
run: |-
cd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
- name: Publish
run: |-
cd $GITHUB_WORKSPACE/lynx/tools/css_generator
npm publish --access public --provenance
================================================
FILE: .github/workflows/issue-management.yml
================================================
name: issue_management
on:
issues:
types:
- opened
- assigned
permissions:
issues: write
jobs:
add-label-triage:
timeout-minutes: 30
runs-on: lynx-ubuntu-22.04-mini
if: github.event.action == 'opened' # Only run for 'opened' event
steps:
- name: Add 'status:need triage' label to new issues
uses: actions-ecosystem/action-add-labels@bd52874380e3909a1ac983768df6976535ece7f8
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
labels: status:need triage
update-label-assigned:
timeout-minutes: 30
runs-on: lynx-ubuntu-22.04-mini
if: github.event.action == 'assigned' # Only run for 'assigned' event
steps:
# We won't check if the label exists. We are counting on the robustness of the actions.
- name: Remove 'status:need triage' label
uses: actions-ecosystem/action-remove-labels@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
labels: status:need triage
- name: Add 'status:assigned' label
uses: actions-ecosystem/action-add-labels@bd52874380e3909a1ac983768df6976535ece7f8
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
labels: status:assigned
================================================
FILE: .github/workflows/lynx-core-publish.yml
================================================
name: lynx_core_publish
on: workflow_dispatch
jobs:
lynx_types_publish:
runs-on: ubuntu-latest
environment: npm
permissions:
contents: read
id-token: write
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
- name: Python Setup
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
with:
cache-backend: github
- uses: actions/setup-node@v4
with:
node-version: 22
registry-url: 'https://registry.npmjs.org'
- name: Setup Package Managers
run: |
npm install -g npm@latest
npm --version
- name: Build
run: |-
cd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
pushd js_libraries/lynx-runtime-shared
npm run build
popd
pushd js_libraries/lynx-core
npm run build:web
popd
- name: Publish
run: |-
cd $GITHUB_WORKSPACE/lynx/js_libraries/lynx-core
npm publish --access public --provenance
================================================
FILE: .github/workflows/lynx-types-publish.yml
================================================
name: lynx_types_publish
on:
workflow_dispatch:
inputs:
tag:
description: 'The npm tag to publish with.'
required: false
default: 'latest'
jobs:
lynx_types_publish:
runs-on: ubuntu-latest
environment: npm
permissions:
contents: read
id-token: write
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
- name: Python Setup
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
with:
cache-backend: github
- uses: actions/setup-node@v4
with:
node-version: 22
registry-url: 'https://registry.npmjs.org'
- name: Setup Package Managers
run: |
npm install -g npm@latest
npm --version
- name: Build
run: |-
cd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
- name: Update version for non-latest tags
if: github.event.inputs.tag != 'latest'
run: |
cd $GITHUB_WORKSPACE/lynx/js_libraries/types
npm version prerelease --preid=${{ github.event.inputs.tag }} --no-git-tag-version
- name: Publish
run: |-
cd $GITHUB_WORKSPACE/lynx/js_libraries/types
npm publish --access public --provenance --tag ${{ github.event.inputs.tag }}
================================================
FILE: .github/workflows/publish-release.yml
================================================
name: publish-release
on:
workflow_dispatch:
inputs:
tag:
description: 'release tag'
required: false
type: string
commitId:
description: 'specific commit ID to build'
required: false
type: string
release:
types: [published]
jobs:
get-version:
runs-on: lynx-ubuntu-22.04-medium
timeout-minutes: 60
outputs:
version: ${{ steps.get_version.outputs.VERSION }}
steps:
- name: Get Version
id: get_version
run: |-
if [ ${{ github.event_name }} == 'workflow_dispatch' ]; then
version=${{ github.event.inputs.tag }}
else
version=$(echo ${{ github.ref }} | awk -F "/" '{print $3}')
fi
if [[ $version =~ ^[0-9]+\.[0-9]+\.[0-9]+$ || \
$version =~ ^[0-9]+\.[0-9]+\.[0-9]+-rc\.[0-9]+$ || \
$version =~ ^[0-9]+\.[0-9]+\.[0-9]+-alpha\.[0-9]+$ ]]; then
echo "Version is valid"
echo "VERSION=$version" >> $GITHUB_OUTPUT;
else
echo "Version is invalid"
exit 1
fi
android-explorer-build:
timeout-minutes: 60
runs-on: lynx-ubuntu-22.04-large
needs: get-version
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
ref: ${{ github.event.inputs.commitId || github.ref }}
fetch-depth: 0
- name: Build Explorer App
uses: ./lynx/.github/actions/android-explorer-build
with:
abi-list: armeabi-v7a,x86,x86_64,arm64-v8a
- name: push to release
uses: ncipollo/release-action@v1
with:
tag: ${{ needs.get-version.outputs.version }}
token: ${{ secrets.GITHUB_TOKEN }}
artifacts: '${{ github.workspace }}/lynx/explorer/android/lynx_explorer/build/outputs/apk/noasan/release/LynxExplorer-noasan-release.apk'
allowUpdates: true
body: ''
ios-explorer-build:
timeout-minutes: 60
runs-on: lynx-darwin-14-medium
needs: get-version
strategy:
matrix:
arch: [arm64, x86_64]
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
ref: ${{ github.event.inputs.commitId || github.ref }}
fetch-depth: 0
- name: Build Explorer App
uses: ./lynx/.github/actions/ios-explorer-build
with:
build-arch: ${{ matrix.arch }}
- name: push explorer to release
uses: ncipollo/release-action@v1
with:
tag: ${{ needs.get-version.outputs.version }}
token: ${{ secrets.GITHUB_TOKEN }}
artifacts: '${{ github.workspace }}/lynx/LynxExplorer-${{ matrix.arch }}.app.tar.gz'
allowUpdates: true
body: ''
harmony-explorer-build:
runs-on: lynx-custom-container
container:
image: ghcr.io/lynx-family/ubuntu24.04-harmony@sha256:bf493c3710de3c44bfa84caf402c0727b9310c42497f6e52580ad441ea640ef1
credentials:
username: lynx-family
password: ${{ secrets.GITHUB_TOKEN }}
needs: get-version
defaults:
run:
working-directory: ${{ github.workspace }}
shell: bash
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
ref: ${{ github.event.inputs.commitId || github.ref }}
fetch-depth: 0
- name: Build Explorer App
uses: ./lynx/.github/actions/harmony-explorer-build
- name: push explorer to release
uses: ncipollo/release-action@v1
with:
tag: ${{ needs.get-version.outputs.version }}
token: ${{ secrets.GITHUB_TOKEN }}
artifacts: '${{ github.workspace }}/lynx/explorer/harmony/lynx_explorer/build/default/outputs/default/lynx_explorer-default-unsigned.hap'
allowUpdates: true
body: ''
android-sdk-release:
runs-on: ubuntu-22.04
needs: get-version
timeout-minutes: 240
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
ref: ${{ github.event.inputs.commitId || github.ref }}
fetch-depth: 0
- name: Free up disk space
uses: ./lynx/.github/actions/free-android-disk
- name: Python Setup
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Setup Android environment
uses: ./lynx/.github/actions/setup-android-env
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
with:
cache-backend: 'github'
- name: Android SDK Release
uses: ./lynx/.github/actions/android-sdk-release
with:
version: ${{ needs.get-version.outputs.version }}
signingKeyId: ${{ secrets.SIGNING_KEY_ID }}
signingPassword: ${{ secrets.SIGNING_PASSWORD }}
signingSecretKey: ${{ secrets.SIGNING_SECRET_KEY }}
abiList: 'armeabi-v7a,x86,x86_64,arm64-v8a'
- name: Package maven artifacts
run: |-
cd $GITHUB_WORKSPACE/lynx
pushd platform/android
./gradlew zipArtifacts -Pversion=${{ needs.get-version.outputs.version }} getArtifactList
popd
pushd platform/android/build
artifact_list=$(<artifact-list)
echo "::set-output name=artifact_list::$artifact_list"
popd
id: build_artifact
- name: Publish artifact to maven
uses: lynx-infra/maven-publish-action@53b4da2f23f9cfc4e905b135eda2724fcf5a0f0e
with:
portal_api_token: ${{ secrets.PORTAL_API_TOKEN }}
artifact_path_list: ${{ steps.build_artifact.outputs.artifact_list }}
ios-sdk-publish:
timeout-minutes: 60
runs-on: macos-14
needs: get-version
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
ref: ${{ github.event.inputs.commitId || github.ref }}
fetch-depth: 0
path: lynx
- name: Python Setup
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Set up Ruby + specify Bundler version
uses: ruby/setup-ruby@v1
with:
ruby-version: '2.6.10'
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
with:
cache-backend: github
- name: Setup Ruby Cache
uses: ./lynx/.github/actions/ios-common-deps
with:
cache-backend: 'github'
- name: Publish iOS SDK
uses: ./lynx/.github/actions/ios-sdk-publish
with:
version: ${{ needs.get-version.outputs.version }}
tag: ${{ needs.get-version.outputs.version }}
cocoapods_trunk_token: ${{ secrets.COCOAPODS_TRUNK_TOKEN }}
github_token: ${{ secrets.GITHUB_TOKEN }}
component: all
- name: Publish iOS dev SDK
uses: ./lynx/.github/actions/ios-sdk-publish
env:
LYNX_ENABLE_RECORDER: 1
with:
version: ${{ needs.get-version.outputs.version }}-dev
tag: ${{ needs.get-version.outputs.version }}
cocoapods_trunk_token: ${{ secrets.COCOAPODS_TRUNK_TOKEN }}
github_token: ${{ secrets.GITHUB_TOKEN }}
component: all
harmony-sdk-publish:
name: Publish Harmony SDK (${{ matrix.label }})
runs-on: lynx-custom-container
container:
image: ghcr.io/lynx-family/ubuntu24.04-harmony@sha256:25913874dad0557526b44f9c9ab30b9873080009db85bb569d718d2bb5f0e074
credentials:
username: lynx-family
password: ${{ secrets.GITHUB_TOKEN }}
defaults:
run:
shell: bash
needs: get-version
strategy:
matrix:
include:
- version_suffix: ''
modules: 'default'
build_param: ''
label: 'formal'
- version_suffix: '-dev'
modules: 'lynx lynx_devtool lynx_base'
build_param: '--dev'
label: 'dev'
steps:
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
override: true
- name: Install git-cliff
run: |
cargo install git-cliff --locked
git-cliff --version
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
fetch-depth: 0
fetch-tags: true
ref: ${{ github.event.inputs.commitId || github.ref }}
- name: Get latest tag
id: get-latest-tag
uses: ./lynx/.github/actions/get-latest-tag
with:
current-tag: ${{ needs.get-version.outputs.version }}
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
with:
cache-key-prefix: '-container'
- name: Generate Change Log
run: |
cd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
COMMIT_ID=$(git rev-list -n 1 ${{ steps.get-latest-tag.outputs.latest-tag }})
python3 explorer/harmony/script/generate_changelog.py --version ${{ needs.get-version.outputs.version }}${{ matrix.version_suffix }} --modules ${{ matrix.modules }} --base_commit $COMMIT_ID
- name: Build Harmony SDK
run: |
cd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
pushd platform/harmony && ohpm install && popd
pushd explorer/harmony && ohpm install && popd
python3 explorer/harmony/script/build.py ${{ matrix.build_param }} --build_lynx_core --build_har --modules ${{ matrix.modules }} --override_version ${{ needs.get-version.outputs.version }}${{ matrix.version_suffix }}
- name: Publish Harmony SDK
run: |
cd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
export PUBLISH_KEY_PASSPHRASE=${{ secrets.HARMONY_PUBLISH_KEY_PASSPHRASE }}
cat << EOF > publish_key
${{ secrets.HARMONY_PUBLISH_KEY }}
EOF
ohpm config set publish_registry https://ohpm.openharmony.cn/ohpm
export PUBLISH_ID=${{ secrets.HARMONY_PUBLISH_ID }}
export KEY_PATH=$GITHUB_WORKSPACE/lynx/publish_key
python3 explorer/harmony/script/publish.py --modules ${{ matrix.modules }} --version ${{ needs.get-version.outputs.version }}${{ matrix.version_suffix }}
================================================
FILE: .github/workflows/sdk-release-test.yml
================================================
name: sdk-release-test
on:
workflow_dispatch:
inputs:
commitId:
description: 'specific commit ID to build'
required: false
type: string
push:
branches:
- sdk_release_test/**
defaults:
run:
working-directory: lynx
jobs:
android-sdk-release-test:
timeout-minutes: 60
runs-on: ubuntu-22.04
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
ref: ${{ github.event.inputs.commitId || github.ref }}
fetch-depth: 0
- name: Free up disk space
uses: ./lynx/.github/actions/free-android-disk
- name: Python Setup
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Setup Android environment
uses: ./lynx/.github/actions/setup-android-env
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
with:
cache-backend: 'github'
- name: Build Android SDK
uses: ./lynx/.github/actions/android-sdk-release
with:
version: 0.0.1-alpha.1
- name: Collect and zip artifacts
run: |
cd $GITHUB_WORKSPACE/lynx/platform/android
./gradlew zipAllArtifacts
ios-sdk-release-test:
timeout-minutes: 15
runs-on: macos-14
env:
LOCAL_POD_NAME: 'local_pod'
POD_VERSION: '0.0.1-alpha.1'
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
ref: ${{ github.event.inputs.commitId || github.ref }}
fetch-depth: 0
- name: Python Setup
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Set up Ruby + specify Bundler version
uses: ruby/setup-ruby@v1
with:
ruby-version: '2.6.10'
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
with:
cache-backend: github
- name: Setup Ruby Cache
uses: ./lynx/.github/actions/ios-common-deps
with:
cache-backend: 'github'
- name: Prepare cocoapods publish source
run: |-
source tools/envsetup.sh
export LANG=en_US.UTF-8
python3 tools/ios_tools/cocoapods_publish_helper.py --prepare-source --tag $POD_VERSION --version $POD_VERSION --component all
- name: Publish to Local Pod Source
run: |-
cd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
git config --global user.name "lynx.authors"
git config --global user.email "lynx.authors@users.noreply.github.com"
python3 tools/ios_tools/cocoapods_publish_helper.py --publish_local $LOCAL_POD_NAME --component all
================================================
FILE: .github/workflows/tasm-publish.yml
================================================
name: tasm_publish
on:
push:
branches:
- develop
paths:
- 'oliver/lynx-tasm/package.json'
workflow_dispatch:
jobs:
check-version-change:
runs-on: ubuntu-latest
outputs:
version_changed: ${{ steps.check.outputs.version_changed }}
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
fetch-depth: 2 # latest 2 commits
- name: Check version field change or skip on manual trigger
id: check
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
echo "Manual trigger detected, skip version check."
echo "version_changed=true" >> $GITHUB_OUTPUT
else
cd $GITHUB_WORKSPACE/lynx
version_current=$(jq -r '.version' oliver/lynx-tasm/package.json)
if git rev-parse HEAD~1 >/dev/null 2>&1; then
version_before=$(git show HEAD~1:oliver/lynx-tasm/package.json | jq -r '.version')
else
version_before=""
fi
echo "Current version: $version_current"
echo "Previous version: $version_before"
if [ "$version_current" != "$version_before" ]; then
echo "version_changed=true" >> $GITHUB_OUTPUT
else
echo "version_changed=false" >> $GITHUB_OUTPUT
fi
fi
tasm-linux-build:
if: needs.check-version-change.outputs.version_changed == 'true'
runs-on: ubuntu-latest
needs: check-version-change
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
- name: Python Setup
uses: actions/setup-python@v5
with:
python-version: '3.13'
- uses: actions/setup-node@v4
with:
node-version: 18
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
with:
cache-backend: github
target: tasm
- name: Build Linux Tasm
run: |-
cd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
pushd oliver/lynx-tasm
npm install
npm run build:release:linux
popd
- name: Upload Linux Tasm Artifacts
uses: actions/upload-artifact@v4
with:
name: tasm_linux
path: lynx/oliver/lynx-tasm/build/linux/Release/lepus.node
tasm-darwin-build:
if: needs.check-version-change.outputs.version_changed == 'true'
runs-on: macOS-latest
needs: check-version-change
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
- name: Python Setup
uses: actions/setup-python@v5
with:
python-version: '3.13'
- uses: actions/setup-node@v4
with:
node-version: 18
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
with:
cache-backend: github
target: tasm
- name: Build Darwin Tasm
run: |-
cd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
pushd oliver/lynx-tasm
npm install
npm run build:release:darwin
popd
- name: Upload Darwin Tasm Artifacts
uses: actions/upload-artifact@v4
with:
name: tasm_darwin
path: lynx/oliver/lynx-tasm/build/darwin/Release/lepus.node
tasm-publish:
runs-on: macOS-latest
permissions:
contents: read
id-token: write
needs: [tasm-linux-build, tasm-darwin-build]
environment: npm
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
- name: Python Setup
uses: actions/setup-python@v5
with:
python-version: '3.13'
- uses: actions/setup-node@v4
with:
node-version: 22
registry-url: 'https://registry.npmjs.org'
- name: Setup Package Managers
run: |
npm install -g npm@latest
npm --version
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
with:
cache-backend: github
target: tasm
- name: Build Wasm Binary
run: |-
cd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
pushd oliver/lynx-tasm
npm install
npm run build:wasm
popd
- name: Download Linux Tasm Artifacts
uses: actions/download-artifact@v4
with:
name: tasm_linux
path: lynx/oliver/lynx-tasm/build/linux/Release
- name: Download Darwin Tasm Artifacts
uses: actions/download-artifact@v4
with:
name: tasm_darwin
path: lynx/oliver/lynx-tasm/build/darwin/Release
- name: Build
run: |-
cd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
pushd oliver/lynx-tasm
npm install
npm run build:wasm
- name: Publish
run: |-
cd $GITHUB_WORKSPACE/lynx/oliver/lynx-tasm
npm publish --access public --provenance
================================================
FILE: .github/workflows/type-config-publish.yml
================================================
name: type_config_publish
on:
workflow_dispatch:
inputs:
tag:
description: 'The npm tag to publish with.'
required: false
default: 'latest'
jobs:
type_config_publish:
runs-on: ubuntu-latest
environment: npm
permissions:
contents: read
id-token: write
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
- name: Python Setup
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
with:
cache-backend: github
- uses: actions/setup-node@v4
with:
node-version: 22
registry-url: 'https://registry.npmjs.org'
- name: Setup Package Managers
run: |
npm install -g npm@latest
npm --version
- name: Build
run: |-
cd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
- name: Update version for non-latest tags
if: github.event.inputs.tag != 'latest'
run: |
cd $GITHUB_WORKSPACE/lynx/js_libraries/type-config
npm version prerelease --preid=${{ github.event.inputs.tag }} --no-git-tag-version
- name: Test
run: |-
cd $GITHUB_WORKSPACE/lynx/js_libraries/type-config
npm test
- name: Publish
run: |-
cd $GITHUB_WORKSPACE/lynx/js_libraries/type-config
npm publish --access public --provenance --tag ${{ github.event.inputs.tag }}
================================================
FILE: .github/workflows/type-element-api-publish.yml
================================================
name: type_element_api_publish
on:
push:
branches:
- develop
paths:
- 'js_libraries/type-element-api/*'
workflow_dispatch:
jobs:
check-version-change:
runs-on: ubuntu-latest
outputs:
version_changed: ${{ steps.check.outputs.version_changed }}
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
fetch-depth: 1 # latest 1 commit
- uses: actions/setup-node@v4
with:
node-version: 22
registry-url: 'https://registry.npmjs.org'
- name: Setup Package Managers
run: |
npm install -g npm@latest
npm --version
- name: Check version field change
id: check
run: |
# achieve content of package.json
pushd $GITHUB_WORKSPACE/lynx/js_libraries/type-element-api
version_current=$(jq -r '.version' package.json)
version_before=$(npm view @lynx-js/type-element-api version)
echo "Current version: $version_current"
echo "Previous version: $version_before"
if [ "$version_current" != "$version_before" ]; then
echo "version_changed=true" >> $GITHUB_OUTPUT
else
echo "version_changed=false" >> $GITHUB_OUTPUT
fi
type_element_api_publish:
if: needs.check-version-change.outputs.version_changed == 'true'
needs: check-version-change
runs-on: ubuntu-latest
environment: npm
permissions:
contents: read
id-token: write
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
fetch-depth: 1 # latest 1 commit
- uses: actions/setup-node@v4
with:
node-version: 22
registry-url: 'https://registry.npmjs.org'
- name: Setup Package Managers
run: |
npm install -g npm@latest
npm --version
- name: Publish
run: |-
pushd $GITHUB_WORKSPACE/lynx/js_libraries/type-element-api
npm publish --access public
================================================
FILE: .gitignore
================================================
# Managed by Habitat
/platform/android/gradle/wrapper/gradle-6.7.1-all.zip
/build
/buildtools
/third_party/quickjs/src
/third_party/libcxx
/third_party/v8
/third_party/libcxxabi
/third_party/llvm
/third_party/glfw
/third_party/gyp
/third_party/googletest
/third_party/checkstyle
/third_party/xhook
/third_party/zlib
/third_party/RTF/
/third_party/NativeScript/include
/third_party/NativeScript/lib
/third_party/perfetto
/third_party/httplib
/third_party/boringssl
/third_party/webview2
/third_party/vulkan-deps
*.profraw
__pycache__
/venv
.venv
.venv.lock
*.log*
npm-debug.log*
yarn-debug.log*
yarn-error.log*
/*.podspec
.bundle
.pnpm-debug.log
ruby
# Auto generated files
/platform/android/lynx_android/src/main/java/com/lynx/tasm/featurecount/LynxFeatureCounter.java
/platform/darwin/common/lynx/feature_count/LynxFeature.h
/core/services/feature_count/feature.h
/js_libraries/lynx-core/common/feature.ts
core/build/gen/
/core/build/jni/gen
/core/build/jni/BUILD.gn
**/build/gen
/core/template_bundle/template_codec/binary_decoder/lynx_config_auto_gen.h
/core/template_bundle/template_codec/binary_decoder/lynx_config_constant_auto_gen.h
/core/template_bundle/template_codec/binary_decoder/lynx_config_auto_gen.cc
# Auto generated error code files
/platform/darwin/common/lynx/LynxErrorBehavior.m
/platform/darwin/common/lynx/LynxSubErrorCode.m
/platform/darwin/common/lynx/Public/LynxErrorBehavior.h
/platform/darwin/common/lynx/Public/LynxSubErrorCode.h
out/
platform/darwin/ios/JSAssets/
platform/android/lynx_js_sdk/src/debug/assets/
platform/android/lynx_js_sdk/src/main/assets/
tools/android_tools/ndk
tools/android_tools/sdk
platform/android/.gradle/
platform/android/local.properties
platform/android/lynx_android/.cxx/
platform/android/lynx_processor/bin/
platform/android/lynx_android/CMakeLists_impl/
platform/android/lynx_android/libs/
platform/android/lynx_devtool/src/main/jniLibs/
explorer/android/lynx_explorer/build/
explorer/android/.gradle/
explorer/android/.idea/
explorer/android/build/
explorer/android/gradle/wrapper/gradle-6.7.1-all.zip
explorer/android/local.properties
explorer/android/lynx_explorer/src/main/assets/*
!explorer/android/lynx_explorer/src/main/assets/testBench/
core/runtime/jsi/v8/CMakeLists_impl/
explorer/darwin/ios/lynx_explorer/Podfile.lock
explorer/darwin/ios/lynx_explorer/Pods
explorer/darwin/ios/lynx_explorer/LynxExplorer.xcworkspace/*
explorer/darwin/ios/lynx_explorer/LynxExplorer.xcodeproj/**
!explorer/darwin/ios/lynx_explorer/LynxExplorer.xcodeproj/
!explorer/darwin/ios/lynx_explorer/LynxExplorer.xcodeproj/project.pbxproj
!explorer/darwin/ios/lynx_explorer/LynxExplorer.xcodeproj/xcshareddata/
!explorer/darwin/ios/lynx_explorer/LynxExplorer.xcodeproj/xcshareddata/**
explorer/darwin/ios/lynx_explorer/LynxExplorer/Resource/*
!explorer/darwin/ios/lynx_explorer/LynxExplorer/Resource/testBench
explorer/darwin/ios/lynx_explorer/iOSCoreBuild/
explorer/darwin/ios/lynx_explorer/results_bundle
explorer/darwin/ios/lynx_explorer/xctestrunner
ruby/
# JSLibrary
node_modules
js_libraries/**/dist/
js_libraries/**/__dist__
js_libraries/**/output/
js_libraries/**/node_modules/
js_libraries/**/lib
js_libraries/lynx-core/src/common/feature.ts
/core/renderer/css/auto_gen_css_decoder.h
/core/renderer/css/auto_gen_css_decoder.cc
/core/renderer/css/css_property_id.h
/core/renderer/css/css_property_auto_gen_unittest.cc
/core/renderer/css/parser/animation_property_handler.h
/core/renderer/css/parser/bool_handler.h
/core/renderer/css/parser/border_style_handler.h
/core/renderer/css/parser/border_width_handler.h
/core/renderer/css/parser/color_handler.h
/core/renderer/css/parser/length_handler.h
/core/renderer/css/parser/number_handler.h
/core/renderer/css/parser/string_handler.h
/core/renderer/css/parser/time_handler.h
/core/renderer/css/parser/timing_function_handler.h
/core/renderer/starlight/style/auto_gen_css_type.h
/platform/darwin/common/lynx/public/base/LynxAutoGenCSSType.h
/platform/android/lynx_processor/src/main/java/com/lynx/tasm/behavior/PropertyIDConstants.java
/platform/android/lynx_android/src/main/java/com/lynx/tasm/behavior/AutoGenStyleConstants.java
# ignore all python script cache
**/__pycache__/
# ignore os specific hidden files
**/.DS_Store
# Editor specific files
.vscode
*.sublime-project
*.sublime-workspace
.idea
# ignore Gradle files
**/.gradle/
# api metadata
/tools/api/android
/tools/api/ios
/tools/api/docs/gen
================================================
FILE: .gn
================================================
# Copyright 2020 The Lynx Authors. All rights reserved.
# Licensed under the Apache License Version 2.0 that can be found in the
# LICENSE file in the root directory of this source tree.
script_executable = rebase_path("//.venv/bin/python3")
buildconfig = "//build/config/BUILDCONFIG.gn"
secondary_source = "//build/secondary/"
root = ":root"
default_args = {
lynx_dir = ""
# Disable ANGLE vulkan
angle_enable_vulkan = false
angle_build_vulkan_system_info = false
# Do not build ANGLE tests
angle_build_all = false
}
================================================
FILE: .habitat
================================================
habitat_version = "0.3.146-alpha.2"
solutions = [
{
'name': '.',
'deps_file': 'dependencies/DEPS',
'url': '',
'target_deps_files': {
'clay': 'dependencies/DEPS.clay',
'dev': 'dependencies/DEPS.dev',
'extension': 'dependencies/DEPS.extension',
'tasm': 'dependencies/DEPS.tasm',
'tools_shared': 'dependencies/DEPS.tools_shared',
'lynxtron': 'dependencies/DEPS.lynxtron',
},
}
]
================================================
FILE: .npmrc
================================================
# We are using flatten config of eslint and not using prettier
# Disable the default public-hoist-pattern(*-eslint-*, *-prettier-*)
public-hoist-pattern=
strict-peer-dependencies=true
engine-strict=true
registry=https://registry.npmjs.org
================================================
FILE: .prettierignore
================================================
__dist__/
dist/
packages/template-assembler-cli/lepus/**/*
packages/lynx-core/__tests__/fixtures/**/*
packages/lynx-core/lepus/**/*
*.d.ts
oliver/**/*.js
!oliver/**/*.config.js
!oliver/compiler-ng/scripts/*.js
!oliver/type-lynx/**/*.d.ts
node_modules/
================================================
FILE: .prettierrc
================================================
{
"bracketSpacing": true,
"printWidth": 80,
"singleQuote": true,
"tabWidth": 2,
"trailingComma": "es5",
"useTabs": false
}
================================================
FILE: .rtf/android-ut-lynx.template
================================================
# Copyright 2024 The Lynx Authors. All rights reserved.
builder({
"default": {
"args": [
"--parallel",
"--configure-on-demand",
"-x lint",
"-PabiList=x86",
"-Penable_lynx_android_test=true",
"-Penable_coverage=true",
],
"workspace": "platform/android",
"type": "gradle",
}
})
coverage({
"output": "out/coverage",
"type": "jacoco",
"jacoco_cli":"../third_party/jacoco/lib/jacococli.jar"
})
targets({
"LynxAndroid": {
"owners":["ZhaoSongGOO"],
"task": "LynxAndroid:assembleNoasanDebugAndroidTest",
"source_files":"platform/android/lynx_android/src/main/java",
"class_files":"platform/android/lynx_android/build/intermediates/javac/noasanDebug/classes/*",
"apk":"platform/android/lynx_android/build/outputs/apk/androidTest/noasan/debug/LynxAndroid-noasan-debug-androidTest.apk",
"package":"com.lynx.test",
"coverage":False,
},
"LynxDevtool": {
"owners":["ZhaoSongGOO"],
"task": "LynxDevtool:assembleNoasanDebugAndroidTest",
"source_files":"platform/android/lynx_devtool/src/main/java",
"class_files":"platform/android/lynx_devtool/build/intermediates/javac/noasanDebug/classes/*",
"apk":"platform/android/lynx_devtool/build/outputs/apk/androidTest/noasan/debug/LynxDevtool-noasan-debug-androidTest.apk",
"package":"com.example.lynxdevtool.test",
"coverage":False,
}
})
================================================
FILE: .rtf/config
================================================
plugins = ["NativeUT", "AndroidUT"]
================================================
FILE: .rtf/native-ut-devtool.template
================================================
# Copyright 2024 The Lynx Authors. All rights reserved.
# Licensed under the Apache License Version 2.0 that can be found in the
# LICENSE file in the root directory of this source tree.
builder({
"default" :{
"args": [
f"use_sccache={options.get_str('use_sccache', 'false')}",
"enable_lepusng_worklet=true",
"enable_unittests=true",
"enable_napi_binding=true",
"enable_coverage=true",
"enable_inspector=true",
],
"output": "out/Default",
"type": "gn",
},
"build_for_element_test":{
"args": [
"enable_lepusng_worklet=true",
"enable_unittests=true",
"enable_napi_binding=true",
"enable_coverage=true",
],
"output": "out/Default_element_test",
"type": "gn",
},
"build_for_agent_test":{
"args": [
"enable_lepusng_worklet=true",
"enable_unittests=true",
"enable_napi_binding=true",
"enable_coverage=true",
"enable_testbench_recorder=true",
"enable_testbench_replay=true",
],
"output": "out/Default_agent_test",
"type": "gn",
}
})
coverage({
"output": "out/coverage",
"ignores": [
"third_party/*",
".*_unittest.cc",
".*_unittest.h",
"core/*",
"core/base/*",
"core/runtime/vm/lepus/*",
"core/parser/*",
"core/runtime/*",
"testing/*"
],
"type": "llvm",
})
targets({
"devtool_element_exec": {
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
"builder":'build_for_element_test'
},
"devtoolng_unittest_exec": {
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
},
"devtool_base_unittest_exec": {
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
},
"devtool_agent_unittest_exec": {
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
"builder":'build_for_agent_test',
"args":["--gtest_filter=\"-*DISABLE*\""]
},
"js_debug_unittest_exec": {
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
},
"shared_data_unittest_exec": {
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
},
"test_bench_utils_unittest_exec": {
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
},
"message_handler_unittest_exec": {
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
},
})
================================================
FILE: .rtf/native-ut-lynx.template
================================================
# Copyright 2024 The Lynx Authors. All rights reserved.
# Licensed under the Apache License Version 2.0 that can be found in the
# LICENSE file in the root directory of this source tree.
builder({
"default" :{
"args": [
"enable_lepusng_worklet=true",
"enable_unittests=true",
"enable_inspector = true",
"enable_napi_binding=true",
"enable_coverage=true",
f"is_asan={options.get_str('enable_asan', 'false')}",
],
"output": "out/Default",
"type": "gn",
},
"builder_for_trace" :{
"args": [
"enable_lepusng_worklet=true",
"enable_unittests=true",
"enable_napi_binding=true",
"enable_coverage=true",
"enable_trace=\\\"perfetto\\\""
],
"output": "out/Default_test_enable_trace",
"type": "gn",
},
})
coverage({
"output": "out/coverage",
"ignores": [
".*_unittest.cc",
".*_unittests.cc",
".*_unittests.mm"
"*_tests.cc",
"*_test.cc",
".*_test.h",
".*_unittest.h",
".*_test.cc",
"core/shell/testing/*",
"core/animation/testing/*",
"core/renderer/ui_wrapper/testing/*",
"core/renderer/dom/air/testing/*",
"core/runtime/vm/lepus/compiler/encode_main.cc",
"testing/*",
] + options.get_dir_list("third_party", excludes=["base"]),
"type": "llvm",
})
targets({
"base_unittests_exec":{
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
"args":["--gtest_filter=\"-*TimeSensitiveTest*\""]
},
"binary_decoder_unittest_exec": {
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
},
"trace_unittests_exec": {
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
"builder":'builder_for_trace'
},
"profile_unittests_exec": {
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
"builder":'builder_for_trace'
},
"v8_profile_unittests_exec": {
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
"builder":'builder_for_trace'
},
"quickjs_profile_unittests_exec":{
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
"builder":'builder_for_trace'
},
"lepusng_profile_unittests_exec":{
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
"builder":'builder_for_trace'
},
"dom_unittest_exec":{
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
"args":["--gtest_filter=\"-*DISABLE*\""]
},
"value_wrapper_unittest_exec":{
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True
},
"record_unittest_exec":{
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True
},
"renderer_utils_unittests_exec": {
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
},
"replay_unittest_exec":{
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True
},
"shell_unittests_exec":{
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
"args":["--gtest_filter=\"-*DISABLE*\""]
},
"css_parser_test_exec":{
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
},
"css_encoder_test_exec":{
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
},
"style_object_encoder_testset_exec":{
"cwd": ".",
"owners":["Zhongyr"],
"coverage": True,
"enable_parallel":True,
},
"runtime_tests_exec":{
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
"retry":3,
},
"worklet_unittests_exec":{
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
},
"shared_data_test_exec":{
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
"retry":3,
},
"element_selector_unittests_exec":{
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
},
"lazy_bundle_test_exec":{
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
},
"animation_unittests_exec":{
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
},
"basic_animation_unittests_exec":{
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
"enable":False
},
"lynx_basic_animator_unittests_exec":{
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
"enable":True
},
"inspector_test_exec":{
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
},
"event_unittests_exec":{
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
},
"events_test_exec":{
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
},
"signal_test_exec": {
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
},
"starlight_unittest_exec":{
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
},
"runtime_common_unittests_exec":{
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
},
"js_runtime_unittests_exec":{
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
},
"lepus_runtime_unittests_exec":{
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
},
"task_unittests_exec":{
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
},
"page_config_unittests_exec":{
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
},
"mapbuffer_unittests_exec":{
"cwd": ".",
"owners":["ZhaoSongGOO"],
"coverage": True,
"enable_parallel":True,
},
"list_container_testset_exec":{
"cwd": ".",
"owners":["dingwang.wxx"],
"coverage": True,
"enable_parallel":True,
},
"pipeline_test_exec": {
"cwd": ".",
"owners":["yangguangzhao.solace", "nihao.royal"],
"coverage": True,
"enable_parallel":True,
},
"lynx_service_api_static_unittests_exec": {
"cwd": ".",
"owners":["dangyingkai", "nihao.royal"],
"coverage": True,
"enable_parallel": True,
}
})
================================================
FILE: .tools_shared
================================================
checker-config:
default-disable-checkers:
- 'deps'
- 'spell'
file-type-checker:
binary-files-allow-list:
- 'core/renderer/css/testing/*'
- 'devtool/lynx_devtool/resources/devtool-switch/src/assets/*'
- 'explorer/darwin/ios/Lynx_explorer/LynxExplorer/Assets.xcassets/AppIcon.appiconset/*'
- 'explorer/harmony/AppScope/resources/base/media/*'
- 'third_party/binding/idl-codegen/third_party/doc/_static/*'
- '^explorer/darwin/ios/lynx_explorer/*'
- '^explorer/homepage/assets/images/*'
- '^explorer/showcase/menu/assets/images/*'
- '^platform/android/gradle/wrapper/*'
- '^platform/android/lynx_android/src/main/res/*'
- '^platform/android/lynx_example/*'
- '^platform/android/lynx_test_bench/*'
- 'devtool/base_devtool/resources/images/*'
- 'devtool/lynx_devtool/resources/images/*'
- 'platform/android/lynx_devtool/src/main/res/drawable/*'
- 'explorer/android/gradle/*'
- 'explorer/android/lynx_explorer/*'
- 'explorer/android/lynx_explorer/src/main/res'
- 'testing/integration_test/test_script/resources/*'
- 'explorer/android/lynx_test_bench/scr/main/res'
coding-style-checker:
ignore-suffixes:
- '_jni.h'
- 'pnpm-lock.yaml'
- 'Podfile.yml'
- '.d.ts'
- '.r.ts'
ignore-dirs:
- '^core/build/gen/*'
- '^third_party/*'
- '^build/*'
- '^base/include/boost/*'
- '^third_party/(aes|double-conversion|modp_b64|rapidjson|binding|quickjs|napi)/*'
- '^explorer/darwin/ios/Lynx_explorer/LynxExplorer/Resource/'
- '^clay/testing/*'
- '^clay/third_party/txt/*'
cpplint-checker:
ignore-suffixes:
- '_jni.h'
- 'pnpm-lock.yaml'
- 'Podfile.yml'
- '.d.ts'
- '.r.ts'
ignore-dirs:
- '^core/build/gen/*'
- '^third_party/*'
- '^build/*'
- '^base/include/boost/*'
- '^third_party/(aes|double-conversion|modp_b64|rapidjson|binding|quickjs|napi)/*'
- '^explorer/darwin/ios/Lynx_explorer/LynxExplorer/Resource/'
- '^clay/testing/*'
- '^clay/third_party/txt/*'
api-checker:
api-check-bin: 'tools/api/main.py'
java-path:
- 'platform/android/lynx_android/src/main'
cpp-path:
- 'platform/darwin/ios/lynx'
- 'platform/darwin/common/lynx'
instruction-doc: https://github.com/lynx-family/lynx/blob/develop/CONTRIBUTING.md#static-code-analysis-tasks
gn-relative-path-checker:
skip-prefixes:
- "//PODS_ROOT"
- "//PODS_CONFIGURATION_BUILD_DIR"
- "//TARGET_BUILD_DIR"
- "//PODS_TARGET_SRCROOT"
- "//build_overrides"
- "//build"
- "//$lynx_dir"
- "//${lynx_dir}"
- "//third_party"
- "//config.gni"
- "//tools/idl_parser"
- "//out/"
- "//tools_shared"
header-path-checker:
processed-file-dirs:
- "base"
- "clay"
- "core"
- "devtool"
- "explorer"
- "oliver"
- "platform"
header-search-paths:
- "base"
- "clay"
- "core"
- "devtool"
- "explorer"
- "oliver"
- "platform"
- "third_party"
exclude-processed-file-dirs:
- "core/include/starlight_standalone"
- "/public/"
- "clay/third_party/"
- "third_party/napi/include/"
- "explorer/"
header-extend-prefixes:
- "public"
ignore-header-files:
- "skity/"
- "napi.h"
- "v8.h"
- "v8-inspector.h"
- "v8-profiler.h"
- "quickjs/include/"
- "persistent-handle.h"
- "trace-gc.h"
================================================
FILE: AGENTS.md
================================================
# AI Context & Guidelines
This repository contains a dedicated directory structure for AI agents to better understand the project's specific domain context, architectural decisions, and coding conventions.
## 🤖 For AI Agents
When working in this repository, please consult the contents of the **[`agents/`](./agents)** directory. This folder serves as a knowledge base containing:
- **Domain Knowledge**: Specific business logic and terminology used in this project.
- **Architecture Overview**: High-level design patterns and structural decisions.
- **Coding Standards**: Project-specific conventions that supplement general best practices.
**Action**: Before proposing significant changes or architectural updates, read the relevant documents in `agents/` to align with the project's established patterns.
================================================
FILE: BUILD.gn
================================================
# Copyright 2024 The Lynx Authors. All rights reserved.
# Licensed under the Apache License Version 2.0 that can be found in the
# LICENSE file in the root directory of this source tree.
import("clay/common/config.gni")
import("config.gni")
group("root") {
testonly = true
deps = [
":default",
":third_party_base_group",
":third_party_trace_group",
]
}
group("default") {
testonly = true
deps = [ "core:lynx_native" ]
if (is_android) {
deps += [ "platform/android:Android" ]
} else if (is_harmony) {
deps += [ "platform/harmony" ]
} else if (is_ios) {
deps += [ "platform/darwin/ios/lynx_service:LynxService" ]
deps += [ "platform/darwin/ios/lynx_service_api:LynxServiceAPI_podspec" ]
deps += [ "platform/darwin/ios/lynx_devtool:devtool_podspec" ]
deps += [ "platform/darwin/ios/lynx_xelement:XElement" ]
deps += [ "platform/darwin/ios:iOS" ]
deps += [ "devtool/base_devtool/darwin/ios:BaseDevtool_podspec" ]
} else if ((is_win || is_mac) && desktop_enable_embedder_layer) {
deps += [ "explorer:explorer" ]
}
if (enable_unittests) {
deps += [ "tools/gn_tools/test:gn_tools_test" ]
}
if (enable_clay) {
deps += [ "clay:standalone_lib" ]
}
}
group("all") {
# lynx core modules
deps = [ "core:lynx_core_native" ]
# testing
if (enable_unittests) {
testonly = true
deps += [ "testing" ]
}
}
group("oliver_group") {
deps = [ "oliver" ]
}
group("third_party_base_group") {
deps = []
testonly = true
if (enable_unittests) {
deps += [ "base/src:base_unittests_exec" ]
}
}
group("third_party_trace_group") {
deps = []
testonly = true
if (enable_unittests) {
deps += [ "base/trace/native:trace_tests" ]
}
}
================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to make participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment include:
- Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences
- Gracefully accepting constructive criticism
- Focusing on what is best for the community
- Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
- The use of sexualized language or imagery and unwelcome sexual attention or advances
- Trolling, insulting/derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others’ private information, such as a physical or electronic address, without explicit permission
- Other conduct which could reasonably be considered inappropriate in a professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
## Scope
This Code of Conduct applies within all project spaces, and it also applies when an individual is representing the project or its community in public spaces. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at opensource-conduct@tiktok.com. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project’s leadership.
## Attribution
This Code of Conduct is adapted from the Contributor Covenant, version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
For answers to common questions about this code of conduct, see https://www.contributor-covenant.org/faq
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to Lynx
First off, thank you for considering contributing to Lynx!
We welcome you to join Lynx Authors and become a member.
It's people like you who make this project great.
## How Can I Contribute?
### Reporting Bugs
If you find a bug, please open an issue with the following details:
- A clear and descriptive title for the issue.
- A description of the steps to reproduce the issue.
- Any additional information or screenshots that might help us understand the issue better.
### Suggesting Enhancements
We’re always open to new ideas! If you have a suggestion, please:
- Use the “Feature Request” issue template or create a new issue.
- Describe the enhancement you’d like and explain why it would be useful.
### Your First Code Contribution
Unsure where to start? You can find beginner-friendly issues using the “good first issue” label.
Working on these issues helps you get familiar with the codebase before tackling more complex problems.
### Pull Requests
When you’re ready to make a code change, please create a Pull Request:
1. Fork the repository and clone it to your local machine.
2. Create a new branch: `git checkout -b name-of-your-branch`.
3. Make your changes.
4. Once you have finished the necessary tests and verifications locally,
commit the changes with a commit message in the following format (some parts are optional):
```
[Label] Title of the commit message (one line)
Summary of change:
Longer description of change addressing as appropriate: why the change
is made, context if it is part of many changes, description of previous
behavior and newly introduced differences, etc.
Long lines should be wrapped to 72 columns for easier log message
viewing in terminals.
issue: #xxx
doc: https://xxxxxxxx
TEST: Test cases
```
Some parts in the message template are required, while others are optional.
We use the labels `[Required]` and `[Optional]` to differentiate them in the detailed explanation below:
- **[Required]** The first line of the commit message should be the title, summarizing the changes (the title must
be on a separate line).
- **[Required]** The title must start with at least one label, and the first label must be one of the following:
`Feature`, `BugFix`, `Refactor`, `Optimize`, `Infra`, `Testing`, `Doc`. The format should be: `[Label]`, e.g.,
`[BugFix]`, `[Feature]`, `[BugFix][Tools]` (there must be at least one space between the label(s) and the title
content, and the title must not be empty).
>
> Which label should I use? Here are the explanations for them:
> - **`[Feature]`**: New features, new functions, or changes to existing features and functions. For example:
> - `[Feature] Add new API for data binding` Add a new API for data binding
> - `[Feature] Add service for light sensors` Add a service for light sensors
> - `[Feature][Log] Support async event report` Support asynchronous event reporting
> - **`[BugFix]`**: Fixes for functional defects, performance anomalies, and problems in developer tools, etc.
For example:
> - `[BugFix] Fix exception when playing audio` Fix the exception when playing audio
> - `[BugFix] Fix leaks in xxx` Fix the memory leak problem in xxx
> - `[BugFix][DevTool] Fix data error in DevTool` Fix the data error in the debug tool
> - **`[Refactor]`**: The overall refactoring of a module or function (mainly refers to large-scale code rewriting
or architecture optimization; small-scale refactoring can be classified as Optimize). For example:
> - `[Refactor][Memory] Memory management in xxxx` Refactor the memory management of the xxx module
> - `[Refactor][TestBench] XX module in TestBench` Refactor the xxx module in the TestBench
> - **`[Optimize]`**: Small-scale optimization of a certain feature or indicator,
such as performance optimization, memory optimization, etc. For example:
> - `[Optimize][Performance] Jank when scrolling in xxxx` Optimization of the smoothness when scrolling in xxxx
> - **`[Infra]`**: Changes related to the compilation framework, CQ configuration, basic tools, etc. For example:
> - `[Infra][Compile] Use -Oz compile params in xxx` Use -Oz compilation parameters
> - **`[Testing]`**: Modifications related to test cases and test frameworks. For example:
> - `[Testing][Android] Fix xxx test case for Android` Fix a test case for Android
> - `[Testing] Optimize test process` Optimize the process of a certain test framework
>
>
> Modifications only involving test cases, even if it is a `BugFix`, should be classified as `Testing`.
If both `Feature` code and related test cases are submitted in the same patch,
it should be classified as `Feature`.
- **[Required]** The section following the title should be the summary, providing a detailed description of the
changes (there must be a blank line between the title and the summary).
- **[Optional]** The commit can be linked to an issue, and the issue ID needs to appear in the format
`issue: #xxx`.
- **[Optional]** The commit can be linked to a document. If you labeled your changes as `Feature` or `Refactor`,
this is required. The format of a doc link should be like this: `doc: https://xxxxxxx`
- **[Optional]** The commit can be linked to tests (unit tests, UI tests). You can write the case names in the
format: `TEST: test_case_1, test_case_2`
<br>
We have set up a CI workflow to ensure that the commit message meets our formatting requirements.
So please make sure your message is well formatted before starting the Pull Request process.
5. Push the changes to your remote branch and start a Pull Request.
> We encourage the submission of small patches and only accept PRs that contain a single commit. Therefore, please
split your PR into separate ones if it contains multiple commits, or squash them into a single commit if there are
not too many changes.
> The CI workflow will reject any PR that contains more than one commit.
6. Make sure that your Pull Request adheres to the style guide and is properly documented.
## Verifying and Reviewing Pull Requests
A Pull Request needs to be verified by the CI workflows and reviewed by the Lynx authors before being merged.
Once you submit a Pull Request, you can invite the contributors of the repository to review your changes.
If you have no idea whom to invite to review your changes,
the GitHub branch protection rules and `git blame` are the right places to start.
While any contributor can review your changes, at least one of the authors from
[default reviewers](./DEFAULT_REVIEWERS) should be on the reviewer list.
Default reviewers can help trigger the CI workflow run to verify the changes
(if this is your first PR for Lynx, you'll see a pending approval on the PR discussion area after you submit the PR)
and then start the landing process.
> The workflow run needs to be triggered by default reviewers so they can ensure the new changes
will not introduce any risks.
Typically, a Pull Request will be reviewed **within one week**.
The landing process will be triggered manually if the changes pass all CI checks and are ready to be merged.
### Static Code Analysis Tasks
CI tasks include static code analysis, unit testing, building, etc. You can run static code analysis tasks:
```
source tools/envsetup.sh
tools/hab sync . -f
git lynx check
```
The table below shows the specific tasks performed by `git lynx check`:
| Task Name | Description |
| --------------------- | ----------------------------------------------------------------------------------------------------- |
| `coding-style` | Check the coding style of files |
| `commit-message` | Check the format of commit message |
| `cpplint` | Check your C++ code for style violations and potential errors |
| `java-lint` | Check your Java code for style violations and potential errors |
| `android-check-style` | Check the import style of Android code |
| `file-type` | Check whether there are any binary files (We do not recommend storing binary files in the repository) |
| `api-check` | Check changes to public APIs and update the corresponding API files as needed |
These tasks can also be executed individually via commands, for example, the `api-check` task can be run with `git lynx check --checkers=api-check`.
The specific programming languages and tools supported by `coding-style` task:
| Language | Supported | Formatting Tool |
| ---------------------- | --------- | --------------- |
| C,C++,Objective-C,Java | ✅ | clang-format |
| TypeScript | ✅ | prettier |
| GN | ✅ | gn |
## Landing Pull Requests
To make sure that new changes won't break the additional tests,
all Pull Requests need to be landed by a self-hosted CI system.
When a Pull Request is ready to be merged, default reviewers will comment the command `/land` on the PR.
Then the CI system will start the landing process running full tests.
Please be patient, as that could take a while.
If a failure occurs during the landing process, we have two approaches to handle different situations:
- If a change that breaks the tests is reasonable, the default reviewers will fix them in the self-hosted codebase
and restart the failed process. In this situation, the PR author needs to do nothing except wait for it to be merged.
- If the changes are found to have bugs during testing, the person who started the landing process is responsible for
providing feedback on the issue and relevant information to the author of the PR. Once the bugs are fixed, the author
can restart from verifying and reviewing the PR and then wait for someone to reland it.
When your changes pass all checks in the self-hosted CI system, the PR will be merged automatically.
## Code Style
Our project adheres to the coding style guidelines provided by Google.
You can find the detailed guidelines here: [Google's Style Guides](https://google.github.io/styleguide/).
Following these style guides helps ensure that our code is consistent, clear, and of high quality.
Please make sure to familiarize yourself with these guidelines of C++, Java, Objective-C,
and Python before contributing to the project.
We provide a convenient tool called `git lynx` that can automatically format your code when coding style checks fail. Note that it will only check changes that have been committed.
```
git lynx format
```
Special thanks to Google for making these comprehensive style guides available for developers!
## Testing
Make sure your changes are covered by tests, if applicable.
Run the existing tests to ensure everything works as expected:
- [Unit Tests](testing/README_UT.md)
## Code of Conduct
Please note that all participants in this project are expected to uphold our [Code of Conduct](CODE_OF_CONDUCT.md).
By participating, you agree to abide by its terms.
We're excited to see your contributions! Thank you!
================================================
FILE: CPPLINT.cfg
================================================
set noparent
filter=-,+lynx_custom/new_java_ref,+build/namespaces,+build/c++14,+build/class,+build/c++tr1,+build/deprecated,+build/endif_comment,+build/explicit_make_pair,+build/forward_decl,+build/header_guard,+build/include_what_you_use,+runtime/casting,+runtime/init,+runtime/invalid_increment,+runtime/member_string_references,+runtime/memset,+runtime/indentation_namespace,+runtime/operator,+runtime/vlog
exclude_files=.*\.java
exclude_files=.*\.mm
exclude_files=.*\.m
exclude_files=.*unittest\.cc
exclude_files=.*mock_element\.cc
================================================
FILE: DEFAULT_REVIEWERS
================================================
nhsprite
AdrianLCA
Awuiil
BiggerDragonDragon
ChrisChan0668
cjnhust
codeoxpower
colinaaa
coolkiid
Dango-2021
deanjingshui
zsy-jason
zhongyr
ZhaoSongGOO
yuweizheng
YellowFishWyfCPP
Yellow5A5
wqyfavor
viekai
usczz
upupming
talisk
SuperYaoYU
ShouruiSong
Shouqun
scanf3
RuiwenTang
RovicnowYoyi
RobinWuu
rAY-ooo
popoaichuiniu
PineconeSquirrel
pilipala195
pandazyp
Neilcc
MedicalProject
lybvinci
loongliu
linxs0211
lidadating
Kingatnuaa0528
icecreamx333
huzhanbo1996
DwwWxx
hfuttyh
GhostFlying
FrendyChen
ChrisChan0668
toretto-wt
fzx2666
cddcoding
partholon
KingAlen
kaychn126
Huxpro
aijm
ulivz
zoolsher
HuJean
xuanyi-fu
Randycn
hxxft
luhc228
jimmychanii
lanjunq
yulitaotao
givemefive9
minalwws
keweibing
gaoachao
rel-q
Sherry-hue
swfork
Aimee1608
chenjiahan
f0rdream
kanan-su
Tamerlx
jtsky
GuoXi
shengweilin
roland-reed
iaohangninja1989
RickAi
omnipo
WATER1350
kazec
cherrycreek28
wozaijinjiea
billllllllller
XianghuDong
cocochick
Sleen
Yradex
minalwws
Aimee1608
mitchilling
================================================
FILE: Gemfile
================================================
source 'https://rubygems.org'
gem "cocoapods", '1.11.3'
gem "ffi", "1.16.3"
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: NOTICE
================================================
Lynx Project
Copyright (c) 2018-2024 ByteDance Inc.
Copyright (c) 2024 TikTok Inc.
All rights reserved.
================================================
FILE: README.md
================================================
<div align="center">
<p>
<a href="https://lynxjs.org">
<img width="500" alt="Lynx" src="https://github.com/user-attachments/assets/23e35f90-1506-4b1d-8114-6bb2b8b643e7" />
</a>
</p>
[](https://github.com/lynx-family/lynx/blob/develop/LICENSE)
[](https://github.com/lynx-family/lynx/releases)
[](https://github.com/lynx-family/lynx/actions)
[](https://x.com/lynxjs_org)
[](https://discord.gg/mXk7jqdDXk)
Empower the web community and invite more to build across platforms
</div>
## Content
- [About Lynx](#About-Lynx)
- [Documentation](#Documentation)
- [How to Use Lynx](#How-to-Use-Lynx)
- [Lynx Explorer](#Lynx-Explorer)
- [How to Contribute](#How-to-Contribute)
- [Discussions](#Discussions)
- [Credits](#Credits)
- [License](#License)
## About Lynx
Lynx is a _family_ of open-source technologies empowering developers to use their existing web skills to create truly native UIs for both mobile and web from a single codebase, featuring performance at scale and velocity.
- **💫 Write Once, Render Anywhere.** Enjoy native rendering on Android, iOS, and Web, or pixel-perfect consistency across mobile and desktop via our custom renderer.
- **🌐 Web-Inspired Design.** Leverage your existing knowledge of CSS and React. We designed Lynx with the web knowledge and libraries in mind.
- **⚡ Performance at Scale.** Achieve instant launch and silky UI responsiveness via our multithreaded engine, whether standalone or embedded.
This repository contains the **core engine** of Lynx. For other repositories in the Lynx family, visit our [org homepage](https://github.com/lynx-family).
## Documentation
You shall find documentation for Lynx on [lynxjs.org](http://lynxjs.org).
## How to Use Lynx
### Requirements
Lynx apps may target iOS 10 and Android 5.0 (API 21) or newer.
We recommend using macOS as the development operating system. Windows and Linux are not yet verified or guaranteed, so you may encounter problems. If you need assistance, please file an issue, and we will be more than happy to help you address it.
### Getting Started guide
- Trying out Lynx with [hello world](https://lynxjs.org/guide/start/quick-start.html)
- [Integrating Lynx with an Existing Application](https://lynxjs.org/guide/start/integrate-with-existing-apps.html)
## Lynx Explorer
Lynx Explorer is the official app for testing and exploring Lynx. It provides native runtime environments (Android/iOS/Harmony/Windows/macOS) and bundles ReactLynx-based screens.
- Build and run Lynx Explorer: see [lynx/explorer/README.md](explorer/README.md)
## How to Contribute
### [Code of Conduct][coc]
We are devoted to ensuring a positive, inclusive, and safe environment for all contributors. Please find our [Code of Conduct][coc] for detailed information.
[coc]: CODE_OF_CONDUCT.md
### [Contributing Guide][contributing]
We welcome you to join and become a member of Lynx Authors. It's people like you that make this project great.
Please refer to our [contributing guide][contributing] for details.
[contributing]: CONTRIBUTING.md
## Discussions
Bugs and feature requests are filed in [Github Issues](https://github.com/lynx-family/lynx/issues)
Large discussions and proposals are discussed in [Github Discussions](https://github.com/lynx-family/lynx/discussions)
You are always very welcome to join the [Discord Channel](https://discord.gg/mXk7jqdDXk) and meet others who are enthusiastic about making Lynx great.
## Credits
Lynx makes use of several third-party libraries and draws inspiration from various projects. We would like to express our sincere gratitude to these sources.
### Third Party Libraries
Lynx incorporates the following third-party libraries, which have significantly contributed to its functionality. We appreciate the efforts of the developers and the open-source community behind these projects:
- [aes](https://github.com/SergeyBel/AES)
- [benchmark](https://github.com/google/benchmark)
- [binding](https://chromium.googlesource.com/chromium/blink/+/refs/heads/main/Source/bindings)
- [boringssl](https://boringssl.googlesource.com/boringssl.git)
- [boringssl_gen](https://github.com/dart-lang/boringssl_gen.git)
- [buildroot](https://github.com/flutter/buildroot)
- [checkstyle](https://github.com/checkstyle/checkstyle)
- [cpp-httplib](https://github.com/yhirose/cpp-httplib)
- [double-conversion](https://github.com/google/double-conversion)
- [googletest](https://github.com/google/googletest)
- [jsoncpp](https://github.com/open-source-parsers/jsoncpp)
- [modp_b64](https://github.com/Piasy/modp_b64)
- [node-addon-api](https://github.com/nodejs/node-addon-api)
- [NativeScript](https://github.com/NativeScript/NativeScript)
- [perfetto](https://android.googlesource.com/platform//external/perfetto/)
- [rapidjson](https://github.com/Tencent/rapidjson)
- [v8](https://chromium.googlesource.com/v8/v8.git)
- [xctestrunner](https://github.com/google/xctestrunner)
- [xhook](https://github.com/iqiyi/xHook.git)
- [zlib](https://chromium.googlesource.com/chromium/src/third_party/zlib)
### Referenced API Design and Implementations
The design of some APIs and some implementations in Lynx have been inspired by and referenced from the following outstanding projects. Their innovative designs and solutions have been invaluable in shaping Lynx:
- [chromium](https://chromium.googlesource.com/chromium/)
- [react-native](https://github.com/facebook/react-native)
- [flutter engine](https://github.com/flutter/engine)
We respect the intellectual property rights of all these projects and adhere to relevant open-source licenses and usage guidelines.
## [License][license]
Lynx is Apache licensed, as found in the [LICENSE][license] file.
[license]: LICENSE
================================================
FILE: SECURITY.md
================================================
# Reporting a Vulnerability
If you happen to discover a potential security issue in this project, please do **not** create a public GitHub issue.
We kindly ask you to notify TikTok Security via email at [security@tiktok.com].
Valid vulnerability reports can be eligible for monetary rewards under our Bug Bounty program.
For eligible reports, we will provide additional instructions on how to claim the reward over email.
We greatly appreciate community contributions to the security of this project.
================================================
FILE: agents/code_review/commit_message_format.md
================================================
## Conventions
- All commit messages MUST be written in **English**.
- Preferred format:
Header:
`[Type][Scope] Short imperative summary`
Body (details):
`- What changed`
`- Why it was needed`
`- How it was verified / impacts`
Footer (optional):
`issue: #12345`
### Type
- `Feature`, `BugFix`, `Optimize`, `Refactor`, `Infra`, `Docs`, `Test`, etc., using capitalized English.
### Scope
- Module or subsystem name (e.g., `Clay`, `Layout`, `Headers`, `Painting`, `Harmony`, `Android`, `iOS`, etc.), optional but recommended.
================================================
FILE: base/CPPLINT.cfg
================================================
set noparent
filter=-,+lynx_custom/new_java_ref,+build/namespaces,+build/c++14,+build/class,+build/c++tr1,+build/deprecated,+build/endif_comment,+build/explicit_make_pair,+build/forward_decl,+build/header_guard,+build/include_what_you_use,+runtime/casting,+runtime/init,+runtime/invalid_increment,+untime/member_string_references,+runtime/memset,+runtime/indentation_namespace,+runtime/operator,+runtime/vlog
exclude_files=.*\.java
exclude_files=.*\.mm
exclude_files=.*\.m
exclude_files=.*unittest.*|.*unittests.*
exclude_files=.*mock_element\.cc
================================================
FILE: base/README.md
================================================
# About //lynx/base
This is a basic library for the lynx project, which contains some basic components and utility functions. The aim is to make the development of the lynx project more convenient, reduce repetitive work, and facilitate code maintenance.
# How to use?
The base library uses GN to organize the code. We can directly add the dependency of the base library to the project to use the basic functions provided by the base library.
```GN
# Add the base dependency.
source_set("lynx_project") {
deps = [
"//lynx/base/src:base", // "//lynx/base/src:base" hasn't include trace and log functions
]
deps += [
"//lynx/base/src:base_log", // log functions
]
}
```
# What capabilities include?
> Only some capabilities are listed. For more, please refer to the source code.
- Log utils
The base library provides log utils. By using the [LOGV~LOGE](include/log/logging.h) log macro APIs, we can easily log messages. It supports log output, log filtering, log formatting, and customizable log output channels. Additionally, it provides a lightweight log stream class, which makes the log system more efficient.
- thread utils
Thread utils include message loop, shared mutex, semaphore, and so on. The message loop is an event-driven thread programming model. It is used to process events and tasks for a particular thread. Its basic functionality is to accept posted tasks and run them on the associated thread.
- String utils
The base provides string utils, such as converting characters to numbers, converting characters to arrays, extracting substrings, and converting between unicode32, unicode16, and unicode8.
- Trace utils
The base provides an independent and shareable instrumentation tool named lynx-trace. Please refer to [trace/README.md](trace/README.md) for details.
================================================
FILE: base/include/algorithm.h
================================================
/*
* Copyright 2006 The Android Open Source Project
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
// Copyright 2023 The Lynx Authors. All rights reserved.
// Licensed under the Apache License Version 2.0 that can be found in the
// LICENSE file in the root directory of this source tree.
#ifndef BASE_INCLUDE_ALGORITHM_H_
#define BASE_INCLUDE_ALGORITHM_H_
#include <utility>
namespace lynx {
namespace base {
/** Insertion Sort algorithm. Use this algorithm when the region to be sorted is
* a small constant size (e.g., count <= 32)
*
* @param left points to the beginning of the region to be sorted
* @param count number of items to be sorted
* @param less_than a functor with bool operator()(T a, T b) which returns true
* if a comes before b.
*
* */
template <typename T, typename C>
inline void InsertionSort(T* left, size_t count, const C& less_than) {
if (count <= 1) {
return;
}
T* right = left + count - 1;
for (T* next = left + 1; next <= right; ++next) {
if (!less_than(*next, *(next - 1))) {
continue;
}
T insert = std::move(*next);
T* hole = next;
do {
*hole = std::move(*(hole - 1));
--hole;
} while (left < hole && less_than(insert, *(hole - 1)));
*hole = std::move(insert);
}
}
} // namespace base
} // namespace lynx
#endif // BASE_INCLUDE_ALGORITHM_H_
================================================
FILE: base/include/auto_create_optional.h
================================================
// Copyright 2025 The Lynx Authors. All rights reserved.
// Licensed under the Apache License Version 2.0 that can be found in the
// LICENSE file in the root directory of this source tree.
#ifndef BASE_INCLUDE_AUTO_CREATE_OPTIONAL_H_
#define BASE_INCLUDE_AUTO_CREATE_OPTIONAL_H_
#include <memory>
namespace lynx {
namespace base {
template <typename T>
class auto_create_optional {
public:
auto_create_optional() = default;
auto_create_optional(const auto_create_optional& other) {
if (other.data_) {
data_ = std::make_unique<T>(*other.data_);
}
}
auto_create_optional& operator=(const auto_create_optional& other) {
if (this == &other) {
return *this;
}
if (other.data_) {
data_ = std::make_unique<T>(*other.data_);
} else {
data_ = nullptr;
}
return *this;
}
auto_create_optional(auto_create_optional&& other) = default;
auto_create_optional& operator=(auto_create_optional&& other) = default;
T& operator*() const { return *create_if_null(); }
T* operator->() const { return create_if_null(); }
T* get() const { return data_.get(); }
void reset() { data_.reset(); }
bool has_value() const noexcept { return data_ != nullptr; }
explicit operator bool() const noexcept { return has_value(); }
private:
mutable std::unique_ptr<T> data_;
T* create_if_null() const {
if (!data_) {
data_ = std::make_unique<T>();
}
return data_.get();
}
};
} // namespace base
} // namespace lynx
#endif // BASE_INCLUDE_AUTO_CREATE_OPTIONAL_H_
================================================
FILE: base/include/auto_reset.h
================================================
// Copyright 2022 The Lynx Authors. All rights reserved.
// Licensed under the Apache License Version 2.0 that can be found in the
// LICENSE file in the root directory of this source tree.
#ifndef BASE_INCLUDE_AUTO_RESET_H_
#define BASE_INCLUDE_AUTO_RESET_H_
#include <utility>
// base::AutoReset<> is useful for setting a variable to a new value only within
// a particular scope. An base::AutoReset<> object resets a variable to its
// original value upon destruction, making it an alternative to writing
// "var = false;" or "var = old_val;" at all of a block's exit points.
//
// This should be obvious, but note that an base::AutoReset<> instance should
// have a shorter lifetime than its scoped_variable, to prevent invalid memory
// writes when the base::AutoReset<> object is destroyed.
namespace lynx {
namespace base {
template <typename T>
class AutoReset {
public:
template <typename U>
AutoReset(T* scoped_variable, U&& new_value)
: scoped_variable_(scoped_variable),
original_value_(
std::exchange(*scoped_variable_, std::forward<U>(new_value))) {}
AutoReset(AutoReset&& other)
: scoped_variable_(std::exchange(other.scoped_variable_, nullptr)),
original_value_(std::move(other.original_value_)) {}
AutoReset& operator=(AutoReset&& rhs) {
scoped_variable_ = std::exchange(rhs.scoped_variable_, nullptr);
original_value_ = std::move(rhs.original_value_);
return *this;
}
~AutoReset() {
if (scoped_variable_) *scoped_variable_ = std::move(original_value_);
}
private:
// `scoped_variable_` is not a raw_ptr<T> for performance reasons: Large
// number of non-PartitionAlloc pointees + AutoReset is typically short-lived
// (e.g. allocated on the stack).
T* scoped_variable_;
T original_value_;
};
} // namespace base
} // namespace lynx
#endif // BASE_INCLUDE_AUTO_RESET_H_
================================================
FILE: base/include/base_defines.h
================================================
// Copyright 2025 The Lynx Authors. All rights reserved.
// Licensed under the Apache License Version 2.0 that can be found in the
// LICENSE file in the root directory of this source tree.
#ifndef BASE_INCLUDE_BASE_DEFINES_H_
#define BASE_INCLUDE_BASE_DEFINES_H_
#define unlikely(x) __builtin_expect(!!(x), 0)
#define likely(x) __builtin_expect(!!(x), 1)
#if _MSC_VER
#define BASE_INLINE inline __forceinline
#define BASE_NEVER_INLINE __declspec(noinline)
#else
#define BASE_INLINE inline __attribute__((always_inline))
#define BASE_NEVER_INLINE __attribute__((noinline))
#endif
#ifdef __cplusplus
#define BASE_EXTERN_C extern "C"
#define BASE_EXTERN_C_BEGIN BASE_EXTERN_C {
#define BASE_EXTERN_C_END }
#else
#define BASE_EXTERN_C
#define BASE_EXTERN_C_BEGIN
#define BASE_EXTERN_C_END
#endif
#endif // BASE_INCLUDE_BASE_DEFINES_H_
================================================
FILE: base/include/base_export.h
================================================
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef BASE_INCLUDE_BASE_EXPORT_H_
#define BASE_INCLUDE_BASE_EXPORT_H_
// Symbols in the lynx base are not exported by default due to
// -fvisibility=hidden. We provide a macro to help you export some symbols:
// 1.BASE_EXPORT. If certain symbols need to be accessed externally, they
// should be marked with the BASE_EXPORT.
//
// If you need stricter symbol export rules from the Lynx base for purposes
// such as better package management, you can provide BASE_NO_EXPORT to gn
// script or customize the export rules using --version-script. Importantly, if
// a symbol is not marked with BASE_EXPORT, it can not be exported, even if you
// use a
// --version-script to customize the export rules.
#ifdef BASE_NO_EXPORT
#define BASE_EXPORT
#else // BASE_NO_EXPORT
#ifdef _WIN32
#ifndef lynx_EXPORTS
#define BASE_EXPORT __declspec(dllimport)
#else // lynx_EXPORTS
#define BASE_EXPORT __declspec(dllexport)
#endif // lynx_EXPORTS
#else // _WIN32
#define BASE_EXPORT __attribute__((visibility("default")))
#endif // _WIN32
#endif // BASE_NO_EXPORT
#define BASE_HIDE __attribute__((visibility("hidden")))
#endif // BASE_INCLUDE_BASE_EXPORT_H_
================================================
FILE: base/include/base_public_headers.gni
================================================
# Copyright 2025 The Lynx Authors. All rights reserved.
# Licensed under the Apache License Version 2.0 that can be found in the
# LICENSE file in the root directory of this source tree.
import("../src/base.gni")
# base_log_public_headers begin
base_log_public_headers_list = [
"debug/lynx_assert.h",
"debug/lynx_error.h",
"log/alog_wrapper.h",
"log/log_stream.h",
"log/logging.h",
]
if (!is_win) {
base_log_public_headers_list += [ "debug/backtrace.h" ]
}
if (is_apple) {
base_log_public_headers_list += [ "log/logging_darwin.h" ]
} else if (is_win) {
base_log_public_headers_list += [ "log/logging_base.h" ]
} else if (is_linux) {
base_log_public_headers_list += [ "log/logging_base.h" ]
}
base_log_public_headers = rebase_path(base_log_public_headers_list)
# base_log_public_headers end
# time_utils_public_headers begin
time_utils_public_headers_list = [ "timer/time_utils.h" ]
time_utils_public_headers = rebase_path(time_utils_public_headers_list)
# time_utils_public_headers end
# base_trace_public_headers begin
base_trace_public_headers_list = [ "base_trace/trace_event_utils.h" ]
base_trace_public_headers = rebase_path(base_trace_public_headers_list)
# base_trace_public_headers end
# base_core_public_headers begin
base_core_public_headers_list = [
"algorithm.h",
"auto_create_optional.h",
"auto_reset.h",
"base_defines.h",
"base_export.h",
"boost/unordered.h",
"bundled_optional.h",
"cast_util.h",
"closure.h",
"compiler_specific.h",
"concurrent_queue.h",
"expected.h",
"expected_internal.h",
"file_utils.h",
"flex_optional.h",
"float_comparison.h",
"fml/concurrent_message_loop.h",
"fml/cpu_affinity.h",
"fml/delayed_task.h",
"fml/eintr_wrapper.h",
"fml/fml_trace_event_def.h",
"fml/macros.h",
"fml/make_copyable.h",
"fml/memory/ref_counted.h",
"fml/memory/ref_counted_internal.h",
"fml/memory/ref_ptr.h",
"fml/memory/ref_ptr_internal.h",
"fml/memory/task_runner_checker.h",
"fml/memory/weak_ptr.h",
"fml/memory/weak_ptr_internal.h",
"fml/message_loop.h",
"fml/message_loop_impl.h",
"fml/message_loop_task_queues.h",
"fml/platform/thread_config_setter.h",
"fml/synchronization/atomic_object.h",
"fml/synchronization/count_down_latch.h",
"fml/synchronization/semaphore.h",
"fml/synchronization/shared_mutex.h",
"fml/synchronization/sync_switch.h",
"fml/synchronization/waitable_event.h",
"fml/task_queue_id.h",
"fml/task_runner.h",
"fml/task_runner_delegate.h",
"fml/task_source.h",
"fml/task_source_grade.h",
"fml/thread.h",
"fml/time/time_delta.h",
"fml/time/time_point.h",
"fml/time/timer.h",
"fml/time/timestamp_provider.h",
"fml/unique_fd.h",
"fml/unique_object.h",
"fml/wakeable.h",
"geometry/point.h",
"geometry/rect.h",
"geometry/size.h",
"hybrid_map.h",
"linked_hash_map.h",
"lru_cache.h",
"lynx_actor.h",
"md5.h",
"memory/memory_pressure_level.h",
"no_destructor.h",
"path_utils.h",
"position.h",
"shared_vector.h",
"sorted_for_each.h",
"thread/base_semaphore.h",
"thread/pthread_rw_lock_guard.h",
"thread/timed_task.h",
"to_underlying.h",
"type_traits_addon.h",
"vector.h",
"vector2d.h",
"vector_helper.h",
"version_util.h",
"//build/build_config.h",
"fml/hash_combine.h",
"fml/raster_thread_merger.h",
"fml/shared_thread_merger.h",
]
if (is_android || is_linux) {
base_core_public_headers_list += [ "fml/platform/linux/timerfd.h" ]
}
if (is_android) {
base_core_public_headers_list += [
"fml/platform/android/cpu_affinity.h",
"fml/platform/android/message_loop_android.h",
"fml/synchronization/shared_mutex_std.h",
"platform/android/java_type.h",
"platform/android/jni_convert_helper.h",
"platform/android/jni_utils.h",
"platform/android/scoped_java_ref.h",
]
} else if (is_harmony) {
base_core_public_headers_list += [
"fml/platform/harmony/message_loop_harmony.h",
"fml/platform/linux/timerfd.h",
"fml/synchronization/shared_mutex_std.h",
"platform/harmony/harmony_vsync_manager.h",
"platform/harmony/napi_util.h",
]
} else if (is_linux) {
base_core_public_headers_list += [ "fml/synchronization/shared_mutex_std.h" ]
if (!use_custom_message_loop) {
base_core_public_headers_list +=
[ "fml/platform/linux/message_loop_linux.h" ]
}
} else if (is_apple) {
base_core_public_headers_list += [
"fml/platform/darwin/cf_utils.h",
"fml/synchronization/shared_mutex_posix.h",
"platform/darwin/type_utils.h",
]
if (!use_custom_message_loop) {
base_core_public_headers_list +=
[ "fml/platform/darwin/message_loop_darwin.h" ]
}
} else if (is_win) {
base_core_public_headers_list += [
"fml/platform/win/message_loop_win.h",
"fml/platform/win/task_runner_win32.h",
"fml/platform/win/task_runner_win32_window.h",
"fml/synchronization/shared_mutex_std.h",
"string/string_conversion_win.h",
]
}
base_core_public_headers = rebase_path(base_core_public_headers_list)
# base_core_public_headers end
# string_utils_public_headers begin
string_utils_public_headers_list = [
"string/quickjs_dtoa.h",
"string/string_number_convert.h",
"string/string_utils.h",
]
string_utils_public_headers = rebase_path(string_utils_public_headers_list)
# string_utils_public_headers end
# base_values_public_headers begin
base_values_public_headers_list = [
"value/array.h",
"value/base_value.h",
"value/byte_array.h",
"value/lynx_value_api.h",
"value/lynx_value_extended.h",
"value/path_parser.h",
"value/ref_counted_class.h",
"value/ref_type.h",
"value/table.h",
]
base_values_public_headers = rebase_path(base_values_public_headers_list)
# base_values_public_headers end
# values_public_headers begin
values_public_headers_list = [
"value/base_string.h",
"value/lynx_api_types.h",
"value/lynx_value_types.h",
]
values_public_headers = rebase_path(values_public_headers_list)
# values_public_headers end
# datauri_utils_public_headers begin
datauri_utils_public_headers_list = [ "datauri_utils.h" ]
datauri_utils_public_headers = rebase_path(datauri_utils_public_headers_list)
# datauri_utils_public_headers end
base_public_headers = base_log_public_headers + time_utils_public_headers +
base_core_public_headers + string_utils_public_headers +
base_values_public_headers + values_public_headers +
datauri_utils_public_headers
================================================
FILE: base/include/base_trace/trace_event_utils.h
================================================
// Copyright 2025 The Lynx Authors. All rights reserved.
// Licensed under the Apache License Version 2.0 that can be found in the
// LICENSE file in the root directory of this source tree.
#ifndef BASE_INCLUDE_BASE_TRACE_TRACE_EVENT_UTILS_H_
#define BASE_INCLUDE_BASE_TRACE_TRACE_EVENT_UTILS_H_
#include <cstdint>
#include <functional>
#include "base/include/base_export.h"
namespace lynx {
namespace base {
namespace trace {
enum class BaseTraceEventType : int32_t {
TYPE_UNSPECIFIED = 0,
TYPE_SLICE_BEGIN = 1,
TYPE_SLICE_END = 2,
TYPE_INSTANT = 3,
TYPE_COUNTER = 4,
};
using trace_backend_ptr = void (*)(const char* category, const char* name,
BaseTraceEventType phase);
BASE_EXPORT void SetTraceBackend(trace_backend_ptr backend);
void TraceEventBegin(const char* category, const char* name);
void TraceEventEnd(const char* category, const char* name);
} // namespace trace
} // namespace base
} // namespace lynx
#endif // BASE_INCLUDE_BASE_TRACE_TRACE_EVENT_UTILS_H_
================================================
FILE: base/include/boost/unordered.h
================================================
// Copyright 2001, 2002 Peter Dimov and Multi Media Ltd
// Copyright 2002, 2018-2022 Peter Dimov
// Copyright 2002-2018 Peter Dimov
// Copyright 2004 Pavel Vozenilek
// Copyright 2005-2009 Daniel James
// Copyright 2005-2014 Daniel James
// Copyright 2006-2009 Emil Dotchevski and Reverge Studios, Inc
// Copyright 2007, 2014 Peter Dimov
// Copyright 2008-2009 Emil Dotchevski and Reverge Studios, Inc
// Copyright 2008-2016 Daniel James
// Copyright 2015 Ion Gaztanaga
// Copyright 2017 Peter Dimov
// Copyright 2017, 2018 Peter Dimov
// Copyright 2017, 2022 Peter Dimov
// Copyright 2018 Glen Joseph Fernandes
// Copyright 2019, 2021 Peter Dimov
// Copyright 2021 Peter Dimov
// Copyright 2021, 2022 Peter Dimov
// Copyright 2022 Christian Mazakas
// Copyright 2022 Joaquin M Lopez Munoz
// Copyright 2022 Peter Dimov
// Copyright 2022, 2023 Peter Dimov
// Copyright 2022-2023 Christian Mazakas
// Copyright 2022-2023 Joaquin M Lopez Munoz
// Copyright 2023 Christian Mazakas
// Copyright Beman Dawes 2011
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// Amalgamated single header imported to Lynx with minor adaptations
// from https://github.com/MikePopoloski/boost_unordered
#ifndef BASE_INCLUDE_BOOST_UNORDERED_H_
#define BASE_INCLUDE_BOOST_UNORDERED_H_
#include <climits>
#include <cmath>
#include <complex>
#include <cstddef>
#include <cstdint>
#include <cstdio>
#include <cstring>
#include <exception>
#include <functional>
#include <initializer_list>
#include <iosfwd>
#include <iterator>
#include <limits>
#include <memory>
#include <optional>
#include <stdexcept>
#include <string>
#include <system_error>
#include <tuple>
#include <type_traits>
#include <typeindex>
#include <utility>
#include <variant>
// Lynx Add Begin
#include "base/include/type_traits_addon.h"
// This template type is used to simplify the use of boost map for
// lynx::base::HybridMap.
namespace boost {
template <template <typename...> class T, template <typename> class Hash,
template <typename> class Equal>
struct MapPolicy {
template <typename Key, typename Value>
using type = T<Key, Value, Hash<Key>, Equal<Key>>;
template <typename Key, typename Value>
using plain_bytes_type =
T<lynx::base::TypeOfPlainBytes<Key>, lynx::base::TypeOfPlainBytes<Value>,
Hash<lynx::base::TypeOfPlainBytes<Key>>,
Equal<lynx::base::TypeOfPlainBytes<Key>>>;
};
} // namespace boost
namespace boost {
namespace unordered {
namespace detail {
namespace foa {
// Forward declare flat_map_types for custom `nosize_transfer_element`
// impl.
template <class Key, class T> struct flat_map_types;
// Tag type to emplace key-value with key as plain bytes and value as
// uninitialized.
struct try_emplace_plain_bytes_key_t{};
// Tag type to emplace key-value pair as plain bytes.
struct try_emplace_plain_bytes_t{};
}
}
}
}
// Lynx polyfill for undefined and C++17
namespace boost {
using uint16_t = unsigned short;
}
// Polyfill under C++20
#if (defined(__cplusplus) && (__cplusplus >= 202002L))
#include <bit>
#if defined(_MSC_VER)
#define CXX20_NO_UNIQUE_ADDRESS [[msvc::no_unique_address]]
#else
#define CXX20_NO_UNIQUE_ADDRESS [[no_unique_address]]
#endif
#else
// Not C++ 20
#define CXX20_NO_UNIQUE_ADDRESS
namespace std {
template <class T>
struct remove_cvref {
using type = std::remove_cv_t<std::remove_reference_t<T>>;
};
template <class T>
using remove_cvref_t = typename remove_cvref<T>::type;
template <class T>
constexpr T *to_address(T *p) noexcept {
static_assert(!std::is_function_v<T>);
return p;
}
template <class T>
constexpr auto to_address(const T &p) noexcept {
// if constexpr (requires{ std::pointer_traits<T>::to_address(p); })
// return std::pointer_traits<T>::to_address(p);
// else
return std::to_address(p.operator->());
}
inline constexpr int builtin_clz(unsigned x) noexcept {
return __builtin_clz(x);
}
inline constexpr int builtin_clz(unsigned long x) noexcept {
return __builtin_clzl(x);
}
inline constexpr int builtin_clz(unsigned long long x) noexcept {
return __builtin_clzll(x);
}
inline constexpr int builtin_ctz(unsigned x) noexcept {
return __builtin_ctz(x);
}
inline constexpr int builtin_ctz(unsigned long x) noexcept {
return __builtin_ctzl(x);
}
inline constexpr int builtin_ctz(unsigned long long x) noexcept {
return __builtin_ctzll(x);
}
template <class T>
constexpr T rotr(T t, unsigned int cnt) noexcept {
const unsigned int kDig = numeric_limits<T>::digits;
if ((cnt % kDig) == 0) return t;
return (t >> (cnt % kDig)) | (t << (kDig - (cnt % kDig)));
}
template <class T>
constexpr int countr_zero(T t) noexcept {
if (t == 0) return numeric_limits<T>::digits;
if constexpr (sizeof(T) <= sizeof(unsigned int))
return builtin_ctz(static_cast<unsigned int>(t));
else if constexpr (sizeof(T) <= sizeof(unsigned long))
return builtin_ctz(static_cast<unsigned long>(t));
else if constexpr (sizeof(T) <= sizeof(unsigned long long))
return builtin_ctz(static_cast<unsigned long long>(t));
else {
static_assert(sizeof(T) == 0, "countr_zero<T> where T is too large");
return 0;
}
}
template <class T>
constexpr int countl_zero(T t) noexcept {
if (t == 0) return numeric_limits<T>::digits;
if constexpr (sizeof(T) <= sizeof(unsigned int))
return builtin_clz(static_cast<unsigned int>(t)) -
(numeric_limits<unsigned int>::digits - numeric_limits<T>::digits);
else if constexpr (sizeof(T) <= sizeof(unsigned long))
return builtin_clz(static_cast<unsigned long>(t)) -
(numeric_limits<unsigned long>::digits - numeric_limits<T>::digits);
else if constexpr (sizeof(T) <= sizeof(unsigned long long))
return builtin_clz(static_cast<unsigned long long>(t)) -
(numeric_limits<unsigned long long>::digits -
numeric_limits<T>::digits);
else {
static_assert(sizeof(T) == 0, "countl_zero<T> where T is too large");
return 0;
}
}
template <typename T>
constexpr T bit_log2(T t) noexcept {
return numeric_limits<T>::digits - 1 - countl_zero(t);
}
template <typename T>
constexpr int bit_width(T t) noexcept {
return t == 0 ? 0 : static_cast<int>(bit_log2(t) + 1);
}
}
#endif
// clang-format off
// Lynx Add End
// This is a minimal header that contains only the small set
// config entries needed to use boost::unordered, so that the
// whole boost config lib doesn't need to be pulled in.
#ifdef __clang__
# ifndef BOOST_CLANG
# define BOOST_CLANG 1
# define BOOST_CLANG_VERSION (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__ % 100)
# endif
#elif defined(__GNUC__)
# ifndef BOOST_GCC
# define BOOST_GCC (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
# define BOOST_GCC_VERSION BOOST_GCC
# endif
#elif defined(_MSC_VER)
# ifndef BOOST_MSVC
# define BOOST_MSVC _MSC_VER
# endif
#endif
#ifndef BOOST_FORCEINLINE
# if defined(_MSC_VER)
# define BOOST_FORCEINLINE __forceinline
# elif defined(__GNUC__) && __GNUC__ > 3
// Clang also defines __GNUC__ (as 4)
# define BOOST_FORCEINLINE inline __attribute__ ((__always_inline__))
# else
# define BOOST_FORCEINLINE inline
# endif
#endif
#ifndef BOOST_NOINLINE
# if defined(_MSC_VER)
# define BOOST_NOINLINE __declspec(noinline)
# elif defined(__GNUC__) && __GNUC__ > 3
// Clang also defines __GNUC__ (as 4)
# if defined(__CUDACC__)
// nvcc doesn't always parse __noinline__,
// see: https://svn.boost.org/trac/boost/ticket/9392
# define BOOST_NOINLINE __attribute__ ((noinline))
# elif defined(__HIP__)
// See https://github.com/boostorg/config/issues/392
# define BOOST_NOINLINE __attribute__ ((noinline))
# else
# define BOOST_NOINLINE __attribute__ ((__noinline__))
# endif
# else
# define BOOST_NOINLINE
# endif
#endif
#if defined(BOOST_GCC) || defined(BOOST_CLANG)
# define BOOST_LIKELY(x) __builtin_expect(x, 1)
# define BOOST_UNLIKELY(x) __builtin_expect(x, 0)
# define BOOST_SYMBOL_VISIBLE __attribute__((__visibility__("default")))
#else
# define BOOST_SYMBOL_VISIBLE
#endif
#ifndef BOOST_LIKELY
# define BOOST_LIKELY(x) x
#endif
#ifndef BOOST_UNLIKELY
# define BOOST_UNLIKELY(x) x
#endif
#ifndef BOOST_NORETURN
# if defined(_MSC_VER)
# define BOOST_NORETURN __declspec(noreturn)
# elif defined(__GNUC__) || defined(__CODEGEARC__) && defined(__clang__)
# define BOOST_NORETURN __attribute__ ((__noreturn__))
# elif defined(__has_attribute) && defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x5130)
# if __has_attribute(noreturn)
# define BOOST_NORETURN [[noreturn]]
# endif
# elif defined(__has_cpp_attribute)
# if __has_cpp_attribute(noreturn)
# define BOOST_NORETURN [[noreturn]]
# endif
# endif
#endif
#ifndef BOOST_NORETURN
# define BOOST_NO_NORETURN
# define BOOST_NORETURN
#endif
#if BOOST_MSVC
#if !defined(_CPPUNWIND) && !defined(BOOST_NO_EXCEPTIONS)
#define BOOST_NO_EXCEPTIONS
#endif
#if !defined(_CPPRTTI) && !defined(BOOST_NO_RTTI)
#define BOOST_NO_RTTI
#endif
#elif BOOST_GCC
#if !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
#define BOOST_NO_EXCEPTIONS
#endif
#if !defined(__GXX_RTTI) && !defined(BOOST_NO_RTTI)
#define BOOST_NO_RTTI
#endif
#elif BOOST_CLANG
#if !__has_feature(cxx_exceptions) && !defined(BOOST_NO_EXCEPTIONS)
#define BOOST_NO_EXCEPTIONS
#endif
#if !__has_feature(cxx_rtti) && !defined(BOOST_NO_RTTI)
#define BOOST_NO_RTTI
#endif
#endif
// This is the only predef define needed for boost::unordered, so pull it
// out here so we don't need to include all of predef.
#if \
defined(__ARM_ARCH) || defined(__TARGET_ARCH_ARM) || \
defined(__TARGET_ARCH_THUMB) || defined(_M_ARM) || \
defined(__arm__) || defined(__arm64) || defined(__thumb__) || \
defined(_M_ARM64) || defined(__aarch64__) || defined(__AARCH64EL__) || \
defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || \
defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || \
defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || \
defined(__ARM_ARCH_6KZ__) || defined(__ARM_ARCH_6T2__) || \
defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5TEJ__) || \
defined(__ARM_ARCH_4T__) || defined(__ARM_ARCH_4__)
#define BOOST_ARCH_ARM 1
#else
#define BOOST_ARCH_ARM 0
#endif
// Copyright 2005-2009 Daniel James.
// Copyright 2021, 2022 Peter Dimov.
// Distributed under the Boost Software License, Version 1.0.
// https://www.boost.org/LICENSE_1_0.txt
#ifndef BOOST_FUNCTIONAL_HASH_FWD_HPP
#define BOOST_FUNCTIONAL_HASH_FWD_HPP
namespace boost
{
namespace container_hash
{
template<class T> struct is_range;
template<class T> struct is_contiguous_range;
template<class T> struct is_unordered_range;
template<class T> struct is_described_class;
template<class T> struct is_tuple_like;
} // namespace container_hash
template<class T> struct hash;
template<class T> void hash_combine( std::size_t& seed, T const& v );
template<class It> void hash_range( std::size_t&, It, It );
template<class It> std::size_t hash_range( It, It );
template<class It> void hash_unordered_range( std::size_t&, It, It );
template<class It> std::size_t hash_unordered_range( It, It );
} // namespace boost
#endif // #ifndef BOOST_FUNCTIONAL_HASH_FWD_HPP
/* Fast open-addressing concurrent hashset.
*
* Copyright 2023 Christian Mazakas.
* Copyright 2023 Joaquin M Lopez Munoz.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*
* See https://www.boost.org/libs/unordered for library home page.
*/
#ifndef BOOST_UNORDERED_CONCURRENT_FLAT_SET_FWD_HPP
#define BOOST_UNORDERED_CONCURRENT_FLAT_SET_FWD_HPP
namespace boost {
namespace unordered {
template <class Key, class Hash = boost::hash<Key>,
class Pred = std::equal_to<Key>,
class Allocator = std::allocator<Key> >
class concurrent_flat_set;
template <class Key, class Hash, class KeyEqual, class Allocator>
bool operator==(
concurrent_flat_set<Key, Hash, KeyEqual, Allocator> const& lhs,
concurrent_flat_set<Key, Hash, KeyEqual, Allocator> const& rhs);
template <class Key, class Hash, class KeyEqual, class Allocator>
bool operator!=(
concurrent_flat_set<Key, Hash, KeyEqual, Allocator> const& lhs,
concurrent_flat_set<Key, Hash, KeyEqual, Allocator> const& rhs);
template <class Key, class Hash, class Pred, class Alloc>
void swap(concurrent_flat_set<Key, Hash, Pred, Alloc>& x,
concurrent_flat_set<Key, Hash, Pred, Alloc>& y)
noexcept(noexcept(x.swap(y)));
template <class K, class H, class P, class A, class Predicate>
typename concurrent_flat_set<K, H, P, A>::size_type erase_if(
concurrent_flat_set<K, H, P, A>& c, Predicate pred);
} // namespace unordered
using boost::unordered::concurrent_flat_set;
} // namespace boost
#endif // BOOST_UNORDERED_CONCURRENT_FLAT_SET_FWD_HPP
// Copyright (C) 2023 Christian Mazakas
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_UNORDERED_DETAIL_FOA_FLAT_SET_TYPES_HPP
#define BOOST_UNORDERED_DETAIL_FOA_FL
Showing preview only (469K chars total). Download the full file or copy to clipboard to get everything.
gitextract_4zx3e2p3/ ├── .clang-format ├── .editorconfig ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── 1-bug-report.en-US.yml │ │ ├── 2-feature-request.en-US.yml │ │ └── config.yml │ ├── PULL_REQUEST_TEMPLATE.md │ ├── actions/ │ │ ├── android-explorer-build/ │ │ │ └── action.yml │ │ ├── android-sdk-release/ │ │ │ └── action.yml │ │ ├── clay-macos-build/ │ │ │ └── action.yml │ │ ├── common-deps/ │ │ │ └── action.yml │ │ ├── free-android-disk/ │ │ │ └── action.yml │ │ ├── generate-changelog/ │ │ │ └── action.yml │ │ ├── get-latest-tag/ │ │ │ └── action.yml │ │ ├── harmony-explorer-build/ │ │ │ └── action.yml │ │ ├── ios-common-deps/ │ │ │ └── action.yml │ │ ├── ios-explorer-build/ │ │ │ └── action.yml │ │ ├── ios-sdk-publish/ │ │ │ └── action.yml │ │ ├── macos-explorer-build/ │ │ │ └── action.yml │ │ ├── release-changelog/ │ │ │ └── action.yml │ │ ├── setup-android-env/ │ │ │ └── action.yml │ │ ├── windows-common-deps/ │ │ │ └── action.yml │ │ └── windows-explorer-build/ │ │ └── action.yml │ └── workflows/ │ ├── ci.yml │ ├── cocoapods_token_keepalive.yml │ ├── codeql.yml │ ├── css-defines-publish.yml │ ├── issue-management.yml │ ├── lynx-core-publish.yml │ ├── lynx-types-publish.yml │ ├── publish-release.yml │ ├── sdk-release-test.yml │ ├── tasm-publish.yml │ ├── type-config-publish.yml │ └── type-element-api-publish.yml ├── .gitignore ├── .gn ├── .habitat ├── .npmrc ├── .prettierignore ├── .prettierrc ├── .rtf/ │ ├── android-ut-lynx.template │ ├── config │ ├── native-ut-devtool.template │ └── native-ut-lynx.template ├── .tools_shared ├── AGENTS.md ├── BUILD.gn ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── CPPLINT.cfg ├── DEFAULT_REVIEWERS ├── Gemfile ├── LICENSE ├── NOTICE ├── README.md ├── SECURITY.md ├── agents/ │ └── code_review/ │ └── commit_message_format.md ├── base/ │ ├── CPPLINT.cfg │ ├── README.md │ ├── include/ │ │ ├── algorithm.h │ │ ├── auto_create_optional.h │ │ ├── auto_reset.h │ │ ├── base_defines.h │ │ ├── base_export.h │ │ ├── base_public_headers.gni │ │ ├── base_trace/ │ │ │ └── trace_event_utils.h │ │ ├── boost/ │ │ │ └── unordered.h │ │ ├── bundled_optional.h │ │ ├── bundled_optional_lldb.py │ │ ├── cast_util.h │ │ ├── closure.h │ │ ├── compiler_specific.h │ │ ├── concurrent_queue.h │ │ ├── datauri_utils.h │ │ ├── debug/ │ │ │ ├── backtrace.h │ │ │ ├── lynx_assert.h │ │ │ └── lynx_error.h │ │ ├── expected.h │ │ ├── expected_internal.h │ │ ├── file_utils.h │ │ ├── flex_optional.h │ │ ├── float_comparison.h │ │ ├── fml/ │ │ │ ├── LICENSE │ │ │ ├── concurrent_message_loop.h │ │ │ ├── cpu_affinity.h │ │ │ ├── delayed_task.h │ │ │ ├── eintr_wrapper.h │ │ │ ├── fml_trace_event_def.h │ │ │ ├── hash_combine.h │ │ │ ├── macros.h │ │ │ ├── make_copyable.h │ │ │ ├── memory/ │ │ │ │ ├── ref_counted.h │ │ │ │ ├── ref_counted_internal.h │ │ │ │ ├── ref_ptr.h │ │ │ │ ├── ref_ptr_internal.h │ │ │ │ ├── task_runner_checker.h │ │ │ │ ├── weak_ptr.h │ │ │ │ └── weak_ptr_internal.h │ │ │ ├── message_loop.h │ │ │ ├── message_loop_impl.h │ │ │ ├── message_loop_task_queues.h │ │ │ ├── platform/ │ │ │ │ ├── android/ │ │ │ │ │ ├── cpu_affinity.h │ │ │ │ │ └── message_loop_android.h │ │ │ │ ├── darwin/ │ │ │ │ │ ├── cf_utils.h │ │ │ │ │ └── message_loop_darwin.h │ │ │ │ ├── harmony/ │ │ │ │ │ └── message_loop_harmony.h │ │ │ │ ├── linux/ │ │ │ │ │ ├── message_loop_linux.h │ │ │ │ │ └── timerfd.h │ │ │ │ ├── thread_config_setter.h │ │ │ │ └── win/ │ │ │ │ ├── message_loop_win.h │ │ │ │ ├── task_runner_win32.h │ │ │ │ └── task_runner_win32_window.h │ │ │ ├── raster_thread_merger.h │ │ │ ├── shared_thread_merger.h │ │ │ ├── synchronization/ │ │ │ │ ├── atomic_object.h │ │ │ │ ├── count_down_latch.h │ │ │ │ ├── semaphore.h │ │ │ │ ├── shared_mutex.h │ │ │ │ ├── shared_mutex_posix.h │ │ │ │ ├── shared_mutex_std.h │ │ │ │ ├── sync_switch.h │ │ │ │ └── waitable_event.h │ │ │ ├── task_queue_id.h │ │ │ ├── task_runner.h │ │ │ ├── task_runner_delegate.h │ │ │ ├── task_source.h │ │ │ ├── task_source_grade.h │ │ │ ├── thread.h │ │ │ ├── thread_host.h │ │ │ ├── time/ │ │ │ │ ├── chrono_timestamp_provider.h │ │ │ │ ├── time_delta.h │ │ │ │ ├── time_point.h │ │ │ │ ├── timer.h │ │ │ │ └── timestamp_provider.h │ │ │ ├── unique_fd.h │ │ │ ├── unique_object.h │ │ │ └── wakeable.h │ │ ├── geometry/ │ │ │ ├── point.h │ │ │ ├── rect.h │ │ │ └── size.h │ │ ├── hybrid_map.h │ │ ├── linked_hash_map.h │ │ ├── linked_hash_map_lldb.py │ │ ├── log/ │ │ │ ├── alog_wrapper.h │ │ │ ├── log_stream.h │ │ │ ├── logging.h │ │ │ ├── logging_base.h │ │ │ └── logging_darwin.h │ │ ├── lru_cache.h │ │ ├── lynx_actor.h │ │ ├── md5.h │ │ ├── memory/ │ │ │ └── memory_pressure_level.h │ │ ├── no_destructor.h │ │ ├── path_utils.h │ │ ├── platform/ │ │ │ ├── android/ │ │ │ │ ├── java_type.h │ │ │ │ ├── jni_convert_helper.h │ │ │ │ ├── jni_utils.h │ │ │ │ └── scoped_java_ref.h │ │ │ ├── darwin/ │ │ │ │ └── type_utils.h │ │ │ └── harmony/ │ │ │ ├── harmony_vsync_manager.h │ │ │ └── napi_util.h │ │ ├── position.h │ │ ├── shared_vector.h │ │ ├── sorted_for_each.h │ │ ├── string/ │ │ │ ├── quickjs_dtoa.h │ │ │ ├── string_conversion_win.h │ │ │ ├── string_number_convert.h │ │ │ └── string_utils.h │ │ ├── thread/ │ │ │ ├── base_semaphore.h │ │ │ ├── pthread_rw_lock_guard.h │ │ │ └── timed_task.h │ │ ├── timer/ │ │ │ └── time_utils.h │ │ ├── to_underlying.h │ │ ├── type_traits_addon.h │ │ ├── value/ │ │ │ ├── array.h │ │ │ ├── base_string.h │ │ │ ├── base_string_lldb.py │ │ │ ├── base_value.h │ │ │ ├── byte_array.h │ │ │ ├── lynx_api_types.h │ │ │ ├── lynx_value_api.h │ │ │ ├── lynx_value_extended.h │ │ │ ├── lynx_value_lldb.py │ │ │ ├── lynx_value_types.h │ │ │ ├── path_parser.h │ │ │ ├── ref_counted_class.h │ │ │ ├── ref_type.h │ │ │ └── table.h │ │ ├── vector.h │ │ ├── vector2d.h │ │ ├── vector_helper.h │ │ ├── vector_lldb.py │ │ ├── version.h │ │ └── version_util.h │ ├── platform/ │ │ ├── android/ │ │ │ ├── .gitignore │ │ │ ├── BUILD.gn │ │ │ ├── CMakeLists.txt │ │ │ ├── build.gradle │ │ │ ├── gradle.properties │ │ │ ├── proguard-rules.pro │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── lynx/ │ │ │ │ └── base/ │ │ │ │ ├── CalledByNative.java │ │ │ │ ├── IBaseNativeLibraryLoader.java │ │ │ │ ├── LynxBaseEnv.java │ │ │ │ ├── LynxBaseTrace.java │ │ │ │ ├── log/ │ │ │ │ │ ├── AbsBaseLogDelegate.java │ │ │ │ │ └── LynxLog.java │ │ │ │ └── memory/ │ │ │ │ ├── MemoryPressureCallback.java │ │ │ │ └── MemoryPressureLevel.java │ │ │ └── jni/ │ │ │ ├── .gitignore │ │ │ ├── BUILD.gn │ │ │ └── jni_configs.yml │ │ ├── darwin/ │ │ │ ├── BUILD.gn │ │ │ ├── LynxBaseDefines.h │ │ │ ├── LynxBaseEnv.h │ │ │ ├── LynxBaseEnv.mm │ │ │ ├── log/ │ │ │ │ ├── LynxLog.h │ │ │ │ └── LynxLog.mm │ │ │ └── trace/ │ │ │ ├── LynxBaseTrace.h │ │ │ └── LynxBaseTrace.mm │ │ ├── harmony/ │ │ │ ├── .gitignore │ │ │ ├── .ohpmignore │ │ │ ├── BUILD.gn │ │ │ ├── Index.ets │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── build-profile.json5 │ │ │ ├── consumer-rules.txt │ │ │ ├── hvigorfile.ts │ │ │ ├── obfuscation-rules.txt │ │ │ ├── oh-package.json5 │ │ │ └── src/ │ │ │ ├── cpp/ │ │ │ │ ├── entry.cc │ │ │ │ └── types/ │ │ │ │ └── liblynxbase/ │ │ │ │ ├── index.d.ts │ │ │ │ └── oh-package.json5 │ │ │ └── main/ │ │ │ ├── ets/ │ │ │ │ ├── Index.ets │ │ │ │ ├── LynxBaseEnv.ets │ │ │ │ ├── LynxBaseTrace.ets │ │ │ │ ├── log/ │ │ │ │ │ └── LynxLog.ets │ │ │ │ └── service/ │ │ │ │ ├── IBaseServiceProvider.ets │ │ │ │ ├── ILynxBaseLogService.ets │ │ │ │ ├── ILynxBaseTraceService.ets │ │ │ │ └── LynxBaseServiceCenter.ets │ │ │ └── module.json5 │ │ └── windows/ │ │ ├── BUILD.gn │ │ ├── lynx_base_env.cc │ │ └── lynx_base_env.h │ ├── src/ │ │ ├── BUILD.gn │ │ ├── algorithm_unittest.cc │ │ ├── auto_create_optional_unittest.cc │ │ ├── auto_reset_unittest.cc │ │ ├── base.gni │ │ ├── base_trace/ │ │ │ ├── base_trace_event_def.h │ │ │ ├── trace_android.cc │ │ │ ├── trace_event.h │ │ │ ├── trace_event_utils.cc │ │ │ ├── trace_harmony.cc │ │ │ └── trace_harmony.h │ │ ├── boost/ │ │ │ └── unordered_unittest.cc │ │ ├── bundled_optional_unittest.cc │ │ ├── closure_unittest.cc │ │ ├── concurrent_queue_unittest.cc │ │ ├── datauri_utils.cc │ │ ├── datauri_utils_unittest.cc │ │ ├── debug/ │ │ │ ├── backtrace.cc │ │ │ ├── lynx_error.cc │ │ │ └── lynx_error_unittest.cc │ │ ├── expected_unittest.cc │ │ ├── file_utils.cc │ │ ├── file_utils_unittest.cc │ │ ├── flex_optional_unittest.cc │ │ ├── fml/ │ │ │ ├── LICENSE │ │ │ ├── concurrent_message_loop.cc │ │ │ ├── cpu_affinity.cc │ │ │ ├── cpu_affinity_unittests.cc │ │ │ ├── hash_combine_unittests.cc │ │ │ ├── memory/ │ │ │ │ ├── ref_counted_unittest.cc │ │ │ │ ├── task_runner_checker.cc │ │ │ │ ├── task_runner_checker_unittest.cc │ │ │ │ └── weak_ptr_unittest.cc │ │ │ ├── message_loop.cc │ │ │ ├── message_loop_impl.cc │ │ │ ├── message_loop_impl_unittests.cc │ │ │ ├── message_loop_task_queues.cc │ │ │ ├── message_loop_task_queues_merge_unmerge_unittests.cc │ │ │ ├── message_loop_task_queues_unittests.cc │ │ │ ├── message_loop_unittests.cc │ │ │ ├── platform/ │ │ │ │ ├── android/ │ │ │ │ │ ├── cpu_affinity.cc │ │ │ │ │ ├── message_loop_android.cc │ │ │ │ │ ├── message_loop_android_ndk.cc │ │ │ │ │ └── thread_config_setter_android.cc │ │ │ │ ├── darwin/ │ │ │ │ │ ├── cf_utils_unittests.mm │ │ │ │ │ ├── message_loop_darwin.mm │ │ │ │ │ ├── thread_config_setter_darwin.mm │ │ │ │ │ └── thread_name_setter_darwin.cc │ │ │ │ ├── harmony/ │ │ │ │ │ └── message_loop_harmony.cc │ │ │ │ ├── linux/ │ │ │ │ │ ├── message_loop_linux.cc │ │ │ │ │ └── timerfd.cc │ │ │ │ ├── posix/ │ │ │ │ │ └── thread_name_setter_posix.cc │ │ │ │ └── win/ │ │ │ │ ├── message_loop_win.cc │ │ │ │ ├── task_runner_win32.cc │ │ │ │ ├── task_runner_win32_window.cc │ │ │ │ └── thread_name_setter_win.cc │ │ │ ├── raster_thread_merger.cc │ │ │ ├── raster_thread_merger_unittests.cc │ │ │ ├── shared_thread_merger.cc │ │ │ ├── synchronization/ │ │ │ │ ├── count_down_latch.cc │ │ │ │ ├── count_down_latch_unittests.cc │ │ │ │ ├── semaphore.cc │ │ │ │ ├── semaphore_unittest.cc │ │ │ │ ├── shared_mutex_posix.cc │ │ │ │ ├── shared_mutex_std.cc │ │ │ │ ├── sync_switch.cc │ │ │ │ ├── sync_switch_unittest.cc │ │ │ │ ├── waitable_event.cc │ │ │ │ └── waitable_event_unittest.cc │ │ │ ├── task_runner.cc │ │ │ ├── task_runner_unittests.cc │ │ │ ├── task_source.cc │ │ │ ├── task_source_unittests.cc │ │ │ ├── thread.cc │ │ │ ├── thread_host.cc │ │ │ ├── thread_name_setter.h │ │ │ ├── thread_unittests.cc │ │ │ ├── time/ │ │ │ │ ├── chrono_timestamp_provider.cc │ │ │ │ ├── time_delta_unittest.cc │ │ │ │ ├── time_point.cc │ │ │ │ ├── time_point_unittest.cc │ │ │ │ ├── time_unittest.cc │ │ │ │ └── timer.cc │ │ │ └── unique_fd.cc │ │ ├── geometry_unittest.cc │ │ ├── hybrid_map_unittest.cc │ │ ├── linked_hash_map_unittest.cc │ │ ├── log/ │ │ │ ├── alog_wrapper.cc │ │ │ ├── log_stream.cc │ │ │ ├── log_stream_unittest.cc │ │ │ ├── logging.cc │ │ │ ├── logging_android.cc │ │ │ ├── logging_base.cc │ │ │ ├── logging_darwin.mm │ │ │ ├── logging_harmony.cc │ │ │ └── logging_harmony.h │ │ ├── lynx_actor_unittest.cc │ │ ├── md5.cc │ │ ├── path_utils_unittest.cc │ │ ├── platform/ │ │ │ ├── android/ │ │ │ │ ├── java_type.cc │ │ │ │ ├── jni_convert_helper.cc │ │ │ │ ├── jni_utils.cc │ │ │ │ └── scoped_java_ref.cc │ │ │ └── harmony/ │ │ │ ├── harmony_vsync_manager.cc │ │ │ └── napi_util.cc │ │ ├── sorted_for_each_unittest.cc │ │ ├── string/ │ │ │ ├── quickjs_dtoa.c │ │ │ ├── string_conversion_win.cc │ │ │ ├── string_number_convert.cc │ │ │ ├── string_number_convert_unittest.cc │ │ │ ├── string_utils.cc │ │ │ └── string_utils_unittest.cc │ │ ├── thread/ │ │ │ ├── timed_task.cc │ │ │ └── timed_task_unittest.cc │ │ ├── timer/ │ │ │ ├── time_utils.cc │ │ │ └── time_utils_unittest.cc │ │ ├── to_underlying_unittest.cc │ │ ├── type_traits_addon_unittest.cc │ │ ├── value/ │ │ │ ├── base_string.cc │ │ │ ├── base_value.cc │ │ │ ├── base_value_print.cc │ │ │ ├── base_value_unittest.cc │ │ │ ├── byte_array.cc │ │ │ ├── lynx_value_api_impl.cc │ │ │ ├── lynx_value_extended_empty.cc │ │ │ ├── path_parser.cc │ │ │ ├── path_parser_unittest.cc │ │ │ └── table.cc │ │ ├── vector.cc │ │ ├── vector_unittest.cc │ │ └── version_unittest.cc │ └── trace/ │ ├── README.md │ ├── android/ │ │ ├── .gitignore │ │ ├── BUILD.gn │ │ ├── CMakeLists.txt │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── proguard-rules.pro │ │ └── src/ │ │ ├── android_test/ │ │ │ └── java/ │ │ │ ├── AndroidManifest.xml │ │ │ └── com/ │ │ │ └── lynx/ │ │ │ └── trace/ │ │ │ └── TraceControllerTest.java │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── com/ │ │ │ └── lynx/ │ │ │ ├── tasm/ │ │ │ │ └── base/ │ │ │ │ ├── LynxTraceEnv.java │ │ │ │ ├── TraceController.java │ │ │ │ └── TraceEvent.java │ │ │ └── trace/ │ │ │ └── CalledByNative.java │ │ └── jni/ │ │ ├── .gitignore │ │ ├── BUILD.gn │ │ └── jni_configs.yml │ ├── darwin/ │ │ ├── .gitignore │ │ ├── BUILD.gn │ │ ├── CPPLINT.cfg │ │ ├── LynxTraceController.h │ │ ├── LynxTraceController.mm │ │ ├── LynxTraceController_mock.mm │ │ ├── LynxTraceEvent.h │ │ ├── LynxTraceEvent.mm │ │ ├── LynxTraceEventWrapper.h │ │ ├── LynxTraceEventWrapper.mm │ │ └── trace-prefix.h │ └── native/ │ ├── BUILD.gn │ ├── hook_systrace/ │ │ ├── cpu_info_trace.cc │ │ ├── cpu_info_trace.h │ │ ├── hook_system_trace.h │ │ ├── hook_system_trace_android.cc │ │ ├── hook_system_trace_default.cc │ │ ├── hook_system_trace_harmony.cc │ │ └── hook_systrace.gni │ ├── instance_counter_trace.cc │ ├── instance_counter_trace.h │ ├── internal_trace_category.h │ ├── platform/ │ │ ├── android/ │ │ │ ├── trace_controller_android.cc │ │ │ ├── trace_controller_android.h │ │ │ ├── trace_controller_android_mock.cc │ │ │ ├── trace_event_android_mock.cc │ │ │ ├── trace_event_android_perfetto.cc │ │ │ └── trace_event_android_systrace.cc │ │ ├── darwin/ │ │ │ ├── trace_controller_darwin.h │ │ │ └── trace_controller_darwin.mm │ │ ├── harmony/ │ │ │ ├── trace_controller_delegate_harmony.cc │ │ │ ├── trace_controller_delegate_harmony.h │ │ │ ├── trace_controller_harmony.cc │ │ │ ├── trace_controller_harmony.h │ │ │ └── trace_event_utils_systrace_harmony.cc │ │ ├── platform.gni │ │ └── windows/ │ │ ├── trace_controller_win.cc │ │ ├── trace_controller_win.h │ │ └── trace_controller_win_mock.cc │ ├── trace_controller.cc │ ├── trace_controller.h │ ├── trace_controller_impl.cc │ ├── trace_controller_impl.h │ ├── trace_controller_unittest.cc │ ├── trace_defines.h │ ├── trace_event.h │ ├── trace_event_export_symbol.cc │ ├── trace_event_export_symbol.h │ ├── trace_event_unittest.cc │ ├── trace_event_utils_perfetto.h │ ├── trace_event_utils_perfetto_mock.cc │ ├── trace_event_utils_systrace.h │ ├── trace_event_utils_systrace_android.cc │ ├── trace_event_utils_systrace_default.cc │ ├── trace_export.h │ ├── track_event_wrapper.cc │ ├── track_event_wrapper.h │ └── track_event_wrapper_mock.cc ├── build_overrides/ │ ├── android.gni │ ├── angle.gni │ ├── bindings_files.gni │ ├── build.gni │ ├── codec_files.gni │ ├── darwin.gni │ ├── fml.gni │ ├── glslang.gni │ ├── oliver.gni │ ├── renderer_utils_files.gni │ ├── resource_file.gni │ ├── services_files.gni │ ├── spirv_tools.gni │ ├── swiftshader.gni │ ├── vulkan_headers.gni │ ├── vulkan_loader.gni │ ├── vulkan_tools.gni │ ├── wayland.gni │ └── windows.gni ├── clay/ │ ├── BUILD.gn │ ├── LICENSE │ ├── LICENSE.flutter │ ├── README.md │ ├── assets/ │ │ ├── BUILD.gn │ │ ├── asset_manager.cc │ │ ├── asset_manager.h │ │ ├── asset_resolver.h │ │ ├── directory_asset_bundle.cc │ │ └── directory_asset_bundle.h │ ├── build/ │ │ ├── concurrent_jobs.gni │ │ ├── copy_info_plist.py │ │ ├── generate_coverage.py │ │ ├── get_concurrent_jobs.py │ │ ├── git_revision.py │ │ ├── zip.py │ │ └── zip_bundle.gni │ ├── common/ │ │ ├── BUILD.gn │ │ ├── config.gni │ │ ├── constants.h │ │ ├── element_id.cc │ │ ├── element_id.h │ │ ├── exported_symbols.sym │ │ ├── exported_symbols_mac.sym │ │ ├── graphics/ │ │ │ ├── BUILD.gn │ │ │ ├── drawable_image.cc │ │ │ ├── drawable_image.h │ │ │ ├── gl/ │ │ │ │ ├── gl_api.h │ │ │ │ ├── gl_api_common.cc │ │ │ │ ├── gl_api_common.h │ │ │ │ ├── gl_api_windows.cc │ │ │ │ ├── gl_api_windows.h │ │ │ │ ├── gl_pipeline_helper.cc │ │ │ │ ├── gl_pipeline_helper.h │ │ │ │ ├── gl_shader_program.cc │ │ │ │ ├── gl_shader_program.h │ │ │ │ ├── scoped_framebuffer_binder.cc │ │ │ │ ├── scoped_framebuffer_binder.h │ │ │ │ ├── scoped_texture_binder.cc │ │ │ │ └── scoped_texture_binder.h │ │ │ ├── gl_context_switch.cc │ │ │ ├── gl_context_switch.h │ │ │ ├── graphic_meminfo.h │ │ │ ├── msaa_sample_count.h │ │ │ ├── persistent_cache.cc │ │ │ ├── persistent_cache.h │ │ │ ├── screenshot.h │ │ │ ├── shared_drawable_image.cc │ │ │ ├── shared_drawable_image.h │ │ │ ├── shared_image_external_bitmap.cc │ │ │ ├── shared_image_external_bitmap.h │ │ │ ├── shared_image_external_texture.cc │ │ │ └── shared_image_external_texture.h │ │ ├── recyclable.h │ │ ├── service/ │ │ │ ├── BUILD.gn │ │ │ ├── service.cc │ │ │ ├── service.h │ │ │ ├── service_manager.cc │ │ │ ├── service_manager.h │ │ │ └── service_unittests.cc │ │ ├── settings.cc │ │ ├── settings.h │ │ ├── sha1.cc │ │ ├── sha1.h │ │ ├── sha1_include.cc │ │ ├── sys_info.cc │ │ ├── sys_info.h │ │ ├── task_runners.cc │ │ ├── task_runners.h │ │ ├── thread_host.cc │ │ ├── thread_host.h │ │ ├── thread_host_holder.cc │ │ └── thread_host_holder.h │ ├── example/ │ │ └── glfw/ │ │ ├── BUILD.gn │ │ ├── README.md │ │ ├── clay_glfw.cc │ │ ├── clay_logo.h │ │ ├── custom_task_runner.cc │ │ ├── custom_task_runner.h │ │ ├── event_loop.cc │ │ ├── event_loop.h │ │ ├── platform_view_impl.h │ │ ├── shell_impl.cc │ │ ├── shell_impl.h │ │ ├── surface_gl_impl.h │ │ ├── thread_host_holder.cc │ │ └── thread_host_holder.h │ ├── flow/ │ │ ├── BUILD.gn │ │ ├── animation/ │ │ │ ├── animation_host.cc │ │ │ ├── animation_host.h │ │ │ ├── animation_mutator.cc │ │ │ ├── animation_mutator.h │ │ │ ├── scroll_offset_animation.cc │ │ │ ├── scroll_offset_animation.h │ │ │ └── scroll_offset_animation_unittests.cc │ │ ├── compositor/ │ │ │ ├── compositor_state.cc │ │ │ ├── compositor_state.h │ │ │ ├── compositor_state_unittests.cc │ │ │ └── overlay_views.h │ │ ├── compositor_context.cc │ │ ├── compositor_context.h │ │ ├── diff_context.cc │ │ ├── diff_context.h │ │ ├── diff_context_unittests.cc │ │ ├── drawable_image_unittests.cc │ │ ├── embedded_view_params_unittests.cc │ │ ├── embedded_views.cc │ │ ├── embedded_views.h │ │ ├── flow_rendering_backend.h │ │ ├── flow_run_all_unittests.cc │ │ ├── flow_test_utils.cc │ │ ├── flow_test_utils.h │ │ ├── frame_timings.cc │ │ ├── frame_timings.h │ │ ├── frame_timings_recorder_unittests.cc │ │ ├── gl_context_switch_unittests.cc │ │ ├── layer_snapshot_store.cc │ │ ├── layer_snapshot_store.h │ │ ├── layers/ │ │ │ ├── backdrop_filter_layer.cc │ │ │ ├── backdrop_filter_layer.h │ │ │ ├── backdrop_filter_layer_unittests.cc │ │ │ ├── cacheable_layer.cc │ │ │ ├── cacheable_layer.h │ │ │ ├── checkerboard_layertree_unittests.cc │ │ │ ├── clip_path_layer.cc │ │ │ ├── clip_path_layer.h │ │ │ ├── clip_path_layer_unittests.cc │ │ │ ├── clip_rect_layer.cc │ │ │ ├── clip_rect_layer.h │ │ │ ├── clip_rect_layer_unittests.cc │ │ │ ├── clip_rrect_layer.cc │ │ │ ├── clip_rrect_layer.h │ │ │ ├── clip_rrect_layer_unittests.cc │ │ │ ├── clip_shape_layer.h │ │ │ ├── color_filter_layer.cc │ │ │ ├── color_filter_layer.h │ │ │ ├── color_filter_layer_unittests.cc │ │ │ ├── container_layer.cc │ │ │ ├── container_layer.h │ │ │ ├── container_layer_unittests.cc │ │ │ ├── drawable_image_layer.cc │ │ │ ├── drawable_image_layer.h │ │ │ ├── drawable_image_layer_unittests.cc │ │ │ ├── external_view_layer.cc │ │ │ ├── external_view_layer.h │ │ │ ├── image_filter_layer.cc │ │ │ ├── image_filter_layer.h │ │ │ ├── image_filter_layer_unittests.cc │ │ │ ├── layer.cc │ │ │ ├── layer.h │ │ │ ├── layer_raster_cache_item.cc │ │ │ ├── layer_raster_cache_item.h │ │ │ ├── layer_state_stack.cc │ │ │ ├── layer_state_stack.h │ │ │ ├── layer_state_stack_unittests.cc │ │ │ ├── layer_tree.cc │ │ │ ├── layer_tree.h │ │ │ ├── layer_tree_unittests.cc │ │ │ ├── offscreen_surface.cc │ │ │ ├── offscreen_surface.h │ │ │ ├── offscreen_surface_unittests.cc │ │ │ ├── opacity_layer.cc │ │ │ ├── opacity_layer.h │ │ │ ├── opacity_layer_unittests.cc │ │ │ ├── performance_overlay_layer.cc │ │ │ ├── performance_overlay_layer.h │ │ │ ├── performance_overlay_layer_unittests.cc │ │ │ ├── physical_shape_layer.cc │ │ │ ├── physical_shape_layer.h │ │ │ ├── physical_shape_layer_unittests.cc │ │ │ ├── picture_complexity.cc │ │ │ ├── picture_complexity.h │ │ │ ├── picture_complexity_calculator_skity.cc │ │ │ ├── picture_complexity_calculator_skity.h │ │ │ ├── picture_complexity_gl.cc │ │ │ ├── picture_complexity_gl.h │ │ │ ├── picture_complexity_helper_skia.h │ │ │ ├── picture_complexity_helper_skity.h │ │ │ ├── picture_complexity_metal.cc │ │ │ ├── picture_complexity_metal.h │ │ │ ├── picture_layer.cc │ │ │ ├── picture_layer.h │ │ │ ├── picture_raster_cache_item.cc │ │ │ ├── picture_raster_cache_item.h │ │ │ ├── platform_view_layer.cc │ │ │ ├── platform_view_layer.h │ │ │ ├── platform_view_layer_unittests.cc │ │ │ ├── punch_hole_layer.cc │ │ │ ├── punch_hole_layer.h │ │ │ ├── punch_hole_layer_unittests.cc │ │ │ ├── shader_mask_layer.cc │ │ │ ├── shader_mask_layer.h │ │ │ ├── shader_mask_layer_unittests.cc │ │ │ ├── transform_layer.cc │ │ │ ├── transform_layer.h │ │ │ └── transform_layer_unittests.cc │ │ ├── matrix_clip_tracker.cc │ │ ├── matrix_clip_tracker.h │ │ ├── matrix_clip_tracker_unittests.cc │ │ ├── mutators_stack_unittests.cc │ │ ├── paint_region.cc │ │ ├── paint_region.h │ │ ├── paint_utils.cc │ │ ├── paint_utils.h │ │ ├── raster_cache.cc │ │ ├── raster_cache.h │ │ ├── raster_cache_item.h │ │ ├── raster_cache_key.cc │ │ ├── raster_cache_key.h │ │ ├── raster_cache_unittests.cc │ │ ├── raster_cache_util.cc │ │ ├── raster_cache_util.h │ │ ├── rtree.cc │ │ ├── rtree.h │ │ ├── rtree_unittests.cc │ │ ├── services/ │ │ │ └── animation_event_service.h │ │ ├── stopwatch.cc │ │ ├── stopwatch.h │ │ ├── stopwatch_unittests.cc │ │ ├── surface.cc │ │ ├── surface.h │ │ ├── surface_frame.cc │ │ ├── surface_frame.h │ │ ├── surface_frame_unittests.cc │ │ ├── testing/ │ │ │ ├── diff_context_test.cc │ │ │ ├── diff_context_test.h │ │ │ ├── gl_context_switch_test.cc │ │ │ ├── gl_context_switch_test.h │ │ │ ├── gpu_object_layer_test.cc │ │ │ ├── gpu_object_layer_test.h │ │ │ ├── layer_test.h │ │ │ ├── mock_drawable_image.cc │ │ │ ├── mock_drawable_image.h │ │ │ ├── mock_drawable_image_unittests.cc │ │ │ ├── mock_layer.cc │ │ │ ├── mock_layer.h │ │ │ ├── mock_layer_unittests.cc │ │ │ ├── mock_raster_cache.cc │ │ │ ├── mock_raster_cache.h │ │ │ ├── mock_shared_image_backing.cc │ │ │ ├── mock_shared_image_backing.h │ │ │ ├── mock_shared_image_unittests.cc │ │ │ ├── picture_complexity_unittests.cc │ │ │ ├── picture_test_utils.cc │ │ │ └── picture_test_utils.h │ │ ├── view_slicer.cc │ │ ├── view_slicer.h │ │ └── view_slicer_unittests.cc │ ├── fml/ │ │ ├── BUILD.gn │ │ ├── LICENSE │ │ ├── ascii_trie.cc │ │ ├── ascii_trie.h │ │ ├── ascii_trie_unittests.cc │ │ ├── atomic_sequence_num.h │ │ ├── backtrace.cc │ │ ├── backtrace.h │ │ ├── backtrace_android.cc │ │ ├── backtrace_stub.cc │ │ ├── backtrace_unittests.cc │ │ ├── base32.cc │ │ ├── base32.h │ │ ├── base32_unittest.cc │ │ ├── base64.cc │ │ ├── base64.h │ │ ├── base64_unittests.cc │ │ ├── command_line.cc │ │ ├── command_line.h │ │ ├── command_line_unittest.cc │ │ ├── container.h │ │ ├── container_unittests.cc │ │ ├── endianness.cc │ │ ├── endianness.h │ │ ├── endianness_unittests.cc │ │ ├── file.cc │ │ ├── file.h │ │ ├── file_unittest.cc │ │ ├── fml.gni │ │ ├── hex_codec.cc │ │ ├── hex_codec.h │ │ ├── hex_codec_unittest.cc │ │ ├── icu_util.cc │ │ ├── icu_util.h │ │ ├── log_level.h │ │ ├── log_settings.cc │ │ ├── log_settings.h │ │ ├── logging.cc │ │ ├── logging.h │ │ ├── logging_unittests.cc │ │ ├── mapping.cc │ │ ├── mapping.h │ │ ├── mapping_unittests.cc │ │ ├── math.h │ │ ├── math_unittests.cc │ │ ├── native_library.h │ │ ├── paths.cc │ │ ├── paths.h │ │ ├── paths_unittests.cc │ │ ├── platform/ │ │ │ ├── android/ │ │ │ │ ├── CPPLINT.cfg │ │ │ │ ├── jni_android.cc │ │ │ │ ├── jni_android.h │ │ │ │ ├── jni_weak_ref.cc │ │ │ │ ├── jni_weak_ref.h │ │ │ │ ├── paths_android.cc │ │ │ │ └── paths_android.h │ │ │ ├── darwin/ │ │ │ │ ├── cf_utils.cc │ │ │ │ ├── cf_utils.h │ │ │ │ ├── cf_utils_unittests.mm │ │ │ │ ├── paths_darwin.mm │ │ │ │ ├── platform_version.h │ │ │ │ ├── platform_version.mm │ │ │ │ ├── scoped_block.h │ │ │ │ ├── scoped_block.mm │ │ │ │ ├── scoped_nsobject.h │ │ │ │ ├── scoped_nsobject.mm │ │ │ │ ├── string_range_sanitization.h │ │ │ │ ├── string_range_sanitization.mm │ │ │ │ └── string_range_sanitization_unittests.mm │ │ │ ├── harmony/ │ │ │ │ ├── paths_harmony.cc │ │ │ │ └── paths_harmony.h │ │ │ ├── linux/ │ │ │ │ ├── paths_linux.cc │ │ │ │ ├── proc_maps_linux.cc │ │ │ │ └── proc_maps_linux.h │ │ │ ├── posix/ │ │ │ │ ├── command_line_posix.cc │ │ │ │ ├── file_posix.cc │ │ │ │ ├── mapping_posix.cc │ │ │ │ ├── native_library_posix.cc │ │ │ │ ├── paths_posix.cc │ │ │ │ └── posix_wrappers_posix.cc │ │ │ └── win/ │ │ │ ├── command_line_win.cc │ │ │ ├── errors_win.cc │ │ │ ├── errors_win.h │ │ │ ├── file_win.cc │ │ │ ├── file_win_unittests.cc │ │ │ ├── mapping_win.cc │ │ │ ├── native_library_win.cc │ │ │ ├── paths_win.cc │ │ │ ├── posix_wrappers_win.cc │ │ │ ├── wstring_conversion.cc │ │ │ ├── wstring_conversion.h │ │ │ └── wstring_conversion_unittests.cc │ │ ├── posix_wrappers.h │ │ ├── size.h │ │ └── status.h │ ├── gfx/ │ │ ├── BUILD.gn │ │ ├── animation/ │ │ │ ├── accelerate_decelerate_interpolator.cc │ │ │ ├── accelerate_decelerate_interpolator.h │ │ │ ├── accelerate_interpolator.cc │ │ │ ├── accelerate_interpolator.h │ │ │ ├── animation_data.cc │ │ │ ├── animation_data.h │ │ │ ├── animation_event_handler.h │ │ │ ├── animation_handler.cc │ │ │ ├── animation_handler.h │ │ │ ├── animation_handler_unittests.cc │ │ │ ├── animation_properties_util.h │ │ │ ├── animator.cc │ │ │ ├── animator.h │ │ │ ├── animator_listener.h │ │ │ ├── animator_listener_adapter.h │ │ │ ├── animator_target.h │ │ │ ├── anticipate_interpolator.cc │ │ │ ├── anticipate_interpolator.h │ │ │ ├── anticipate_overshoot_interpolator.cc │ │ │ ├── anticipate_overshoot_interpolator.h │ │ │ ├── bounce_animator.cc │ │ │ ├── bounce_animator.h │ │ │ ├── bounce_interpolator.cc │ │ │ ├── bounce_interpolator.h │ │ │ ├── build.gni │ │ │ ├── cubic_bezier_interpolator.cc │ │ │ ├── cubic_bezier_interpolator.h │ │ │ ├── cubic_bezier_interpolator_unittests.cc │ │ │ ├── cycle_interpolator.cc │ │ │ ├── cycle_interpolator.h │ │ │ ├── decelerate_interpolator.cc │ │ │ ├── decelerate_interpolator.h │ │ │ ├── dynamic_animator.cc │ │ │ ├── dynamic_animator.h │ │ │ ├── fling_animator.cc │ │ │ ├── fling_animator.h │ │ │ ├── interpolator.cc │ │ │ ├── interpolator.h │ │ │ ├── keyframe.cc │ │ │ ├── keyframe.h │ │ │ ├── keyframe_set.cc │ │ │ ├── keyframe_set.h │ │ │ ├── keyframes_manager.cc │ │ │ ├── keyframes_manager.h │ │ │ ├── lut_interpolator.cc │ │ │ ├── lut_interpolator.h │ │ │ ├── overshoot_interpolator.cc │ │ │ ├── overshoot_interpolator.h │ │ │ ├── path_interpolator.cc │ │ │ ├── path_interpolator.h │ │ │ ├── picture_animation_type.h │ │ │ ├── steps_interpolator.cc │ │ │ ├── steps_interpolator.h │ │ │ ├── timing_function_data.cc │ │ │ ├── timing_function_data.h │ │ │ ├── transition_data.cc │ │ │ ├── transition_data.h │ │ │ ├── transition_manager.cc │ │ │ ├── transition_manager.h │ │ │ ├── type_evaluator.h │ │ │ ├── value_animator.cc │ │ │ ├── value_animator.h │ │ │ ├── value_animator_unittests.cc │ │ │ ├── viscous_fluid_interpolator.cc │ │ │ └── viscous_fluid_interpolator.h │ │ ├── attributes.h │ │ ├── attributes_testing.h │ │ ├── comparable.h │ │ ├── geometry/ │ │ │ ├── axis.h │ │ │ ├── box_shadow_operations.cc │ │ │ ├── box_shadow_operations.h │ │ │ ├── box_shadow_value.h │ │ │ ├── build.gni │ │ │ ├── direction.h │ │ │ ├── filter_operations.cc │ │ │ ├── filter_operations.h │ │ │ ├── filter_value.h │ │ │ ├── float_point.cc │ │ │ ├── float_point.h │ │ │ ├── float_point3d.cc │ │ │ ├── float_point3d.h │ │ │ ├── float_rect.cc │ │ │ ├── float_rect.h │ │ │ ├── float_rounded_rect.cc │ │ │ ├── float_rounded_rect.h │ │ │ ├── float_size.h │ │ │ ├── float_vector2d.cc │ │ │ ├── float_vector2d.h │ │ │ ├── float_vector3d.cc │ │ │ ├── float_vector3d.h │ │ │ ├── math_util.h │ │ │ ├── path.cc │ │ │ ├── path.h │ │ │ ├── point.h │ │ │ ├── quaternion.cc │ │ │ ├── quaternion.h │ │ │ ├── rect.h │ │ │ ├── size.h │ │ │ ├── sticky_info.h │ │ │ ├── transform.cc │ │ │ ├── transform.h │ │ │ ├── transform_operation.cc │ │ │ ├── transform_operation.h │ │ │ ├── transform_operations.cc │ │ │ ├── transform_operations.h │ │ │ ├── transform_origin.h │ │ │ ├── transform_raw.h │ │ │ ├── transform_util.cc │ │ │ └── transform_util.h │ │ ├── gfx_rendering_backend.h │ │ ├── gfx_utils.cc │ │ ├── gfx_utils.h │ │ ├── gpu_object.h │ │ ├── gpu_object_unittests.cc │ │ ├── gpu_ref_object.h │ │ ├── graphics_canvas.cc │ │ ├── graphics_canvas.h │ │ ├── graphics_context.cc │ │ ├── graphics_context.h │ │ ├── graphics_isolate.cc │ │ ├── graphics_isolate.h │ │ ├── image/ │ │ │ ├── animated_image.cc │ │ │ ├── animated_image.h │ │ │ ├── base_image.cc │ │ │ ├── base_image.h │ │ │ ├── base_image_instance.cc │ │ │ ├── base_image_instance.h │ │ │ ├── build.gni │ │ │ ├── codec.h │ │ │ ├── decode_priority.h │ │ │ ├── decoding_image.cc │ │ │ ├── decoding_image.h │ │ │ ├── frame_info.h │ │ │ ├── graphics_image.cc │ │ │ ├── graphics_image.h │ │ │ ├── graphics_image_skia.cc │ │ │ ├── graphics_image_skia.h │ │ │ ├── graphics_image_skia_lazy.cc │ │ │ ├── graphics_image_skia_lazy.h │ │ │ ├── graphics_image_skity.cc │ │ │ ├── graphics_image_skity.h │ │ │ ├── graphics_image_skity_lazy.cc │ │ │ ├── graphics_image_skity_lazy.h │ │ │ ├── image.cc │ │ │ ├── image.h │ │ │ ├── image_data.h │ │ │ ├── image_data_cache.cc │ │ │ ├── image_data_cache.h │ │ │ ├── image_data_cache_unittests.cc │ │ │ ├── image_decoder.cc │ │ │ ├── image_decoder.h │ │ │ ├── image_descriptor.cc │ │ │ ├── image_descriptor.h │ │ │ ├── image_descriptor_platform.cc │ │ │ ├── image_descriptor_platform.h │ │ │ ├── image_descriptor_skia.cc │ │ │ ├── image_descriptor_skia.h │ │ │ ├── image_info.h │ │ │ ├── image_produce_context.h │ │ │ ├── image_producer.cc │ │ │ ├── image_producer.h │ │ │ ├── image_resource.cc │ │ │ ├── image_resource.h │ │ │ ├── image_resource_client.h │ │ │ ├── image_upload_manager.cc │ │ │ ├── image_upload_manager.h │ │ │ ├── multi_frame_codec.cc │ │ │ ├── multi_frame_codec.h │ │ │ ├── platform_image.h │ │ │ ├── single_frame_codec.cc │ │ │ ├── single_frame_codec.h │ │ │ ├── skimage_holder.cc │ │ │ ├── skimage_holder.h │ │ │ ├── static_image.cc │ │ │ ├── static_image.h │ │ │ ├── svg_image.cc │ │ │ ├── svg_image.h │ │ │ ├── svg_image_holder.cc │ │ │ └── svg_image_holder.h │ │ ├── paint.cc │ │ ├── paint.h │ │ ├── paint_decoding_image.h │ │ ├── paint_image.cc │ │ ├── paint_image.h │ │ ├── paint_image_skia.cc │ │ ├── paint_image_skia.h │ │ ├── paint_image_skia_lazy.cc │ │ ├── paint_image_skia_lazy.h │ │ ├── paint_image_skity.cc │ │ ├── paint_image_skity.h │ │ ├── paint_recorder.h │ │ ├── paint_recorder_skia.cc │ │ ├── paint_recorder_skity.cc │ │ ├── paint_unittests.cc │ │ ├── picture.cc │ │ ├── picture.h │ │ ├── pixel_helper.h │ │ ├── rendering_backend.h │ │ ├── scroll_direction.h │ │ ├── shared_image/ │ │ │ ├── BUILD.gn │ │ │ ├── android/ │ │ │ │ ├── android_hardwarebuffer_utils.cc │ │ │ │ ├── android_hardwarebuffer_utils.h │ │ │ │ ├── scoped_a_native_window.cc │ │ │ │ ├── scoped_a_native_window.h │ │ │ │ ├── scoped_java_surface.cc │ │ │ │ ├── scoped_java_surface.h │ │ │ │ ├── surface_texture.cc │ │ │ │ ├── surface_texture.h │ │ │ │ ├── surface_texture_listener.cc │ │ │ │ └── surface_texture_listener.h │ │ │ ├── android_egl_image_representation.cc │ │ │ ├── android_egl_image_representation.h │ │ │ ├── android_hardwarebuffer_image_backing.cc │ │ │ ├── android_hardwarebuffer_image_backing.h │ │ │ ├── android_surface_texture_image_backing.cc │ │ │ ├── android_surface_texture_image_backing.h │ │ │ ├── angle_d3d_image_representation.cc │ │ │ ├── angle_d3d_image_representation.h │ │ │ ├── angle_software_shm_image_backing.cc │ │ │ ├── angle_software_shm_image_backing.h │ │ │ ├── angle_sw_shm_image_representation.cc │ │ │ ├── angle_sw_shm_image_representation.h │ │ │ ├── cgl_image_representation.h │ │ │ ├── cgl_image_representation.mm │ │ │ ├── cv_pixelbuffer_image_backing.h │ │ │ ├── cv_pixelbuffer_image_backing.mm │ │ │ ├── d3d9_texture_image_backing.cc │ │ │ ├── d3d9_texture_image_backing.h │ │ │ ├── d3d_image_representation.cc │ │ │ ├── d3d_image_representation.h │ │ │ ├── d3d_texture_image_backing.cc │ │ │ ├── d3d_texture_image_backing.h │ │ │ ├── eagl_image_representation.h │ │ │ ├── eagl_image_representation.mm │ │ │ ├── egl_image_backing.cc │ │ │ ├── egl_image_backing.h │ │ │ ├── epoxy_shm_image_backing.cc │ │ │ ├── epoxy_shm_image_backing.h │ │ │ ├── epoxy_shm_image_representation.cc │ │ │ ├── epoxy_shm_image_representation.h │ │ │ ├── fence_sync.h │ │ │ ├── iosurface_image_backing.h │ │ │ ├── iosurface_image_backing.mm │ │ │ ├── linux_shm_image_representation.cc │ │ │ ├── linux_shm_image_representation.h │ │ │ ├── mtl_fence_sync.h │ │ │ ├── mtl_fence_sync.mm │ │ │ ├── mtl_image_representation.h │ │ │ ├── mtl_image_representation.mm │ │ │ ├── native_image_egl_image_representation.cc │ │ │ ├── native_image_egl_image_representation.h │ │ │ ├── native_image_image_backing.cc │ │ │ ├── native_image_image_backing.h │ │ │ ├── shared_image_backing.cc │ │ │ ├── shared_image_backing.h │ │ │ ├── shared_image_representation.cc │ │ │ ├── shared_image_representation.h │ │ │ ├── shared_image_sink.cc │ │ │ ├── shared_image_sink.h │ │ │ ├── shared_image_sink_accessor.cc │ │ │ ├── shared_image_sink_accessor.h │ │ │ ├── skia_gl_image_representation.cc │ │ │ ├── skia_gl_image_representation.h │ │ │ ├── skia_mtl_image_representation.h │ │ │ ├── skia_mtl_image_representation.mm │ │ │ ├── skia_shm_image_representation.cc │ │ │ ├── skia_shm_image_representation.h │ │ │ ├── skity_gl_image_representation.cc │ │ │ ├── skity_gl_image_representation.h │ │ │ ├── skity_mtl_image_representation.h │ │ │ ├── skity_mtl_image_representation.mm │ │ │ ├── utils/ │ │ │ │ ├── angle_get_proc.cc │ │ │ │ ├── angle_get_proc.h │ │ │ │ ├── dxgi_utils.cc │ │ │ │ ├── dxgi_utils.h │ │ │ │ ├── functions_angle.cc │ │ │ │ ├── functions_angle.h │ │ │ │ ├── gl_texture_converter.cc │ │ │ │ ├── gl_texture_converter.h │ │ │ │ ├── image_utils.cc │ │ │ │ └── image_utils.h │ │ │ ├── vulkan_image_hardwarebuffer_representation.cc │ │ │ └── vulkan_image_hardwarebuffer_representation.h │ │ ├── skia/ │ │ │ ├── build.gni │ │ │ ├── picture_skia.cc │ │ │ ├── picture_skia.h │ │ │ ├── skia_canvas.cc │ │ │ ├── skia_canvas.h │ │ │ ├── skia_concurrent_executor.cc │ │ │ └── skia_concurrent_executor.h │ │ ├── skity/ │ │ │ ├── BUILD.gn │ │ │ ├── picture_skity.cc │ │ │ ├── picture_skity.h │ │ │ ├── rendering_material.cc │ │ │ ├── rendering_material.h │ │ │ ├── skity_auto_canvas_save.h │ │ │ ├── skity_canvas.cc │ │ │ ├── skity_canvas.h │ │ │ ├── skity_decoding_image.cc │ │ │ ├── skity_decoding_image.h │ │ │ ├── skity_image.cc │ │ │ ├── skity_image.h │ │ │ ├── skity_lazy_image_traveller.cc │ │ │ └── skity_lazy_image_traveller.h │ │ ├── skity_to_skia_utils.h │ │ ├── style/ │ │ │ ├── blend_mode.h │ │ │ ├── borders_data.cc │ │ │ ├── borders_data.h │ │ │ ├── box_data.h │ │ │ ├── build.gni │ │ │ ├── color.cc │ │ │ ├── color.h │ │ │ ├── color.tmpl │ │ │ ├── color_filter.cc │ │ │ ├── color_filter.h │ │ │ ├── color_filter_unittests.cc │ │ │ ├── color_gen.inl │ │ │ ├── color_source.cc │ │ │ ├── color_source.h │ │ │ ├── color_source_unittests.cc │ │ │ ├── color_unittests.cc │ │ │ ├── color_unittests_helper.h │ │ │ ├── enum_unittests.cc │ │ │ ├── image_filter.cc │ │ │ ├── image_filter.h │ │ │ ├── image_filter_unittests.cc │ │ │ ├── length.h │ │ │ ├── mask_filter.cc │ │ │ ├── mask_filter.h │ │ │ ├── mask_filter_unittests.cc │ │ │ ├── outline_data.cc │ │ │ ├── outline_data.h │ │ │ ├── path_effect.cc │ │ │ ├── path_effect.h │ │ │ ├── path_effect_unittests.cc │ │ │ ├── runtime_effect.cc │ │ │ ├── runtime_effect.h │ │ │ ├── sampling_options.h │ │ │ ├── shadow.h │ │ │ ├── tile_mode.h │ │ │ ├── vertices.cc │ │ │ ├── vertices.h │ │ │ └── vertices_unittests.cc │ │ ├── svg/ │ │ │ └── svg_dom.h │ │ ├── testing_utils.h │ │ ├── text_blob.cc │ │ ├── text_blob.h │ │ ├── text_blob_skia.cc │ │ ├── text_blob_skia.h │ │ ├── text_blob_skity.cc │ │ ├── text_blob_skity.h │ │ └── vulkan/ │ │ ├── build.gni │ │ ├── vulkan_buffer.cc │ │ ├── vulkan_buffer.h │ │ ├── vulkan_command_pool_helper.cc │ │ ├── vulkan_command_pool_helper.h │ │ ├── vulkan_fence_helper.cc │ │ ├── vulkan_fence_helper.h │ │ ├── vulkan_helper.cc │ │ ├── vulkan_helper.h │ │ ├── vulkan_image.cc │ │ └── vulkan_image.h │ ├── lynx_adaptor/ │ │ ├── BUILD.gn │ │ ├── base_def.h │ │ ├── clay_value.cc │ │ ├── clay_value.h │ │ ├── layout_context_clay.cc │ │ ├── layout_context_clay.h │ │ ├── lynx_event_dispatcher.cc │ │ ├── lynx_event_dispatcher.h │ │ ├── native_module/ │ │ │ ├── AGENTS.md │ │ │ ├── build.gni │ │ │ ├── lynx_config_module.cc │ │ │ ├── lynx_config_module.h │ │ │ ├── lynx_exposure_module.cc │ │ │ ├── lynx_exposure_module.h │ │ │ ├── lynx_focus_module.cc │ │ │ ├── lynx_focus_module.h │ │ │ ├── lynx_intersection_observer_module.cc │ │ │ ├── lynx_intersection_observer_module.h │ │ │ ├── lynx_module_base.cc │ │ │ ├── lynx_module_base.h │ │ │ ├── lynx_module_factory.cc │ │ │ ├── lynx_module_factory.h │ │ │ ├── lynx_text_info_module.cc │ │ │ ├── lynx_text_info_module.h │ │ │ ├── lynx_ui_method_module.cc │ │ │ ├── lynx_ui_method_module.h │ │ │ ├── lynx_websocket_module.cc │ │ │ ├── lynx_websocket_module.h │ │ │ └── spec/ │ │ │ └── lynx_ui_method.spec.md │ │ ├── native_platform_view.cc │ │ ├── native_platform_view.h │ │ ├── native_platform_view_mock.cc │ │ ├── native_view_service_desktop.cc │ │ ├── native_view_service_desktop.h │ │ ├── painting_context_clay.cc │ │ ├── painting_context_clay.h │ │ ├── perf_controller_clay.cc │ │ ├── perf_controller_clay.h │ │ ├── platform_extra_bundle_clay.h │ │ ├── prop_bundle_impl.cc │ │ ├── prop_bundle_impl.h │ │ ├── resource_loader_embedder.cc │ │ ├── resource_loader_embedder.h │ │ ├── ui_delegate_clay.cc │ │ ├── ui_delegate_clay.h │ │ ├── value_converter.cc │ │ └── value_converter.h │ ├── memory/ │ │ ├── BUILD.gn │ │ ├── discardable_memory.h │ │ ├── discardable_memory_allocator.h │ │ ├── discardable_memory_allocator_impl.cc │ │ ├── discardable_memory_allocator_impl.h │ │ ├── discardable_memory_allocator_unittests.cc │ │ ├── discardable_memory_impl.h │ │ ├── discardable_memory_impl_posix.cc │ │ ├── discardable_memory_impl_win.cc │ │ ├── discardable_memory_unittests.cc │ │ ├── heap_discardable_memory.h │ │ ├── heap_discardable_memory_unittests.cc │ │ ├── memory_pressure_listener.cc │ │ ├── memory_pressure_listener.h │ │ ├── memory_pressure_listener_unittests.cc │ │ ├── memory_pressure_monitor.cc │ │ ├── memory_pressure_monitor.h │ │ ├── system_memory_pressure_evaluator.cc │ │ ├── system_memory_pressure_evaluator.h │ │ ├── system_memory_pressure_evaluator_mac.cc │ │ ├── system_memory_pressure_evaluator_mac.h │ │ ├── system_memory_pressure_evaluator_mac_unittests.cc │ │ ├── system_memory_pressure_evaluator_win.cc │ │ ├── system_memory_pressure_evaluator_win.h │ │ └── system_memory_pressure_evaluator_win_unittests.cc │ ├── net/ │ │ ├── BUILD.gn │ │ ├── cache/ │ │ │ ├── build.gni │ │ │ ├── cache_stats.cc │ │ │ ├── cache_stats.h │ │ │ ├── net_disk_cache.cc │ │ │ ├── net_disk_cache.h │ │ │ ├── net_resource_cache_key.cc │ │ │ └── net_resource_cache_key.h │ │ ├── fetcher/ │ │ │ ├── build.gni │ │ │ ├── http_resource_fetcher.cc │ │ │ ├── http_resource_fetcher.h │ │ │ ├── http_resource_fetcher_factory.cc │ │ │ ├── http_resource_fetcher_factory.h │ │ │ ├── http_resource_fetcher_host.cc │ │ │ ├── http_resource_fetcher_host.h │ │ │ └── http_resource_fetcher_unittests.cc │ │ ├── loader/ │ │ │ ├── build.gni │ │ │ ├── data_image_loader.cc │ │ │ ├── data_image_loader.h │ │ │ ├── resource_loader.h │ │ │ ├── resource_loader_creator_service.h │ │ │ ├── resource_loader_factory.cc │ │ │ ├── resource_loader_factory.h │ │ │ ├── resource_loader_intercept.h │ │ │ └── resource_loader_platform.h │ │ ├── macros.h │ │ ├── net_loader_callback.cc │ │ ├── net_loader_callback.h │ │ ├── net_loader_manager.cc │ │ ├── net_loader_manager.h │ │ ├── net_loader_manager_unittests.cc │ │ ├── resource_type.h │ │ └── url/ │ │ ├── LICENSE.txt │ │ ├── README.chromium │ │ ├── README.md │ │ ├── build.gni │ │ ├── uri.cc │ │ ├── uri.h │ │ ├── url_helper.cc │ │ ├── url_helper.h │ │ ├── url_helper_test.cc │ │ ├── url_parse.cc │ │ ├── url_parse.h │ │ ├── url_parse_internal.cc │ │ └── url_parse_internal.h │ ├── public/ │ │ ├── clay.h │ │ ├── event_delegate.h │ │ ├── layout_delegate.h │ │ ├── style_types.h │ │ ├── ui_component_delegate.h │ │ └── value.h │ ├── shell/ │ │ ├── common/ │ │ │ ├── BUILD.gn │ │ │ ├── context_options.cc │ │ │ ├── context_options.h │ │ │ ├── devtools_instrumentation.cc │ │ │ ├── devtools_instrumentation.h │ │ │ ├── display.cc │ │ │ ├── display.h │ │ │ ├── display_manager.cc │ │ │ ├── display_manager.h │ │ │ ├── engine.cc │ │ │ ├── engine.h │ │ │ ├── expired_on_task_runner.h │ │ │ ├── frame_timing_listener.h │ │ │ ├── one_shot_callback.h │ │ │ ├── output_surface.cc │ │ │ ├── output_surface.h │ │ │ ├── pipeline_timing_delegate.h │ │ │ ├── platform_view.cc │ │ │ ├── platform_view.h │ │ │ ├── pointer_data_dispatcher.cc │ │ │ ├── pointer_data_dispatcher.h │ │ │ ├── pointer_data_to_event.cc │ │ │ ├── pointer_data_to_event.h │ │ │ ├── rasterizer.cc │ │ │ ├── rasterizer.h │ │ │ ├── resource_cache_limit_calculator.cc │ │ │ ├── resource_cache_limit_calculator.h │ │ │ ├── scheduler/ │ │ │ │ ├── scheduler.cc │ │ │ │ ├── scheduler.h │ │ │ │ ├── scheduler_client.h │ │ │ │ ├── scheduler_state_machine.cc │ │ │ │ └── scheduler_state_machine.h │ │ │ ├── screenshot_utils.cc │ │ │ ├── screenshot_utils.h │ │ │ ├── scroll_fluency_monitor_delegate.h │ │ │ ├── serialization_callbacks.cc │ │ │ ├── serialization_callbacks.h │ │ │ ├── services/ │ │ │ │ ├── animation_event_service_impl.cc │ │ │ │ ├── animation_event_service_impl.h │ │ │ │ ├── animator_info_service.cc │ │ │ │ ├── animator_info_service.h │ │ │ │ ├── compositor/ │ │ │ │ │ ├── compositor_service.cc │ │ │ │ │ ├── compositor_service.h │ │ │ │ │ ├── platform_overlay_service.h │ │ │ │ │ ├── platform_overlay_service_fallback.cc │ │ │ │ │ ├── presenter_service.cc │ │ │ │ │ ├── presenter_service.h │ │ │ │ │ └── presenter_service_fallback.cc │ │ │ │ ├── drag_drop_service.cc │ │ │ │ ├── drag_drop_service.h │ │ │ │ ├── gesture_mediate_service.h │ │ │ │ ├── initialize_service.cc │ │ │ │ ├── initialize_service.h │ │ │ │ ├── instrumentation_service.cc │ │ │ │ ├── instrumentation_service.h │ │ │ │ ├── platform_const_service.cc │ │ │ │ ├── platform_const_service.h │ │ │ │ ├── raster_frame_service.cc │ │ │ │ ├── raster_frame_service.h │ │ │ │ ├── rasterizer_service.cc │ │ │ │ ├── rasterizer_service.h │ │ │ │ ├── screenshot_encoder.cc │ │ │ │ ├── screenshot_encoder.h │ │ │ │ ├── screenshot_service.cc │ │ │ │ ├── screenshot_service.h │ │ │ │ ├── sync_compositor_service.cc │ │ │ │ ├── sync_compositor_service.h │ │ │ │ ├── ui_frame_service.cc │ │ │ │ ├── ui_frame_service.h │ │ │ │ └── vsync_waiter_service.h │ │ │ ├── shell.cc │ │ │ ├── shell.h │ │ │ ├── shell_common_rendering_backend.h │ │ │ ├── skia_event_tracer_impl.cc │ │ │ ├── skia_event_tracer_impl.h │ │ │ ├── switches.cc │ │ │ ├── switches.h │ │ │ ├── variable_refresh_rate_display.cc │ │ │ ├── variable_refresh_rate_display.h │ │ │ ├── variable_refresh_rate_reporter.h │ │ │ ├── vsync_waiter.cc │ │ │ ├── vsync_waiter.h │ │ │ ├── vsync_waiter_fallback.cc │ │ │ ├── vsync_waiter_fallback.h │ │ │ ├── vsync_waiter_macos.h │ │ │ └── vsync_waiter_macos.mm │ │ ├── config.gni │ │ ├── gpu/ │ │ │ ├── BUILD.gn │ │ │ ├── gpu.gni │ │ │ ├── gpu_surface_gl_delegate.cc │ │ │ ├── gpu_surface_gl_delegate.h │ │ │ ├── gpu_surface_gl_skia.cc │ │ │ ├── gpu_surface_gl_skia.h │ │ │ ├── gpu_surface_gl_skity.cc │ │ │ ├── gpu_surface_gl_skity.h │ │ │ ├── gpu_surface_metal_delegate.cc │ │ │ ├── gpu_surface_metal_delegate.h │ │ │ ├── gpu_surface_metal_skia.h │ │ │ ├── gpu_surface_metal_skia.mm │ │ │ ├── gpu_surface_metal_skity.h │ │ │ ├── gpu_surface_metal_skity.mm │ │ │ ├── gpu_surface_software.cc │ │ │ ├── gpu_surface_software.h │ │ │ ├── gpu_surface_software_delegate.cc │ │ │ ├── gpu_surface_software_delegate.h │ │ │ ├── trace_gl_fuctions.cc │ │ │ └── trace_gl_fuctions.h │ │ ├── platform/ │ │ │ ├── common/ │ │ │ │ ├── BUILD.gn │ │ │ │ ├── engine_switches.cc │ │ │ │ ├── engine_switches.h │ │ │ │ ├── engine_switches_unittests.cc │ │ │ │ ├── path_utils.cc │ │ │ │ ├── path_utils.h │ │ │ │ ├── path_utils_unittests.cc │ │ │ │ ├── platform_provided_menu.h │ │ │ │ ├── text_editing_delta.cc │ │ │ │ ├── text_editing_delta.h │ │ │ │ ├── text_editing_delta_unittests.cc │ │ │ │ ├── text_input_model.cc │ │ │ │ ├── text_input_model.h │ │ │ │ ├── text_input_model_unittests.cc │ │ │ │ ├── text_range.h │ │ │ │ └── text_range_unittests.cc │ │ │ ├── darwin/ │ │ │ │ ├── CPPLINT.cfg │ │ │ │ ├── common/ │ │ │ │ │ ├── BUILD.gn │ │ │ │ │ ├── clay_service_manager_service_darwin.h │ │ │ │ │ ├── clay_service_manager_service_darwin.mm │ │ │ │ │ ├── framework/ │ │ │ │ │ │ ├── Headers/ │ │ │ │ │ │ │ ├── ClayServiceManager.h │ │ │ │ │ │ │ └── FlutterMacros.h │ │ │ │ │ │ └── Source/ │ │ │ │ │ │ └── ClayServiceManager.mm │ │ │ │ │ └── framework_shared.gni │ │ │ │ ├── graphics/ │ │ │ │ │ ├── BUILD.gn │ │ │ │ │ ├── FlutterDarwinContextMetalSkia.h │ │ │ │ │ ├── FlutterDarwinContextMetalSkia.mm │ │ │ │ │ ├── FlutterDarwinContextMetalSkity.h │ │ │ │ │ └── FlutterDarwinContextMetalSkity.mm │ │ │ │ └── macos/ │ │ │ │ ├── BUILD.gn │ │ │ │ └── framework/ │ │ │ │ ├── Headers/ │ │ │ │ │ ├── ClayMacOS.h │ │ │ │ │ ├── ClayViewProvider.h │ │ │ │ │ ├── FlutterAppDelegate.h │ │ │ │ │ ├── FlutterEngine.h │ │ │ │ │ ├── FlutterPlatformViews.h │ │ │ │ │ ├── FlutterPluginMacOS.h │ │ │ │ │ ├── FlutterPluginRegistrarMacOS.h │ │ │ │ │ ├── FlutterView.h │ │ │ │ │ └── FlutterViewController.h │ │ │ │ └── Source/ │ │ │ │ ├── ClayMouseCursorPlugin.h │ │ │ │ ├── ClayMouseCursorPlugin.mm │ │ │ │ ├── ClayViewProvider.mm │ │ │ │ ├── ClayViewProvider_Internal.h │ │ │ │ ├── FlutterAppDelegate.mm │ │ │ │ ├── FlutterEmbedderKeyResponder.h │ │ │ │ ├── FlutterEmbedderKeyResponder.mm │ │ │ │ ├── FlutterEngine.mm │ │ │ │ ├── FlutterEngine_Internal.h │ │ │ │ ├── FlutterKeyPrimaryResponder.h │ │ │ │ ├── FlutterKeyboardManager.h │ │ │ │ ├── FlutterKeyboardManager.mm │ │ │ │ ├── FlutterKeyboardViewDelegate.h │ │ │ │ ├── FlutterPlatformViewController.h │ │ │ │ ├── FlutterPlatformViewController.mm │ │ │ │ ├── FlutterRenderer.h │ │ │ │ ├── FlutterRenderer.mm │ │ │ │ ├── FlutterSurface.h │ │ │ │ ├── FlutterSurface.mm │ │ │ │ ├── FlutterSurfaceManager.h │ │ │ │ ├── FlutterSurfaceManager.mm │ │ │ │ ├── FlutterTextInputPlugin.h │ │ │ │ ├── FlutterTextInputPlugin.mm │ │ │ │ ├── FlutterThreadSynchronizer.h │ │ │ │ ├── FlutterThreadSynchronizer.mm │ │ │ │ ├── FlutterView.h │ │ │ │ ├── FlutterView.mm │ │ │ │ ├── FlutterViewController.mm │ │ │ │ ├── FlutterViewController_Internal.h │ │ │ │ ├── FlutterViewEngineProvider.h │ │ │ │ ├── FlutterViewEngineProvider.mm │ │ │ │ ├── FlutterViewProvider.h │ │ │ │ ├── KeyCodeMap.g.mm │ │ │ │ └── KeyCodeMap_Internal.h │ │ │ ├── embedder/ │ │ │ │ ├── BUILD.gn │ │ │ │ ├── embedder_engine.cc │ │ │ │ ├── embedder_engine.h │ │ │ │ ├── embedder_struct_macros.h │ │ │ │ ├── embedder_surface.cc │ │ │ │ ├── embedder_surface.h │ │ │ │ ├── embedder_surface_gl.cc │ │ │ │ ├── embedder_surface_gl.h │ │ │ │ ├── embedder_surface_metal.h │ │ │ │ ├── embedder_surface_metal.mm │ │ │ │ ├── embedder_surface_software.cc │ │ │ │ ├── embedder_surface_software.h │ │ │ │ ├── embedder_task_runner.cc │ │ │ │ ├── embedder_task_runner.h │ │ │ │ ├── embedder_thread_host.cc │ │ │ │ ├── embedder_thread_host.h │ │ │ │ ├── platform_view_embedder.cc │ │ │ │ ├── platform_view_embedder.h │ │ │ │ ├── platform_view_embedder_delegate.cc │ │ │ │ ├── platform_view_embedder_delegate.h │ │ │ │ ├── shell_platform_embedder_rendering_backend.h │ │ │ │ ├── vsync_waiter_embedder.cc │ │ │ │ └── vsync_waiter_embedder.h │ │ │ ├── headless/ │ │ │ │ ├── BUILD.gn │ │ │ │ ├── clay_event_loop.cc │ │ │ │ ├── clay_event_loop.h │ │ │ │ ├── clay_headless_engine.cc │ │ │ │ ├── clay_headless_engine.h │ │ │ │ ├── clay_headless_renderer.cc │ │ │ │ ├── clay_headless_renderer.h │ │ │ │ ├── gl/ │ │ │ │ │ ├── clay_headless_renderer_angle.cc │ │ │ │ │ ├── clay_headless_renderer_angle.h │ │ │ │ │ ├── clay_headless_renderer_cgl.cc │ │ │ │ │ ├── clay_headless_renderer_cgl.h │ │ │ │ │ ├── clay_headless_renderer_epoxy.cc │ │ │ │ │ ├── clay_headless_renderer_epoxy.h │ │ │ │ │ ├── clay_headless_renderer_gl.cc │ │ │ │ │ ├── clay_headless_renderer_gl.h │ │ │ │ │ ├── clay_headless_renderer_gles.cc │ │ │ │ │ ├── clay_headless_renderer_gles.h │ │ │ │ │ ├── clay_headless_renderer_host_gl.cc │ │ │ │ │ └── clay_headless_renderer_host_gl.h │ │ │ │ ├── metal/ │ │ │ │ │ ├── clay_headless_renderer_metal.h │ │ │ │ │ └── clay_headless_renderer_metal.mm │ │ │ │ └── public/ │ │ │ │ └── embdder_headless_delegate.h │ │ │ └── windows/ │ │ │ ├── BUILD.gn │ │ │ ├── cursor_handler.cc │ │ │ ├── cursor_handler.h │ │ │ ├── direct_manipulation.cc │ │ │ ├── direct_manipulation.h │ │ │ ├── dpi_utils.cc │ │ │ ├── dpi_utils.h │ │ │ ├── egl/ │ │ │ │ ├── child_window_win.cc │ │ │ │ ├── child_window_win.h │ │ │ │ ├── context.cc │ │ │ │ ├── context.h │ │ │ │ ├── direct_composition_surface.cc │ │ │ │ ├── direct_composition_surface.h │ │ │ │ ├── egl.cc │ │ │ │ ├── egl.h │ │ │ │ ├── manager.cc │ │ │ │ ├── manager.h │ │ │ │ ├── surface.cc │ │ │ │ ├── surface.h │ │ │ │ ├── window_surface.cc │ │ │ │ └── window_surface.h │ │ │ ├── flutter_key_map.g.cc │ │ │ ├── flutter_project_bundle.cc │ │ │ ├── flutter_project_bundle.h │ │ │ ├── flutter_window.cc │ │ │ ├── flutter_window.h │ │ │ ├── flutter_windows_engine.cc │ │ │ ├── flutter_windows_engine.h │ │ │ ├── flutter_windows_view.cc │ │ │ ├── flutter_windows_view.h │ │ │ ├── keyboard_handler_base.h │ │ │ ├── keyboard_key_embedder_handler.cc │ │ │ ├── keyboard_key_embedder_handler.h │ │ │ ├── keyboard_key_handler.cc │ │ │ ├── keyboard_key_handler.h │ │ │ ├── keyboard_manager.cc │ │ │ ├── keyboard_manager.h │ │ │ ├── keyboard_utils.cc │ │ │ ├── keyboard_utils.h │ │ │ ├── platform_handler.cc │ │ │ ├── platform_handler.h │ │ │ ├── sequential_id_generator.cc │ │ │ ├── sequential_id_generator.h │ │ │ ├── task_runner.cc │ │ │ ├── task_runner.h │ │ │ ├── task_runner_window.cc │ │ │ ├── task_runner_window.h │ │ │ ├── text_input_manager.cc │ │ │ ├── text_input_manager.h │ │ │ ├── text_input_plugin.cc │ │ │ ├── text_input_plugin.h │ │ │ ├── text_input_plugin_delegate.h │ │ │ ├── window.cc │ │ │ ├── window.h │ │ │ ├── window_binding_handler.h │ │ │ ├── window_binding_handler_delegate.h │ │ │ ├── window_mouse_drop_handler.cc │ │ │ ├── window_mouse_drop_handler.h │ │ │ ├── window_move_handler.cc │ │ │ ├── window_move_handler.h │ │ │ ├── window_proc_delegate_manager.cc │ │ │ ├── window_proc_delegate_manager.h │ │ │ ├── windows_proc_table.cc │ │ │ ├── windows_proc_table.h │ │ │ └── windowsx_shim.h │ │ └── profiling/ │ │ ├── BUILD.gn │ │ ├── sampling_profiler.cc │ │ ├── sampling_profiler.h │ │ └── sampling_profiler_unittest.cc │ ├── testing/ │ │ ├── .vpython │ │ ├── .vpython3 │ │ ├── BUILD.gn │ │ ├── CPPLINT.cfg │ │ ├── analysis_options.yaml │ │ ├── analyze_core_dump.sh │ │ ├── android_systrace_test.py │ │ ├── assertions.h │ │ ├── assertions_skia.cc │ │ ├── assertions_skia.h │ │ ├── canvas_test.h │ │ ├── debugger_detection.cc │ │ ├── debugger_detection.h │ │ ├── fixture_test.cc │ │ ├── fixture_test.h │ │ ├── lsan_suppressions.txt │ │ ├── mock_canvas.cc │ │ ├── mock_canvas.h │ │ ├── mock_canvas_unittests.cc │ │ ├── post_task_sync.cc │ │ ├── post_task_sync.h │ │ ├── run_all_unittests.cc │ │ ├── run_tests.py │ │ ├── run_tests.sh │ │ ├── sanitizer_suppressions.sh │ │ ├── test_gl_surface.cc │ │ ├── test_gl_surface.h │ │ ├── test_metal_context.h │ │ ├── test_metal_context.mm │ │ ├── test_metal_surface.cc │ │ ├── test_metal_surface.h │ │ ├── test_metal_surface_impl.h │ │ ├── test_metal_surface_impl.mm │ │ ├── test_metal_surface_unittests.cc │ │ ├── test_timeout_listener.cc │ │ ├── test_timeout_listener.h │ │ ├── testing.cc │ │ ├── testing.gni │ │ ├── testing.h │ │ ├── thread_test.cc │ │ ├── thread_test.h │ │ ├── tsan_suppressions.txt │ │ ├── ubsan_suppressions.txt │ │ └── xvfb.py │ ├── third_party/ │ │ ├── CPPLINT.cfg │ │ ├── skity_geometry/ │ │ │ ├── BUILD.gn │ │ │ ├── include/ │ │ │ │ └── skity/ │ │ │ │ ├── geometry/ │ │ │ │ │ ├── matrix.hpp │ │ │ │ │ ├── point.hpp │ │ │ │ │ ├── rect.hpp │ │ │ │ │ ├── rrect.hpp │ │ │ │ │ ├── scalar.hpp │ │ │ │ │ └── vector.hpp │ │ │ │ └── macros.hpp │ │ │ └── src/ │ │ │ └── geometry/ │ │ │ ├── glm_helper.hpp │ │ │ ├── math.hpp │ │ │ ├── matrix.cc │ │ │ ├── rect.cc │ │ │ └── rrect.cc │ │ └── txt/ │ │ ├── .clang-format │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BUILD.gn │ │ ├── LICENSE │ │ ├── PATENTS │ │ ├── benchmarks/ │ │ │ ├── paint_record_benchmarks.cc │ │ │ ├── paragraph_benchmarks.cc │ │ │ ├── paragraph_builder_benchmarks.cc │ │ │ ├── skparagraph_benchmarks.cc │ │ │ └── txt_run_all_benchmarks.cc │ │ ├── src/ │ │ │ ├── log/ │ │ │ │ ├── log.cc │ │ │ │ └── log.h │ │ │ ├── minikin/ │ │ │ │ ├── CmapCoverage.cpp │ │ │ │ ├── CmapCoverage.h │ │ │ │ ├── Emoji.cpp │ │ │ │ ├── Emoji.h │ │ │ │ ├── FontCollection.cpp │ │ │ │ ├── FontCollection.h │ │ │ │ ├── FontFamily.cpp │ │ │ │ ├── FontFamily.h │ │ │ │ ├── FontLanguage.cpp │ │ │ │ ├── FontLanguage.h │ │ │ │ ├── FontLanguageListCache.cpp │ │ │ │ ├── FontLanguageListCache.h │ │ │ │ ├── FontUtils.cpp │ │ │ │ ├── FontUtils.h │ │ │ │ ├── GraphemeBreak.cpp │ │ │ │ ├── GraphemeBreak.h │ │ │ │ ├── HbFontCache.cpp │ │ │ │ ├── HbFontCache.h │ │ │ │ ├── Hyphenator.cpp │ │ │ │ ├── Hyphenator.h │ │ │ │ ├── Layout.cpp │ │ │ │ ├── Layout.h │ │ │ │ ├── LayoutUtils.cpp │ │ │ │ ├── LayoutUtils.h │ │ │ │ ├── LineBreaker.cpp │ │ │ │ ├── LineBreaker.h │ │ │ │ ├── Measurement.cpp │ │ │ │ ├── Measurement.h │ │ │ │ ├── MinikinFont.cpp │ │ │ │ ├── MinikinFont.h │ │ │ │ ├── MinikinInternal.cpp │ │ │ │ ├── MinikinInternal.h │ │ │ │ ├── SparseBitSet.cpp │ │ │ │ ├── SparseBitSet.h │ │ │ │ ├── WordBreaker.cpp │ │ │ │ └── WordBreaker.h │ │ │ ├── skia/ │ │ │ │ ├── paragraph_builder_skia.cc │ │ │ │ ├── paragraph_builder_skia.h │ │ │ │ ├── paragraph_skia.cc │ │ │ │ └── paragraph_skia.h │ │ │ ├── tttext/ │ │ │ │ ├── paragraph_builder_tt_text.cc │ │ │ │ ├── paragraph_builder_tt_text.h │ │ │ │ ├── paragraph_tt_text.cc │ │ │ │ ├── paragraph_tt_text.h │ │ │ │ └── tttext_headers.h │ │ │ ├── txt/ │ │ │ │ ├── asset_font_manager_skia.cc │ │ │ │ ├── asset_font_manager_skia.h │ │ │ │ ├── asset_font_manager_skity.cc │ │ │ │ ├── asset_font_manager_skity.h │ │ │ │ ├── font_asset_provider.cc │ │ │ │ ├── font_asset_provider.h │ │ │ │ ├── font_asset_provider_skity.h │ │ │ │ ├── font_collection_skia.cc │ │ │ │ ├── font_collection_skia.h │ │ │ │ ├── font_collection_skity.cc │ │ │ │ ├── font_collection_skity.h │ │ │ │ ├── font_features.cc │ │ │ │ ├── font_features.h │ │ │ │ ├── font_skia.cc │ │ │ │ ├── font_skia.h │ │ │ │ ├── font_style.h │ │ │ │ ├── font_weight.h │ │ │ │ ├── line_metrics.h │ │ │ │ ├── paint_record.cc │ │ │ │ ├── paint_record.h │ │ │ │ ├── paragraph.h │ │ │ │ ├── paragraph_builder.cc │ │ │ │ ├── paragraph_builder.h │ │ │ │ ├── paragraph_builder_txt.cc │ │ │ │ ├── paragraph_builder_txt.h │ │ │ │ ├── paragraph_style.cc │ │ │ │ ├── paragraph_style.h │ │ │ │ ├── paragraph_txt.cc │ │ │ │ ├── paragraph_txt.h │ │ │ │ ├── placeholder_run.cc │ │ │ │ ├── placeholder_run.h │ │ │ │ ├── platform.cc │ │ │ │ ├── platform.h │ │ │ │ ├── platform_android.cc │ │ │ │ ├── platform_fuchsia.cc │ │ │ │ ├── platform_harmony.cc │ │ │ │ ├── platform_linux.cc │ │ │ │ ├── platform_mac.mm │ │ │ │ ├── platform_windows.cc │ │ │ │ ├── run_metrics.h │ │ │ │ ├── styled_runs.cc │ │ │ │ ├── styled_runs.h │ │ │ │ ├── test_font_manager.cc │ │ │ │ ├── test_font_manager.h │ │ │ │ ├── text_baseline.h │ │ │ │ ├── text_decoration.cc │ │ │ │ ├── text_decoration.h │ │ │ │ ├── text_shadow.cc │ │ │ │ ├── text_shadow.h │ │ │ │ ├── text_style.cc │ │ │ │ ├── text_style.h │ │ │ │ ├── typeface_font_asset_provider_skia.cc │ │ │ │ ├── typeface_font_asset_provider_skia.h │ │ │ │ ├── typeface_font_asset_provider_skity.cc │ │ │ │ └── typeface_font_asset_provider_skity.h │ │ │ └── utils/ │ │ │ ├── JenkinsHash.cpp │ │ │ ├── JenkinsHash.h │ │ │ ├── LinuxUtils.h │ │ │ ├── LruCache.h │ │ │ ├── MacUtils.h │ │ │ ├── TypeHelpers.h │ │ │ └── WindowsUtils.h │ │ └── tests/ │ │ ├── CmapCoverageTest.cpp │ │ ├── EmojiTest.cpp │ │ ├── FileUtils.cpp │ │ ├── FileUtils.h │ │ ├── FontCollectionItemizeTest.cpp │ │ ├── FontCollectionTest.cpp │ │ ├── FontFamilyTest.cpp │ │ ├── FontLanguageListCacheTest.cpp │ │ ├── FontTestUtils.cpp │ │ ├── FontTestUtils.h │ │ ├── GraphemeBreakTests.cpp │ │ ├── HbFontCacheTest.cpp │ │ ├── HyphenatorTest.cpp │ │ ├── ICUTestBase.h │ │ ├── LayoutTest.cpp │ │ ├── LayoutUtilsTest.cpp │ │ ├── MeasurementTests.cpp │ │ ├── MinikinFontForTest.cpp │ │ ├── MinikinFontForTest.h │ │ ├── SparseBitSetTest.cpp │ │ ├── UnicodeUtils.cpp │ │ ├── UnicodeUtils.h │ │ ├── UnicodeUtilsTest.cpp │ │ ├── WordBreakerTests.cpp │ │ ├── fake_provider.h │ │ ├── font_collection_unittests.cc │ │ ├── old/ │ │ │ ├── perftests/ │ │ │ │ ├── FontCollection.cpp │ │ │ │ ├── FontFamily.cpp │ │ │ │ ├── FontLanguage.cpp │ │ │ │ ├── GraphemeBreak.cpp │ │ │ │ ├── Hyphenator.cpp │ │ │ │ ├── WordBreaker.cpp │ │ │ │ └── main.cpp │ │ │ └── stresstest/ │ │ │ └── MultithreadTest.cpp │ │ ├── paragraph_unittests.cc │ │ ├── platform_fuchsia_unittests.cc │ │ ├── render_test.cc │ │ ├── render_test.h │ │ ├── txt_run_all_unittests.cc │ │ ├── txt_test_utils.cc │ │ └── txt_test_utils.h │ ├── tools/ │ │ └── make_keywords.py │ ├── ui/ │ │ ├── BUILD.gn │ │ ├── common/ │ │ │ ├── attribute_utils.cc │ │ │ ├── attribute_utils.h │ │ │ ├── attribute_utils_unittests.cc │ │ │ ├── background_data.cc │ │ │ ├── background_data.h │ │ │ ├── build.gni │ │ │ ├── editing_misc.h │ │ │ ├── fps_tracer.cc │ │ │ ├── fps_tracer.h │ │ │ ├── frame_timing_collector.cc │ │ │ ├── frame_timing_collector.h │ │ │ ├── gap_task.h │ │ │ ├── gap_worker.cc │ │ │ ├── gap_worker.h │ │ │ ├── input_client_manager.h │ │ │ ├── isolate.cc │ │ │ ├── isolate.h │ │ │ ├── json_utils.h │ │ │ ├── macros.h │ │ │ ├── measure_constraint.h │ │ │ ├── overlay_manager.cc │ │ │ ├── overlay_manager.h │ │ │ ├── render_settings.cc │ │ │ ├── render_settings.h │ │ │ ├── text_input_type_traits.h │ │ │ ├── text_selection.h │ │ │ ├── type_info.h │ │ │ ├── utils/ │ │ │ │ ├── floating_comparison.h │ │ │ │ ├── value_change_notifier.h │ │ │ │ ├── watch_dog.cc │ │ │ │ └── watch_dog.h │ │ │ ├── value_utils.cc │ │ │ └── value_utils.h │ │ ├── component/ │ │ │ ├── base_image_view.cc │ │ │ ├── base_image_view.h │ │ │ ├── base_view.cc │ │ │ ├── base_view.h │ │ │ ├── base_view_animation_mutator.cc │ │ │ ├── base_view_animation_mutator.h │ │ │ ├── base_view_unittests.cc │ │ │ ├── bounce_view/ │ │ │ │ ├── bounce_view.cc │ │ │ │ └── bounce_view.h │ │ │ ├── build.gni │ │ │ ├── builtin_views.cc │ │ │ ├── builtin_views.h │ │ │ ├── component.cc │ │ │ ├── component.h │ │ │ ├── component_constants.cc │ │ │ ├── component_constants.h │ │ │ ├── css_property.cc │ │ │ ├── css_property.h │ │ │ ├── editable/ │ │ │ │ ├── editable_view.cc │ │ │ │ ├── editable_view.h │ │ │ │ ├── ime_listener.h │ │ │ │ ├── ime_utils.cc │ │ │ │ ├── ime_utils.h │ │ │ │ ├── input_ng_view.cc │ │ │ │ ├── input_ng_view.h │ │ │ │ ├── input_view.cc │ │ │ │ ├── input_view.h │ │ │ │ ├── text_editing_controller.cc │ │ │ │ ├── text_editing_controller.h │ │ │ │ ├── text_input_controller.cc │ │ │ │ ├── text_input_controller.h │ │ │ │ ├── text_span.cc │ │ │ │ ├── text_span.h │ │ │ │ ├── text_utils.h │ │ │ │ ├── textarea_ng_view.cc │ │ │ │ ├── textarea_ng_view.h │ │ │ │ ├── textarea_ng_view_unittests.cc │ │ │ │ ├── textarea_view.cc │ │ │ │ └── textarea_view.h │ │ │ ├── expose_manager/ │ │ │ │ ├── expose_observer.cc │ │ │ │ └── expose_observer.h │ │ │ ├── focus/ │ │ │ │ ├── focus_isolate.cc │ │ │ │ └── focus_isolate.h │ │ │ ├── focus_event_handler.h │ │ │ ├── focus_node.cc │ │ │ ├── focus_node.h │ │ │ ├── hittest_request.h │ │ │ ├── image_view.cc │ │ │ ├── image_view.h │ │ │ ├── inline_image_view.cc │ │ │ ├── inline_image_view.h │ │ │ ├── intersection_observer.cc │ │ │ ├── intersection_observer.h │ │ │ ├── intersection_observer_manager.cc │ │ │ ├── intersection_observer_manager.h │ │ │ ├── isolated_gesture_detector.h │ │ │ ├── key_event_handler.cc │ │ │ ├── key_event_handler.h │ │ │ ├── keyframe_animator_unittests.cc │ │ │ ├── keywords.cc │ │ │ ├── keywords.h │ │ │ ├── keywords.in │ │ │ ├── layout_controller.cc │ │ │ ├── layout_controller.h │ │ │ ├── list/ │ │ │ │ ├── base_list_view.cc │ │ │ │ ├── base_list_view.h │ │ │ │ ├── base_list_view_unittests.cc │ │ │ │ ├── focus_list_adapter.cc │ │ │ │ ├── focus_list_adapter.h │ │ │ │ ├── focus_list_item_view_holder.cc │ │ │ │ ├── focus_list_item_view_holder.h │ │ │ │ ├── focus_list_view.cc │ │ │ │ ├── focus_list_view.h │ │ │ │ ├── focus_list_view_unittests.cc │ │ │ │ ├── list_adapter.cc │ │ │ │ ├── list_adapter.h │ │ │ │ ├── list_adapter_helper.cc │ │ │ │ ├── list_adapter_helper.h │ │ │ │ ├── list_adapter_updater.cc │ │ │ │ ├── list_adapter_updater.h │ │ │ │ ├── list_children_helper.cc │ │ │ │ ├── list_children_helper.h │ │ │ │ ├── list_common/ │ │ │ │ │ ├── layout_types.cc │ │ │ │ │ └── layout_types.h │ │ │ │ ├── list_container/ │ │ │ │ │ ├── list_container_view.cc │ │ │ │ │ ├── list_container_view.h │ │ │ │ │ ├── list_container_wrapper.cc │ │ │ │ │ └── list_container_wrapper.h │ │ │ │ ├── list_item_length_cache.cc │ │ │ │ ├── list_item_length_cache.h │ │ │ │ ├── list_item_length_cache_unittests.cc │ │ │ │ ├── list_item_view.cc │ │ │ │ ├── list_item_view.h │ │ │ │ ├── list_item_view_holder.cc │ │ │ │ ├── list_item_view_holder.h │ │ │ │ ├── list_layout_manager.cc │ │ │ │ ├── list_layout_manager.h │ │ │ │ ├── list_layout_manager_grid.cc │ │ │ │ ├── list_layout_manager_grid.h │ │ │ │ ├── list_layout_manager_linear.cc │ │ │ │ ├── list_layout_manager_linear.h │ │ │ │ ├── list_layout_manager_staggered_grid.cc │ │ │ │ ├── list_layout_manager_staggered_grid.h │ │ │ │ ├── list_orientation_helper.cc │ │ │ │ ├── list_orientation_helper.h │ │ │ │ ├── list_recycler.cc │ │ │ │ ├── list_recycler.h │ │ │ │ ├── list_scroller.cc │ │ │ │ ├── list_scroller.h │ │ │ │ ├── list_view.cc │ │ │ │ ├── list_view.h │ │ │ │ ├── list_wrapper.cc │ │ │ │ ├── list_wrapper.h │ │ │ │ ├── lynx_list_adapter.cc │ │ │ │ ├── lynx_list_adapter.h │ │ │ │ ├── lynx_list_data.cc │ │ │ │ ├── lynx_list_data.h │ │ │ │ ├── lynx_list_item_view_holder.cc │ │ │ │ ├── lynx_list_item_view_holder.h │ │ │ │ └── macros.h │ │ │ ├── measurable.h │ │ │ ├── mouse_cursor.h │ │ │ ├── native_view.cc │ │ │ ├── native_view.h │ │ │ ├── native_view_unittests.cc │ │ │ ├── nested_scroll/ │ │ │ │ ├── nested_scroll_manager.cc │ │ │ │ ├── nested_scroll_manager.h │ │ │ │ ├── nested_scrollable.cc │ │ │ │ ├── nested_scrollable.h │ │ │ │ ├── nested_scrollable_unittests.cc │ │ │ │ ├── overscroll_effect.cc │ │ │ │ ├── overscroll_effect.h │ │ │ │ ├── raster_fling_manager.cc │ │ │ │ └── raster_fling_manager.h │ │ │ ├── overlay_view.cc │ │ │ ├── overlay_view.h │ │ │ ├── overlay_view_unittests.cc │ │ │ ├── page_view.cc │ │ │ ├── page_view.h │ │ │ ├── page_view_unittests.cc │ │ │ ├── rubberband_distance.cc │ │ │ ├── rubberband_distance.h │ │ │ ├── scroll_view.cc │ │ │ ├── scroll_view.h │ │ │ ├── scroll_view_unittests.cc │ │ │ ├── scroll_wrapper.cc │ │ │ ├── scroll_wrapper.h │ │ │ ├── scrollable.cc │ │ │ ├── scrollable.h │ │ │ ├── scrollbar/ │ │ │ │ ├── scrollbar_orientation_helper.cc │ │ │ │ ├── scrollbar_orientation_helper.h │ │ │ │ ├── scrollbar_view.cc │ │ │ │ ├── scrollbar_view.h │ │ │ │ ├── scrollbar_wrapper.cc │ │ │ │ └── scrollbar_wrapper.h │ │ │ ├── scroller.cc │ │ │ ├── scroller.h │ │ │ ├── scroller_animator.cc │ │ │ ├── scroller_animator.h │ │ │ ├── selection_handle_view.cc │ │ │ ├── selection_handle_view.h │ │ │ ├── selection_popup_view.cc │ │ │ ├── selection_popup_view.h │ │ │ ├── soft_keyboard_resources.cc │ │ │ ├── soft_keyboard_resources.h │ │ │ ├── tappable_image_view.h │ │ │ ├── text/ │ │ │ │ ├── base_text_view.cc │ │ │ │ ├── base_text_view.h │ │ │ │ ├── inline_spec_styles.h │ │ │ │ ├── inline_text_view.cc │ │ │ │ ├── inline_text_view.h │ │ │ │ ├── internal_text_view.cc │ │ │ │ ├── internal_text_view.h │ │ │ │ ├── layout_client.h │ │ │ │ ├── layout_context.cc │ │ │ │ ├── layout_context.h │ │ │ │ ├── raw_text_view.cc │ │ │ │ ├── raw_text_view.h │ │ │ │ ├── tappable_text_view.h │ │ │ │ ├── text_paragraph_builder.cc │ │ │ │ ├── text_paragraph_builder.h │ │ │ │ ├── text_style.h │ │ │ │ ├── text_view.cc │ │ │ │ ├── text_view.h │ │ │ │ ├── text_view_unittests.cc │ │ │ │ ├── tttext_headers.h │ │ │ │ └── unicode_util.h │ │ │ ├── title_bar_view.cc │ │ │ ├── title_bar_view.h │ │ │ ├── view.cc │ │ │ ├── view.h │ │ │ ├── view_callback/ │ │ │ │ ├── list_container_event_callback_manager.cc │ │ │ │ ├── list_container_event_callback_manager.h │ │ │ │ ├── list_event_callback_manager.cc │ │ │ │ ├── list_event_callback_manager.h │ │ │ │ ├── scroll_event_callback_manager.cc │ │ │ │ └── scroll_event_callback_manager.h │ │ │ ├── view_context.cc │ │ │ ├── view_context.h │ │ │ ├── view_registry.cc │ │ │ ├── view_registry.h │ │ │ ├── view_tree_observer.cc │ │ │ └── view_tree_observer.h │ │ ├── compositing/ │ │ │ ├── build.gni │ │ │ ├── frame_builder.cc │ │ │ ├── frame_builder.h │ │ │ ├── frame_builder_unittests.cc │ │ │ ├── pending_container_layer.cc │ │ │ ├── pending_container_layer.h │ │ │ ├── pending_container_layer_unittests.cc │ │ │ ├── pending_drawable_image_layer.cc │ │ │ ├── pending_drawable_image_layer.h │ │ │ ├── pending_effect_layer.cc │ │ │ ├── pending_effect_layer.h │ │ │ ├── pending_external_view_layer.cc │ │ │ ├── pending_external_view_layer.h │ │ │ ├── pending_layer.cc │ │ │ ├── pending_layer.h │ │ │ ├── pending_layer_unittests.cc │ │ │ ├── pending_offset_layer.cc │ │ │ ├── pending_offset_layer.h │ │ │ ├── pending_picture_layer.cc │ │ │ ├── pending_picture_layer.h │ │ │ ├── pending_platform_view_layer.cc │ │ │ ├── pending_platform_view_layer.h │ │ │ ├── pending_punch_hole_layer.cc │ │ │ ├── pending_punch_hole_layer.h │ │ │ ├── pending_scroll_offset_layer.cc │ │ │ ├── pending_scroll_offset_layer.h │ │ │ ├── pending_transform_layer.cc │ │ │ ├── pending_transform_layer.h │ │ │ └── testing/ │ │ │ └── mock_pending_layer.h │ │ ├── event/ │ │ │ ├── build.gni │ │ │ ├── event_utils.cc │ │ │ ├── event_utils.h │ │ │ ├── focus_isolate_unittests.cc │ │ │ ├── focus_manager.cc │ │ │ ├── focus_manager.h │ │ │ ├── focus_manager_unittests.cc │ │ │ ├── gesture_event.cc │ │ │ ├── gesture_event.h │ │ │ ├── gesture_event_unittests.cc │ │ │ ├── key_code_converter.cc │ │ │ ├── key_code_converter.h │ │ │ ├── key_codes.h │ │ │ ├── key_event.cc │ │ │ ├── key_event.h │ │ │ └── keyboard_key.h │ │ ├── gesture/ │ │ │ ├── arena.h │ │ │ ├── arena_manager.cc │ │ │ ├── arena_manager.h │ │ │ ├── arena_member.h │ │ │ ├── build.gni │ │ │ ├── drag_drop_manager.cc │ │ │ ├── drag_drop_manager.h │ │ │ ├── drag_gesture_recognizer.cc │ │ │ ├── drag_gesture_recognizer.h │ │ │ ├── gesture_manager.cc │ │ │ ├── gesture_manager.h │ │ │ ├── gesture_manager_unittests.cc │ │ │ ├── gesture_recognizer.cc │ │ │ ├── gesture_recognizer.h │ │ │ ├── hit_test.h │ │ │ ├── hit_test_responsive_result.h │ │ │ ├── long_press_gesture_recognizer.cc │ │ │ ├── long_press_gesture_recognizer.h │ │ │ ├── macros.h │ │ │ ├── mouse_cursor_manager.cc │ │ │ ├── mouse_cursor_manager.h │ │ │ ├── mouse_region_manager.cc │ │ │ ├── mouse_region_manager.h │ │ │ ├── mouse_region_manager_unittests.cc │ │ │ ├── mouse_wheel_phase_handler.cc │ │ │ ├── mouse_wheel_phase_handler.h │ │ │ ├── multi_tap_gesture_recognizer.cc │ │ │ ├── multi_tap_gesture_recognizer.h │ │ │ ├── pointer_router.cc │ │ │ ├── pointer_router.h │ │ │ ├── scrollable_direction.h │ │ │ ├── tap_gesture_recognizer.cc │ │ │ ├── tap_gesture_recognizer.h │ │ │ ├── velocity_tracker.cc │ │ │ ├── velocity_tracker.h │ │ │ └── velocity_tracker_unittests.cc │ │ ├── lynx_module/ │ │ │ ├── build.gni │ │ │ ├── lynx_module_unittests.cc │ │ │ ├── lynx_ui_method_registrar.cc │ │ │ ├── lynx_ui_method_registrar.h │ │ │ ├── lynx_ui_method_types.h │ │ │ ├── lynx_ui_method_unittests.cc │ │ │ ├── type_utils.cc │ │ │ ├── type_utils.h │ │ │ ├── types.cc │ │ │ └── types.h │ │ ├── painter/ │ │ │ ├── border_side.h │ │ │ ├── box_decoration_data.h │ │ │ ├── box_painter.cc │ │ │ ├── box_painter.h │ │ │ ├── box_painter_unittests.cc │ │ │ ├── box_shadow_painter.cc │ │ │ ├── box_shadow_painter.h │ │ │ ├── build.gni │ │ │ ├── gradient.cc │ │ │ ├── gradient.h │ │ │ ├── gradient_factory.cc │ │ │ ├── gradient_factory.h │ │ │ ├── gradient_unittests.cc │ │ │ ├── image_painter.cc │ │ │ ├── image_painter.h │ │ │ ├── image_painter_unittests.cc │ │ │ ├── object_painter.cc │ │ │ ├── object_painter.h │ │ │ ├── painter_graphics_test.cc │ │ │ ├── painter_graphics_test.h │ │ │ ├── painting_context.cc │ │ │ ├── painting_context.h │ │ │ ├── painting_context_unittests.cc │ │ │ ├── text_painter.cc │ │ │ └── text_painter.h │ │ ├── platform/ │ │ │ ├── build.gni │ │ │ ├── common/ │ │ │ │ ├── native_view_service_common.cc │ │ │ │ ├── native_view_service_common.h │ │ │ │ ├── resource_loader_common.cc │ │ │ │ ├── resource_loader_common_net.cc │ │ │ │ ├── resource_loader_common_net.h │ │ │ │ └── utils.h │ │ │ ├── cursor_types.cc │ │ │ ├── cursor_types.h │ │ │ ├── keyboard_bridge.cc │ │ │ ├── keyboard_bridge.h │ │ │ ├── keyboard_types.h │ │ │ └── native_view_service.h │ │ ├── public/ │ │ │ ├── build.gni │ │ │ ├── clay.cc │ │ │ └── value.cc │ │ ├── render_delegate.h │ │ ├── rendering/ │ │ │ ├── abstract_node.cc │ │ │ ├── abstract_node.h │ │ │ ├── abstract_node_unittests.cc │ │ │ ├── build.gni │ │ │ ├── decode_utils.cc │ │ │ ├── decode_utils.h │ │ │ ├── editable/ │ │ │ │ ├── render_editable.cc │ │ │ │ └── render_editable.h │ │ │ ├── render_bounce.h │ │ │ ├── render_box.cc │ │ │ ├── render_box.h │ │ │ ├── render_box_unittests.cc │ │ │ ├── render_container.cc │ │ │ ├── render_container.h │ │ │ ├── render_dummy.h │ │ │ ├── render_external_content.cc │ │ │ ├── render_external_content.h │ │ │ ├── render_external_view.cc │ │ │ ├── render_external_view.h │ │ │ ├── render_image.cc │ │ │ ├── render_image.h │ │ │ ├── render_list.cc │ │ │ ├── render_list.h │ │ │ ├── render_object.cc │ │ │ ├── render_object.h │ │ │ ├── render_object_child_list.cc │ │ │ ├── render_object_child_list.h │ │ │ ├── render_object_child_list_unittests.cc │ │ │ ├── render_object_unittests.cc │ │ │ ├── render_overlay.cc │ │ │ ├── render_overlay.h │ │ │ ├── render_page.cc │ │ │ ├── render_page.h │ │ │ ├── render_scroll.cc │ │ │ ├── render_scroll.h │ │ │ ├── renderer.cc │ │ │ ├── renderer.h │ │ │ └── text/ │ │ │ ├── render_inline_text.cc │ │ │ ├── render_inline_text.h │ │ │ ├── render_text.cc │ │ │ └── render_text.h │ │ ├── resource/ │ │ │ ├── asset_font_manager_clay.h │ │ │ ├── asset_manager_font_provider_skia.cc │ │ │ ├── asset_manager_font_provider_skia.h │ │ │ ├── asset_manager_font_provider_skity.cc │ │ │ ├── asset_manager_font_provider_skity.h │ │ │ ├── build.gni │ │ │ ├── font_collection.cc │ │ │ ├── font_collection.h │ │ │ ├── font_resource_manager.cc │ │ │ ├── font_resource_manager.h │ │ │ ├── font_resource_manager_unittests.cc │ │ │ ├── gpu_resource_cache.cc │ │ │ ├── gpu_resource_cache.h │ │ │ ├── image_cache.h │ │ │ ├── image_fetcher.cc │ │ │ ├── image_fetcher.h │ │ │ ├── image_manager.cc │ │ │ ├── image_manager.h │ │ │ ├── image_resource_fetcher.cc │ │ │ └── image_resource_fetcher.h │ │ ├── semantics/ │ │ │ ├── build.gni │ │ │ ├── semantics_node.cc │ │ │ ├── semantics_node.h │ │ │ ├── semantics_owner.cc │ │ │ ├── semantics_owner.h │ │ │ ├── semantics_update_builder.cc │ │ │ ├── semantics_update_builder.h │ │ │ └── semantics_update_node.h │ │ ├── shadow/ │ │ │ ├── base_text_shadow_node.cc │ │ │ ├── base_text_shadow_node.h │ │ │ ├── build.gni │ │ │ ├── bundle.h │ │ │ ├── editable_ng_shadow_node.cc │ │ │ ├── editable_ng_shadow_node.h │ │ │ ├── editable_shadow_node.cc │ │ │ ├── editable_shadow_node.h │ │ │ ├── icu_no_substitute.cc │ │ │ ├── icu_substitute.cc │ │ │ ├── icu_substitute.h │ │ │ ├── image_shadow_node.cc │ │ │ ├── image_shadow_node.h │ │ │ ├── inline_image_shadow_node.cc │ │ │ ├── inline_image_shadow_node.h │ │ │ ├── inline_text_shadow_node.cc │ │ │ ├── inline_text_shadow_node.h │ │ │ ├── inline_truncation_shadow_node.cc │ │ │ ├── inline_truncation_shadow_node.h │ │ │ ├── inline_view_shadow_node.cc │ │ │ ├── inline_view_shadow_node.h │ │ │ ├── inner_inline_text_shadow_node.cc │ │ │ ├── inner_inline_text_shadow_node.h │ │ │ ├── inner_text_shadow_node.cc │ │ │ ├── inner_text_shadow_node.h │ │ │ ├── measure_utils.h │ │ │ ├── native_view_shadow_node.cc │ │ │ ├── native_view_shadow_node.h │ │ │ ├── raw_text_shadow_node.cc │ │ │ ├── raw_text_shadow_node.h │ │ │ ├── shadow_layout_context.cc │ │ │ ├── shadow_layout_context.h │ │ │ ├── shadow_node.cc │ │ │ ├── shadow_node.h │ │ │ ├── shadow_node_owner.cc │ │ │ ├── shadow_node_owner.h │ │ │ ├── text_render.cc │ │ │ ├── text_render.h │ │ │ ├── text_shadow_node.cc │ │ │ ├── text_shadow_node.h │ │ │ ├── text_unittests.cc │ │ │ ├── text_update_bundle.cc │ │ │ ├── text_update_bundle.h │ │ │ └── vertical_align_style.h │ │ ├── testing/ │ │ │ ├── test_utils.cc │ │ │ ├── test_utils.h │ │ │ ├── test_utils_unittests.cc │ │ │ ├── ui_test.cc │ │ │ └── ui_test.h │ │ ├── ui_rendering_backend.h │ │ └── window/ │ │ ├── build.gni │ │ ├── key_data.cc │ │ ├── key_data.h │ │ ├── key_data_helper.cc │ │ ├── key_data_helper.h │ │ ├── key_data_packet.cc │ │ ├── key_data_packet.h │ │ ├── pointer_data.cc │ │ ├── pointer_data.h │ │ ├── pointer_data_helper.cc │ │ ├── pointer_data_helper.h │ │ ├── pointer_data_packet.cc │ │ ├── pointer_data_packet.h │ │ ├── pointer_data_packet_converter.cc │ │ ├── pointer_data_packet_converter.h │ │ ├── pointer_data_packet_converter_unittests.cc │ │ ├── pointer_data_packet_unittests.cc │ │ ├── viewport_metrics.cc │ │ └── viewport_metrics.h │ └── version/ │ ├── BUILD.gn │ ├── version.cc │ ├── version.gni │ ├── version.h │ └── write_file.py ├── config.gni ├── core/ │ ├── AGENTS.md │ ├── BUILD.gn │ ├── Lynx.gni │ ├── animation/ │ │ ├── AGENTS.md │ │ ├── BUILD.gn │ │ ├── LICENSE │ │ ├── animation.cc │ │ ├── animation.h │ │ ├── animation_curve.cc │ │ ├── animation_curve.h │ │ ├── animation_delegate.h │ │ ├── animation_trace_event_def.h │ │ ├── animation_unittest.cc │ │ ├── basic_animation/ │ │ │ ├── AGENTS.md │ │ │ ├── BUILD.gn │ │ │ ├── animation_effect.cc │ │ │ ├── animation_effect.h │ │ │ ├── animation_effect_timing.cc │ │ │ ├── animation_effect_timing.h │ │ │ ├── animation_event_listener.h │ │ │ ├── animation_frame_callback.h │ │ │ ├── animation_frame_callback_provider.h │ │ │ ├── animation_timeline.cc │ │ │ ├── animation_timeline.h │ │ │ ├── animator_target.h │ │ │ ├── basic_animatable_values/ │ │ │ │ ├── animatable_values_unittest.cc │ │ │ │ ├── color_property_value.cc │ │ │ │ ├── color_property_value.h │ │ │ │ ├── float_property_value.cc │ │ │ │ ├── float_property_value.h │ │ │ │ ├── int_property_value.cc │ │ │ │ └── int_property_value.h │ │ │ ├── basic_animation.cc │ │ │ ├── basic_animation.h │ │ │ ├── basic_animation_curve.cc │ │ │ ├── basic_animation_curve.h │ │ │ ├── basic_keyframe_effect.cc │ │ │ ├── basic_keyframe_effect.h │ │ │ ├── basic_keyframe_model.cc │ │ │ ├── basic_keyframe_model.h │ │ │ ├── keyframe.cc │ │ │ ├── keyframe.h │ │ │ ├── property_value.h │ │ │ ├── thread_local_animation_handler.cc │ │ │ └── thread_local_animation_handler.h │ │ ├── constants.h │ │ ├── css_keyframe_manager.cc │ │ ├── css_keyframe_manager.h │ │ ├── css_keyframe_manager_unittest.cc │ │ ├── css_transition_manager.cc │ │ ├── css_transition_manager.h │ │ ├── css_transition_manager_unittest.cc │ │ ├── keyframe_effect.cc │ │ ├── keyframe_effect.h │ │ ├── keyframe_effect_unittest.cc │ │ ├── keyframe_model.cc │ │ ├── keyframe_model.h │ │ ├── keyframe_model_unittest.cc │ │ ├── keyframed_animation_curve.cc │ │ ├── keyframed_animation_curve.h │ │ ├── keyframed_animation_curve_unittest.cc │ │ ├── lynx_basic_animator/ │ │ │ ├── AGENTS.md │ │ │ ├── BUILD.gn │ │ │ ├── basic_animator.cc │ │ │ ├── basic_animator.h │ │ │ ├── basic_animator_event_listener.cc │ │ │ ├── basic_animator_event_listener.h │ │ │ ├── basic_animator_frame_callback_provider.cc │ │ │ ├── basic_animator_frame_callback_provider.h │ │ │ ├── basic_property_value.cc │ │ │ ├── basic_property_value.h │ │ │ └── lynx_basic_animator_unittest.cc │ │ ├── testing/ │ │ │ ├── mock_animation.cc │ │ │ ├── mock_animation.h │ │ │ ├── mock_css_keyframe_manager.cc │ │ │ ├── mock_css_keyframe_manager.h │ │ │ ├── mock_css_transition_manager.cc │ │ │ └── mock_css_transition_manager.h │ │ ├── transform_animation_curve.cc │ │ ├── transform_animation_curve.h │ │ ├── transform_animation_curve_unittest.cc │ │ └── utils/ │ │ ├── BUILD.gn │ │ ├── cubic_bezier.cc │ │ ├── cubic_bezier.h │ │ ├── cubic_bezier_unittest.cc │ │ ├── timing_function.cc │ │ ├── timing_function.h │ │ └── timing_function_unittest.cc │ ├── base/ │ │ ├── BUILD.gn │ │ ├── android/ │ │ │ ├── android_jni.cc │ │ │ ├── android_jni.h │ │ │ ├── android_jni_unittest.cc │ │ │ ├── callstack_util_android.cc │ │ │ ├── callstack_util_android.h │ │ │ ├── device_utils_android.cc │ │ │ ├── device_utils_android.h │ │ │ ├── fresco_blur_filter.c │ │ │ ├── fresco_blur_filter.h │ │ │ ├── java_only_array.cc │ │ │ ├── java_only_array.h │ │ │ ├── java_only_map.cc │ │ │ ├── java_only_map.h │ │ │ ├── java_value.cc │ │ │ ├── java_value.h │ │ │ ├── java_value_unittest.cc │ │ │ ├── jni_helper.cc │ │ │ ├── jni_helper.h │ │ │ ├── jni_helper_unittest.cc │ │ │ ├── lynx_android_blur.cc │ │ │ ├── lynx_error_android.cc │ │ │ ├── lynx_error_android.h │ │ │ ├── lynx_white_board_android.cc │ │ │ ├── message_loop_android_vsync.cc │ │ │ ├── message_loop_android_vsync.h │ │ │ ├── piper_data.cc │ │ │ ├── piper_data.h │ │ │ ├── vsync_monitor_android.cc │ │ │ └── vsync_monitor_android.h │ │ ├── darwin/ │ │ │ ├── config_darwin.h │ │ │ ├── config_darwin.mm │ │ │ ├── lynx_env_darwin.h │ │ │ ├── lynx_env_darwin.mm │ │ │ ├── lynx_trail_hub_impl_darwin.h │ │ │ ├── lynx_trail_hub_impl_darwin.mm │ │ │ ├── message_loop_darwin_vsync.cc │ │ │ ├── message_loop_darwin_vsync.h │ │ │ ├── vsync_monitor_darwin.h │ │ │ └── vsync_monitor_darwin.mm │ │ ├── debug/ │ │ │ ├── BUILD.gn │ │ │ ├── memory_tracer.cc │ │ │ ├── memory_tracer.h │ │ │ └── memory_tracer_android.cc │ │ ├── harmony/ │ │ │ ├── harmony_function_loader.cc │ │ │ ├── harmony_function_loader.h │ │ │ ├── harmony_napi_env_holder.cc │ │ │ ├── harmony_napi_env_holder.h │ │ │ ├── harmony_trace_event_def.h │ │ │ ├── napi_convert_helper.cc │ │ │ ├── napi_convert_helper.h │ │ │ ├── props_constant.h │ │ │ ├── threading/ │ │ │ │ └── js_thread_config_getter_harmony.cc │ │ │ ├── vsync_monitor_harmony.cc │ │ │ └── vsync_monitor_harmony.h │ │ ├── js_constants.h │ │ ├── json/ │ │ │ ├── json_util.h │ │ │ ├── json_utils.cc │ │ │ └── json_utils_unittests.cc │ │ ├── lynx_export.h │ │ ├── lynx_trace_categories.h │ │ ├── memory/ │ │ │ ├── memory_pressure_callback.cc │ │ │ ├── memory_pressure_callback.h │ │ │ └── memory_pressure_callback_unittest.cc │ │ ├── observer/ │ │ │ ├── observer.h │ │ │ ├── observer_list.cc │ │ │ └── observer_list.h │ │ ├── thread/ │ │ │ ├── atomic_lifecycle.cc │ │ │ ├── atomic_lifecycle.h │ │ │ ├── blocking_queue.h │ │ │ ├── blocking_queue_unittest.cc │ │ │ ├── once_task.h │ │ │ ├── once_task_unittest.cc │ │ │ ├── thread_utils.cc │ │ │ ├── thread_utils.h │ │ │ └── thread_utils_unittest.cc │ │ ├── threading/ │ │ │ ├── js_thread_config_getter.cc │ │ │ ├── js_thread_config_getter.h │ │ │ ├── task_runner_manufactor.cc │ │ │ ├── task_runner_manufactor.h │ │ │ ├── task_runner_manufactor_unittest.cc │ │ │ ├── task_runner_vsync.cc │ │ │ ├── task_runner_vsync.h │ │ │ ├── task_runner_vsync_unittest.cc │ │ │ ├── thread_merger.cc │ │ │ ├── thread_merger.h │ │ │ ├── thread_merger_unittest.cc │ │ │ ├── vsync_monitor.cc │ │ │ ├── vsync_monitor.h │ │ │ ├── vsync_monitor_default.cc │ │ │ └── vsync_monitor_unittest.cc │ │ ├── trace/ │ │ │ └── trace_event_def.h │ │ └── utils/ │ │ ├── any.h │ │ ├── paths_mac.h │ │ ├── paths_mac.mm │ │ ├── paths_win.cc │ │ └── paths_win.h │ ├── base_targets.gni │ ├── build/ │ │ ├── AGENTS.md │ │ └── BUILD.gn │ ├── event/ │ │ ├── AGENTS.md │ │ ├── BUILD.gn │ │ ├── custom_event.cc │ │ ├── custom_event.h │ │ ├── event.cc │ │ ├── event.h │ │ ├── event_dispatch_result.h │ │ ├── event_dispatcher.cc │ │ ├── event_dispatcher.h │ │ ├── event_listener.cc │ │ ├── event_listener.h │ │ ├── event_listener_map.cc │ │ ├── event_listener_map.h │ │ ├── event_listener_map_test.cc │ │ ├── event_listener_map_test.h │ │ ├── event_listener_test.cc │ │ ├── event_listener_test.h │ │ ├── event_target.cc │ │ ├── event_target.h │ │ ├── event_target_test.cc │ │ ├── event_target_test.h │ │ ├── keyboard_event.cc │ │ ├── keyboard_event.h │ │ ├── touch_event.cc │ │ └── touch_event.h │ ├── include/ │ │ ├── AGENTS.md │ │ └── starlight_standalone/ │ │ ├── starlight.h │ │ ├── starlight_config.h │ │ ├── starlight_enums.h │ │ ├── starlight_standalone.h │ │ └── starlight_value.h │ ├── inspector/ │ │ ├── BUILD.gn │ │ ├── console_message_postman.h │ │ ├── lepus_inspector_manager.h │ │ ├── observer/ │ │ │ ├── inspector_common_observer.h │ │ │ ├── inspector_element_observer.h │ │ │ ├── inspector_lepus_observer.h │ │ │ └── inspector_runtime_observer_ng.h │ │ ├── runtime_inspector_manager.h │ │ ├── runtime_inspector_manager_unittest.cc │ │ ├── runtime_inspector_manager_unittest.h │ │ └── style_sheet.h │ ├── list/ │ │ ├── BUILD.gn │ │ ├── decoupled_adapter_helper.cc │ │ ├── decoupled_adapter_helper.h │ │ ├── decoupled_batch_list_adapter.cc │ │ ├── decoupled_batch_list_adapter.h │ │ ├── decoupled_default_list_adapter.cc │ │ ├── decoupled_default_list_adapter.h │ │ ├── decoupled_default_list_adapter_unittest.cc │ │ ├── decoupled_grid_layout_manager.cc │ │ ├── decoupled_grid_layout_manager.h │ │ ├── decoupled_item_holder.cc │ │ ├── decoupled_item_holder.h │ │ ├── decoupled_linear_layout_manager.cc │ │ ├── decoupled_linear_layout_manager.h │ │ ├── decoupled_list_adapter.cc │ │ ├── decoupled_list_adapter.h │ │ ├── decoupled_list_adapter_unittest.cc │ │ ├── decoupled_list_anchor_manager.cc │ │ ├── decoupled_list_anchor_manager.h │ │ ├── decoupled_list_anchor_manager_unittest.cc │ │ ├── decoupled_list_children_helper.cc │ │ ├── decoupled_list_children_helper.h │ │ ├── decoupled_list_children_helper_unittest.cc │ │ ├── decoupled_list_container_default.cc │ │ ├── decoupled_list_container_default.h │ │ ├── decoupled_list_container_impl.cc │ │ ├── decoupled_list_container_impl.h │ │ ├── decoupled_list_container_impl_unittest.cc │ │ ├── decoupled_list_event_manager.cc │ │ ├── decoupled_list_event_manager.h │ │ ├── decoupled_list_event_manager_unittest.cc │ │ ├── decoupled_list_layout_manager.cc │ │ ├── decoupled_list_layout_manager.h │ │ ├── decoupled_list_layout_manager_unittest.cc │ │ ├── decoupled_list_orientation_helper.cc │ │ ├── decoupled_list_orientation_helper.h │ │ ├── decoupled_list_types.h │ │ ├── decoupled_staggered_grid_layout_manager.cc │ │ ├── decoupled_staggered_grid_layout_manager.h │ │ ├── decoupled_staggered_grid_layout_manager_unittest.cc │ │ ├── list_animation_manager.cc │ │ ├── list_animation_manager.h │ │ ├── list_animation_manager_default.cc │ │ ├── list_animation_manager_default.h │ │ ├── list_animation_manager_impl.cc │ │ ├── list_animation_manager_impl.h │ │ ├── list_container_delegate.h │ │ ├── list_element_delegate.h │ │ ├── list_item_element_delegate.h │ │ └── testing/ │ │ ├── fiber_data_source.h │ │ ├── mock_list_element.h │ │ ├── mock_list_item_element.h │ │ ├── radon_data_source.h │ │ └── utils.h │ ├── napi.gni │ ├── parser/ │ │ ├── BUILD.gn │ │ ├── input_stream.cc │ │ └── input_stream.h │ ├── public/ │ │ ├── BUILD.gn │ │ ├── box_model.h │ │ ├── devtool/ │ │ │ ├── lynx_devtool_proxy.h │ │ │ └── lynx_inspector_owner.h │ │ ├── jsb/ │ │ │ ├── extension_module_factory.h │ │ │ ├── lynx_extension_module.h │ │ │ ├── lynx_module_callback.h │ │ │ ├── lynx_native_module.h │ │ │ └── native_module_factory.h │ │ ├── layout_ctx_platform_impl.h │ │ ├── layout_node_manager.h │ │ ├── layout_node_value.h │ │ ├── list_container_proxy.h │ │ ├── list_data.h │ │ ├── list_engine_proxy.h │ │ ├── lynx_engine_proxy.h │ │ ├── lynx_extension_delegate.h │ │ ├── lynx_layout_proxy.h │ │ ├── lynx_resource_loader.h │ │ ├── lynx_runtime_proxy.h │ │ ├── page_options.h │ │ ├── painting_ctx_platform_impl.h │ │ ├── perf_controller_proxy.h │ │ ├── performance_controller_platform_impl.h │ │ ├── pipeline_option.h │ │ ├── platform_extra_bundle.h │ │ ├── platform_renderer_type.h │ │ ├── prop_bundle.h │ │ ├── pub_value.h │ │ ├── runtime_lifecycle_observer.h │ │ ├── text_layout_impl.h │ │ ├── text_utils.h │ │ ├── timing_key.h │ │ ├── ui_delegate.h │ │ ├── ui_operation_queue_interface.h │ │ ├── vsync_monitor_platform_impl.h │ │ └── vsync_observer_interface.h │ ├── renderer/ │ │ ├── BUILD.gn │ │ ├── build.gni │ │ ├── css/ │ │ │ ├── .gitignore │ │ │ ├── BUILD.gn │ │ │ ├── android/ │ │ │ │ ├── css_color_utils.cc │ │ │ │ └── css_gradient_utils.cc │ │ │ ├── build.gni │ │ │ ├── computed_css_style.cc │ │ │ ├── computed_css_style.h │ │ │ ├── computed_css_style_css_text_helper.cc │ │ │ ├── computed_css_style_css_text_helper.h │ │ │ ├── computed_css_style_css_text_helper_unittest.cc │ │ │ ├── css_color.cc │ │ │ ├── css_color.h │ │ │ ├── css_color_unittest.cc │ │ │ ├── css_content_data.cc │ │ │ ├── css_content_data.h │ │ │ ├── css_debug_msg.h │ │ │ ├── css_decoder.cc │ │ │ ├── css_decoder.h │ │ │ ├── css_font_face_token.cc │ │ │ ├── css_font_face_token.h │ │ │ ├── css_font_face_token_unittest.cc │ │ │ ├── css_fragment.cc │ │ │ ├── css_fragment.h │ │ │ ├── css_fragment_decorator.cc │ │ │ ├── css_fragment_decorator.h │ │ │ ├── css_fragment_unittest.cc │ │ │ ├── css_keyframes_token.cc │ │ │ ├── css_keyframes_token.h │ │ │ ├── css_keyframes_token_unittest.cc │ │ │ ├── css_keywords.cc │ │ │ ├── css_keywords.h │ │ │ ├── css_keywords.tmpl │ │ │ ├── css_keywords_unittest.cc │ │ │ ├── css_parser_token.cc │ │ │ ├── css_parser_token.h │ │ │ ├── css_parser_token_unittest.cc │ │ │ ├── css_property.cc │ │ │ ├── css_property.h │ │ │ ├── css_property_bitset.h │ │ │ ├── css_property_bitset_unittest.cc │ │ │ ├── css_property_unittest.cc │ │ │ ├── css_selector_constants.cc │ │ │ ├── css_selector_constants.h │ │ │ ├── css_sheet.cc │ │ │ ├── css_sheet.h │ │ │ ├── css_style_sheet_manager.cc │ │ │ ├── css_style_sheet_manager.h │ │ │ ├── css_style_sheet_manager_unittest.cc │ │ │ ├── css_style_utils.cc │ │ │ ├── css_style_utils.h │ │ │ ├── css_style_utils_unittest.cc │ │ │ ├── css_utils.cc │ │ │ ├── css_utils.h │ │ │ ├── css_utils_unittest.cc │ │ │ ├── css_value.cc │ │ │ ├── css_value.h │ │ │ ├── css_value_lldb.py │ │ │ ├── css_value_unittest.cc │ │ │ ├── css_variable_handler.cc │ │ │ ├── css_variable_handler.h │ │ │ ├── css_variable_handler_unittest.cc │ │ │ ├── dynamic_css_configs.h │ │ │ ├── dynamic_css_styles_manager.cc │ │ │ ├── dynamic_css_styles_manager.h │ │ │ ├── dynamic_direction_styles_manager.cc │ │ │ ├── dynamic_direction_styles_manager.h │ │ │ ├── layout_node_unittest.cc │ │ │ ├── layout_property.cc │ │ │ ├── measure_context.cc │ │ │ ├── measure_context.h │ │ │ ├── ng/ │ │ │ │ ├── LICENSE │ │ │ │ ├── css_ng_utils.cc │ │ │ │ ├── css_ng_utils.h │ │ │ │ ├── invalidation/ │ │ │ │ │ ├── invalidation_set.cc │ │ │ │ │ ├── invalidation_set.h │ │ │ │ │ ├── invalidation_set_feature.h │ │ │ │ │ ├── invalidation_set_test.cc │ │ │ │ │ ├── rule_invalidation_set.cc │ │ │ │ │ ├── rule_invalidation_set.h │ │ │ │ │ └── rule_invalidation_set_test.cc │ │ │ │ ├── matcher/ │ │ │ │ │ ├── selector_matcher.cc │ │ │ │ │ ├── selector_matcher.h │ │ │ │ │ └── selector_matcher_test.cc │ │ │ │ ├── parser/ │ │ │ │ │ ├── css_parser_idioms.cc │ │ │ │ │ ├── css_parser_idioms.h │ │ │ │ │ ├── css_parser_token.cc │ │ │ │ │ ├── css_parser_token.h │ │ │ │ │ ├── css_parser_token_range.cc │ │ │ │ │ ├── css_parser_token_range.h │ │ │ │ │ ├── css_parser_token_stream.cc │ │ │ │ │ ├── css_parser_token_stream.h │ │ │ │ │ ├── css_parser_token_stream_test.cc │ │ │ │ │ ├── css_tokenizer.cc │ │ │ │ │ ├── css_tokenizer.h │ │ │ │ │ ├── css_tokenizer_codepoints.cc │ │ │ │ │ ├── css_tokenizer_input_stream.cc │ │ │ │ │ ├── css_tokenizer_input_stream.h │ │ │ │ │ ├── css_tokenizer_test.cc │ │ │ │ │ ├── number_parsing_options.h │ │ │ │ │ ├── string_to_number.cc │ │ │ │ │ └── string_to_number.h │ │ │ │ ├── selector/ │ │ │ │ │ ├── css_parser_context.h │ │ │ │ │ ├── css_selector_parser.cc │ │ │ │ │ ├── css_selector_parser.h │ │ │ │ │ ├── css_selector_parser_test.cc │ │ │ │ │ ├── lynx_css_selector.cc │ │ │ │ │ ├── lynx_css_selector.h │ │ │ │ │ ├── lynx_css_selector_empty.cc │ │ │ │ │ ├── lynx_css_selector_extra_data.cc │ │ │ │ │ ├── lynx_css_selector_extra_data.h │ │ │ │ │ ├── lynx_css_selector_impl.cc │ │ │ │ │ ├── lynx_css_selector_list.cc │ │ │ │ │ ├── lynx_css_selector_list.h │ │ │ │ │ └── lynx_css_selector_test.cc │ │ │ │ └── style/ │ │ │ │ ├── rule_data.h │ │ │ │ ├── rule_set.cc │ │ │ │ ├── rule_set.h │ │ │ │ ├── rule_set_unittest.cc │ │ │ │ └── style_rule.h │ │ │ ├── parser/ │ │ │ │ ├── BUILD.gn │ │ │ │ ├── animation_direction_handler.cc │ │ │ │ ├── animation_direction_handler.h │ │ │ │ ├── animation_direction_handler_unittest.cc │ │ │ │ ├── animation_fill_mode_handler.cc │ │ │ │ ├── animation_fill_mode_handler.h │ │ │ │ ├── animation_fill_mode_handler_unittest.cc │ │ │ │ ├── animation_iteration_count_handler.cc │ │ │ │ ├── animation_iteration_count_handler.h │ │ │ │ ├── animation_iteration_count_handler_unittest.cc │ │ │ │ ├── animation_name_handler.cc │ │ │ │ ├── animation_name_handler.h │ │ │ │ ├── animation_play_state_handler.cc │ │ │ │ ├── animation_play_state_handler.h │ │ │ │ ├── animation_property_handler.cc │ │ │ │ ├── animation_property_handler_unittest.cc │ │ │ │ ├── animation_shorthand_handler.cc │ │ │ │ ├── animation_shorthand_handler.h │ │ │ │ ├── animation_shorthand_handler_unittest.cc │ │ │ │ ├── aspect_ratio_handler.cc │ │ │ │ ├── aspect_ratio_handler.h │ │ │ │ ├── aspect_ratio_handler_unittest.cc │ │ │ │ ├── auto_font_size_handler.cc │ │ │ │ ├── auto_font_size_handler.h │ │ │ │ ├── auto_font_size_handler_unittest.cc │ │ │ │ ├── auto_font_size_preset_sizes_handler.cc │ │ │ │ ├── auto_font_size_preset_sizes_handler.h │ │ │ │ ├── auto_font_size_preset_sizes_handler_unittest.cc │ │ │ │ ├── background_box_handler.cc │ │ │ │ ├── background_box_handler.h │ │ │ │ ├── background_box_handler_unittest.cc │ │ │ │ ├── background_clip_handler.cc │ │ │ │ ├── background_clip_handler.h │ │ │ │ ├── background_clip_handler_unittest.cc │ │ │ │ ├── background_image_handler.cc │ │ │ │ ├── background_image_handler.h │ │ │ │ ├── background_image_handler_unittest.cc │ │ │ │ ├── background_position_handler.cc │ │ │ │ ├── background_position_handler.h │ │ │ │ ├── background_position_handler_unittest.cc │ │ │ │ ├── background_repeat_handler.cc │ │ │ │ ├── background_repeat_handler.h │ │ │ │ ├── background_repeat_handler_unittest.cc │ │ │ │ ├── background_shorthand_handler.cc │ │ │ │ ├── background_shorthand_handler.h │ │ │ │ ├── background_shorthand_handler_unittest.cc │ │ │ │ ├── background_size_handler.cc │ │ │ │ ├── background_size_handler.h │ │ │ │ ├── background_size_handler_unittest.cc │ │ │ │ ├── bool_handler.cc │ │ │ │ ├── bool_handler_unittest.cc │ │ │ │ ├── border_handler.cc │ │ │ │ ├── border_handler.h │ │ │ │ ├── border_handler_unittest.cc │ │ │ │ ├── border_radius_handler.cc │ │ │ │ ├── border_radius_handler.h │ │ │ │ ├── border_radius_handler_unittest.cc │ │ │ │ ├── border_style_handler.cc │ │ │ │ ├── border_width_handler.cc │ │ │ │ ├── clip_path_handler.cc │ │ │ │ ├── clip_path_handler.h │ │ │ │ ├── clip_path_handler_unittest.cc │ │ │ │ ├── color_handler.cc │ │ │ │ ├── color_handler_unittest.cc │ │ │ │ ├── css_parser_configs.h │ │ │ │ ├── css_string_parser.cc │ │ │ │ ├── css_string_parser.h │ │ │ │ ├── css_string_parser_unittest.cc │ │ │ │ ├── css_string_scanner.cc │ │ │ │ ├── css_string_scanner.h │ │ │ │ ├── css_string_scanner_unittest.cc │ │ │ │ ├── cursor_handler.cc │ │ │ │ ├── cursor_handler.h │ │ │ │ ├── enum_handler.cc │ │ │ │ ├── enum_handler.h │ │ │ │ ├── enum_handler_unittest.cc │ │ │ │ ├── filter_handler.cc │ │ │ │ ├── filter_handler.h │ │ │ │ ├── filter_handler_unittest.cc │ │ │ │ ├── flex_flow_handler.cc │ │ │ │ ├── flex_flow_handler.h │ │ │ │ ├── flex_flow_handler_unittest.cc │ │ │ │ ├── flex_handler.cc │ │ │ │ ├── flex_handler.h │ │ │ │ ├── flex_handler_unittest.cc │ │ │ │ ├── font_feature_settings_handler.cc │ │ │ │ ├── font_feature_settings_handler.h │ │ │ │ ├── font_length_handler.cc │ │ │ │ ├── font_length_handler.h │ │ │ │ ├── font_length_handler_unittest.cc │ │ │ │ ├── font_variation_settings_handler.cc │ │ │ │ ├── font_variation_settings_handler.h │ │ │ │ ├── four_sides_shorthand_handler.cc │ │ │ │ ├── four_sides_shorthand_handler.h │ │ │ │ ├── four_sides_shorthand_handler_unittest.cc │ │ │ │ ├── gap_handler.cc │ │ │ │ ├── gap_handler.h │ │ │ │ ├── grid_position_handler.cc │ │ │ │ ├── grid_position_handler.h │ │ │ │ ├── grid_template_handler.cc │ │ │ │ ├── grid_template_handler.h │ │ │ │ ├── grid_template_handler_unittest.cc │ │ │ │ ├── handler_defines.h │ │ │ │ ├── length_handler.cc │ │ │ │ ├── length_handler_unittest.cc │ │ │ │ ├── list_gap_handler.cc │ │ │ │ ├── list_gap_handler.h │ │ │ │ ├── list_gap_handler_unittest.cc │ │ │ │ ├── mask_shorthand_handler.cc │ │ │ │ ├── mask_shorthand_handler.h │ │ │ │ ├── number_handler.cc │ │ │ │ ├── number_handler_unittest.cc │ │ │ │ ├── offset_rotate_handler.cc │ │ │ │ ├── offset_rotate_handler.h │ │ │ │ ├── relative_align_handler.cc │ │ │ │ ├── relative_align_handler.h │ │ │ │ ├── shadow_handler.cc │ │ │ │ ├── shadow_handler.h │ │ │ │ ├── shadow_handler_unittest.cc │ │ │ │ ├── string_handler.cc │ │ │ │ ├── string_handler_unittest.cc │ │ │ │ ├── text_decoration_handler.cc │ │ │ │ ├── text_decoration_handler.h │ │ │ │ ├── text_decoration_handler_unittest.cc │ │ │ │ ├── text_stroke_handler.cc │ │ │ │ ├── text_stroke_handler.h │ │ │ │ ├── text_stroke_handler_unittest.cc │ │ │ │ ├── time_handler.cc │ │ │ │ ├── time_handler_unittest.cc │ │ │ │ ├── timing_function_handler.cc │ │ │ │ ├── timing_function_handler_unittest.cc │ │ │ │ ├── transform_handler.cc │ │ │ │ ├── transform_handler.h │ │ │ │ ├── transform_handler_unittest.cc │ │ │ │ ├── transform_origin_handler.cc │ │ │ │ ├── transform_origin_handler.h │ │ │ │ ├── transform_origin_handler_unittest.cc │ │ │ │ ├── transition_shorthand_handler.cc │ │ │ │ ├── transition_shorthand_handler.h │ │ │ │ ├── transition_shorthand_handler_unittest.cc │ │ │ │ ├── vertical_align_handler.cc │ │ │ │ └── vertical_align_handler.h │ │ │ ├── select_element_token.cc │ │ │ ├── select_element_token.h │ │ │ ├── select_element_token_unittest.cc │ │ │ ├── shared_css_fragment.cc │ │ │ ├── shared_css_fragment.h │ │ │ ├── shared_css_fragment_unittest.cc │ │ │ ├── style_node.cc │ │ │ ├── style_node.h │ │ │ ├── text_attributes.cc │ │ │ ├── text_attributes.h │ │ │ ├── transforms/ │ │ │ │ ├── LICENSE │ │ │ │ ├── transform_operation.cc │ │ │ │ ├── transform_operation.h │ │ │ │ ├── transform_operation_unittest.cc │ │ │ │ ├── transform_operations.cc │ │ │ │ ├── transform_operations.h │ │ │ │ └── transform_operations_unittest.cc │ │ │ ├── unit_handler.cc │ │ │ ├── unit_handler.h │ │ │ └── unit_handler_unittest.cc │ │ ├── data/ │ │ │ ├── BUILD.gn │ │ │ ├── android/ │ │ │ │ ├── platform_data_android.cc │ │ │ │ └── platform_data_android.h │ │ │ ├── build.gni │ │ │ ├── harmony/ │ │ │ │ ├── platform_data_harmony.cc │ │ │ │ ├── platform_data_harmony.h │ │ │ │ ├── template_data_harmony.cc │ │ │ │ └── template_data_harmony.h │ │ │ ├── ios/ │ │ │ │ ├── platform_data_darwin.h │ │ │ │ └── platform_data_darwin.mm │ │ │ ├── lynx_view_data_manager.cc │ │ │ ├── lynx_view_data_manager.h │ │ │ ├── platform_data.h │ │ │ ├── template_data.cc │ │ │ └── template_data.h │ │ ├── dom/ │ │ │ ├── BUILD.gn │ │ │ ├── air/ │ │ │ │ ├── BUILD.gn │ │ │ │ ├── air_element/ │ │ │ │ │ ├── air_block_element.cc │ │ │ │ │ ├── air_block_element.h │ │ │ │ │ ├── air_block_element_unittest.cc │ │ │ │ │ ├── air_component_element.cc │ │ │ │ │ ├── air_component_element.h │ │ │ │ │ ├── air_element.cc │ │ │ │ │ ├── air_element.h │ │ │ │ │ ├── air_element_container.cc │ │ │ │ │ ├── air_element_container.h │ │ │ │ │ ├── air_element_container_unittest.cc │ │ │ │ │ ├── air_element_unittest.cc │ │ │ │ │ ├── air_for_element.cc │ │ │ │ │ ├── air_for_element.h │ │ │ │ │ ├── air_if_element.cc │ │ │ │ │ ├── air_if_element.h │ │ │ │ │ ├── air_page_element.cc │ │ │ │ │ └── air_page_element.h │ │ │ │ ├── air_touch_event_handler.cc │ │ │ │ ├── air_touch_event_handler.h │ │ │ │ ├── air_touch_event_handler_unittest.cc │ │ │ │ ├── lynx_air_parsed_style_store.cc │ │ │ │ ├── lynx_air_parsed_style_store.h │ │ │ │ └── testing/ │ │ │ │ └── air_lepus_context_mock.h │ │ │ ├── android/ │ │ │ │ ├── environment_android.cc │ │ │ │ ├── environment_android.h │ │ │ │ ├── lepus_message_consumer.cc │ │ │ │ ├── lepus_message_consumer.h │ │ │ │ ├── lynx_get_ui_result_android.cc │ │ │ │ ├── lynx_get_ui_result_android.h │ │ │ │ ├── lynx_template_bundle_android.cc │ │ │ │ ├── lynx_template_bundle_android.h │ │ │ │ ├── lynx_view_data_manager_android.cc │ │ │ │ └── lynx_view_data_manager_android.h │ │ │ ├── attribute_holder.cc │ │ │ ├── attribute_holder.h │ │ │ ├── attribute_holder_unittest.cc │ │ │ ├── base_element_container.cc │ │ │ ├── base_element_container.h │ │ │ ├── build.gni │ │ │ ├── component_attributes.cc │ │ │ ├── component_attributes.h │ │ │ ├── component_config.h │ │ │ ├── element.cc │ │ │ ├── element.h │ │ │ ├── element_bundle.cc │ │ │ ├── element_bundle.h │ │ │ ├── element_container.cc │ │ │ ├── element_container.h │ │ │ ├── element_container_unittest.cc │ │ │ ├── element_context_delegate.cc │ │ │ ├── element_context_delegate.h │ │ │ ├── element_context_delegate_unittest.cc │ │ │ ├── element_context_task_queue.cc │ │ │ ├── element_context_task_queue.h │ │ │ ├── element_layout_node_manager.cc │ │ │ ├── element_layout_node_manager.h │ │ │ ├── element_manager.cc │ │ │ ├── element_manager.h │ │ │ ├── element_manager_delegate.h │ │ │ ├── element_manager_unittest.cc │ │ │ ├── element_property.cc │ │ │ ├── element_property.h │ │ │ ├── element_unittest.cc │ │ │ ├── element_vsync_proxy.cc │ │ │ ├── element_vsync_proxy.h │ │ │ ├── element_vsync_proxy_unittest.cc │ │ │ ├── fiber/ │ │ │ │ ├── BUILD.gn │ │ │ │ ├── block_element.cc │ │ │ │ ├── block_element.h │ │ │ │ ├── block_element_unittest.cc │ │ │ │ ├── component_element.cc │ │ │ │ ├── component_element.h │ │ │ │ ├── fiber_element.cc │ │ │ │ ├── fiber_element.h │ │ │ │ ├── fiber_element_unittest.cc │ │ │ │ ├── fiber_node_info.cc │ │ │ │ ├── fiber_node_info.h │ │ │ │ ├── fiber_node_info_unittest.cc │ │ │ │ ├── for_element.cc │ │ │ │ ├── for_element.h │ │ │ │ ├── frame_element.cc │ │ │ │ ├── frame_element.h │ │ │ │ ├── if_element.cc │ │ │ │ ├── if_element.h │ │ │ │ ├── image_element.cc │ │ │ │ ├── image_element.h │ │ │ │ ├── list_element.cc │ │ │ │ ├── list_element.h │ │ │ │ ├── list_element_unittest.cc │ │ │ │ ├── list_item_scheduler_adapter.cc │ │ │ │ ├── list_item_scheduler_adapter.h │ │ │ │ ├── list_item_scheduler_adapter_unittest.cc │ │ │ │ ├── none_element.cc │ │ │ │ ├── none_element.h │ │ │ │ ├── page_element.cc │ │ │ │ ├── page_element.h │ │ │ │ ├── platform_layout_function_wrapper.cc │ │ │ │ ├── platform_layout_function_wrapper.h │ │ │ │ ├── platform_types.h │ │ │ │ ├── pseudo_element.cc │ │ │ │ ├── pseudo_element.h │ │ │ │ ├── pseudo_element_unittest.cc │ │ │ │ ├── raw_text_element.cc │ │ │ │ ├── raw_text_element.h │ │ │ │ ├── raw_text_element_unittest.cc │ │ │ │ ├── scroll_element.cc │ │ │ │ ├── scroll_element.h │ │ │ │ ├── scroll_element_unittest.cc │ │ │ │ ├── text_element.cc │ │ │ │ ├── text_element.h │ │ │ │ ├── text_element_unittest.cc │ │ │ │ ├── text_props.h │ │ │ │ ├── tree_resolver.cc │ │ │ │ ├── tree_resolver.h │ │ │ │ ├── view_element.cc │ │ │ │ ├── view_element.h │ │ │ │ ├── wrapper_element.cc │ │ │ │ └── wrapper_element.h │ │ │ ├── fragment/ │ │ │ │ ├── BUILD.gn │ │ │ │ ├── box_model_recorder.cc │ │ │ │ ├── box_model_recorder.h │ │ │ │ ├── box_model_recorder_unittest.cc │ │ │ │ ├── display_list.cc │ │ │ │ ├── display_list.h │ │ │ │ ├── display_list_builder.cc │ │ │ │ ├── display_list_builder.h │ │ │ │ ├── display_list_builder_unittest.cc │ │ │ │ ├── display_list_unittest.cc │ │ │ │ ├── event/ │ │ │ │ │ ├── platform_event_bundle.h │ │ │ │ │ ├── platform_event_emitter.cc │ │ │ │ │ ├── platform_event_emitter.h │ │ │ │ │ ├── platform_event_handler.cc │ │ │ │ │ ├── platform_event_handler.h │ │ │ │ │ ├── platform_event_target.cc │ │ │ │ │ ├── platform_event_target.h │ │ │ │ │ ├── platform_event_target_exposure.cc │ │ │ │ │ ├── platform_event_target_exposure.h │ │ │ │ │ ├── platform_event_target_helper.cc │ │ │ │ │ ├── platform_event_target_helper.h │ │ │ │ │ ├── platform_input_event.cc │ │ │ │ │ ├── platform_input_event.h │ │ │ │ │ ├── platform_pointer_event.cc │ │ │ │ │ └── platform_pointer_event.h │ │ │ │ ├── fragment.cc │ │ │ │ ├── fragment.h │ │ │ │ ├── fragment_behavior.cc │ │ │ │ ├── fragment_behavior.h │ │ │ │ ├── fragment_unittest.cc │ │ │ │ ├── image_fragment_behavior.cc │ │ │ │ ├── image_fragment_behavior.h │ │ │ │ ├── layout_info.cc │ │ │ │ ├── layout_info.h │ │ │ │ ├── layout_info_unittest.cc │ │ │ │ ├── list_fragment_behavior.cc │ │ │ │ ├── list_fragment_behavior.h │ │ │ │ ├── list_item_fragment_behavior.cc │ │ │ │ ├── list_item_fragment_behavior.h │ │ │ │ ├── page_fragment_behavior.cc │ │ │ │ ├── page_fragment_behavior.h │ │ │ │ ├── platform_extended_fragment_behavior.cc │ │ │ │ ├── platform_extended_fragment_behavior.h │ │ │ │ ├── rounded_rectangle.h │ │ │ │ ├── rounded_rectangle_unittest.cc │ │ │ │ ├── text_fragment_behavior.cc │ │ │ │ ├── text_fragment_behavior.h │ │ │ │ ├── text_fragment_behavior_unittest.cc │ │ │ │ ├── view_fragment_behavior.cc │ │ │ │ └── view_fragment_behavior.h │ │ │ ├── harmony/ │ │ │ │ ├── lynx_template_bundle_harmony.cc │ │ │ │ └── lynx_template_bundle_harmony.h │ │ │ ├── ios/ │ │ │ │ ├── lepus_value_converter.h │ │ │ │ └── lepus_value_converter.mm │ │ │ ├── layout_bundle.h │ │ │ ├── list_component_info.cc │ │ │ ├── list_component_info.h │ │ │ ├── lynx_get_ui_result.h │ │ │ ├── selector/ │ │ │ │ ├── BUILD.gn │ │ │ │ ├── element_selector.cc │ │ │ │ ├── element_selector.h │ │ │ │ ├── fiber_element_selector.cc │ │ │ │ ├── fiber_element_selector.h │ │ │ │ ├── matching/ │ │ │ │ │ ├── attribute_selector_matching.cc │ │ │ │ │ └── attribute_selector_matching.h │ │ │ │ ├── select_result.h │ │ │ │ ├── select_result_unittest.cc │ │ │ │ └── selector_item.h │ │ │ ├── style_resolver.cc │ │ │ ├── style_resolver.h │ │ │ ├── style_resolver_unittest.cc │ │ │ ├── testing/ │ │ │ │ ├── fiber_element_test.cc │ │ │ │ ├── fiber_element_test.h │ │ │ │ ├── fiber_mock_painting_context.cc │ │ │ │ ├── fiber_mock_painting_context.h │ │ │ │ ├── fiber_mock_text_layout.cc │ │ │ │ ├── fiber_mock_text_layout.h │ │ │ │ └── fiber_new_fixed_test.cc │ │ │ └── vdom/ │ │ │ └── radon/ │ │ │ ├── BUILD.gn │ │ │ ├── base_component.cc │ │ │ ├── base_component.h │ │ │ ├── list_reuse_pool.cc │ │ │ ├── list_reuse_pool.h │ │ │ ├── node_path_info.cc │ │ │ ├── node_path_info.h │ │ │ ├── node_select_options.h │ │ │ ├── node_selector.cc │ │ │ ├── node_selector.h │ │ │ ├── radon_base.cc │ │ │ ├── radon_base.h │ │ │ ├── radon_component.cc │ │ │ ├── radon_component.h │ │ │ ├── radon_diff_list_node.cc │ │ │ ├── radon_diff_list_node.h │ │ │ ├── radon_diff_list_node2.cc │ │ │ ├── radon_diff_list_node2.h │ │ │ ├── radon_dispatch_option.cc │ │ │ ├── radon_dispatch_option.h │ │ │ ├── radon_factory.cc │ │ │ ├── radon_factory.h │ │ │ ├── radon_lazy_component.cc │ │ │ ├── radon_lazy_component.h │ │ │ ├── radon_list_base.cc │ │ │ ├── radon_list_base.h │ │ │ ├── radon_node.cc │ │ │ ├── radon_node.h │ │ │ ├── radon_node_unittest.cc │ │ │ ├── radon_page.cc │ │ │ ├── radon_page.h │ │ │ ├── radon_slot.cc │ │ │ ├── radon_slot.h │ │ │ ├── radon_types.h │ │ │ └── set_css_variable_op.h │ │ ├── element_manager_delegate_impl.cc │ │ ├── element_manager_delegate_impl.h │ │ ├── events/ │ │ │ ├── BUILD.gn │ │ │ ├── closure_event_listener.cc │ │ │ ├── closure_event_listener.h │ │ │ ├── closure_event_listener_test.cc │ │ │ ├── event_handler.cc │ │ │ ├── events.h │ │ │ ├── gesture.h │ │ │ ├── touch_event_handler.cc │ │ │ ├── touch_event_handler.h │ │ │ └── touch_event_handler_unittest.cc │ │ ├── js_bundle_holder_impl.cc │ │ ├── js_bundle_holder_impl.h │ │ ├── layout_scheduler/ │ │ │ ├── BUILD.gn │ │ │ ├── layout_scheduler.cc │ │ │ └── layout_scheduler.h │ │ ├── lynx_env_config.cc │ │ ├── lynx_env_config.h │ │ ├── lynx_global_pool.cc │ │ ├── lynx_global_pool.h │ │ ├── page_config_unittests.cc │ │ ├── page_proxy.cc │ │ ├── page_proxy.h │ │ ├── pipeline/ │ │ │ ├── BUILD.gn │ │ │ ├── pipeline_context.cc │ │ │ ├── pipeline_context.h │ │ │ ├── pipeline_context_manager.cc │ │ │ ├── pipeline_context_manager.h │ │ │ ├── pipeline_context_manager_unittest.cc │ │ │ ├── pipeline_context_manager_unittest.h │ │ │ ├── pipeline_context_unittest.cc │ │ │ ├── pipeline_context_unittest.h │ │ │ ├── pipeline_layout_data.h │ │ │ ├── pipeline_lifecycle.cc │ │ │ ├── pipeline_lifecycle.h │ │ │ ├── pipeline_lifecycle_observer.h │ │ │ ├── pipeline_lifecycle_unittest.cc │ │ │ ├── pipeline_lifecycle_unittest.h │ │ │ ├── pipeline_scope.cc │ │ │ ├── pipeline_scope.h │ │ │ ├── pipeline_scope_unittest.cc │ │ │ ├── pipeline_scope_unittest.h │ │ │ ├── pipeline_version.h │ │ │ ├── pipeline_version_unittest.cc │ │ │ └── pipeline_version_unittest.h │ │ ├── signal/ │ │ │ ├── BUILD.gn │ │ │ ├── computation.cc │ │ │ ├── computation.h │ │ │ ├── computation_unittest.cc │ │ │ ├── computation_unittest.h │ │ │ ├── lynx_signal.cc │ │ │ ├── lynx_signal.h │ │ │ ├── lynx_signal_unittest.cc │ │ │ ├── lynx_signal_unittest.h │ │ │ ├── memo.cc │ │ │ ├── memo.h │ │ │ ├── memo_unittest.cc │ │ │ ├── memo_unittest.h │ │ │ ├── scope.cc │ │ │ ├── scope.h │ │ │ ├── scope_unittest.cc │ │ │ ├── scope_unittest.h │ │ │ ├── signal_context.cc │ │ │ ├── signal_context.h │ │ │ ├── signal_context_unittest.cc │ │ │ └── signal_context_unittest.h │ │ ├── simple_styling/ │ │ │ ├── BUILD.gn │ │ │ ├── simple_style_node.h │ │ │ ├── simple_styling.gni │ │ │ ├── style_object.cc │ │ │ ├── style_object.h │ │ │ ├── style_object_decoder.h │ │ │ └── style_object_unittest.cc │ │ ├── starlight/ │ │ │ ├── BUILD.gn │ │ │ ├── event/ │ │ │ │ ├── layout_event.h │ │ │ │ ├── layout_event_data.h │ │ │ │ └── layout_event_handler.h │ │ │ ├── layout/ │ │ │ │ ├── box_info.cc │ │ │ │ ├── box_info.h │ │ │ │ ├── cache_manager.cc │ │ │ │ ├── cache_manager.h │ │ │ │ ├── container_node.cc │ │ │ │ ├── container_node.h │ │ │ │ ├── container_node_unittest.cc │ │ │ │ ├── direction_selector.h │ │ │ │ ├── elastic_layout_utils.cc │ │ │ │ ├── elastic_layout_utils.h │ │ │ │ ├── flex_info.cc │ │ │ │ ├── flex_info.h │ │ │ │ ├── flex_layout_algorithm.cc │ │ │ │ ├── flex_layout_algorithm.h │ │ │ │ ├── grid_item_info.cc │ │ │ │ ├── grid_item_info.h │ │ │ │ ├── grid_layout_algorithm.cc │ │ │ │ ├── grid_layout_algorithm.h │ │ │ │ ├── layout_algorithm.cc │ │ │ │ ├── layout_algorithm.h │ │ │ │ ├── layout_global.cc │ │ │ │ ├── layout_global.h │ │ │ │ ├── layout_object.cc │ │ │ │ ├── layout_object.h │ │ │ │ ├── linear_layout_algorithm.cc │ │ │ │ ├── linear_layout_algorithm.h │ │ │ │ ├── logic_direction_utils.cc │ │ │ │ ├── logic_direction_utils.h │ │ │ │ ├── node.h │ │ │ │ ├── position_layout_utils.cc │ │ │ │ ├── position_layout_utils.h │ │ │ │ ├── property_resolving_utils.cc │ │ │ │ ├── property_resolving_utils.h │ │ │ │ ├── relative_layout_algorithm.cc │ │ │ │ ├── relative_layout_algorithm.h │ │ │ │ ├── staggered_grid_layout_algorithm.cc │ │ │ │ └── staggered_grid_layout_algorithm.h │ │ │ ├── style/ │ │ │ │ ├── borders_data.cc │ │ │ │ ├── borders_data.h │ │ │ │ ├── box_data.cc │ │ │ │ ├── box_data.h │ │ │ │ ├── copyable.h │ │ │ │ ├── css_type.h │ │ │ │ ├── data_ref.h │ │ │ │ ├── data_ref_unittest.cc │ │ │ │ ├── default_layout_style.h │ │ │ │ ├── flex_data.cc │ │ │ │ ├── flex_data.h │ │ │ │ ├── grid_data.cc │ │ │ │ ├── grid_data.h │ │ │ │ ├── layout_computed_style.cc │ │ │ │ ├── layout_computed_style.h │ │ │ │ ├── layout_style_utils.cc │ │ │ │ ├── layout_style_utils.h │ │ │ │ ├── linear_data.cc │ │ │ │ ├── linear_data.h │ │ │ │ ├── relative_data.cc │ │ │ │ ├── relative_data.h │ │ │ │ ├── surround_data.cc │ │ │ │ └── surround_data.h │ │ │ └── types/ │ │ │ ├── layout_attribute.h │ │ │ ├── layout_configs.h │ │ │ ├── layout_constraints.h │ │ │ ├── layout_directions.h │ │ │ ├── layout_measurefunc.h │ │ │ ├── layout_result.h │ │ │ ├── layout_types.h │ │ │ ├── layout_unit.h │ │ │ ├── nlength.cc │ │ │ └── nlength.h │ │ ├── tasm/ │ │ │ ├── config.cc │ │ │ ├── config.h │ │ │ ├── i18n/ │ │ │ │ ├── i18n.cc │ │ │ │ ├── i18n.h │ │ │ │ ├── i18n_binder_android.cc │ │ │ │ ├── i18n_binder_android.h │ │ │ │ ├── i18n_binder_darwin.h │ │ │ │ └── i18n_binder_darwin.mm │ │ │ ├── napi_bind.cc │ │ │ ├── react/ │ │ │ │ ├── android/ │ │ │ │ │ └── mapbuffer/ │ │ │ │ │ ├── BUILD.gn │ │ │ │ │ ├── LICENSE │ │ │ │ │ ├── base_buffer.h │ │ │ │ │ ├── base_buffer_builder.h │ │ │ │ │ ├── compact_array_buffer.cc │ │ │ │ │ ├── compact_array_buffer.h │ │ │ │ │ ├── compact_array_buffer_builder.cc │ │ │ │ │ ├── compact_array_buffer_builder.h │ │ │ │ │ ├── map_buffer.cc │ │ │ │ │ ├── map_buffer.h │ │ │ │ │ ├── map_buffer_builder.cc │ │ │ │ │ ├── map_buffer_builder.h │ │ │ │ │ ├── readable_compact_array_buffer.cc │ │ │ │ │ ├── readable_compact_array_buffer.h │ │ │ │ │ ├── readable_map_buffer.cc │ │ │ │ │ ├── readable_map_buffer.h │ │ │ │ │ └── testing/ │ │ │ │ │ ├── compact_array_buffer_unittest.cc │ │ │ │ │ └── map_buffer_unittest.cc │ │ │ │ └── testing/ │ │ │ │ └── mock_painting_context.h │ │ │ ├── sysinfo/ │ │ │ │ ├── sysinfo_android.cc │ │ │ │ ├── sysinfo_default.cc │ │ │ │ ├── sysinfo_harmony.cc │ │ │ │ ├── sysinfo_headless.cc │ │ │ │ └── sysinfo_ios.cc │ │ │ └── testing/ │ │ │ ├── event_tracker_mock.cc │ │ │ ├── event_tracker_mock.h │ │ │ └── mock_attribute_holder.h │ │ ├── tasm_runtime_bundle.h │ │ ├── template_assembler.cc │ │ ├── template_assembler.h │ │ ├── template_entry.cc │ │ ├── template_entry.h │ │ ├── template_entry_holder.cc │ │ ├── template_entry_holder.h │ │ ├── template_themed.h │ │ ├── trace/ │ │ │ ├── BUILD.gn │ │ │ └── renderer_trace_event_def.h │ │ ├── ui_component/ │ │ │ └── list/ │ │ │ ├── BUILD.gn │ │ │ ├── adapter_helper.cc │ │ │ ├── adapter_helper.h │ │ │ ├── animation_item_holder.cc │ │ │ ├── animation_item_holder.h │ │ │ ├── batch_list_adapter.cc │ │ │ ├── batch_list_adapter.h │ │ │ ├── batch_list_adapter_unittest.cc │ │ │ ├── default_list_adapter.cc │ │ │ ├── default_list_adapter.h │ │ │ ├── default_list_adapter_unittest.cc │ │ │ ├── grid_layout_manager.cc │ │ │ ├── grid_layout_manager.h │ │ │ ├── item_holder.cc │ │ │ ├── item_holder.h │ │ │ ├── linear_layout_manager.cc │ │ │ ├── linear_layout_manager.h │ │ │ ├── list_adapter.cc │ │ │ ├── list_adapter.h │ │ │ ├── list_adapter_unittest.cc │ │ │ ├── list_anchor_manager.cc │ │ │ ├── list_anchor_manager.h │ │ │ ├── list_anchor_manager_unittest.cc │ │ │ ├── list_children_helper.cc │ │ │ ├── list_children_helper.h │ │ │ ├── list_children_helper_unittest.cc │ │ │ ├── list_container_animation_manager.cc │ │ │ ├── list_container_animation_manager.h │ │ │ ├── list_container_default.cc │ │ │ ├── list_container_default.h │ │ │ ├── list_container_delegate_internal.h │ │ │ ├── list_container_impl.cc │ │ │ ├── list_container_impl.h │ │ │ ├── list_event_manager.cc │ │ │ ├── list_event_manager.h │ │ │ ├── list_event_manager_unittest.cc │ │ │ ├── list_layout_manager.cc │ │ │ ├── list_layout_manager.h │ │ │ ├── list_orientation_helper.cc │ │ │ ├── list_orientation_helper.h │ │ │ ├── list_types.h │ │ │ ├── mediator/ │ │ │ │ ├── BUILD.gn │ │ │ │ ├── list_item_mediator.cc │ │ │ │ ├── list_item_mediator.h │ │ │ │ ├── list_mediator.cc │ │ │ │ └── list_mediator.h │ │ │ ├── staggered_grid_layout_manager.cc │ │ │ ├── staggered_grid_layout_manager.h │ │ │ ├── staggered_grid_layout_manager_unittest.cc │ │ │ └── testing/ │ │ │ ├── mock_diff_result.h │ │ │ ├── mock_list_element.h │ │ │ ├── utils.cc │ │ │ └── utils.h │ │ ├── ui_wrapper/ │ │ │ ├── BUILD.gn │ │ │ ├── common/ │ │ │ │ ├── BUILD.gn │ │ │ │ ├── android/ │ │ │ │ │ ├── platform_extra_bundle_android.cc │ │ │ │ │ ├── platform_extra_bundle_android.h │ │ │ │ │ ├── prop_bundle_android.cc │ │ │ │ │ ├── prop_bundle_android.h │ │ │ │ │ ├── prop_bundle_android_test.cc │ │ │ │ │ └── prop_bundle_android_test.h │ │ │ │ ├── harmony/ │ │ │ │ │ ├── platform_extra_bundle_harmony.cc │ │ │ │ │ ├── platform_extra_bundle_harmony.h │ │ │ │ │ ├── prop_bundle_harmony.cc │ │ │ │ │ └── prop_bundle_harmony.h │ │ │ │ ├── ios/ │ │ │ │ │ ├── platform_extra_bundle_darwin.h │ │ │ │ │ ├── platform_extra_bundle_darwin.mm │ │ │ │ │ ├── prop_bundle_darwin.h │ │ │ │ │ └── prop_bundle_darwin.mm │ │ │ │ ├── native_prop_bundle.cc │ │ │ │ ├── native_prop_bundle.h │ │ │ │ ├── prop_bundle_creator_default.cc │ │ │ │ ├── prop_bundle_creator_default.h │ │ │ │ └── testing/ │ │ │ │ ├── prop_bundle_mock.cc │ │ │ │ └── prop_bundle_mock.h │ │ │ ├── layout/ │ │ │ │ ├── BUILD.gn │ │ │ │ ├── android/ │ │ │ │ │ ├── layout_context_android.cc │ │ │ │ │ ├── layout_context_android.h │ │ │ │ │ ├── layout_node_android.cc │ │ │ │ │ ├── layout_node_android.h │ │ │ │ │ ├── layout_node_manager_android.cc │ │ │ │ │ ├── layout_node_manager_android.h │ │ │ │ │ ├── text_layout_android.cc │ │ │ │ │ └── text_layout_android.h │ │ │ │ ├── empty/ │ │ │ │ │ └── layout_context_empty_implementation.h │ │ │ │ ├── harmony/ │ │ │ │ │ ├── layout_context_harmony.cc │ │ │ │ │ └── layout_context_harmony.h │ │ │ │ ├── ios/ │ │ │ │ │ ├── layout_context_darwin.h │ │ │ │ │ ├── layout_context_darwin.mm │ │ │ │ │ ├── text_layout_darwin.h │ │ │ │ │ └── text_layout_darwin.mm │ │ │ │ ├── layout_context.cc │ │ │ │ ├── layout_context.h │ │ │ │ ├── layout_context_data.h │ │ │ │ ├── layout_node.cc │ │ │ │ ├── layout_node.h │ │ │ │ ├── list_node.cc │ │ │ │ ├── list_node.h │ │ │ │ ├── no_needed_layout_list.h │ │ │ │ └── textra/ │ │ │ │ ├── text_layout_api.h │ │ │ │ ├── text_layout_textra.cc │ │ │ │ └── text_layout_textra.h │ │ │ └── painting/ │ │ │ ├── BUILD.gn │ │ │ ├── android/ │ │ │ │ ├── native_painting_context_android.cc │ │ │ │ ├── native_painting_context_android.h │ │ │ │ ├── native_painting_context_platform_android_ref.cc │ │ │ │ ├── native_painting_context_platform_android_ref.h │ │ │ │ ├── painting_context_android.cc │ │ │ │ ├── painting_context_android.h │ │ │ │ ├── platform_renderer_android.cc │ │ │ │ ├── platform_renderer_android.h │ │ │ │ ├── platform_renderer_context.cc │ │ │ │ ├── platform_renderer_context.h │ │ │ │ ├── ui_delegate_android.cc │ │ │ │ └── ui_delegate_android.h │ │ │ ├── catalyzer.cc │ │ │ ├── catalyzer.h │ │ │ ├── empty/ │ │ │ │ └── painting_context_implementation.h │ │ │ ├── harmony/ │ │ │ │ ├── painting_context_harmony.cc │ │ │ │ ├── painting_context_harmony.h │ │ │ │ ├── ui_delegate_harmony.cc │ │ │ │ └── ui_delegate_harmony.h │ │ │ ├── ios/ │ │ │ │ ├── native_painting_context_darwin.h │ │ │ │ ├── native_painting_context_darwin.mm │ │ │ │ ├── native_painting_context_platform_darwin_ref.h │ │ │ │ ├── native_painting_context_platform_darwin_ref.mm │ │ │ │ ├── painting_context_darwin.h │ │ │ │ ├── painting_context_darwin.mm │ │ │ │ ├── painting_context_darwin_UnitTest.mm │ │ │ │ ├── painting_context_darwin_utils.h │ │ │ │ ├── painting_context_darwin_utils.mm │ │ │ │ ├── platform_renderer_context_darwin.h │ │ │ │ ├── platform_renderer_context_darwin.mm │ │ │ │ ├── platform_renderer_darwin.h │ │ │ │ ├── platform_renderer_darwin.mm │ │ │ │ ├── platform_renderer_darwin_factory.h │ │ │ │ ├── platform_renderer_darwin_factory.mm │ │ │ │ ├── ui_delegate_darwin.h │ │ │ │ └── ui_delegate_darwin.mm │ │ │ ├── native_painting_context.cc │ │ │ ├── native_painting_context.h │ │ │ ├── native_painting_context_platform_ref.cc │ │ │ ├── native_painting_context_platform_ref.h │ │ │ ├── painting_context.cc │ │ │ ├── painting_context.h │ │ │ ├── platform_renderer.h │ │ │ ├── platform_renderer_impl.cc │ │ │ └── platform_renderer_impl.h │ │ ├── utils/ │ │ │ ├── BUILD.gn │ │ │ ├── android/ │ │ │ │ ├── device_display_info.cc │ │ │ │ ├── devtool_lifecycle_android.cc │ │ │ │ ├── devtool_lifecycle_android.h │ │ │ │ ├── event_converter_android.cc │ │ │ │ ├── event_converter_android.h │ │ │ │ ├── event_converter_android_unittest.cc │ │ │ │ ├── lynx_env_android.cc │ │ │ │ ├── lynx_env_android.h │ │ │ │ ├── lynx_trail_hub_impl_android.cc │ │ │ │ ├── lynx_trail_hub_impl_android.h │ │ │ │ ├── text_utils_android.cc │ │ │ │ ├── text_utils_android.h │ │ │ │ ├── value_converter_android.cc │ │ │ │ └── value_converter_android.h │ │ │ ├── base/ │ │ │ │ ├── base_def.h │ │ │ │ ├── element_template_info.h │ │ │ │ ├── tasm_constants.h │ │ │ │ ├── tasm_utils.cc │ │ │ │ ├── tasm_utils.h │ │ │ │ ├── tasm_worker_basic_task_runner.cc │ │ │ │ ├── tasm_worker_basic_task_runner.h │ │ │ │ ├── tasm_worker_task_runner.cc │ │ │ │ ├── tasm_worker_task_runner.h │ │ │ │ └── tasm_worker_task_runner_unittest.cc │ │ │ ├── build.gni │ │ │ ├── darwin/ │ │ │ │ ├── event_converter_darwin.h │ │ │ │ ├── event_converter_darwin.mm │ │ │ │ └── event_converter_darwin_unittest.mm │ │ │ ├── devtool_lifecycle.cc │ │ │ ├── devtool_lifecycle.h │ │ │ ├── devtool_lifecycle_unittest.cc │ │ │ ├── devtool_state.h │ │ │ ├── diff_algorithm.h │ │ │ ├── diff_algorithm_unittest.cc │ │ │ ├── harmony/ │ │ │ │ ├── lynx_trail_hub_impl_harmony.cc │ │ │ │ ├── lynx_trail_hub_impl_harmony.h │ │ │ │ └── sys_env_harmony.cc │ │ │ ├── ios/ │ │ │ │ ├── text_utils_ios.h │ │ │ │ └── text_utils_ios.mm │ │ │ ├── lynx_env.cc │ │ │ ├── lynx_env.h │ │ │ ├── lynx_trail_hub.cc │ │ │ ├── lynx_trail_hub.h │ │ │ ├── lynx_trail_hub_impl_default.cc │ │ │ ├── prop_bundle_style_writer.cc │ │ │ ├── prop_bundle_style_writer.h │ │ │ ├── prop_bundle_style_writer_unittest.cc │ │ │ ├── prop_bundle_style_writer_unittest.h │ │ │ ├── sys_lynx_env/ │ │ │ │ └── sys_env_default.cc │ │ │ ├── test/ │ │ │ │ ├── text_utils_mock.cc │ │ │ │ └── text_utils_mock.h │ │ │ ├── value_utils.cc │ │ │ └── value_utils.h │ │ └── worklet/ │ │ ├── BUILD.gn │ │ ├── base/ │ │ │ ├── worklet_utils.cc │ │ │ └── worklet_utils.h │ │ ├── lepus_component.cc │ │ ├── lepus_component.h │ │ ├── lepus_element.cc │ │ ├── lepus_element.h │ │ ├── lepus_gesture.cc │ │ ├── lepus_gesture.h │ │ ├── lepus_lynx.cc │ │ ├── lepus_lynx.h │ │ ├── lepus_raf_handler.cc │ │ ├── lepus_raf_handler.h │ │ └── test/ │ │ ├── worklet_api_unittest.cc │ │ ├── worklet_event_unittest.cc │ │ └── worklet_utils_unittest.cc │ ├── resource/ │ │ ├── BUILD.gn │ │ ├── external_resource/ │ │ │ ├── external_resource_loader.cc │ │ │ └── external_resource_loader.h │ │ ├── lazy_bundle/ │ │ │ ├── bundle_resource_info.h │ │ │ ├── lazy_bundle_lifecycle_option.cc │ │ │ ├── lazy_bundle_lifecycle_option.h │ │ │ ├── lazy_bundle_loader.cc │ │ │ ├── lazy_bundle_loader.h │ │ │ ├── lazy_bundle_request.h │ │ │ ├── lazy_bundle_unittest.cc │ │ │ ├── lazy_bundle_utils.cc │ │ │ └── lazy_bundle_utils.h │ │ ├── lynx_info_reporter_helper_harmony.cc │ │ ├── lynx_info_reporter_helper_harmony.h │ │ ├── lynx_resource_loader.cc │ │ ├── lynx_resource_loader_android.cc │ │ ├── lynx_resource_loader_android.h │ │ ├── lynx_resource_loader_darwin.h │ │ ├── lynx_resource_loader_darwin.mm │ │ ├── lynx_resource_loader_harmony.cc │ │ ├── lynx_resource_loader_harmony.h │ │ ├── lynx_resource_setting.cc │ │ ├── lynx_resource_setting.h │ │ └── trace/ │ │ ├── BUILD.gn │ │ └── resource_trace_event_def.h │ ├── runtime/ │ │ ├── BUILD.gn │ │ ├── common/ │ │ │ ├── BUILD.gn │ │ │ ├── bindings/ │ │ │ │ ├── event/ │ │ │ │ │ ├── BUILD.gn │ │ │ │ │ ├── context_proxy.cc │ │ │ │ │ ├── context_proxy.h │ │ │ │ │ ├── context_proxy_test.cc │ │ │ │ │ ├── context_proxy_test.h │ │ │ │ │ ├── message_event.cc │ │ │ │ │ ├── message_event.h │ │ │ │ │ ├── message_event_test.cc │ │ │ │ │ ├── message_event_test.h │ │ │ │ │ └── runtime_constants.h │ │ │ │ ├── modules/ │ │ │ │ │ ├── BUILD.gn │ │ │ │ │ ├── lynx_native_module_manager.cc │ │ │ │ │ ├── lynx_native_module_manager.h │ │ │ │ │ ├── lynx_native_module_manager_unittest.cc │ │ │ │ │ └── mock_native_module.h │ │ │ │ └── resource/ │ │ │ │ ├── BUILD.gn │ │ │ │ ├── response_handler_proxy.h │ │ │ │ ├── response_promise.h │ │ │ │ ├── response_promise_unittest.cc │ │ │ │ └── response_promise_unittest.h │ │ │ ├── js_error_reporter.cc │ │ │ ├── js_error_reporter.h │ │ │ ├── js_error_reporter_unittest.cc │ │ │ ├── lynx_console_helper.h │ │ │ └── napi/ │ │ │ ├── BUILD.gn │ │ │ ├── jsbinding_napi_v8_ios_imp.cc │ │ │ ├── napi.gni │ │ │ ├── napi_bench_object.h │ │ │ ├── napi_environment.cc │ │ │ ├── napi_environment.h │ │ │ ├── napi_environment_unittest.cc │ │ │ ├── napi_runtime_proxy.cc │ │ │ ├── napi_runtime_proxy.h │ │ │ ├── napi_runtime_proxy_jsc.cc │ │ │ ├── napi_runtime_proxy_jsc.h │ │ │ ├── napi_runtime_proxy_jsvm.cc │ │ │ ├── napi_runtime_proxy_jsvm.h │ │ │ ├── napi_runtime_proxy_jsvm_factory.h │ │ │ ├── napi_runtime_proxy_quickjs.cc │ │ │ ├── napi_runtime_proxy_quickjs.h │ │ │ ├── napi_runtime_proxy_quickjs_factory.h │ │ │ ├── napi_runtime_proxy_v8.cc │ │ │ ├── napi_runtime_proxy_v8.h │ │ │ ├── napi_runtime_proxy_v8_factory.h │ │ │ └── shim/ │ │ │ ├── README.md │ │ │ ├── shim_napi_env_jsc.h │ │ │ ├── shim_napi_env_quickjs.h │ │ │ └── shim_napi_env_v8.h │ │ ├── js/ │ │ │ ├── BUILD.gn │ │ │ ├── bindings/ │ │ │ │ ├── BUILD.gn │ │ │ │ ├── api_call_back-inl.h │ │ │ │ ├── api_call_back.cc │ │ │ │ ├── api_call_back.h │ │ │ │ ├── api_call_back_unittest.cc │ │ │ │ ├── api_invoke_ctrl.h │ │ │ │ ├── big_int/ │ │ │ │ │ ├── big_integer.h │ │ │ │ │ ├── constants.cc │ │ │ │ │ ├── jsbi.cc │ │ │ │ │ └── jsbi.h │ │ │ │ ├── console.h │ │ │ │ ├── event/ │ │ │ │ │ ├── BUILD.gn │ │ │ │ │ ├── context_proxy_in_js.cc │ │ │ │ │ ├── context_proxy_in_js.h │ │ │ │ │ ├── context_proxy_in_js_test.cc │ │ │ │ │ ├── context_proxy_in_js_test.h │ │ │ │ │ ├── js_event_listener.cc │ │ │ │ │ ├── js_event_listener.h │ │ │ │ │ ├── js_event_listener_test.cc │ │ │ │ │ └── js_event_listener_test.h │ │ │ │ ├── global.cc │ │ │ │ ├── global.h │ │ │ │ ├── interceptor/ │ │ │ │ │ ├── BUILD.gn │ │ │ │ │ ├── interceptor_factory.cc │ │ │ │ │ └── interceptor_factory.h │ │ │ │ ├── java_script_element.cc │ │ │ │ ├── java_script_element.h │ │ │ │ ├── js_app.cc │ │ │ │ ├── js_app.h │ │ │ │ ├── js_app_unittest.cc │ │ │ │ ├── js_object_destruction_observer.h │ │ │ │ ├── js_task_adapter.cc │ │ │ │ ├── js_task_adapter.h │ │ │ │ ├── js_task_adapter_unittest.cc │ │ │ │ ├── lynx.cc │ │ │ │ ├── lynx.h │ │ │ │ ├── lynx_console.cc │ │ │ │ ├── lynx_js_error.cc │ │ │ │ ├── lynx_js_error.h │ │ │ │ ├── mock_module_delegate.h │ │ │ │ ├── modules/ │ │ │ │ │ ├── android/ │ │ │ │ │ │ ├── BUILD.gn │ │ │ │ │ │ ├── callback_impl.cc │ │ │ │ │ │ ├── callback_impl.h │ │ │ │ │ │ ├── java_attribute_descriptor.cc │ │ │ │ │ │ ├── java_attribute_descriptor.h │ │ │ │ │ │ ├── java_method_descriptor.cc │ │ │ │ │ │ ├── java_method_descriptor.h │ │ │ │ │ │ ├── jni_v8_bridge.cc │ │ │ │ │ │ ├── lynx_module_android.cc │ │ │ │ │ │ ├── lynx_module_android.h │ │ │ │ │ │ ├── lynx_promise_impl.cc │ │ │ │ │ │ ├── lynx_promise_impl.h │ │ │ │ │ │ ├── lynx_proxy_runtime_helper.cc │ │ │ │ │ │ ├── lynx_proxy_runtime_helper.h │ │ │ │ │ │ ├── method_invoker.cc │ │ │ │ │ │ ├── method_invoker.h │ │ │ │ │ │ ├── module_factory_android.cc │ │ │ │ │ │ ├── module_factory_android.h │ │ │ │ │ │ ├── platform_jsi/ │ │ │ │ │ │ │ ├── BUILD.gn │ │ │ │ │ │ │ ├── jsi_object_utils.cc │ │ │ │ │ │ │ ├── jsi_object_utils.h │ │ │ │ │ │ │ ├── lynx_jsi_object_descriptor.cc │ │ │ │ │ │ │ ├── lynx_jsi_object_descriptor.h │ │ │ │ │ │ │ ├── lynx_platform_jsi_object_android.cc │ │ │ │ │ │ │ └── lynx_platform_jsi_object_android.h │ │ │ │ │ │ └── webassembly_bridge.cc │ │ │ │ │ ├── harmony/ │ │ │ │ │ │ ├── module_factory_harmony.cc │ │ │ │ │ │ ├── module_factory_harmony.h │ │ │ │ │ │ ├── native_module_harmony.cc │ │ │ │ │ │ ├── native_module_harmony.h │ │ │ │ │ │ ├── platform_module_manager.cc │ │ │ │ │ │ └── platform_module_manager.h │ │ │ │ │ ├── ios/ │ │ │ │ │ │ ├── common_module_creator.h │ │ │ │ │ │ ├── common_module_creator.mm │ │ │ │ │ │ ├── lynx_module_creator_darwin.h │ │ │ │ │ │ ├── lynx_module_darwin.h │ │ │ │ │ │ ├── lynx_module_darwin.mm │ │ │ │ │ │ ├── lynx_module_interceptor.h │ │ │ │ │ │ ├── lynx_module_interceptor.mm │ │ │ │ │ │ ├── module_factory_darwin.h │ │ │ │ │ │ ├── module_factory_darwin.mm │ │ │ │ │ │ ├── shared_module_creator.h │ │ │ │ │ │ └── shared_module_creator.mm │ │ │ │ │ ├── lynx_jsi_module.cc │ │ │ │ │ ├── lynx_jsi_module.h │ │ │ │ │ ├── lynx_jsi_module_binding.cc │ │ │ │ │ ├── lynx_jsi_module_binding.h │ │ │ │ │ ├── lynx_jsi_module_callback.cc │ │ │ │ │ ├── lynx_jsi_module_callback.h │ │ │ │ │ ├── lynx_module.cc │ │ │ │ │ ├── lynx_module.h │ │ │ │ │ ├── lynx_module_manager.cc │ │ │ │ │ ├── lynx_module_manager.h │ │ │ │ │ ├── lynx_module_manager_unittest.cc │ │ │ │ │ ├── lynx_module_timing.cc │ │ │ │ │ ├── lynx_module_timing.h │ │ │ │ │ ├── module_delegate.h │ │ │ │ │ ├── module_interceptor.cc │ │ │ │ │ ├── module_interceptor.h │ │ │ │ │ └── native_module_factory_unittest.cc │ │ │ │ ├── resource/ │ │ │ │ │ ├── BUILD.gn │ │ │ │ │ ├── response_handler_in_js.cc │ │ │ │ │ ├── response_handler_in_js.h │ │ │ │ │ └── response_handler_in_js_unittest.cc │ │ │ │ ├── text_codec_helper.cc │ │ │ │ ├── text_codec_helper.h │ │ │ │ └── text_codec_helper_unittest.cc │ │ │ ├── bytecode/ │ │ │ │ ├── BUILD.gn │ │ │ │ ├── android/ │ │ │ │ │ ├── bytecode_callback.cc │ │ │ │ │ ├── bytecode_callback.h │ │ │ │ │ └── js_cache_manager_android.cc │ │ │ │ ├── cache_generator.h │ │ │ │ ├── harmony/ │ │ │ │ │ ├── js_cache_manager_harmony.cc │ │ │ │ │ └── js_cache_manager_harmony.h │ │ │ │ ├── ios/ │ │ │ │ │ └── js_cache_manager_darwin.mm │ │ │ │ ├── js_cache_manager.cc │ │ │ │ ├── js_cache_manager.h │ │ │ │ ├── js_cache_manager_facade.cc │ │ │ │ ├── js_cache_manager_facade.h │ │ │ │ ├── js_cache_manager_facade_unittest.cc │ │ │ │ ├── js_cache_manager_mock.cc │ │ │ │ ├── js_cache_manager_unittest.cc │ │ │ │ ├── js_cache_tracker.cc │ │ │ │ ├── js_cache_tracker.h │ │ │ │ ├── js_cache_tracker_unittest.cc │ │ │ │ ├── js_cache_tracker_unittest.h │ │ │ │ ├── meta_data.cc │ │ │ │ ├── meta_data.h │ │ │ │ ├── meta_data_unittest.cc │ │ │ │ ├── quickjs/ │ │ │ │ │ ├── bytecode/ │ │ │ │ │ │ ├── quickjs_bytecode.h │ │ │ │ │ │ ├── quickjs_bytecode_debug_info_unittest.cc │ │ │ │ │ │ ├── quickjs_bytecode_provider.cc │ │ │ │ │ │ ├── quickjs_bytecode_provider.h │ │ │ │ │ │ ├── quickjs_bytecode_provider_src.cc │ │ │ │ │ │ ├── quickjs_bytecode_provider_src.h │ │ │ │ │ │ └── quickjs_bytecode_provider_unittest.cc │ │ │ │ │ ├── quickjs_cache.gni │ │ │ │ │ ├── quickjs_cache_generator.cc │ │ │ │ │ └── quickjs_cache_generator.h │ │ │ │ └── v8/ │ │ │ │ ├── v8_cache_generator.cc │ │ │ │ └── v8_cache_generator.h │ │ │ ├── js_bundle.cc │ │ │ ├── js_bundle.h │ │ │ ├── js_bundle_holder.h │ │ │ ├── js_bundle_unittest.cc │ │ │ ├── js_context_wrapper.cc │ │ │ ├── js_context_wrapper.h │ │ │ ├── js_executor.cc │ │ │ ├── js_executor.h │ │ │ ├── jsi/ │ │ │ │ ├── BUILD.gn │ │ │ │ ├── LICENSE │ │ │ │ ├── args_converter.h │ │ │ │ ├── args_converter_unittest.cc │ │ │ │ ├── instrumentation.h │ │ │ │ ├── jsc/ │ │ │ │ │ ├── jsc.gni │ │ │ │ │ ├── jsc_api.h │ │ │ │ │ ├── jsc_context_group_wrapper.cc │ │ │ │ │ ├── jsc_context_group_wrapper.h │ │ │ │ │ ├── jsc_context_wrapper.cc │ │ │ │ │ ├── jsc_context_wrapper.h │ │ │ │ │ ├── jsc_exception.cc │ │ │ │ │ ├── jsc_exception.h │ │ │ │ │ ├── jsc_helper.cc │ │ │ │ │ ├── jsc_helper.h │ │ │ │ │ ├── jsc_host_function.cc │ │ │ │ │ ├── jsc_host_function.h │ │ │ │ │ ├── jsc_host_object.cc │ │ │ │ │ ├── jsc_host_object.h │ │ │ │ │ ├── jsc_runtime.cc │ │ │ │ │ └── jsc_runtime.h │ │ │ │ ├── jsi-inl.h │ │ │ │ ├── jsi.cc │ │ │ │ ├── jsi.h │ │ │ │ ├── jsi_unittest.cc │ │ │ │ ├── jsi_unittest.h │ │ │ │ ├── jslib.h │ │ │ │ ├── jsvm/ │ │ │ │ │ ├── BUILD.gn │ │ │ │ │ ├── jsvm_api.h │ │ │ │ │ ├── jsvm_context_wrapper.cc │ │ │ │ │ ├── jsvm_context_wrapper.h │ │ │ │ │ ├── jsvm_declare.def │ │ │ │ │ ├── jsvm_dyn_load.h │ │ │ │ │ ├── jsvm_exception.cc │ │ │ │ │ ├── jsvm_exception.h │ │ │ │ │ ├── jsvm_helper.cc │ │ │ │ │ ├── jsvm_helper.h │ │ │ │ │ ├── jsvm_host_function.cc │ │ │ │ │ ├── jsvm_host_function.h │ │ │ │ │ ├── jsvm_host_object.cc │ │ │ │ │ ├── jsvm_host_object.h │ │ │ │ │ ├── jsvm_runtime.cc │ │ │ │ │ ├── jsvm_runtime.h │ │ │ │ │ ├── jsvm_runtime_wrapper.cc │ │ │ │ │ ├── jsvm_runtime_wrapper.h │ │ │ │ │ └── jsvm_util.h │ │ │ │ ├── quickjs/ │ │ │ │ │ ├── BUILD.gn │ │ │ │ │ ├── build.gni │ │ │ │ │ ├── quickjs_api.h │ │ │ │ │ ├── quickjs_context_wrapper.cc │ │ │ │ │ ├── quickjs_context_wrapper.h │ │ │ │ │ ├── quickjs_exception.cc │ │ │ │ │ ├── quickjs_exception.h │ │ │ │ │ ├── quickjs_helper.cc │ │ │ │ │ ├── quickjs_helper.h │ │ │ │ │ ├── quickjs_helper_unittest.cc │ │ │ │ │ ├── quickjs_host_function.cc │ │ │ │ │ ├── quickjs_host_function.h │ │ │ │ │ ├── quickjs_host_object.cc │ │ │ │ │ ├── quickjs_host_object.h │ │ │ │ │ ├── quickjs_inspector_manager.h │ │ │ │ │ ├── quickjs_runtime.cc │ │ │ │ │ ├── quickjs_runtime.h │ │ │ │ │ ├── quickjs_runtime_unittest.cc │ │ │ │ │ ├── quickjs_runtime_wrapper.cc │ │ │ │ │ └── quickjs_runtime_wrapper.h │ │ │ │ └── v8/ │ │ │ │ ├── BUILD.gn │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── v8.gni │ │ │ │ ├── v8_api.h │ │ │ │ ├── v8_context_wrapper.h │ │ │ │ ├── v8_context_wrapper_impl.cc │ │ │ │ ├── v8_context_wrapper_impl.h │ │ │ │ ├── v8_exception.cc │ │ │ │ ├── v8_exception.h │ │ │ │ ├── v8_helper.cc │ │ │ │ ├── v8_helper.h │ │ │ │ ├── v8_host_function.cc │ │ │ │ ├── v8_host_function.h │ │ │ │ ├── v8_host_object.cc │ │ │ │ ├── v8_host_object.h │ │ │ │ ├── v8_inspector_manager.h │ │ │ │ ├── v8_isolate_wrapper.h │ │ │ │ ├── v8_isolate_wrapper_impl.cc │ │ │ │ ├── v8_isolate_wrapper_impl.h │ │ │ │ ├── v8_runtime.cc │ │ │ │ └── v8_runtime.h │ │ │ ├── jsi_object_wrapper.cc │ │ │ ├── jsi_object_wrapper.h │ │ │ ├── lynx_api_handler.cc │ │ │ ├── lynx_api_handler.h │ │ │ ├── lynx_runtime_helper.h │ │ │ ├── mock_template_delegate.h │ │ │ ├── napi/ │ │ │ │ ├── BUILD.gn │ │ │ │ ├── napi_loader_js.cc │ │ │ │ └── napi_loader_js.h │ │ │ ├── runtime_constant.h │ │ │ ├── runtime_lifecycle_listener_delegate.h │ │ │ ├── runtime_lifecycle_observer_impl.cc │ │ │ ├── runtime_lifecycle_observer_impl.h │ │ │ ├── runtime_lifecycle_observer_unittest.cc │ │ │ ├── runtime_manager.cc │ │ │ ├── runtime_manager.h │ │ │ ├── template_delegate.h │ │ │ ├── update_data_type.h │ │ │ ├── utils.cc │ │ │ ├── utils.h │ │ │ └── utils_unittest.cc │ │ ├── lepus/ │ │ │ ├── BUILD.gn │ │ │ ├── array_api.cc │ │ │ ├── array_api.h │ │ │ ├── ast_dump.cc │ │ │ ├── ast_dump.h │ │ │ ├── base_api.cc │ │ │ ├── base_api.h │ │ │ ├── base_binary_reader.cc │ │ │ ├── base_binary_reader.h │ │ │ ├── big_object.js │ │ │ ├── binary_input_stream.cc │ │ │ ├── binary_input_stream.h │ │ │ ├── binary_input_stream_unittest.cc │ │ │ ├── binary_input_stream_unittest.h │ │ │ ├── binary_reader.cc │ │ │ ├── binary_reader.h │ │ │ ├── binary_writer.cc │ │ │ ├── binary_writer.h │ │ │ ├── bindings/ │ │ │ │ ├── BUILD.gn │ │ │ │ ├── build.gni │ │ │ │ ├── empty_renderer_functions.cc │ │ │ │ ├── event/ │ │ │ │ │ ├── BUILD.gn │ │ │ │ │ ├── context_proxy_in_lepus.cc │ │ │ │ │ ├── context_proxy_in_lepus.h │ │ │ │ │ ├── context_proxy_in_lepus_test.cc │ │ │ │ │ ├── context_proxy_in_lepus_test.h │ │ │ │ │ ├── lepus_event_listener.cc │ │ │ │ │ ├── lepus_event_listener.h │ │ │ │ │ ├── lepus_event_listener_test.cc │ │ │ │ │ └── lepus_event_listener_test.h │ │ │ │ ├── ios/ │ │ │ │ │ ├── lynx_lepus_module_darwin.h │ │ │ │ │ └── lynx_lepus_module_darwin.mm │ │ │ │ ├── modules/ │ │ │ │ │ ├── BUILD.gn │ │ │ │ │ ├── lepus_module_callback.cc │ │ │ │ │ ├── lepus_module_callback.h │ │ │ │ │ ├── lynx_lepus_module.cc │ │ │ │ │ ├── lynx_lepus_module.h │ │ │ │ │ ├── lynx_lepus_module_manager.cc │ │ │ │ │ └── lynx_lepus_module_manager.h │ │ │ │ ├── renderer.h │ │ │ │ ├── renderer_functions.cc │ │ │ │ ├── renderer_functions.h │ │ │ │ ├── renderer_functions_def.h │ │ │ │ ├── resource/ │ │ │ │ │ ├── BUILD.gn │ │ │ │ │ ├── response_handler_in_lepus.cc │ │ │ │ │ ├── response_handler_in_lepus.h │ │ │ │ │ └── response_handler_in_lepus_unittest.cc │ │ │ │ └── style/ │ │ │ │ ├── runtime_css_reader.h │ │ │ │ └── shared_css_fragment_wrapper.h │ │ │ ├── build.gni │ │ │ ├── builtin.cc │ │ │ ├── builtin.h │ │ │ ├── builtin_function_table.h │ │ │ ├── bytecode_generator.cc │ │ │ ├── bytecode_generator.h │ │ │ ├── bytecode_print.cc │ │ │ ├── bytecode_print.h │ │ │ ├── code_generator.cc │ │ │ ├── code_generator.h │ │ │ ├── compiler/ │ │ │ │ ├── BUILD.gn │ │ │ │ ├── encode_main.cc │ │ │ │ ├── lepus_compiler_unittests.cc │ │ │ │ └── unit_test/ │ │ │ │ ├── LepusDate_test.js │ │ │ │ ├── URIComponent.js │ │ │ │ ├── array.map_test.js │ │ │ │ ├── array.prototype.concat.js │ │ │ │ ├── array.prototype.filter.js │ │ │ │ ├── array.prototype.filter_test.js │ │ │ │ ├── array.prototype.find.js │ │ │ │ ├── array.prototype.findIndex.js │ │ │ │ ├── array.prototype.foreach.js │ │ │ │ ├── array.prototype.includes.js │ │ │ │ ├── array.prototype.join.js │ │ │ │ ├── array.prototype.map_test.js │ │ │ │ ├── array.prototype.shift.js │ │ │ │ ├── array.prototype.slice.js │ │ │ │ ├── array.prototype.substring.js │ │ │ │ ├── array_prototype_test.js │ │ │ │ ├── assignment_args.js │ │ │ │ ├── carash_resolved.js │ │ │ │ ├── check_default_parameters.js │ │ │ │ ├── closure.js │ │ │ │ ├── closure_simple.js │ │ │ │ ├── closure_test.js │ │ │ │ ├── closure_top_level.js │ │ │ │ ├── double_to_size_ub.js │ │ │ │ ├── export_and_import_test.js │ │ │ │ ├── for_statement_test.js │ │ │ │ ├── global_this.js │ │ │ │ ├── lepus_undefined.js │ │ │ │ ├── logical_AND_and_logical_Or.js │ │ │ │ ├── math.js │ │ │ │ ├── nullish_coalescing.js │ │ │ │ ├── nullish_coalescing_break_change.js │ │ │ │ ├── number.prototype.tofixed.js │ │ │ │ ├── numbertostring.js │ │ │ │ ├── object.assign.js │ │ │ │ ├── object.freeze.js │ │ │ │ ├── object_keys.js │ │ │ │ ├── optional_chaining.js │ │ │ │ ├── p0_feature.js │ │ │ │ ├── parseFloat_test.js │ │ │ │ ├── parseInt_test.js │ │ │ │ ├── regexp_test.js │ │ │ │ ├── str_len_test.js │ │ │ │ ├── string.length.js │ │ │ │ ├── string.prototype.replace.js │ │ │ │ ├── string.prototype.slice.js │ │ │ │ ├── string.prototype.substr.js │ │ │ │ ├── string.prototype.trim.js │ │ │ │ ├── string_prototype_split_test.js │ │ │ │ ├── string_prototype_test.js │ │ │ │ ├── ternary_test.js │ │ │ │ ├── to_fixed.js │ │ │ │ ├── try_catch_throw.js │ │ │ │ ├── typeof_test.js │ │ │ │ └── unary_operation.js │ │ │ ├── context_binary_writer.cc │ │ │ ├── context_binary_writer.h │ │ │ ├── context_decoder_unittests.cc │ │ │ ├── context_pool.cc │ │ │ ├── context_pool.h │ │ │ ├── context_pool_unittest.cc │ │ │ ├── date_api.h │ │ │ ├── exception.h │ │ │ ├── function.cc │ │ │ ├── function.h │ │ │ ├── function_api.cc │ │ │ ├── function_api.h │ │ │ ├── function_api_unittest.cc │ │ │ ├── guard.h │ │ │ ├── heap.h │ │ │ ├── js_object.cc │ │ │ ├── js_object.h │ │ │ ├── json_api.h │ │ │ ├── json_parser.cc │ │ │ ├── json_parser.h │ │ │ ├── json_parser_unittest.cc │ │ │ ├── lepus_context_cell.cc │ │ │ ├── lepus_context_cell.h │ │ │ ├── lepus_date.cc │ │ │ ├── lepus_date.h │ │ │ ├── lepus_date_api.cc │ │ │ ├── lepus_date_api.h │ │ │ ├── lepus_error_helper.cc │ │ │ ├── lepus_error_helper.h │ │ │ ├── lepus_error_helper_unittest.cc │ │ │ ├── lepus_global.cc │ │ │ ├── lepus_global.h │ │ │ ├── lepus_inspector.h │ │ │ ├── lepus_utils.h │ │ │ ├── lepus_value_unittest.cc │ │ │ ├── lynx_value_extended.cc │ │ │ ├── lynx_value_extended_unittest.cc │ │ │ ├── marco.h │ │ │ ├── math_api.h │ │ │ ├── op_code.h │ │ │ ├── output_stream.cc │ │ │ ├── output_stream.h │ │ │ ├── parser.cc │ │ │ ├── parser.h │ │ │ ├── regexp.h │ │ │ ├── regexp_api.cc │ │ │ ├── regexp_api.h │ │ │ ├── restricted_value.cc │ │ │ ├── restricted_value.h │ │ │ ├── restricted_value_unittest.cc │ │ │ ├── scanner.cc │ │ │ ├── scanner.h │ │ │ ├── semantic_analysis.cc │ │ │ ├── semantic_analysis.h │ │ │ ├── string_api.cc │ │ │ ├── string_api.h │ │ │ ├── string_api_unittest.cc │ │ │ ├── switch.cc │ │ │ ├── switch.h │ │ │ ├── syntax_tree.cc │ │ │ ├── syntax_tree.h │ │ │ ├── table_api.cc │ │ │ ├── table_api.h │ │ │ ├── tasks/ │ │ │ │ ├── BUILD.gn │ │ │ │ ├── lepus_callback_manager.cc │ │ │ │ ├── lepus_callback_manager.h │ │ │ │ ├── lepus_callback_manager_unittest.cc │ │ │ │ ├── lepus_raf_manager.cc │ │ │ │ └── lepus_raf_manager.h │ │ │ ├── token.h │ │ │ ├── tt_tm.h │ │ │ ├── upvalue.h │ │ │ ├── value_deep_check_unittest.cc │ │ │ ├── value_utils_unittest.cc │ │ │ ├── visitor.h │ │ │ ├── vm_context.cc │ │ │ └── vm_context.h │ │ ├── lepusng/ │ │ │ ├── BUILD.gn │ │ │ ├── bindings/ │ │ │ │ └── renderer_ng.cc │ │ │ ├── compiler/ │ │ │ │ └── lepusng_unit_test/ │ │ │ │ └── closure_block.js │ │ │ ├── jsvalue_helper.cc │ │ │ ├── jsvalue_helper.h │ │ │ ├── lynx_api_context_lepusng.h │ │ │ ├── napi/ │ │ │ │ ├── BUILD.gn │ │ │ │ ├── test/ │ │ │ │ │ ├── BUILD.gn │ │ │ │ │ ├── napi_test_context.cc │ │ │ │ │ ├── napi_test_context.h │ │ │ │ │ ├── napi_test_element.cc │ │ │ │ │ ├── napi_test_element.h │ │ │ │ │ ├── test_context.h │ │ │ │ │ ├── test_context.idl │ │ │ │ │ ├── test_element.h │ │ │ │ │ ├── test_element.idl │ │ │ │ │ ├── test_module.cc │ │ │ │ │ └── test_module.h │ │ │ │ └── worklet/ │ │ │ │ ├── lepus_component.idl │ │ │ │ ├── lepus_element.idl │ │ │ │ ├── lepus_gesture.idl │ │ │ │ ├── lepus_lynx.idl │ │ │ │ ├── napi_frame_callback.cc │ │ │ │ ├── napi_frame_callback.h │ │ │ │ ├── napi_func_callback.cc │ │ │ │ ├── napi_func_callback.h │ │ │ │ ├── napi_lepus_component.cc │ │ │ │ ├── napi_lepus_component.h │ │ │ │ ├── napi_lepus_element.cc │ │ │ │ ├── napi_lepus_element.h │ │ │ │ ├── napi_lepus_gesture.cc │ │ │ │ ├── napi_lepus_gesture.h │ │ │ │ ├── napi_lepus_lynx.cc │ │ │ │ ├── napi_lepus_lynx.h │ │ │ │ ├── napi_loader_ui.cc │ │ │ │ └── napi_loader_ui.h │ │ │ ├── qjs_callback.cc │ │ │ ├── qjs_callback.h │ │ │ ├── quick_context.cc │ │ │ ├── quick_context.h │ │ │ ├── quickjs_debug_info.cc │ │ │ ├── quickjs_debug_info.h │ │ │ ├── quickjs_promise_unittest.cc │ │ │ └── quickjs_stack_size_unittest.cc │ │ ├── mts_context.h │ │ ├── mts_context_factory.cc │ │ ├── mts_context_factory.h │ │ ├── profile/ │ │ │ ├── BUILD.gn │ │ │ ├── lepusng/ │ │ │ │ ├── BUILD.gn │ │ │ │ ├── lepusng_profiler.cc │ │ │ │ ├── lepusng_profiler.h │ │ │ │ └── lepusng_profiler_unittest.cc │ │ │ ├── quickjs/ │ │ │ │ ├── BUILD.gn │ │ │ │ ├── quickjs_runtime_profiler.cc │ │ │ │ ├── quickjs_runtime_profiler.h │ │ │ │ └── quickjs_runtime_profiler_unittest.cc │ │ │ ├── runtime_profiler.cc │ │ │ ├── runtime_profiler.h │ │ │ ├── runtime_profiler_manager.cc │ │ │ ├── runtime_profiler_manager.h │ │ │ ├── runtime_profiler_unittest.cc │ │ │ └── v8/ │ │ │ ├── BUILD.gn │ │ │ ├── v8_runtime_profiler.cc │ │ │ ├── v8_runtime_profiler.h │ │ │ ├── v8_runtime_profiler_helper.cc │ │ │ ├── v8_runtime_profiler_helper.h │ │ │ ├── v8_runtime_profiler_unittest.cc │ │ │ ├── v8_runtime_profiler_wrapper.h │ │ │ ├── v8_runtime_profiler_wrapper_impl.cc │ │ │ └── v8_runtime_profiler_wrapper_impl.h │ │ └── trace/ │ │ ├── BUILD.gn │ │ └── runtime_trace_event_def.h │ ├── services/ │ │ ├── event_report/ │ │ │ ├── BUILD.gn │ │ │ ├── android/ │ │ │ │ └── event_tracker_platform_impl.cc │ │ │ ├── darwin/ │ │ │ │ ├── event_tracker_platform_impl.mm │ │ │ │ └── event_tracker_platform_impl_unittest.mm │ │ │ ├── embedder/ │ │ │ │ └── event_tracker_platform_embedder_impl.cc │ │ │ ├── event_tracker.cc │ │ │ ├── event_tracker.h │ │ │ ├── event_tracker_nodejs.cc │ │ │ ├── event_tracker_platform_impl.cc │ │ │ ├── event_tracker_platform_impl.h │ │ │ └── harmony/ │ │ │ ├── event_tracker_harmony.h │ │ │ └── event_tracker_platform_impl.cc │ │ ├── feature_count/ │ │ │ ├── BUILD.gn │ │ │ ├── android/ │ │ │ │ └── feature_counter_android.cc │ │ │ ├── feature_counter.cc │ │ │ ├── feature_counter.h │ │ │ ├── global_feature_counter.cc │ │ │ └── global_feature_counter.h │ │ ├── fluency/ │ │ │ ├── BUILD.gn │ │ │ ├── android/ │ │ │ │ └── fluency_sample_android.cc │ │ │ ├── fluency_tracer.cc │ │ │ ├── fluency_tracer.h │ │ │ └── harmony/ │ │ │ ├── fluency_trace_helper_harmony.cc │ │ │ └── fluency_trace_helper_harmony.h │ │ ├── fsp_tracing/ │ │ │ ├── BUILD.gn │ │ │ ├── area/ │ │ │ │ ├── fsp_area_tracer_impl.cc │ │ │ │ └── fsp_area_tracer_impl.h │ │ │ ├── axial/ │ │ │ │ ├── fsp_axial_tracer_impl.cc │ │ │ │ └── fsp_axial_tracer_impl.h │ │ │ ├── base/ │ │ │ │ ├── fsp_snapshot.h │ │ │ │ └── fsp_tracer_impl.h │ │ │ ├── fsp_config.h │ │ │ ├── fsp_tracer.cc │ │ │ └── fsp_tracer.h │ │ ├── long_task_timing/ │ │ │ ├── BUILD.gn │ │ │ ├── android/ │ │ │ │ └── long_task_monitor_android.cc │ │ │ ├── long_batched_tasks_monitor.cc │ │ │ ├── long_batched_tasks_monitor.h │ │ │ ├── long_task_monitor.cc │ │ │ ├── long_task_monitor.h │ │ │ └── long_task_timing.h │ │ ├── performance/ │ │ │ ├── BUILD.gn │ │ │ ├── android/ │ │ │ │ ├── performance_controller_android.cc │ │ │ │ └── performance_controller_android.h │ │ │ ├── darwin/ │ │ │ │ ├── performance_controller_darwin.h │ │ │ │ └── performance_controller_darwin.mm │ │ │ ├── fsp_tracing/ │ │ │ │ ├── fsp_snapshot.cc │ │ │ │ ├── fsp_snapshot.h │ │ │ │ ├── fsp_tracer.cc │ │ │ │ └── fsp_tracer.h │ │ │ ├── harmony/ │ │ │ │ ├── performance_controller_harmony.cc │ │ │ │ └── performance_controller_harmony.h │ │ │ ├── js_blocking_monitor/ │ │ │ │ ├── js_blocking_monitor.cc │ │ │ │ ├── js_blocking_monitor.h │ │ │ │ └── js_blocking_trace_event_def.h │ │ │ ├── memory_monitor/ │ │ │ │ ├── memory_monitor.cc │ │ │ │ ├── memory_monitor.h │ │ │ │ ├── memory_record.cc │ │ │ │ └── memory_record.h │ │ │ ├── performance_controller.cc │ │ │ ├── performance_controller.h │ │ │ ├── performance_event_sender.h │ │ │ ├── performance_mediator.cc │ │ │ └── performance_mediator.h │ │ ├── recorder/ │ │ │ ├── BUILD.gn │ │ │ ├── ios/ │ │ │ │ ├── template_assembler_recorder_darwin.h │ │ │ │ └── template_assembler_recorder_darwin.mm │ │ │ ├── lynxview_init_recorder.cc │ │ │ ├── lynxview_init_recorder.h │ │ │ ├── native_module_recorder.cc │ │ │ ├── native_module_recorder.h │ │ │ ├── recorder_constants.h │ │ │ ├── recorder_controller.cc │ │ │ ├── recorder_controller.h │ │ │ ├── template_assembler_recorder.cc │ │ │ ├── template_assembler_recorder.h │ │ │ ├── template_assembler_recorder_unittest.cc │ │ │ ├── testbench_base_recorder.cc │ │ │ ├── testbench_base_recorder.h │ │ │ └── testbench_base_recorder_unittest.cc │ │ ├── replay/ │ │ │ ├── BUILD.gn │ │ │ ├── layout_tree_testbench.cc │ │ │ ├── layout_tree_testbench.h │ │ │ ├── layout_tree_testbench_unittest.cc │ │ │ ├── lynx_callback_testbench.cc │ │ │ ├── lynx_callback_testbench.h │ │ │ ├── lynx_module_binding_testbench.cc │ │ │ ├── lynx_module_binding_testbench.h │ │ │ ├── lynx_module_manager_testbench.cc │ │ │ ├── lynx_module_manager_testbench.h │ │ │ ├── lynx_module_testbench.cc │ │ │ ├── lynx_module_testbench.h │ │ │ ├── lynx_module_testbench_unittest.cc │ │ │ ├── lynx_replay_helper.cc │ │ │ ├── lynx_replay_helper.h │ │ │ ├── lynx_replay_helper_unittest.cc │ │ │ ├── replay_controller.cc │ │ │ ├── replay_controller.h │ │ │ ├── testbench_test_replay.cc │ │ │ ├── testbench_test_replay.h │ │ │ ├── testbench_utils_embedder.cc │ │ │ └── testbench_utils_embedder.h │ │ ├── ssr/ │ │ │ ├── BUILD.gn │ │ │ ├── client/ │ │ │ │ ├── ssr_client_utils.cc │ │ │ │ ├── ssr_client_utils.h │ │ │ │ ├── ssr_data_update_manager.cc │ │ │ │ ├── ssr_data_update_manager.h │ │ │ │ ├── ssr_event_utils.cc │ │ │ │ ├── ssr_event_utils.h │ │ │ │ ├── ssr_hydrate_info.h │ │ │ │ └── ssr_style_sheet.h │ │ │ └── ssr_type_info.h │ │ ├── starlight_standalone/ │ │ │ ├── BUILD.gn │ │ │ ├── android/ │ │ │ │ ├── starlight_android.cc │ │ │ │ └── starlight_android.h │ │ │ ├── core/ │ │ │ │ ├── BUILD.gn │ │ │ │ └── src/ │ │ │ │ ├── starlight.cc │ │ │ │ └── starlight_config.cc │ │ │ └── starlight.gni │ │ ├── timing_handler/ │ │ │ ├── BUILD.gn │ │ │ ├── timing.cc │ │ │ ├── timing.h │ │ │ ├── timing_constants.h │ │ │ ├── timing_constants_deprecated.h │ │ │ ├── timing_handler.cc │ │ │ ├── timing_handler.h │ │ │ ├── timing_handler_delegate.h │ │ │ ├── timing_handler_ng.cc │ │ │ ├── timing_handler_ng.h │ │ │ ├── timing_info.cc │ │ │ ├── timing_info.h │ │ │ ├── timing_info_ng.cc │ │ │ ├── timing_info_ng.h │ │ │ ├── timing_map.cc │ │ │ ├── timing_map.h │ │ │ ├── timing_mediator.cc │ │ │ ├── timing_mediator.h │ │ │ ├── timing_utils.cc │ │ │ └── timing_utils.h │ │ ├── trace/ │ │ │ ├── BUILD.gn │ │ │ └── service_trace_event_def.h │ │ └── watch_dog/ │ │ ├── BUILD.gn │ │ └── watch_dog.h │ ├── shared_data/ │ │ ├── BUILD.gn │ │ ├── lynx_white_board.cc │ │ ├── lynx_white_board.h │ │ ├── lynx_white_board_unittest.cc │ │ ├── shared_data_trace_event_def.h │ │ ├── white_board_delegate.cc │ │ ├── white_board_delegate.h │ │ ├── white_board_inspector.h │ │ ├── white_board_runtime_delegate.cc │ │ ├── white_board_runtime_delegate.h │ │ ├── white_board_tasm_delegate.cc │ │ └── white_board_tasm_delegate.h │ ├── shell/ │ │ ├── BUILD.gn │ │ ├── README.md │ │ ├── android/ │ │ │ ├── js_proxy_android.cc │ │ │ ├── js_proxy_android.h │ │ │ ├── list_container_proxy_android.cc │ │ │ ├── lynx_engine_proxy_android.cc │ │ │ ├── lynx_engine_proxy_android.h │ │ │ ├── lynx_engine_wrapper_android.cc │ │ │ ├── lynx_engine_wrapper_android.h │ │ │ ├── lynx_layout_proxy_android.cc │ │ │ ├── lynx_layout_proxy_android.h │ │ │ ├── lynx_runtime_wrapper_android.cc │ │ │ ├── lynx_runtime_wrapper_android.h │ │ │ ├── lynx_template_render_android.cc │ │ │ ├── native_facade_android.cc │ │ │ ├── native_facade_android.h │ │ │ ├── platform_call_back_android.cc │ │ │ ├── platform_call_back_android.h │ │ │ ├── runtime_lifecycle_listener_delegate_android.cc │ │ │ ├── runtime_lifecycle_listener_delegate_android.h │ │ │ ├── tasm_platform_invoker_android.cc │ │ │ └── tasm_platform_invoker_android.h │ │ ├── bts_runtime_mediator_unittest.cc │ │ ├── common/ │ │ │ ├── platform_call_back.cc │ │ │ ├── platform_call_back.h │ │ │ ├── platform_call_back_manager.cc │ │ │ ├── platform_call_back_manager.h │ │ │ ├── platform_call_back_manager_unittest.cc │ │ │ └── shell_trace_event_def.h │ │ ├── dynamic_ui_operation_queue.cc │ │ ├── dynamic_ui_operation_queue.h │ │ ├── dynamic_ui_operation_queue_unittest.cc │ │ ├── engine_thread_switch.cc │ │ ├── engine_thread_switch.h │ │ ├── engine_thread_switch_unittest.cc │ │ ├── harmony/ │ │ │ ├── embedder_platform_harmony.cc │ │ │ ├── embedder_platform_harmony.h │ │ │ ├── native_facade_harmony.cc │ │ │ ├── native_facade_harmony.h │ │ │ ├── tasm_platform_invoker_harmony.cc │ │ │ └── tasm_platform_invoker_harmony.h │ │ ├── ios/ │ │ │ ├── data_utils.h │ │ │ ├── data_utils.mm │ │ │ ├── js_proxy_darwin.h │ │ │ ├── js_proxy_darwin.mm │ │ │ ├── lynx_engine_proxy_darwin.h │ │ │ ├── lynx_engine_proxy_darwin.mm │ │ │ ├── lynx_layout_proxy_darwin.h │ │ │ ├── lynx_layout_proxy_darwin.mm │ │ │ ├── lynx_runtime_facade_darwin.h │ │ │ ├── lynx_runtime_facade_darwin.mm │ │ │ ├── native_facade_darwin.h │ │ │ ├── native_facade_darwin.mm │ │ │ ├── runtime_lifecycle_listener_delegate_darwin.h │ │ │ ├── runtime_lifecycle_listener_delegate_darwin.mm │ │ │ ├── tasm_platform_invoker_darwin.h │ │ │ └── tasm_platform_invoker_darwin.mm │ │ ├── layout_mediator.cc │ │ ├── layout_mediator.h │ │ ├── layout_result_manager.cc │ │ ├── layout_result_manager.h │ │ ├── layout_result_manager_unittest.cc │ │ ├── list_container_proxy.cc │ │ ├── list_engine_proxy_impl.cc │ │ ├── list_engine_proxy_impl.h │ │ ├── lynx_actor_specialization.h │ │ ├── lynx_card_cache_data_manager.cc │ │ ├── lynx_card_cache_data_manager.h │ │ ├── lynx_card_cache_data_manager_unittest.cc │ │ ├── lynx_card_cache_data_op.h │ │ ├── lynx_engine.cc │ │ ├── lynx_engine.h │ │ ├── lynx_engine_proxy_impl.cc │ │ ├── lynx_engine_proxy_impl.h │ │ ├── lynx_engine_proxy_impl_unittest.cc │ │ ├── lynx_engine_wrapper.cc │ │ ├── lynx_engine_wrapper.h │ │ ├── lynx_layout_proxy_impl.cc │ │ ├── lynx_layout_proxy_impl.h │ │ ├── lynx_shell.cc │ │ ├── lynx_shell.h │ │ ├── lynx_shell_builder.cc │ │ ├── lynx_shell_builder.h │ │ ├── lynx_shell_builder_unitest.cc │ │ ├── lynx_shell_unittest.cc │ │ ├── lynx_ui_operation_async_queue.cc │ │ ├── lynx_ui_operation_async_queue.h │ │ ├── lynx_ui_operation_async_queue_unittest.cc │ │ ├── lynx_ui_operation_queue.cc │ │ ├── lynx_ui_operation_queue.h │ │ ├── lynx_ui_operation_queue_unittest.cc │ │ ├── native_facade.h │ │ ├── native_facade_empty_implementation.h │ │ ├── perf_controller_proxy_impl.cc │ │ ├── perf_controller_proxy_impl.h │ │ ├── runtime/ │ │ │ ├── bts/ │ │ │ │ ├── bts_runtime.cc │ │ │ │ ├── bts_runtime.h │ │ │ │ ├── bts_runtime_mediator.cc │ │ │ │ ├── bts_runtime_mediator.h │ │ │ │ ├── bts_runtime_standalone_helper.cc │ │ │ │ ├── bts_runtime_standalone_helper.h │ │ │ │ ├── lynx_bts_runtime_proxy_impl.cc │ │ │ │ └── lynx_bts_runtime_proxy_impl.h │ │ │ ├── common/ │ │ │ │ ├── module_delegate_impl.cc │ │ │ │ ├── module_delegate_impl.h │ │ │ │ └── module_delegate_mock.cc │ │ │ └── mts/ │ │ │ ├── mts_runtime.cc │ │ │ └── mts_runtime.h │ │ ├── tasm_mediator.cc │ │ ├── tasm_mediator.h │ │ ├── tasm_operation_queue.cc │ │ ├── tasm_operation_queue.h │ │ ├── tasm_operation_queue_async.cc │ │ ├── tasm_operation_queue_async.h │ │ ├── tasm_operation_queue_async_unittest.cc │ │ ├── tasm_operation_queue_unittest.cc │ │ ├── tasm_platform_invoker.h │ │ ├── testing/ │ │ │ ├── BUILD.gn │ │ │ ├── mock_layout_delegate.h │ │ │ ├── mock_layout_platform.h │ │ │ ├── mock_native_facade.cc │ │ │ ├── mock_native_facade.h │ │ │ ├── mock_runner_manufactor.cc │ │ │ ├── mock_runner_manufactor.h │ │ │ ├── mock_tasm_delegate.cc │ │ │ └── mock_tasm_delegate.h │ │ ├── update_mode.h │ │ ├── vsync_observer_impl.cc │ │ └── vsync_observer_impl.h │ ├── style/ │ │ ├── BUILD.gn │ │ ├── animation_data.cc │ │ ├── animation_data.h │ │ ├── background_data.cc │ │ ├── background_data.h │ │ ├── color.h │ │ ├── content_data.h │ │ ├── default_computed_style.h │ │ ├── filter_data.cc │ │ ├── filter_data.h │ │ ├── layout_animation_data.cc │ │ ├── layout_animation_data.h │ │ ├── outline_data.cc │ │ ├── outline_data.h │ │ ├── perspective_data.cc │ │ ├── perspective_data.h │ │ ├── shadow_data.cc │ │ ├── shadow_data.h │ │ ├── style.gni │ │ ├── timing_function_data.cc │ │ ├── timing_function_data.h │ │ ├── transform/ │ │ │ ├── decomposed_transform.cc │ │ │ ├── decomposed_transform.h │ │ │ ├── matrix44.cc │ │ │ ├── matrix44.h │ │ │ ├── quaternion.cc │ │ │ ├── quaternion.h │ │ │ └── quaternion_unittest.cc │ │ ├── transform_origin_data.cc │ │ ├── transform_origin_data.h │ │ ├── transform_raw_data.cc │ │ ├── transform_raw_data.h │ │ ├── transition_data.cc │ │ └── transition_data.h │ ├── template_bundle/ │ │ ├── BUILD.gn │ │ ├── lynx_template_bundle.cc │ │ ├── lynx_template_bundle.h │ │ ├── lynx_template_bundle_converter.cc │ │ ├── lynx_template_bundle_converter.h │ │ └── template_codec/ │ │ ├── BUILD.gn │ │ ├── binary_decoder/ │ │ │ ├── BUILD.gn │ │ │ ├── binary_decoder_trace_event_def.h │ │ │ ├── element_binary_reader.cc │ │ │ ├── element_binary_reader.h │ │ │ ├── lynx_binary_base_css_reader.cc │ │ │ ├── lynx_binary_base_css_reader.h │ │ │ ├── lynx_binary_base_template_reader.cc │ │ │ ├── lynx_binary_base_template_reader.h │ │ │ ├── lynx_binary_config_decoder.cc │ │ │ ├── lynx_binary_config_decoder.h │ │ │ ├── lynx_binary_config_decoder_unittest.cc │ │ │ ├── lynx_binary_config_decoder_unittest.h │ │ │ ├── lynx_binary_config_helper.cc │ │ │ ├── lynx_binary_config_helper.h │ │ │ ├── lynx_binary_lazy_reader_delegate.h │ │ │ ├── lynx_binary_reader.cc │ │ │ ├── lynx_binary_reader.h │ │ │ ├── lynx_config.yml │ │ │ ├── lynx_config_cc.tmpl │ │ │ ├── lynx_config_constant.tmpl │ │ │ ├── lynx_config_decoder.h │ │ │ ├── lynx_config_decoder.tmpl │ │ │ ├── lynx_config_header.tmpl │ │ │ ├── page_config.cc │ │ │ ├── page_config.h │ │ │ ├── parallel_parse_task_scheduler.cc │ │ │ ├── parallel_parse_task_scheduler.h │ │ │ ├── template_binary_reader.cc │ │ │ └── template_binary_reader.h │ │ ├── binary_encoder/ │ │ │ ├── BUILD.gn │ │ │ ├── csr_element_binary_writer.cc │ │ │ ├── csr_element_binary_writer.h │ │ │ ├── css_encoder/ │ │ │ │ ├── BUILD.gn │ │ │ │ ├── css_font_face_token.cc │ │ │ │ ├── css_font_face_token.h │ │ │ │ ├── css_font_face_token_unittest.cc │ │ │ │ ├── css_keyframes_token.cc │ │ │ │ ├── css_keyframes_token.h │ │ │ │ ├── css_keyframes_token_unittest.cc │ │ │ │ ├── css_parse_token_group.h │ │ │ │ ├── css_parser.cc │ │ │ │ ├── css_parser.h │ │ │ │ ├── css_parser_token.cc │ │ │ │ ├── css_parser_token.h │ │ │ │ ├── css_parser_token_unittest.cc │ │ │ │ ├── css_parser_unittest.cc │ │ │ │ ├── shared_css_fragment.cc │ │ │ │ ├── shared_css_fragment.h │ │ │ │ └── shared_css_fragment_unittest.cc │ │ │ ├── encode_util.cc │ │ │ ├── encode_util.h │ │ │ ├── encoder.cc │ │ │ ├── encoder.h │ │ │ ├── repack_binary_reader.cc │ │ │ ├── repack_binary_reader.h │ │ │ ├── repack_binary_writer.cc │ │ │ ├── repack_binary_writer.h │ │ │ ├── style_object_encoder/ │ │ │ │ ├── BUILD.gn │ │ │ │ ├── style_object_parser.cc │ │ │ │ ├── style_object_parser.h │ │ │ │ └── style_object_parser_unittest.cc │ │ │ ├── template_binary_writer.cc │ │ │ └── template_binary_writer.h │ │ ├── compile_options.h │ │ ├── generator/ │ │ │ ├── BUILD.gn │ │ │ ├── base_struct.h │ │ │ ├── list_parser.cc │ │ │ ├── list_parser.h │ │ │ ├── meta_factory.cc │ │ │ ├── meta_factory.h │ │ │ ├── source_generator.cc │ │ │ ├── source_generator.h │ │ │ ├── template_dynamic_component_parser.cc │ │ │ ├── template_dynamic_component_parser.h │ │ │ ├── template_page_parser.cc │ │ │ ├── template_page_parser.h │ │ │ ├── template_parser.cc │ │ │ ├── template_parser.h │ │ │ ├── template_scope.cc │ │ │ ├── template_scope.h │ │ │ ├── ttml_holder.cc │ │ │ └── ttml_holder.h │ │ ├── header_ext_info.h │ │ ├── lepus_cmd.cc │ │ ├── lepus_cmd.h │ │ ├── magic_number.cc │ │ ├── magic_number.h │ │ ├── moulds.h │ │ ├── template_binary.h │ │ ├── ttml_constant.h │ │ ├── version.h │ │ └── wasm_bind.cc │ └── value_wrapper/ │ ├── BUILD.gn │ ├── android/ │ │ ├── value_impl_android.cc │ │ ├── value_impl_android.h │ │ └── value_impl_android_unittest.cc │ ├── darwin/ │ │ ├── value_impl_darwin.h │ │ ├── value_impl_darwin.mm │ │ └── value_impl_darwin_unittest.mm │ ├── harmony/ │ │ ├── value_impl_napi.cc │ │ └── value_impl_napi.h │ ├── napi/ │ │ ├── napi_util_primjs.cc │ │ ├── napi_util_primjs.h │ │ ├── value_impl_napi_primjs.cc │ │ ├── value_impl_napi_primjs.h │ │ ├── value_impl_napi_primjs_unittest.cc │ │ └── value_impl_opaque_napi_primjs.h │ ├── value_impl_lepus.cc │ ├── value_impl_lepus.h │ ├── value_impl_piper.h │ ├── value_impl_unittest.cc │ ├── value_wrapper_utils.cc │ └── value_wrapper_utils.h ├── dependencies/ │ ├── DEPS │ ├── DEPS.clay │ ├── DEPS.dev │ ├── DEPS.extension │ ├── DEPS.lynxtron │ ├── DEPS.tasm │ └── DEPS.tools_shared ├── devtool/ │ ├── base_devtool/ │ │ ├── android/ │ │ │ └── base_devtool/ │ │ │ ├── .gitignore │ │ │ ├── BUILD.gn │ │ │ ├── CMakeLists.txt │ │ │ ├── base_devtool_android_source.gni │ │ │ ├── build.gradle │ │ │ ├── consumer-rules.pro │ │ │ ├── gradle.properties │ │ │ ├── proguard-rules.pro │ │ │ └── src/ │ │ │ ├── android_test/ │ │ │ │ └── java/ │ │ │ │ └── com/ │ │ │ │ └── lynx/ │ │ │ │ └── basedevtool/ │ │ │ │ ├── LogBoxEnvTest.java │ │ │ │ └── LogBoxManagerTest.java │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── lynx/ │ │ │ │ └── basedevtool/ │ │ │ │ ├── BaseDevToolLoadSoUtils.java │ │ │ │ ├── CalledByNative.java │ │ │ │ ├── DevToolGlobalSlot.java │ │ │ │ ├── DevToolSlot.java │ │ │ │ ├── logbox/ │ │ │ │ │ ├── ILogBoxResourceProvider.java │ │ │ │ │ ├── LogBoxDialog.java │ │ │ │ │ ├── LogBoxDialogBase.java │ │ │ │ │ ├── LogBoxEnv.java │ │ │ │ │ ├── LogBoxLifeCycleListenerFragment.java │ │ │ │ │ ├── LogBoxLogLevel.java │ │ │ │ │ ├── LogBoxManager.java │ │ │ │ │ ├── LogBoxNotification.java │ │ │ │ │ ├── LogBoxOwner.java │ │ │ │ │ └── LogBoxProxy.java │ │ │ │ └── utils/ │ │ │ │ ├── DevToolDownloader.java │ │ │ │ ├── DevToolFileLoadCallback.java │ │ │ │ ├── DevToolFileLoadUtils.java │ │ │ │ ├── DownloadCallback.java │ │ │ │ └── UIThreadUtils.java │ │ │ ├── jni/ │ │ │ │ ├── .gitignore │ │ │ │ ├── BUILD.gn │ │ │ │ └── jni_configs.yml │ │ │ └── res/ │ │ │ ├── drawable/ │ │ │ │ ├── devtool_notification_background.xml │ │ │ │ ├── devtool_notification_close_circle.xml │ │ │ │ └── devtool_notification_log_count_circle.xml │ │ │ ├── layout/ │ │ │ │ └── devtool_logbox_notification.xml │ │ │ └── values/ │ │ │ └── devtool_colors.xml │ │ ├── common/ │ │ │ ├── BUILD.gn │ │ │ ├── devtool_global_slot_common.cc │ │ │ ├── devtool_global_slot_common.h │ │ │ ├── devtool_slot_common.cc │ │ │ └── devtool_slot_common.h │ │ ├── darwin/ │ │ │ ├── common/ │ │ │ │ └── utils/ │ │ │ │ ├── DevToolDownloader.h │ │ │ │ ├── DevToolDownloader.m │ │ │ │ ├── DevToolFileLoadUtils.h │ │ │ │ ├── DevToolFileLoadUtils.mm │ │ │ │ ├── DevToolToast.h │ │ │ │ └── DevToolToast.m │ │ │ └── ios/ │ │ │ ├── .gitignore │ │ │ ├── BUILD.gn │ │ │ ├── DevToolGlobalSlotIOS.h │ │ │ ├── DevToolGlobalSlotIOS.mm │ │ │ ├── DevToolSlotIOS.h │ │ │ ├── DevToolSlotIOS.mm │ │ │ └── logbox/ │ │ │ ├── DevToolLogBox.h │ │ │ ├── DevToolLogBox.mm │ │ │ ├── DevToolLogBoxEnv.h │ │ │ ├── DevToolLogBoxEnv.mm │ │ │ ├── DevToolLogBoxHelper.h │ │ │ ├── DevToolLogBoxManager.h │ │ │ ├── DevToolLogBoxManager.m │ │ │ ├── DevToolLogBoxManagerUnitTest.m │ │ │ ├── DevToolLogBoxNotification.h │ │ │ ├── DevToolLogBoxNotification.m │ │ │ ├── DevToolLogBoxOwner.h │ │ │ ├── DevToolLogBoxOwner.mm │ │ │ ├── DevToolLogBoxProxy.h │ │ │ ├── DevToolLogBoxProxy.mm │ │ │ └── DevToolLogBoxResProvider.h │ │ ├── js_libraries/ │ │ │ ├── logbox/ │ │ │ │ ├── .eslintrc.json │ │ │ │ ├── .gitignore │ │ │ │ ├── .prettierignore │ │ │ │ ├── .prettierrc │ │ │ │ ├── build.py │ │ │ │ ├── package.json │ │ │ │ ├── rsbuild.config.ts │ │ │ │ ├── src/ │ │ │ │ │ ├── api/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── app.tsx │ │ │ │ │ ├── common/ │ │ │ │ │ │ ├── LICENSE.txt │ │ │ │ │ │ └── stackFrame.ts │ │ │ │ │ ├── global.css │ │ │ │ │ ├── jsbridge/ │ │ │ │ │ │ ├── implementations/ │ │ │ │ │ │ │ ├── delay.ts │ │ │ │ │ │ │ ├── immediate.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── interface.ts │ │ │ │ │ ├── models/ │ │ │ │ │ │ ├── errorEffects.ts │ │ │ │ │ │ ├── errorReducer.ts │ │ │ │ │ │ ├── store.ts │ │ │ │ │ │ └── viewsInfo.ts │ │ │ │ │ ├── pages/ │ │ │ │ │ │ ├── content/ │ │ │ │ │ │ │ ├── displayError.less │ │ │ │ │ │ │ ├── displayError.tsx │ │ │ │ │ │ │ └── error-container/ │ │ │ │ │ │ │ ├── LICENSE.txt │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ ├── CodeBlock.jsx │ │ │ │ │ │ │ │ ├── Collapsible.jsx │ │ │ │ │ │ │ │ └── ErrorOverlay.jsx │ │ │ │ │ │ │ ├── containers/ │ │ │ │ │ │ │ │ ├── RuntimeError.jsx │ │ │ │ │ │ │ │ ├── RuntimeErrorContainer.jsx │ │ │ │ │ │ │ │ ├── StackFrame.jsx │ │ │ │ │ │ │ │ ├── StackFrameCodeBlock.jsx │ │ │ │ │ │ │ │ └── StackTrace.jsx │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── styles.ts │ │ │ │ │ │ ├── footer/ │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── header/ │ │ │ │ │ │
Showing preview only (1,070K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (11620 symbols across 2533 files)
FILE: base/include/algorithm.h
function namespace (line 16) | namespace lynx {
FILE: base/include/auto_create_optional.h
function namespace (line 11) | namespace base {
FILE: base/include/auto_reset.h
function namespace (line 19) | namespace lynx {
FILE: base/include/base_trace/trace_event_utils.h
function namespace (line 14) | namespace base {
FILE: base/include/boost/unordered.h
function namespace (line 66) | namespace boost {
function namespace (line 81) | namespace boost {
function namespace (line 101) | namespace boost {
function namespace (line 121) | namespace std {
function namespace (line 362) | namespace boost
function namespace (line 403) | namespace boost {
function namespace (line 443) | namespace boost {
function namespace (line 499) | namespace boost
function namespace (line 596) | namespace boost
function namespace (line 662) | namespace boost {
function namespace (line 800) | namespace boost {
function namespace (line 829) | namespace boost {
function namespace (line 898) | namespace boost{
function namespace (line 938) | namespace boost {
function namespace (line 1074) | namespace boost {
function namespace (line 1245) | namespace boost{
function namespace (line 1435) | namespace boost{
function decltype (line 3219) | auto for_all_elements(const arrays_type& arrays_,F f)
function decltype (line 3226) | auto for_all_elements(const arrays_type& arrays_,F f)
function decltype (line 3241) | auto for_all_elements_while(const arrays_type& arrays_,F f)
function decltype (line 3249) | auto for_all_elements_while(const arrays_type& arrays_,F f)
function pred_base (line 3284) | move(h_)},
function namespace (line 3615) | namespace boost{
function noexcept (line 4065) | erase(iterator pos)noexcept
function BOOST_FORCEINLINE (line 4068) | BOOST_FORCEINLINE
function swap (line 4089) | void swap(table& x)
function element_type (line 4097) | element_type extract(const_iterator pos)
function iterator (line 4122) | iterator find(const Key& x)
function const_iterator (line 4128) | const_iterator find(const Key& x)const
function rollback (line 4189) | struct erase_on_exit
function iterator (line 4201) | static inline iterator make_iterator(const locator& l)noexcept
function namespace (line 4254) | namespace boost {
function namespace (line 4288) | namespace boost
function namespace (line 4326) | namespace boost
function namespace (line 4362) | namespace boost
function namespace (line 4397) | namespace boost
function namespace (line 4430) | namespace boost
function namespace (line 4539) | namespace boost
type hash_integral_impl (line 4603) | struct hash_integral_impl
function fn (line 4622) | size_t fn( T v )
function fn (line 4635) | size_t fn( T v )
function fn (line 4650) | size_t fn( T v )
function namespace (line 4680) | namespace boost
function namespace (line 4695) | namespace container_hash
function namespace (line 4714) | namespace boost
function namespace (line 4773) | namespace boost
function namespace (line 4847) | namespace boost
function namespace (line 5262) | namespace boost
function fn (line 5331) | size_t fn( T v )
function fn (line 5348) | size_t fn( T v )
function fn (line 5365) | size_t fn( T v )
function hash_value (line 5433) | size_t hash_value( std::pair<A, B> const& v )
function hash_value (line 5562) | size_t hash_value( std::unique_ptr<T, Deleter> const& x )
function hash_value (line 5573) | inline std::size_t hash_value( std::type_index const& v )
function hash_value (line 5584) | inline std::size_t hash_value( std::error_code const& v )
function hash_value (line 5594) | inline std::size_t hash_value( std::error_condition const& v )
function hash_value (line 5643) | inline std::size_t hash_value( std::monostate )
function hash_combine (line 5666) | void hash_combine( std::size_t& seed, T const& v )
function hash_range (line 5676) | void hash_range( std::size_t& seed, It first, It last )
function hash_unordered_range (line 5696) | void hash_unordered_range( std::size_t& seed, It first, It last )
type T (line 5729) | typedef T argument_type;
type std (line 5730) | typedef std::size_t result_type;
type std (line 5744) | typedef std::basic_string<E, T, A> argument_type;
type std (line 5745) | typedef std::size_t result_type;
function namespace (line 5757) | namespace unordered
function namespace (line 5781) | namespace boost {
function insert (line 6030) | void insert(std::initializer_list<value_type> ilist)
function iterator (line 6053) | iterator erase(const_iterator first, const_iterator last)
function swap (line 6075) | void swap(unordered_flat_set& rhs) noexcept(
function BOOST_FORCEINLINE (line 6096) | BOOST_FORCEINLINE size_type count(key_type const& key) const
function BOOST_FORCEINLINE (line 6111) | BOOST_FORCEINLINE iterator find(key_type const& key)
function BOOST_FORCEINLINE (line 6139) | BOOST_FORCEINLINE bool contains(key_type const& key) const
function max_load_factor (line 6222) | void max_load_factor(float) {}
function rehash (line 6226) | void rehash(size_type n) { table_.rehash(n); }
function reserve (line 6228) | void reserve(size_type n) { table_.reserve(n); }
function namespace (line 6376) | namespace boost {
function namespace (line 6417) | namespace boost {
function namespace (line 7427) | namespace boost
function namespace (line 7528) | namespace boost {
function namespace (line 7552) | namespace boost {
function namespace (line 7588) | namespace boost {
function iterator (line 7934) | iterator try_emplace(
function iterator (line 7972) | iterator erase(const_iterator first, const_iterator last)
function swap (line 7994) | void swap(unordered_flat_map& rhs) noexcept(
function mapped_type (line 8032) | mapped_type const& at(key_type const& key) const
function BOOST_FORCEINLINE (line 8070) | BOOST_FORCEINLINE mapped_type& operator[](key_type const& key)
function BOOST_FORCEINLINE (line 8075) | BOOST_FORCEINLINE mapped_type& operator[](key_type&& key)
function BOOST_FORCEINLINE (line 8089) | BOOST_FORCEINLINE size_type count(key_type const& key) const
function BOOST_FORCEINLINE (line 8104) | BOOST_FORCEINLINE iterator find(key_type const& key)
function BOOST_FORCEINLINE (line 8132) | BOOST_FORCEINLINE bool contains(key_type const& key) const
function max_load_factor (line 8215) | void max_load_factor(float) {}
function rehash (line 8219) | void rehash(size_type n) { table_.rehash(n); }
function reserve (line 8221) | void reserve(size_type n) { table_.reserve(n); }
function namespace (line 8377) | namespace boost{
function namespace (line 8439) | namespace boost{
function namespace (line 8634) | namespace boost {
function namespace (line 8723) | namespace boost {
function namespace (line 8759) | namespace boost {
function insert (line 9033) | void insert(std::initializer_list<value_type> ilist)
function insert_return_type (line 9038) | insert_return_type insert(node_type&& nh)
function iterator (line 9055) | iterator insert(const_iterator, node_type&& nh)
function iterator (line 9090) | iterator erase(const_iterator first, const_iterator last)
function swap (line 9112) | void swap(unordered_node_set& rhs) noexcept(
function node_type (line 9118) | node_type extract(const_iterator pos)
function node_type (line 9127) | node_type extract(key_type const& key)
function BOOST_FORCEINLINE (line 9161) | BOOST_FORCEINLINE size_type count(key_type const& key) const
function BOOST_FORCEINLINE (line 9176) | BOOST_FORCEINLINE iterator find(key_type const& key)
function BOOST_FORCEINLINE (line 9204) | BOOST_FORCEINLINE bool contains(key_type const& key) const
function max_load_factor (line 9287) | void max_load_factor(float) {}
function rehash (line 9291) | void rehash(size_type n) { table_.rehash(n); }
function reserve (line 9293) | void reserve(size_type n) { table_.reserve(n); }
function namespace (line 9436) | namespace boost {
function namespace (line 9571) | namespace boost {
function namespace (line 9607) | namespace boost {
function iterator (line 9897) | iterator insert(const_iterator, node_type&& nh)
function iterator (line 10011) | iterator try_emplace(
function iterator (line 10049) | iterator erase(const_iterator first, const_iterator last)
function swap (line 10071) | void swap(unordered_node_map& rhs) noexcept(
function node_type (line 10077) | node_type extract(const_iterator pos)
function node_type (line 10086) | node_type extract(key_type const& key)
function mapped_type (line 10137) | mapped_type const& at(key_type const& key) const
function BOOST_FORCEINLINE (line 10175) | BOOST_FORCEINLINE mapped_type& operator[](key_type const& key)
function BOOST_FORCEINLINE (line 10180) | BOOST_FORCEINLINE mapped_type& operator[](key_type&& key)
function BOOST_FORCEINLINE (line 10194) | BOOST_FORCEINLINE size_type count(key_type const& key) const
function BOOST_FORCEINLINE (line 10209) | BOOST_FORCEINLINE iterator find(key_type const& key)
function BOOST_FORCEINLINE (line 10237) | BOOST_FORCEINLINE bool contains(key_type const& key) const
function max_load_factor (line 10320) | void max_load_factor(float) {}
function rehash (line 10324) | void rehash(size_type n) { table_.rehash(n); }
function reserve (line 10326) | void reserve(size_type n) { table_.reserve(n); }
FILE: base/include/bundled_optional.h
function namespace (line 16) | namespace lynx {
type sum_sizeof_aligned_helper (line 58) | struct sum_sizeof_aligned_helper<> {
function sum_sizeof_aligned (line 62) | size_t sum_sizeof_aligned() {
function align_up (line 66) | constexpr uintptr_t align_up(uintptr_t addr, size_t alignment) {
function const (line 146) | constexpr auto GetIndex() {
function typename (line 167) | typename T::Type* GetOrNull() const {
function Clear (line 205) | void Clear() {
type SizeCalculatorFunctor (line 220) | struct SizeCalculatorFunctor {
type CreateFieldLayoutFunctor (line 246) | struct CreateFieldLayoutFunctor {
function else (line 257) | struct MoverAndCreatorFunctor {
function CallOnFieldType (line 296) | void CallOnFieldType(std::size_t index, Func&& func) const {
function destroy_field_impl (line 309) | void destroy_field_impl(void* ptr) {
function swap (line 316) | void swap(BundledOptionals& other) noexcept {
function CreateField (line 321) | void CreateField(std::size_t type_index) {
function ReleaseField (line 346) | void ReleaseField(std::size_t type_index) {
FILE: base/include/bundled_optional_lldb.py
class BundledOptionalsSyntheticProvider (line 8) | class BundledOptionalsSyntheticProvider:
method __init__ (line 13) | def __init__(self, val_obj, internal_dict):
method update (line 17) | def update(self):
method num_children (line 53) | def num_children(self):
method get_child_at_index (line 56) | def get_child_at_index(self, index):
method has_children (line 79) | def has_children(self):
function __lldb_init_module (line 82) | def __lldb_init_module(debugger, internal_dict):
FILE: base/include/cast_util.h
function namespace (line 9) | namespace lynx {
FILE: base/include/closure.h
function namespace (line 19) | namespace lynx {
function namespace (line 125) | namespace fml {
FILE: base/include/concurrent_queue.h
function namespace (line 12) | namespace lynx {
function Iterator (line 103) | Iterator begin() { return Iterator(head_); }
function Iterator (line 105) | Iterator end() { return Iterator(); }
function size (line 113) | size_t size() const {
function reset (line 126) | void reset() { FreeList(); }
function FreeList (line 131) | void FreeList() {
function Push (line 140) | void Push(T data) {
function Push (line 147) | void Push(ConcurrentQueue<T>& other) {
function IterableContainer (line 164) | IterableContainer PopAll() {
function IterableContainer (line 168) | IterableContainer ReversePopAll() {
function Empty (line 172) | bool Empty() { return (head_.load() == nullptr); }
function head_ (line 174) | head_(nullptr) {}
function DestroyUnsafe (line 200) | static void DestroyUnsafe(Node* head) {
FILE: base/include/datauri_utils.h
function namespace (line 16) | namespace lynx {
FILE: base/include/debug/backtrace.h
function namespace (line 20) | namespace lynx {
FILE: base/include/debug/lynx_error.h
function namespace (line 33) | namespace base {
FILE: base/include/expected.h
function namespace (line 77) | namespace lynx {
function impl_ (line 269) | constexpr expected(const expected<U, G>& rhs) noexcept
function impl_ (line 304) | constexpr expected(const ok<U>& o) noexcept
function impl_ (line 322) | constexpr expected(const unexpected<G>& e) noexcept
function explicit (line 340) | explicit expected(std::in_place_t, Args&&... args) noexcept
function explicit (line 344) | explicit expected(std::in_place_t, std::initializer_list<U> il,
function explicit (line 353) | explicit expected(unexpect_t, std::initializer_list<U> il,
function swap (line 399) | constexpr void swap(expected& rhs) noexcept { impl_.swap(rhs.impl_); }
function T (line 403) | constexpr T* operator->() noexcept { return std::addressof(value()); }
function T (line 404) | constexpr const T* operator->() const noexcept {
function E (line 428) | constexpr const E&& error() const&& noexcept { return std::move(error()); }
function explicit (line 655) | explicit expected(const expected<U, G>& rhs) noexcept
function noexcept (line 676) | constexpr /* implicit */ expected(base::ok<T>) noexcept {}
function impl_ (line 679) | constexpr expected(const unexpected<G>& e) noexcept
function explicit (line 696) | constexpr explicit expected(std::in_place_t) noexcept {}
function explicit (line 703) | explicit expected(unexpect_t, std::initializer_list<U> il,
function swap (line 723) | constexpr void swap(expected& rhs) noexcept { impl_.swap(rhs.impl_); }
function value (line 732) | constexpr void value() const { LYNX_BASE_CHECK(has_value()); }
FILE: base/include/expected_internal.h
function namespace (line 22) | namespace lynx {
function invoke_f (line 367) | auto invoke_f = [&]() -> decltype(auto) {
FILE: base/include/file_utils.h
function namespace (line 12) | namespace lynx {
FILE: base/include/flex_optional.h
function namespace (line 14) | namespace lynx {
FILE: base/include/float_comparison.h
function namespace (line 12) | namespace lynx {
FILE: base/include/fml/concurrent_message_loop.h
function namespace (line 23) | namespace lynx {
function namespace (line 92) | namespace fml {
FILE: base/include/fml/cpu_affinity.h
function CpuAffinity (line 22) | enum class CpuAffinity {
FILE: base/include/fml/delayed_task.h
function namespace (line 21) | namespace lynx {
FILE: base/include/fml/hash_combine.h
function namespace (line 10) | namespace lynx {
function namespace (line 39) | namespace fml {
FILE: base/include/fml/make_copyable.h
function namespace (line 16) | namespace lynx {
function namespace (line 69) | namespace fml {
FILE: base/include/fml/memory/ref_counted.h
function namespace (line 19) | namespace lynx {
function namespace (line 170) | namespace fml {
FILE: base/include/fml/memory/ref_counted_internal.h
function namespace (line 17) | namespace lynx {
FILE: base/include/fml/memory/ref_ptr.h
function namespace (line 20) | namespace lynx {
function null (line 274) | nullptr_t null) {
function null (line 284) | nullptr_t null) {
function value_ (line 304) | WeakRefPtr(std::nullptr_t) : value_(nullptr) {}
function explicit (line 305) | explicit WeakRefPtr(T* value) : value_(value) {}
function result_type (line 366) | result_type operator()(const argument_type& ptr) const {
FILE: base/include/fml/memory/ref_ptr_internal.h
function namespace (line 15) | namespace lynx {
FILE: base/include/fml/memory/weak_ptr.h
function namespace (line 19) | namespace lynx {
function namespace (line 248) | namespace fml {
FILE: base/include/fml/memory/weak_ptr_internal.h
function namespace (line 12) | namespace lynx {
FILE: base/include/fml/message_loop.h
function fml (line 48) | const fml::RefPtr<fml::TaskRunner>& GetTaskRunner() const;
FILE: base/include/fml/message_loop_impl.h
function virtual (line 70) | virtual TaskQueueId GetTaskQueueId() const;
FILE: base/include/fml/message_loop_task_queues.h
function namespace (line 31) | namespace fml {
function namespace (line 202) | namespace fml {
FILE: base/include/fml/platform/android/cpu_affinity.h
function namespace (line 13) | namespace lynx {
FILE: base/include/fml/platform/android/message_loop_android.h
function namespace (line 22) | namespace fml {
function Run (line 43) | void Run() override;
FILE: base/include/fml/platform/darwin/cf_utils.h
function namespace (line 15) | namespace lynx {
FILE: base/include/fml/platform/darwin/message_loop_darwin.h
function Run (line 43) | void Run() override;
FILE: base/include/fml/platform/harmony/message_loop_harmony.h
function Run (line 29) | void Run() override;
FILE: base/include/fml/platform/linux/message_loop_linux.h
function Run (line 31) | void Run() override;
FILE: base/include/fml/platform/linux/timerfd.h
type itimerspec (line 40) | struct itimerspec
type itimerspec (line 41) | struct itimerspec
function namespace (line 45) | namespace lynx {
function namespace (line 59) | namespace fml {
FILE: base/include/fml/platform/thread_config_setter.h
function namespace (line 11) | namespace lynx {
FILE: base/include/fml/platform/win/message_loop_win.h
function namespace (line 20) | namespace fml {
function Run (line 38) | void Run() override;
FILE: base/include/fml/platform/win/task_runner_win32.h
function namespace (line 20) | namespace lynx {
FILE: base/include/fml/platform/win/task_runner_win32_window.h
function namespace (line 18) | namespace lynx {
FILE: base/include/fml/raster_thread_merger.h
type class (line 24) | enum class
function fml (line 50) | const fml::RefPtr<SharedThreadMerger>& GetSharedRasterThreadMerger() const;
FILE: base/include/fml/shared_thread_merger.h
function IsMergedUnSafe (line 48) | bool IsMergedUnSafe() const;
FILE: base/include/fml/synchronization/atomic_object.h
function namespace (line 10) | namespace lynx {
FILE: base/include/fml/synchronization/count_down_latch.h
function namespace (line 17) | namespace lynx {
function namespace (line 40) | namespace fml {
FILE: base/include/fml/synchronization/semaphore.h
function namespace (line 13) | namespace lynx {
function namespace (line 90) | namespace fml {
FILE: base/include/fml/synchronization/shared_mutex.h
function namespace (line 10) | namespace lynx {
function namespace (line 54) | namespace fml {
FILE: base/include/fml/synchronization/shared_mutex_posix.h
function namespace (line 12) | namespace lynx {
FILE: base/include/fml/synchronization/shared_mutex_std.h
function namespace (line 12) | namespace lynx {
FILE: base/include/fml/synchronization/sync_switch.h
function namespace (line 15) | namespace lynx {
function namespace (line 67) | namespace fml {
FILE: base/include/fml/synchronization/waitable_event.h
function namespace (line 23) | namespace lynx {
function namespace (line 133) | namespace fml {
FILE: base/include/fml/task_queue_id.h
function namespace (line 13) | namespace lynx {
function namespace (line 43) | namespace fml {
function namespace (line 47) | namespace std {
FILE: base/include/fml/task_runner.h
function class (line 27) | class BasicTaskRunner {
function fml (line 96) | const fml::RefPtr<MessageLoopImpl>& GetLoop() const;
FILE: base/include/fml/task_runner_delegate.h
function namespace (line 11) | namespace lynx {
FILE: base/include/fml/task_source.h
function namespace (line 19) | namespace lynx {
FILE: base/include/fml/task_source_grade.h
function namespace (line 12) | namespace fml {
FILE: base/include/fml/thread.h
type class (line 31) | enum class
type ThreadConfig (line 46) | struct ThreadConfig {
function fml (line 78) | const fml::RefPtr<fml::TaskRunner>& GetTaskRunner() const;
FILE: base/include/fml/thread_host.h
function namespace (line 18) | namespace lynx {
FILE: base/include/fml/time/chrono_timestamp_provider.h
function namespace (line 15) | namespace lynx {
function namespace (line 44) | namespace fml {
FILE: base/include/fml/time/time_delta.h
function namespace (line 17) | namespace lynx {
function namespace (line 124) | namespace fml {
FILE: base/include/fml/time/time_point.h
function namespace (line 18) | namespace lynx {
function namespace (line 87) | namespace fml {
FILE: base/include/fml/time/timer.h
function namespace (line 16) | namespace lynx {
function namespace (line 86) | namespace fml {
FILE: base/include/fml/time/timestamp_provider.h
function namespace (line 15) | namespace lynx {
function namespace (line 31) | namespace fml {
FILE: base/include/fml/unique_fd.h
function namespace (line 29) | namespace lynx {
function namespace (line 117) | namespace fml {
FILE: base/include/fml/unique_object.h
function namespace (line 16) | namespace lynx {
function namespace (line 141) | namespace fml {
FILE: base/include/fml/wakeable.h
function namespace (line 13) | namespace lynx {
function namespace (line 28) | namespace fml {
FILE: base/include/geometry/point.h
function namespace (line 7) | namespace lynx {
FILE: base/include/geometry/rect.h
function namespace (line 13) | namespace lynx {
FILE: base/include/geometry/size.h
function namespace (line 7) | namespace lynx {
FILE: base/include/hybrid_map.h
function namespace (line 29) | namespace lynx {
type KeyExtractor (line 70) | struct KeyExtractor {
type DefaultTransferPolicy (line 88) | struct DefaultTransferPolicy {
function reference (line 140) | reference operator*() const {
function pointer (line 144) | pointer operator->() const {
function clear (line 355) | void clear() {
function reserve (line 365) | void reserve(size_t count) {
function for_each (line 694) | const T&>>>
FILE: base/include/linked_hash_map.h
function namespace (line 18) | namespace lynx {
function iterator (line 370) | iterator find(const Key& key) {
function const_iterator (line 374) | const_iterator find(const Key& key) const noexcept {
function size_type (line 379) | size_type erase(const Key& key) {
function iterator (line 399) | iterator erase(iterator pos) { return erase(const_iterator(pos)); }
function iterator (line 401) | iterator erase(const_iterator pos) {
function for_each (line 422) | const T&>>>
function merge (line 459) | void merge(const LinkedHashMap& other) {
function const_iterator (line 472) | const_iterator end() const noexcept { return const_iterator(end_as_link(...
function iterator (line 476) | iterator end() noexcept { return iterator(end_as_link()); }
function reference (line 480) | reference front() noexcept { return end_.next->value; }
function reference (line 484) | reference back() noexcept { return end_.prev->value; }
function contains (line 496) | bool contains(const Key& key) const {
function count (line 501) | size_t count(const Key& key) const { return contains(key) ? 1 : 0; }
function reserve (line 650) | void reserve(size_type count) {
function set_pool_capacity (line 677) | void set_pool_capacity(size_type count) {
function class (line 693) | class Testing {
function assume_status (line 706) | static bool assume_status(const LinkedHashMap& map, bool has_map,
function assume_end_in_initial_state (line 712) | static bool assume_end_in_initial_state(const LinkedHashMap& map) {
function check_consistency (line 717) | static bool check_consistency(const LinkedHashMap& map) {
function Node (line 782) | Node* pool_{nullptr};
FILE: base/include/linked_hash_map_lldb.py
class linked_hash_map_entry (line 10) | class linked_hash_map_entry:
method __init__ (line 12) | def __init__(self, entry):
method _next_impl (line 15) | def _next_impl(self):
method _prev_impl (line 18) | def _prev_impl(self):
method _value_impl (line 21) | def _value_impl(self):
method _isnull_impl (line 24) | def _isnull_impl(self):
method _sbvalue_impl (line 27) | def _sbvalue_impl(self):
class linked_hash_map_iterator (line 36) | class linked_hash_map_iterator:
method increment_node (line 38) | def increment_node(self, node):
method __init__ (line 43) | def __init__(self, node):
method value (line 46) | def value(self):
method next (line 49) | def next(self):
method advance (line 57) | def advance(self, N):
class linked_hash_map_SynthProvider (line 70) | class linked_hash_map_SynthProvider:
method __init__ (line 72) | def __init__(self, valobj, dict):
method next_node (line 77) | def next_node(self, node):
method value (line 80) | def value(self, node):
method num_children (line 83) | def num_children(self):
method get_child_index (line 86) | def get_child_index(self, name):
method get_child_at_index (line 92) | def get_child_at_index(self, index):
method update (line 107) | def update(self):
method has_children (line 113) | def has_children(self):
function __lldb_init_module (line 117) | def __lldb_init_module(debugger, dict):
FILE: base/include/log/alog_wrapper.h
function namespace (line 8) | namespace lynx {
FILE: base/include/log/log_stream.h
function namespace (line 19) | namespace lynx {
FILE: base/include/log/logging.h
function namespace (line 16) | namespace lynx {
FILE: base/include/log/logging_base.h
function namespace (line 13) | namespace lynx {
FILE: base/include/log/logging_darwin.h
function namespace (line 10) | namespace lynx {
FILE: base/include/lru_cache.h
function namespace (line 14) | namespace lynx {
FILE: base/include/lynx_actor.h
function namespace (line 14) | namespace lynx {
function T (line 133) | T* Impl() { return impl_.get(); }
function CanRunNow (line 135) | bool CanRunNow() { return runner_->RunsTasksOnCurrentThread(); }
function GetInstanceId (line 137) | int32_t GetInstanceId() { return instance_id_; }
FILE: base/include/md5.h
function namespace (line 24) | namespace lynx {
FILE: base/include/memory/memory_pressure_level.h
function namespace (line 11) | namespace base {
FILE: base/include/no_destructor.h
function namespace (line 11) | namespace lynx {
function namespace (line 71) | namespace fml {
FILE: base/include/path_utils.h
function namespace (line 12) | namespace lynx {
FILE: base/include/platform/android/java_type.h
function namespace (line 12) | namespace lynx {
FILE: base/include/platform/android/jni_convert_helper.h
function namespace (line 21) | namespace lynx {
FILE: base/include/platform/android/jni_utils.h
function namespace (line 16) | namespace lynx {
function namespace (line 58) | namespace fml {
FILE: base/include/platform/android/scoped_java_ref.h
function namespace (line 19) | namespace base {
function namespace (line 266) | namespace fml {
FILE: base/include/platform/darwin/type_utils.h
function namespace (line 12) | namespace lynx {
FILE: base/include/platform/harmony/harmony_vsync_manager.h
type OH_NativeVSync (line 15) | struct OH_NativeVSync
function namespace (line 16) | namespace lynx {
FILE: base/include/platform/harmony/napi_util.h
function namespace (line 20) | namespace lynx {
FILE: base/include/position.h
function namespace (line 10) | namespace lynx {
FILE: base/include/shared_vector.h
function namespace (line 10) | namespace lynx {
FILE: base/include/sorted_for_each.h
function namespace (line 15) | namespace lynx::base {
FILE: base/include/string/string_conversion_win.h
function namespace (line 11) | namespace lynx {
FILE: base/include/string/string_number_convert.h
function namespace (line 11) | namespace lynx {
FILE: base/include/string/string_utils.h
function namespace (line 24) | namespace lynx {
function string (line 125) | string AppendString(const Args&... args) {
function std (line 156) | inline std::string_view TruncateToStringView(const std::string& input,
function IsInUtf16BMP (line 185) | inline bool IsInUtf16BMP(char16_t c) { return (c & 0xF800) != 0xD800; }
function IsLeadingSurrogate (line 187) | inline bool IsLeadingSurrogate(char16_t c) { return c >= 0xD800 && c < 0...
function IsTrailingSurrogate (line 189) | inline bool IsTrailingSurrogate(char16_t c) {
function IsUtf8Start (line 193) | inline bool IsUtf8Start(char c) {
function StringEqual (line 209) | inline bool StringEqual(const char* a, const char* b) {
function IsASCII (line 222) | constexpr bool IsASCII(UChar c) { return !(c & ~0x7F); }
function IsASCIINumber (line 224) | constexpr bool IsASCIINumber(UChar c) { return c >= '0' && c <= '9'; }
function IsASCIIHexNumber (line 226) | constexpr bool IsASCIIHexNumber(UChar c) {
function ToASCIIHexValue (line 230) | constexpr int ToASCIIHexValue(UChar c) {
function IsASCIIAlphaCaselessEqual (line 234) | constexpr bool IsASCIIAlphaCaselessEqual(UChar css_character, char chara...
function IsASCIISpace (line 242) | constexpr bool IsASCIISpace(UChar c) {
function IsHTMLSpace (line 247) | bool IsHTMLSpace(CharType character) {
function IsSpaceOrNewline (line 253) | constexpr bool IsSpaceOrNewline(UChar c) {
function InlineUTF8SequenceLengthNonASCII (line 257) | inline size_t InlineUTF8SequenceLengthNonASCII(char b0) {
function InlineUTF8SequenceLength (line 265) | inline size_t InlineUTF8SequenceLength(char b0) {
function InlineUTF8SequenceLength (line 269) | inline size_t InlineUTF8SequenceLength(const char* utf8, size_t c_length,
function UTF8IndexToCIndex (line 280) | inline size_t UTF8IndexToCIndex(const char* utf8, size_t c_length,
function Utf8IndexToCIndexForUtf16 (line 291) | inline size_t Utf8IndexToCIndexForUtf16(const char* utf8, size_t c_length,
function CIndexToUTF8Index (line 308) | inline size_t CIndexToUTF8Index(const char* utf8, size_t c_length,
function SizeOfUtf8 (line 319) | inline size_t SizeOfUtf8(const char* utf8, size_t c_length) {
function SizeOfUtf16 (line 329) | inline size_t SizeOfUtf16(const std::string& src_u8) {
FILE: base/include/thread/base_semaphore.h
function namespace (line 11) | namespace lynx {
FILE: base/include/thread/pthread_rw_lock_guard.h
function namespace (line 12) | namespace lynx {
FILE: base/include/thread/timed_task.h
function namespace (line 16) | namespace lynx {
FILE: base/include/timer/time_utils.h
function namespace (line 14) | namespace lynx {
FILE: base/include/to_underlying.h
function namespace (line 10) | namespace lynx::base {
FILE: base/include/type_traits_addon.h
function namespace (line 13) | namespace lynx {
function TypeOfPlainBytes (line 145) | alignas(T) TypeOfPlainBytes {
function namespace (line 168) | namespace std {
FILE: base/include/value/array.h
function namespace (line 17) | namespace lynx {
FILE: base/include/value/base_string.h
function namespace (line 23) | namespace lynx {
function std (line 224) | const std::string& str() const { return UntagImpl(ref_impl_)->str(); }
function IsEqual (line 236) | bool IsEqual(const char* other) const { return str() == other; }
function IsEqual (line 237) | bool IsEqual(const std::string& other) const { return str() == other; }
function IsEqual (line 238) | bool IsEqual(const String& other) const { return str() == other.str(); }
function operator (line 245) | bool operator==(const String& other) const {
type equal_when_hash_equal (line 254) | struct equal_when_hash_equal {
function operator (line 261) | bool operator==(const std::string& other) const { return str() == other; }
function operator (line 263) | bool operator!=(const String& other) const {
function operator (line 270) | bool operator!=(const std::string& other) const { return str() != other; }
function operator (line 272) | bool operator<(const String& other) const { return str() < other.str(); }
function operator (line 274) | bool operator<(const std::string& other) const { return str() < other; }
function operator (line 276) | bool operator<=(const String& other) const { return str() <= other.str(); }
function operator (line 278) | bool operator<=(const std::string& other) const { return str() <= other; }
function operator (line 280) | bool operator>(const String& other) const { return str() > other.str(); }
function operator (line 282) | bool operator>(const std::string& other) const { return str() > other; }
function operator (line 284) | bool operator>=(const String& other) const { return str() >= other.str(); }
function operator (line 286) | bool operator>=(const std::string& other) const { return str() >= other; }
function class (line 298) | class Unsafe {
type static_string (line 338) | struct static_string
type CreateAsRawRefPointerTag (line 346) | enum CreateAsRawRefPointerTag { kCreateAsRawRefPointerTag }
function ref_impl_ (line 348) | ref_impl_(MakeTaggedImpl(str)) {}
type CreateAsUninitializedTag (line 351) | enum CreateAsUninitializedTag { kCreateAsUninitializedTag }
function String (line 352) | String(CreateAsUninitializedTag) {}
function explicit (line 355) | explicit String(RefCountedStringImpl* str) : ref_impl_(str) {
function swap (line 359) | inline void swap(String& other) noexcept {
function SetEmptyString (line 363) | inline void SetEmptyString() {
function namespace (line 368) | namespace static_string {
type CharArrayPack (line 408) | struct CharArrayPack {
function BASE_HIDE (line 436) | BASE_HIDE Entry {
type GenericCacheKey (line 482) | struct GenericCacheKey {
function class (line 505) | class GenericCache {
function class (line 573) | class StringTable {
function class (line 596) | class StringConvertHelper {
function namespace (line 660) | namespace std {
FILE: base/include/value/base_string_lldb.py
function get_string_summary (line 7) | def get_string_summary(valobj, internal_dict):
function __lldb_init_module (line 34) | def __lldb_init_module(debugger, internal_dict):
FILE: base/include/value/base_value.h
function namespace (line 33) | namespace lynx {
type lynx (line 749) | typedef lynx::lepus::Value lepus_value;
FILE: base/include/value/byte_array.h
function namespace (line 14) | namespace lynx {
FILE: base/include/value/lynx_api_types.h
type lynx_value_ptr__ (line 28) | struct lynx_value_ptr__
type lynx_api_env__ (line 29) | struct lynx_api_env__
type LYNX_VALUE_OPAQUE_STRUCT (line 31) | struct LYNX_VALUE_OPAQUE_STRUCT
type lynx_api_status (line 32) | typedef enum {
type lynx_api_env__ (line 53) | struct lynx_api_env__ {
FILE: base/include/value/lynx_value_lldb.py
class LynxValueType (line 10) | class LynxValueType(IntEnum):
class LynxValueSyntheticProvider (line 29) | class LynxValueSyntheticProvider:
method __init__ (line 30) | def __init__(self, val_obj, internal_dict):
method update (line 33) | def update(self):
method num_children (line 51) | def num_children(self, max_children):
method get_child_at_index (line 54) | def get_child_at_index(self,index):
method has_children (line 97) | def has_children(self):
method get_union_value (line 100) | def get_union_value(self):
function __lldb_init_module (line 113) | def __lldb_init_module(debugger, internal_dict):
FILE: base/include/value/lynx_value_types.h
type LYNX_VALUE_OPAQUE_STRUCT (line 20) | struct LYNX_VALUE_OPAQUE_STRUCT
type lynx_value_null (line 22) | typedef enum : uint8_t {
type lynx_value (line 54) | struct lynx_value {
FILE: base/include/value/path_parser.h
function namespace (line 12) | namespace lynx {
FILE: base/include/value/ref_counted_class.h
function namespace (line 14) | namespace lynx {
FILE: base/include/value/ref_type.h
function namespace (line 11) | namespace lepus {
FILE: base/include/value/table.h
function namespace (line 27) | namespace lynx {
type ValueWrapper (line 172) | struct ValueWrapper {
function SetValueUniqueKey (line 304) | static void SetValueUniqueKey(Dictionary& target, const base::String& key,
function SetValueUniqueKey (line 314) | static void SetValueUniqueKey(Dictionary& target, const base::String& key,
function SetValueUniqueKey (line 324) | static void SetValueUniqueKey(Dictionary& target, base::String&& key,
function SetValueUniqueKey (line 334) | static void SetValueUniqueKey(Dictionary& target, base::String&& key,
function BASE_INLINE (line 344) | static BASE_INLINE Dictionary* RawCreate() { return new Dictionary(); }
function RefType (line 359) | RefType GetRefType() const override { return RefType::kLepusTable; }
function Contains (line 432) | bool Contains(const base::String& key) const {
function reserve (line 443) | void reserve(size_t count) { map_.reserve(count); }
function IsConst (line 471) | bool IsConst() const override { return __padding_chars__[0]; }
FILE: base/include/vector.h
function namespace (line 76) | namespace lynx {
function pop_back (line 750) | void pop_back() {
function reference (line 762) | reference back() { return *(_end_iter() - 1); }
function reference (line 766) | reference front() { return *_begin_iter(); }
function const_reference (line 768) | const_reference operator[](size_t n) const {
function reference (line 773) | reference operator[](size_t n) {
function const_reference (line 778) | const_reference at(size_t n) const {
function reference (line 783) | reference at(size_t n) {
function iterator (line 806) | iterator begin() { return _begin_iter(); }
function iterator (line 812) | iterator end() { return _end_iter(); }
function reverse_iterator (line 818) | reverse_iterator rbegin() { return reverse_iterator(_end_iter()); }
function reverse_iterator (line 828) | reverse_iterator rend() { return reverse_iterator(_begin_iter()); }
function iterator (line 841) | iterator erase(iterator pos) { return erase(pos, pos + 1); }
function iterator (line 843) | iterator erase(const_iterator pos) { return erase((iterator)pos); }
function iterator (line 845) | iterator erase(iterator first, iterator last) {
function BASE_VECTOR_INLINE (line 894) | BASE_VECTOR_INLINE iterator insert(const_iterator pos, const T& value) {
function BASE_VECTOR_INLINE (line 898) | BASE_VECTOR_INLINE iterator insert(const_iterator pos, T&& value) {
function reserve (line 906) | bool reserve(size_t count) {
function clear (line 914) | void clear() {
function clear_and_shrink (line 922) | void clear_and_shrink() {
function shrink_to_fit (line 927) | void shrink_to_fit() {
function swap (line 941) | void swap(Vector& other) {
function reference (line 1078) | reference grow() {
function class (line 1160) | class Unsafe {
function _reallocate (line 1181) | void _reallocate(size_t value) {
function BASE_VECTOR_INLINE (line 1189) | BASE_VECTOR_INLINE void _grow_if_need() {
function _from (line 1201) | void _from(const void* src, size_t size,
function _fill (line 1215) | void _fill(iterator begin, iterator end, const T& v) {
function _fill (line 1221) | void _fill(iterator begin, iterator end) {
function _construct_fill_default (line 1227) | void _construct_fill_default(size_t count) {
function clear_and_shrink (line 1556) | void clear_and_shrink() {
function _init_static (line 1565) | void _init_static() {
function MapStatisticsFindKind (line 1583) | enum class MapStatisticsFindKind {
type MapStatisticsBase (line 1613) | struct MapStatisticsBase
function UpdateMaxCount (line 1614) | void UpdateMaxCount([[maybe_unused]] size_t v) const {}
function Type (line 1664) | Type operator()(BestTypeForOperator v) const {
function else (line 1748) | else if constexpr (hash::ByReinterpret) {
type PointerView (line 1808) | struct PointerView {
function iterator (line 2056) | iterator value_end() { return array().end(); }
function clear (line 2109) | void clear() {
function clear_keep_buffer (line 2113) | void clear_keep_buffer() { array_.clear(); }
function reserve (line 2115) | bool reserve(size_t count) { return array_.reserve(count); }
function reference_type (line 2117) | reference_type front() {
function const_reference_type (line 2125) | const_reference_type front() const {
function reference_type (line 2133) | reference_type back() {
function const_reference_type (line 2142) | const_reference_type back() const {
function range_loop_iterator (line 2151) | range_loop_iterator begin() {
function range_loop_const_iterator (line 2159) | range_loop_const_iterator begin() const {
function range_loop_iterator (line 2169) | range_loop_iterator end() {
function range_loop_const_iterator (line 2180) | range_loop_const_iterator end() const {
function reverse_iterator (line 2189) | reverse_iterator rbegin() { return array().rbegin(); }
function reverse_iterator (line 2195) | reverse_iterator rend() { return array().rend(); }
function class (line 2248) | class Unsafe {
function BASE_VECTOR_INLINE (line 2273) | BASE_VECTOR_INLINE KeyPolicyReducedHashValueType* _key_hash_data() const {
function _erase_key_hash (line 2278) | void _erase_key_hash(size_t index) {
type BinarySearchArray (line 2327) | struct BinarySearchArray
function erase (line 2458) | size_t erase(const K& key) {
function iterator (line 2470) | iterator find(const K& key) {
function const_iterator (line 2480) | const_iterator find(const K& key) const {
function contains (line 2490) | bool contains(const K& key) const { return find(key) != end(); }
function count (line 2492) | size_t count(const K& key) const { return contains(key) ? 1 : 0; }
function get_assign_existing_for_merge (line 2574) | static constexpr bool get_assign_existing_for_merge() {
type LinearSearchArray (line 2584) | struct LinearSearchArray
function erase (line 2956) | size_t erase(const K& key) {
function range_loop_iterator (line 2973) | range_loop_iterator find(const K& key) {
function range_loop_const_iterator (line 2994) | range_loop_const_iterator find(const K& key) const {
function contains (line 3015) | bool contains(const K& key) const {
function count (line 3025) | size_t count(const K& key) const { return contains(key) ? 1 : 0; }
type BinarySearchMap (line 3215) | struct BinarySearchMap
type BinarySearchSet (line 3461) | struct BinarySearchSet
type LinearSearchMap (line 3523) | struct LinearSearchMap
function for_each (line 4032) | const T&>>>
type LinearSearchSet (line 4207) | struct LinearSearchSet
function namespace (line 4384) | namespace std {
FILE: base/include/vector2d.h
function namespace (line 8) | namespace lynx {
FILE: base/include/vector_helper.h
function namespace (line 16) | namespace lynx {
FILE: base/include/vector_lldb.py
function align_up (line 9) | def align_up(addr, alignment):
class linear_map_SynthProvider (line 13) | class linear_map_SynthProvider:
method __init__ (line 15) | def __init__(self, val_obj, dict):
method num_children (line 19) | def num_children(self):
method get_child_at_index (line 22) | def get_child_at_index(self, index):
method num_capacity (line 39) | def num_capacity(self):
method update (line 42) | def update(self):
method has_children (line 65) | def has_children(self):
class vector_SynthProvider (line 68) | class vector_SynthProvider:
method __init__ (line 70) | def __init__(self, val_obj, dict):
method num_children (line 77) | def num_children(self):
method get_child_at_index (line 80) | def get_child_at_index(self, index):
method num_capacity (line 92) | def num_capacity(self):
method update (line 95) | def update(self):
method has_children (line 104) | def has_children(self):
function __lldb_init_module (line 108) | def __lldb_init_module(debugger, dict):
FILE: base/include/version.h
function namespace (line 14) | namespace lynx {
FILE: base/include/version_util.h
function namespace (line 14) | namespace lynx {
FILE: base/platform/android/src/main/java/com/lynx/base/IBaseNativeLibraryLoader.java
type IBaseNativeLibraryLoader (line 6) | public interface IBaseNativeLibraryLoader {
method loadLibrary (line 7) | void loadLibrary(String libName) throws UnsatisfiedLinkError;
FILE: base/platform/android/src/main/java/com/lynx/base/LynxBaseEnv.java
class LynxBaseEnv (line 11) | public class LynxBaseEnv {
method inst (line 15) | public static LynxBaseEnv inst() {
method LynxBaseEnv (line 26) | private LynxBaseEnv() {}
method isNativeLibraryLoaded (line 28) | public boolean isNativeLibraryLoaded() {
method init (line 32) | public boolean init(
method loadNativeTraceLibrary (line 42) | public synchronized boolean loadNativeTraceLibrary(IBaseNativeLibraryL...
FILE: base/platform/android/src/main/java/com/lynx/base/LynxBaseTrace.java
class LynxBaseTrace (line 11) | public class LynxBaseTrace {
method init (line 15) | public static void init() {
method initNativeBaseTrace (line 28) | private static boolean initNativeBaseTrace() {
method nativeInitBaseTrace (line 48) | private static native void nativeInitBaseTrace(long addr);
FILE: base/platform/android/src/main/java/com/lynx/base/log/AbsBaseLogDelegate.java
class AbsBaseLogDelegate (line 8) | public abstract class AbsBaseLogDelegate {
method setMinimumLoggingLevel (line 15) | public void setMinimumLoggingLevel(int level) {
method getMinimumLoggingLevel (line 24) | public int getMinimumLoggingLevel() {
method isLoggable (line 34) | public boolean isLoggable(int level) {
method v (line 45) | public void v(String tag, String msg) {
method d (line 56) | public void d(String tag, String msg) {
method i (line 67) | public void i(String tag, String msg) {
method w (line 78) | public void w(String tag, String msg) {
method e (line 89) | public void e(String tag, String msg) {
method log (line 100) | public void log(int priority, String tag, String msg) {
method println (line 104) | private void println(int priority, String tag, String msg) {
FILE: base/platform/android/src/main/java/com/lynx/base/log/LynxLog.java
class LynxLog (line 16) | public class LynxLog {
method initLynxLog (line 40) | public static void initLynxLog(boolean isPrintLogsToAllChannels) {
method initLynxLogging (line 53) | private static void initLynxLogging(boolean isPrintLogsToAllChannels) {
method setDebugLoggingDelegate (line 59) | public static void setDebugLoggingDelegate(AbsBaseLogDelegate delegate) {
method setMinimumLoggingLevel (line 63) | public static void setMinimumLoggingLevel(int level) {
method getMinimumLoggingLevel (line 86) | public static int getMinimumLoggingLevel() {
method setJSLogsFromExternalChannels (line 94) | public static void setJSLogsFromExternalChannels(boolean isOpen) {
method v (line 98) | public static void v(String tag, String msg) {
method d (line 102) | public static void d(String tag, String msg) {
method i (line 106) | public static void i(String tag, String msg) {
method w (line 110) | public static void w(String tag, String msg) {
method e (line 114) | public static void e(String tag, String msg) {
method logByAndroidUtil (line 118) | private static void logByAndroidUtil(int level, String tag, String msg) {
method logByDebugLoggingDelegate (line 141) | private static void logByDebugLoggingDelegate(int level, String tag, S...
method internalLog (line 164) | public static void internalLog(int level, String tag, String msg) {
method DCHECK (line 190) | public static void DCHECK(boolean condition) {
method DTHROW (line 199) | public static void DTHROW() {
method DTHROW (line 203) | public static void DTHROW(@Nullable RuntimeException e) {
method asyncInitLynxNativeLog (line 214) | private static void asyncInitLynxNativeLog() {
method detectALogDependence (line 231) | private static boolean detectALogDependence() {
method setLogOutputChannel (line 249) | private static void setLogOutputChannel() {
method nativeSetNativeMinLogLevel (line 255) | private static native void nativeSetNativeMinLogLevel(int level);
method nativeInitALogNative (line 256) | private static native void nativeInitALogNative(long addr);
method nativeInternalLog (line 257) | private static native void nativeInternalLog(int level, String tag, St...
method nativeInitLynxLoggingNative (line 258) | private static native void nativeInitLynxLoggingNative(boolean isPrint...
method nativeSetLogOutputByPlatform (line 259) | private static native void nativeSetLogOutputByPlatform();
method log (line 261) | @CalledByNative
method logByte (line 280) | @CalledByNative
FILE: base/platform/android/src/main/java/com/lynx/base/memory/MemoryPressureCallback.java
type MemoryPressureCallback (line 13) | @FunctionalInterface
method onPressure (line 15) | void onPressure(@MemoryPressureLevel int pressure);
FILE: base/platform/harmony/src/cpp/entry.cc
function EXTERN_C_START (line 10) | EXTERN_C_START static napi_value InitLynxBase(napi_env env,
function RegisterEntryModule (line 29) | __attribute__((constructor)) void RegisterEntryModule(void) {
FILE: base/platform/windows/lynx_base_env.cc
type lynx (line 11) | namespace lynx {
type base (line 12) | namespace base {
function trace_backend (line 14) | void trace_backend(const char* category, const char* name,
function initBaseTrace (line 31) | void initBaseTrace() { trace::SetTraceBackend(trace_backend); }
function LynxBaseEnv (line 34) | LynxBaseEnv* LynxBaseEnv::Instance() {
FILE: base/platform/windows/lynx_base_env.h
function namespace (line 8) | namespace lynx {
FILE: base/src/algorithm_unittest.cc
type lynx (line 12) | namespace lynx {
type base (line 13) | namespace base {
function CompareLess (line 15) | static bool CompareLess(int a, int b) { return a < b; }
function CompareGreater (line 16) | static bool CompareGreater(int a, int b) { return a > b; }
function TEST (line 18) | TEST(Algorithm, Sort) {
function TEST (line 35) | TEST(Algorithm, SortCompareGreater) {
FILE: base/src/auto_create_optional_unittest.cc
type lynx (line 14) | namespace lynx {
type base (line 15) | namespace base {
type test (line 16) | namespace test {
type DataStruct (line 18) | struct DataStruct {
function TEST (line 23) | TEST(AutoCreateOptional, BoolShortCircuit) {
function TEST (line 34) | TEST(AutoCreateOptional, CopyConstruct) {
function TEST (line 65) | TEST(AutoCreateOptional, CopyAssign) {
function TEST (line 107) | TEST(AutoCreateOptional, MoveConstruct) {
function TEST (line 132) | TEST(AutoCreateOptional, MoveAssign) {
function TEST (line 169) | TEST(AutoCreateOptional, CreateByArrow) {
function TEST (line 207) | TEST(AutoCreateOptional, CreateByAsterisk) {
FILE: base/src/auto_reset_unittest.cc
type lynx (line 14) | namespace lynx {
type base (line 15) | namespace base {
function TEST (line 17) | TEST(AutoReset, Move) {
FILE: base/src/base_trace/trace_android.cc
type lynxbase (line 12) | namespace lynxbase {
type jni (line 13) | namespace jni {
function RegisterJNIForLynxBaseTrace (line 14) | bool RegisterJNIForLynxBaseTrace(JNIEnv* env) {
type lynx (line 20) | namespace lynx {
type base (line 21) | namespace base {
type trace (line 22) | namespace trace {
function GetDefaultTraceBackend (line 34) | bool GetDefaultTraceBackend() {
function TraceBackend (line 52) | void TraceBackend(const char* category, const char* name,
function InitBaseTrace (line 71) | void InitBaseTrace(JNIEnv* env, jclass jcaller, jlong addr) {
FILE: base/src/base_trace/trace_event_utils.cc
type lynx (line 9) | namespace lynx {
type base (line 10) | namespace base {
type trace (line 11) | namespace trace {
function TraceEventBegin (line 15) | void TraceEventBegin(const char* category, const char* name) {
function TraceEventEnd (line 21) | void TraceEventEnd(const char* category, const char* name) {
function SetTraceBackend (line 28) | void SetTraceBackend(trace_backend_ptr backend) {
FILE: base/src/base_trace/trace_harmony.cc
type lynx (line 13) | namespace lynx {
type base (line 14) | namespace base {
type trace (line 15) | namespace trace {
function napi_value (line 17) | napi_value LynxBaseTrace::Init(napi_env env, napi_value exports) {
function napi_value (line 23) | napi_value LynxBaseTrace::NativeInitLynxBaseTrace(napi_env env,
FILE: base/src/base_trace/trace_harmony.h
function namespace (line 10) | namespace lynx {
FILE: base/src/boost/unordered_unittest.cc
type lynx (line 11) | namespace lynx {
type base (line 12) | namespace base {
type test (line 13) | namespace test {
function TestSet (line 112) | static void TestSet() {
function TestMap1 (line 167) | static void TestMap1() {
function TestMap2 (line 243) | static void TestMap2() {
function TEST (line 323) | TEST(BoostUnordered, Set) {
function TEST (line 328) | TEST(BoostUnordered, Map) {
FILE: base/src/bundled_optional_unittest.cc
type lynx (line 15) | namespace lynx {
type base (line 16) | namespace base {
type test (line 17) | namespace test {
type CountedWrapper (line 20) | struct CountedWrapper {
method CountedWrapper (line 23) | CountedWrapper() { g_instance_count++; }
method CountedWrapper (line 25) | CountedWrapper(const CountedWrapper& other) : value(other.value) {
method CountedWrapper (line 28) | CountedWrapper(CountedWrapper&& other) : value(std::move(other.v...
method CountedWrapper (line 31) | CountedWrapper& operator=(const CountedWrapper& other) = default;
method CountedWrapper (line 32) | CountedWrapper& operator=(CountedWrapper&& other) = default;
type NameField (line 40) | struct NameField {
type SchoolsField (line 44) | struct SchoolsField {
type AgeField (line 48) | struct AgeField {
type HobbyField (line 52) | struct HobbyField {
type Person (line 56) | struct Person {
method Person (line 60) | Person() : id(-1) {}
method Person (line 61) | Person(const Person& other) = default;
method Person (line 62) | Person(Person&& other) : id(other.id), optionals(std::move(other...
method Person (line 65) | Person& operator=(const Person& other) = default;
method Person (line 66) | Person& operator=(Person&& other) {
function AssertInstanceCount (line 77) | static void AssertInstanceCount(int32_t value) {
function TEST (line 81) | TEST(BundledOptional, Empty) {
function TEST (line 128) | TEST(BundledOptional, Construct) {
function TEST (line 221) | TEST(BundledOptional, Assign) {
function TEST (line 318) | TEST(BundledOptional, Release) {
function TEST (line 375) | TEST(BundledOptional, InVector) {
FILE: base/src/closure_unittest.cc
type lynx (line 11) | namespace lynx {
type base (line 12) | namespace base {
class ReleaseCallback (line 16) | class ReleaseCallback {
method ReleaseCallback (line 18) | ReleaseCallback(std::function<void()> func,
method ReleaseCallback (line 27) | ReleaseCallback(const ReleaseCallback&) = delete;
method ReleaseCallback (line 28) | ReleaseCallback& operator=(const ReleaseCallback&) = delete;
method ReleaseCallback (line 30) | ReleaseCallback(ReleaseCallback&& other) {
method ReleaseCallback (line 37) | ReleaseCallback& operator=(ReleaseCallback&& other) {
class ClosureTest (line 55) | class ClosureTest : public ::testing::Test {
method ClosureTest (line 57) | ClosureTest() = default;
method SetUp (line 60) | void SetUp() override {}
method TearDown (line 62) | void TearDown() override {}
function TEST_F (line 65) | TEST_F(ClosureTest, MoveOnlyClosureCheckNull1) {
function TEST_F (line 72) | TEST_F(ClosureTest, MoveOnlyClosureCheckNull2) {
function TEST_F (line 79) | TEST_F(ClosureTest, MoveOnlyClosureCheckNotNull) {
function TEST_F (line 86) | TEST_F(ClosureTest, MoveConstructor) {
function TEST_F (line 106) | TEST_F(ClosureTest, AssignmentOperator) {
function TEST_F (line 131) | TEST_F(ClosureTest, TypedClosureBasicTest) {
function TEST_F (line 148) | TEST_F(ClosureTest, TypedClosureForwardTest) {
FILE: base/src/concurrent_queue_unittest.cc
type lynx (line 14) | namespace lynx {
type base (line 15) | namespace base {
function ToStep (line 18) | static void ToStep(std::atomic<int32_t>& s, int32_t next) {
function Wait (line 25) | static void Wait(std::atomic<int32_t>& s, int32_t next) {
function TestEnqueue (line 32) | static void TestEnqueue(ConcurrentQueue<int32_t>& queue, PopFunction...
function TEST (line 76) | TEST(ConcurrentQueueTest, ConcurrentlyEnqueueVector) {
function TestEnqueueWithReverseDequeue (line 82) | static void TestEnqueueWithReverseDequeue(ConcurrentQueue<int32_t>& ...
function TEST (line 127) | TEST(ConcurrentQueueTest, ConcurrentlyEnqueueVectorWithReverseDequeu...
function TestAppendOrder (line 134) | static void TestAppendOrder(ConcurrentQueue<int32_t>& super_queue,
function TEST (line 156) | TEST(ConcurrentQueueTest, AppendOrderVector) {
function TestAppendEmpty (line 162) | static void TestAppendEmpty(ConcurrentQueue<int32_t>& super_queue,
function TEST (line 186) | TEST(ConcurrentQueueTest, AppendEmptyVector) {
function TestMove (line 192) | static void TestMove(ConcurrentQueue<int32_t>& src_queue, PopFunctio...
function TEST (line 210) | TEST(ConcurrentQueueTest, MoveVector) {
FILE: base/src/datauri_utils.cc
type lynx (line 10) | namespace lynx {
type base (line 11) | namespace base {
FILE: base/src/datauri_utils_unittest.cc
type lynx (line 9) | namespace lynx {
type base (line 10) | namespace base {
function TEST (line 12) | TEST(DataURIUtil, IsDataURI) {
function TEST (line 25) | TEST(DataURIUtil, DecodeBase64) {
function TEST (line 54) | TEST(DataURIUtil, DecodeDataURI) {
FILE: base/src/debug/backtrace.cc
type lynx (line 11) | namespace lynx {
type base (line 12) | namespace base {
type debug (line 13) | namespace debug {
function SetBacktraceDelegate (line 17) | void SetBacktraceDelegate(BacktraceDelegate* delegate) {
function GetBacktraceInfo (line 25) | std::string GetBacktraceInfo(std::string& error_message) {
FILE: base/src/debug/lynx_error.cc
type lynx (line 16) | namespace lynx {
type base (line 18) | namespace base {
function AddBackTrace (line 27) | std::string AddBackTrace(std::string& error_message) {
function StoreError (line 37) | bool StoreError(int32_t error_code, std::string error_msg,
function StoreErrorIfNot (line 44) | bool StoreErrorIfNot(bool expression, int32_t error_code, std::strin...
function ErrorStorage (line 106) | ErrorStorage& ErrorStorage::GetInstance() {
FILE: base/src/debug/lynx_error_unittest.cc
type lynx (line 10) | namespace lynx {
type base (line 11) | namespace base {
function TEST (line 19) | TEST(ErrorStorageTest, GetSetAndRest) {
function TEST (line 51) | TEST(LynxErrorTest, MacroWithString) {
function TEST (line 84) | TEST(LynxErrorTest, MacroWithFormatString) {
function TEST (line 114) | TEST(LynxErrorTest, StoreError) {
function TEST (line 166) | TEST(LynxErrorTest, AddCustomInfoToStoredError) {
function TEST (line 196) | TEST(LynxErrorTest, AddContextInfo) {
function TEST (line 211) | TEST(LynxErrorTest, GetLevelString) {
FILE: base/src/expected_unittest.cc
type lynx (line 15) | namespace lynx {
type base (line 16) | namespace base {
type Strong (line 26) | struct Strong {
method Strong (line 27) | constexpr explicit Strong(T value) : value(std::move(value)) {}
type Weak (line 32) | struct Weak {
method Weak (line 34) | constexpr Weak(T value) : value(std::move(value)) {}
type StrongMoveOnly (line 39) | struct StrongMoveOnly {
method StrongMoveOnly (line 40) | constexpr explicit StrongMoveOnly(T&& value) : value(std::move(val...
method StrongMoveOnly (line 41) | constexpr StrongMoveOnly(StrongMoveOnly&& other)
method StrongMoveOnly (line 44) | constexpr StrongMoveOnly& operator=(StrongMoveOnly&& other) {
type WeakMoveOnly (line 53) | struct WeakMoveOnly {
method WeakMoveOnly (line 55) | constexpr WeakMoveOnly(T&& value) : value(std::move(value)) {}
method WeakMoveOnly (line 56) | constexpr WeakMoveOnly(WeakMoveOnly&& other)
type Error (line 61) | enum class Error {
type CvRef (line 65) | enum class CvRef {
type SaveCvRef (line 73) | struct SaveCvRef {
method SaveCvRef (line 74) | constexpr SaveCvRef() = default;
method SaveCvRef (line 75) | constexpr SaveCvRef(SaveCvRef&) : cvref(CvRef::kRef) {}
method SaveCvRef (line 76) | constexpr SaveCvRef(const SaveCvRef&) : cvref(CvRef::kConstRef) {}
method SaveCvRef (line 77) | constexpr SaveCvRef(SaveCvRef&&) : cvref(CvRef::kRRef) {}
method SaveCvRef (line 78) | constexpr SaveCvRef(const SaveCvRef&&) : cvref(CvRef::kConstRRef) {}
method SaveCvRef (line 80) | constexpr explicit SaveCvRef(CvRef cvref) : cvref(cvref) {}
function TEST (line 85) | TEST(Ok, ValueConstructor) {
function TEST (line 90) | TEST(Ok, DefaultConstructor) {
function TEST (line 95) | TEST(Ok, InPlaceConstructor) {
function TEST (line 100) | TEST(Ok, InPlaceListConstructor) {
function TEST (line 105) | TEST(Ok, ValueIsQualified) {
function TEST (line 115) | TEST(Ok, MemberSwap) {
function TEST (line 124) | TEST(Ok, EqualityOperators) {
function TEST (line 129) | TEST(Ok, FreeSwap) {
function TEST (line 138) | TEST(Unexpected, ValueConstructor) {
function TEST (line 143) | TEST(Unexpected, DefaultConstructor) {
function TEST (line 148) | TEST(Unexpected, InPlaceConstructor) {
function TEST (line 153) | TEST(Unexpected, InPlaceListConstructor) {
function TEST (line 158) | TEST(Unexpected, ErrorIsQualified) {
function TEST (line 168) | TEST(Unexpected, MemberSwap) {
function TEST (line 177) | TEST(Unexpected, EqualityOperators) {
function TEST (line 182) | TEST(Unexpected, FreeSwap) {
function TEST (line 191) | TEST(Expected, Triviality) {
function TEST (line 199) | TEST(Expected, DefaultConstructor) {
function TEST (line 208) | TEST(Expected, CopyConstructor) {
function TEST (line 224) | TEST(Expected, MoveConstructor) {
function TEST (line 240) | TEST(Expected, ExplicitConvertingCopyConstructor) {
function TEST (line 258) | TEST(Expected, ImplicitConvertingCopyConstructor) {
function TEST (line 273) | TEST(Expected, ExplicitConvertingMoveConstructor) {
function TEST (line 293) | TEST(Expected, ImplicitConvertingMoveConstructor) {
function TEST (line 309) | TEST(Expected, ExplicitValueConstructor) {
function TEST (line 326) | TEST(Expected, ImplicitValueConstructor) {
function TEST (line 341) | TEST(Expected, ExplicitOkConstructor) {
function TEST (line 358) | TEST(Expected, ImplicitOkConstructor) {
function TEST (line 373) | TEST(Expected, ExplicitErrorConstructor) {
function TEST (line 390) | TEST(Expected, ImplicitErrorConstructor) {
function TEST (line 405) | TEST(Expected, InPlaceConstructor) {
function TEST (line 411) | TEST(Expected, InPlaceListConstructor) {
function TEST (line 417) | TEST(Expected, UnexpectConstructor) {
function TEST (line 423) | TEST(Expected, UnexpectListConstructor) {
function TEST (line 429) | TEST(Expected, AssignValue) {
function TEST (line 442) | TEST(Expected, CopyAssignOk) {
function TEST (line 455) | TEST(Expected, MoveAssignOk) {
function TEST (line 468) | TEST(Expected, CopyAssignUnexpected) {
function TEST (line 481) | TEST(Expected, MoveAssignUnexpected) {
function TEST (line 494) | TEST(Expected, Emplace) {
function TEST (line 503) | TEST(Expected, EmplaceList) {
function TEST (line 512) | TEST(Expected, MemberSwap) {
function TEST (line 524) | TEST(Expected, FreeSwap) {
function TEST (line 536) | TEST(Expected, OperatorArrow) {
function TEST (line 548) | TEST(Expected, OperatorStar) {
function TEST (line 564) | TEST(Expected, HasValue) {
function TEST (line 572) | TEST(Expected, Value) {
function TEST (line 588) | TEST(Expected, Error) {
function TEST (line 604) | TEST(Expected, ValueOr) {
function TEST (line 622) | TEST(Expected, ErrorOr) {
function TEST (line 640) | TEST(Expected, AndThen) {
function TEST (line 677) | TEST(Expected, OrElse) {
function TEST (line 715) | TEST(Expected, Transform) {
function TEST (line 802) | TEST(Expected, TransformError) {
function TEST (line 844) | TEST(Expected, EqualityOperators) {
function TEST (line 869) | TEST(ExpectedTest, DeathTestsTimeSensitiveTest) {
function TEST (line 901) | TEST(ExpectedVoid, Triviality) {
function TEST (line 909) | TEST(ExpectedVoid, DefaultConstructor) {
function TEST (line 915) | TEST(ExpectedVoid, InPlaceConstructor) {
function TEST (line 920) | TEST(ExpectedVoid, CopyConstructor) {
function TEST (line 927) | TEST(ExpectedVoid, MoveConstructor) {
function TEST (line 934) | TEST(ExpectedVoid, ExplicitConvertingCopyConstructor) {
function TEST (line 942) | TEST(ExpectedVoid, ImplicitConvertingCopyConstructor) {
function TEST (line 949) | TEST(ExpectedVoid, ExplicitConvertingMoveConstructor) {
function TEST (line 958) | TEST(ExpectedVoid, ImplicitConvertingMoveConstructor) {
function TEST (line 965) | TEST(ExpectedVoid, OkConstructor) {
function TEST (line 970) | TEST(ExpectedVoid, ExplicitErrorConstructor) {
function TEST (line 987) | TEST(ExpectedVoid, ImplicitErrorConstructor) {
function TEST (line 1002) | TEST(ExpectedVoid, UnexpectConstructor) {
function TEST (line 1008) | TEST(ExpectedVoid, UnexpectListConstructor) {
function TEST (line 1014) | TEST(ExpectedVoid, CopyAssignUnexpected) {
function TEST (line 1027) | TEST(ExpectedVoid, MoveAssignUnexpected) {
function TEST (line 1040) | TEST(ExpectedVoid, Emplace) {
function TEST (line 1048) | TEST(ExpectedVoid, MemberSwap) {
function TEST (line 1059) | TEST(ExpectedVoid, FreeSwap) {
function TEST (line 1070) | TEST(ExpectedVoid, OperatorStar) {
function TEST (line 1076) | TEST(ExpectedVoid, HasValue) {
function TEST (line 1084) | TEST(ExpectedVoid, Value) {
function TEST (line 1090) | TEST(ExpectedVoid, Error) {
function TEST (line 1106) | TEST(ExpectedVoid, ErrorOr) {
function TEST (line 1124) | TEST(ExpectedVoid, AndThen) {
function TEST (line 1158) | TEST(ExpectedVoid, OrElse) {
function TEST (line 1194) | TEST(ExpectedVoid, Transform) {
function TEST (line 1263) | TEST(ExpectedVoid, TransformError) {
function TEST (line 1302) | TEST(ExpectedVoid, EqualityOperators) {
function TEST (line 1317) | TEST(ExpectedVoidTest, DeathTests) {
FILE: base/src/file_utils.cc
type lynx (line 10) | namespace lynx {
type base (line 11) | namespace base {
FILE: base/src/file_utils_unittest.cc
type lynx (line 42) | namespace lynx {
type base (line 43) | namespace base {
type testing (line 44) | namespace testing {
class FileUtilsTest (line 46) | class FileUtilsTest : public ::testing::Test {
method SetUpTestSuite (line 48) | static void SetUpTestSuite() {
method TearDownTestSuite (line 54) | static void TearDownTestSuite() {
function TEST_F (line 69) | TEST_F(FileUtilsTest, ReadWriteFile) {
function TEST_F (line 82) | TEST_F(FileUtilsTest, ReadWriteEmptyFile) {
function TEST_F (line 96) | TEST_F(FileUtilsTest, WriteFileToExisted) {
function TEST_F (line 110) | TEST_F(FileUtilsTest, WriteToNonExistedDir) {
function TEST_F (line 119) | TEST_F(FileUtilsTest, ReadNonExistedFile) {
function TEST_F (line 127) | TEST_F(FileUtilsTest, ReadFileTooLarge) {
FILE: base/src/flex_optional_unittest.cc
type lynx (line 13) | namespace lynx {
type base (line 14) | namespace base {
type test (line 15) | namespace test {
type s32 (line 17) | struct s32 {
type s32_mem_save (line 24) | struct s32_mem_save {
type s40Convertible (line 34) | struct s40Convertible {
type s40 (line 42) | struct s40 {
method s40 (line 48) | s40(uint64_t a, uint64_t b, uint64_t c, uint64_t d, uint64_t e)
method s40 (line 51) | s40(const s40Convertible& s) : a(s.a) {}
method s40 (line 53) | s40(std::initializer_list<U> list) {
type s40MoveOnly (line 62) | struct s40MoveOnly {
method s40MoveOnly (line 68) | s40MoveOnly(const s40MoveOnly& other) = delete;
method s40MoveOnly (line 69) | s40MoveOnly& operator=(const s40MoveOnly& other) = delete;
function TEST (line 72) | TEST(FlexOptional, ChooseFromType) {
function TEST (line 92) | TEST(FlexOptional, CopyConstructorFromEmpty) {
function TEST (line 98) | TEST(FlexOptional, CopyConstructorFromValue) {
function TEST (line 104) | TEST(FlexOptional, MoveValueConstructor) {
function TEST (line 111) | TEST(FlexOptional, NulloptConstructor) {
function TEST (line 116) | TEST(FlexOptional, InPlaceConstructor) {
function TEST (line 122) | TEST(FlexOptional, InPlaceConstructorWithInitializerList) {
function TEST (line 133) | TEST(FlexOptional, CopyConstructorWithValue) {
function TEST (line 143) | TEST(FlexOptional, CopyConstructorWithoutValue) {
function TEST (line 151) | TEST(FlexOptional, MoveConstructorWithValue) {
function TEST (line 162) | TEST(FlexOptional, MoveConstructorWithoutValue) {
function TEST (line 170) | TEST(FlexOptional, OperatorAssign) {
function TEST (line 191) | TEST(FlexOptional, OperatorAssignConstructable) {
function TEST (line 212) | TEST(FlexOptional, OperatorAssignByValue) {
function TEST (line 229) | TEST(FlexOptional, Emplace) {
function TEST (line 241) | TEST(FlexOptional, EmplaceInitializerList) {
function TEST (line 253) | TEST(FlexOptional, Swap) {
function TEST (line 264) | TEST(FlexOptional, HasValue) {
function TEST (line 273) | TEST(FlexOptional, OperatorStar) {
function TEST (line 284) | TEST(FlexOptional, Value) {
function TEST (line 295) | TEST(FlexOptional, ValueOr) {
function TEST (line 302) | TEST(FlexOptional, Reset) {
function TEST (line 308) | TEST(FlexOptional, TypeInfer) {
FILE: base/src/fml/concurrent_message_loop.cc
type lynx (line 23) | namespace lynx {
type fml (line 24) | namespace fml {
FILE: base/src/fml/cpu_affinity.cc
type lynx (line 21) | namespace lynx {
type fml (line 22) | namespace fml {
function EfficiencyCoreCount (line 24) | std::optional<size_t> EfficiencyCoreCount() {
function RequestAffinity (line 32) | bool RequestAffinity(CpuAffinity affinity) {
function ReadIntFromFile (line 94) | std::optional<int64_t> ReadIntFromFile(const std::string& path) {
FILE: base/src/fml/cpu_affinity_unittests.cc
type lynx (line 11) | namespace lynx {
type fml (line 12) | namespace fml {
type testing (line 13) | namespace testing {
function TEST (line 15) | TEST(CpuAffinity, NonAndroidPlatformDefaults) {
function TEST (line 20) | TEST(CpuAffinity, NormalSlowMedFastCores) {
function TEST (line 37) | TEST(CpuAffinity, NoCpuData) {
function TEST (line 43) | TEST(CpuAffinity, AllSameSpeed) {
function TEST (line 52) | TEST(CpuAffinity, SingleCore) {
function TEST (line 59) | TEST(CpuAffinity, MissingFileParsing) {
FILE: base/src/fml/hash_combine_unittests.cc
type fml (line 8) | namespace fml {
type testing (line 9) | namespace testing {
function TEST (line 11) | TEST(HashCombineTest, CanHash) {
FILE: base/src/fml/memory/ref_counted_unittest.cc
type lynx (line 45) | namespace lynx {
type fml (line 46) | namespace fml {
class MyClass (line 49) | class MyClass : public RefCountedThreadSafe<MyClass> {
method MyClass (line 51) | MyClass(MyClass** created, bool* was_destroyed)
class MySubclass (line 72) | class MySubclass final : public MyClass {
method MySubclass (line 77) | MySubclass(MySubclass** created, bool* was_destroyed)
function TEST (line 88) | TEST(RefCountedTest, Constructors) {
function TEST (line 216) | TEST(RefCountedTest, NullAssignmentToNull) {
function TEST (line 256) | TEST(RefCountedTest, NonNullAssignmentToNull) {
function TEST (line 322) | TEST(RefCountedTest, NullAssignmentToNonNull) {
function TEST (line 376) | TEST(RefCountedTest, NonNullAssignmentToNonNull) {
function TEST (line 445) | TEST(RefCountedTest, SelfAssignment) {
function TEST (line 477) | TEST(RefCountedTest, Swap) {
function TEST (line 498) | TEST(RefCountedTest, GetAndDereferenceOperators) {
function TEST (line 513) | TEST(RefCountedTest, AddRefRelease) {
function TEST (line 526) | TEST(RefCountedTest, Mix) {
class MyPublicClass (line 569) | class MyPublicClass : public RefCountedThreadSafe<MyPublicClass> {
method MyPublicClass (line 572) | MyPublicClass() : has_num_(false), num_(0) {}
method MyPublicClass (line 573) | explicit MyPublicClass(int num) : has_num_(true), num_(num) {}
method has_num (line 577) | bool has_num() const { return has_num_; }
method num (line 578) | int num() const { return num_; }
function TEST (line 589) | TEST(RefCountedTest, PublicCtorAndDtor) {
class MyRefCountedClass (line 614) | class MyRefCountedClass : public RefCountedThreadSafeStorage {
method GetRefCount (line 616) | uint32_t GetRefCount() const { return ref_count_.load(); }
method GetPadding (line 618) | uint32_t GetPadding() const { return __padding__; }
method ReleaseSelf (line 621) | void ReleaseSelf() const override { delete this; }
function TEST (line 624) | TEST(RefCountedTest, MemberInitialValues) {
function TEST (line 636) | TEST(RefCountedTest, DISABLED_DebugChecks) {
FILE: base/src/fml/memory/task_runner_checker.cc
type lynx (line 10) | namespace lynx {
type fml (line 11) | namespace fml {
function TaskQueueId (line 54) | TaskQueueId TaskRunnerChecker::InitTaskQueueId() {
FILE: base/src/fml/memory/task_runner_checker_unittest.cc
type lynx (line 20) | namespace lynx {
type fml (line 21) | namespace fml {
type testing (line 22) | namespace testing {
function TEST (line 24) | TEST(TaskRunnerCheckerTests, RunsOnCurrentTaskRunner) {
function TEST (line 29) | TEST(TaskRunnerCheckerTests, FailsTheCheckIfOnDifferentTaskRunner) {
function TEST (line 49) | TEST(TaskRunnerCheckerTests, SameTaskRunnerRunsOnTheSameThread) {
function TEST (line 58) | TEST(TaskRunnerCheckerTests, RunsOnDifferentThreadsReturnsFalse) {
function TEST (line 74) | TEST(TaskRunnerCheckerTests, MergedTaskRunnersRunsOnTheSameThread) {
function TEST (line 124) | TEST(TaskRunnerCheckerTests,
FILE: base/src/fml/memory/weak_ptr_unittest.cc
type fml (line 18) | namespace fml {
type Integer (line 21) | struct Integer : public EnableWeakFromThis<Integer> {
method Integer (line 22) | Integer(int data) : data(data) {}
function TEST (line 28) | TEST(WeakPtrTest, Basic) {
function TEST (line 34) | TEST(WeakPtrTest, CopyConstruction) {
function TEST (line 42) | TEST(WeakPtrTest, MoveConstruction) {
function TEST (line 52) | TEST(WeakPtrTest, CopyAssignment) {
function TEST (line 62) | TEST(WeakPtrTest, MoveAssignment) {
function TEST (line 74) | TEST(WeakPtrTest, Testable) {
function TEST (line 84) | TEST(WeakPtrTest, OutOfScope) {
function TEST (line 94) | TEST(WeakPtrTest, Multiple) {
function TEST (line 108) | TEST(WeakPtrTest, MultipleStaged) {
type Base (line 119) | struct Base : public EnableWeakFromThis<Base> {
type Derived (line 122) | struct Derived : public Base {}
function TEST (line 124) | TEST(WeakPtrTest, Dereference) {
function TEST (line 133) | TEST(WeakPtrTest, UpcastCopyConstruction) {
function TEST (line 141) | TEST(WeakPtrTest, UpcastMoveConstruction) {
function TEST (line 151) | TEST(WeakPtrTest, UpcastCopyAssignment) {
function TEST (line 161) | TEST(WeakPtrTest, UpcastMoveAssignment) {
function TEST (line 173) | TEST(WeakPtrTest, ShouldNotCrashIfRunningOnTheSameTaskRunner) {
FILE: base/src/fml/message_loop.cc
type lynx (line 18) | namespace lynx {
type fml (line 19) | namespace fml {
function MessageLoop (line 29) | MessageLoop& MessageLoop::GetCurrent() {
function MessageLoop (line 38) | MessageLoop& MessageLoop::EnsureInitializedForCurrentThread(
function MessageLoop (line 47) | MessageLoop* MessageLoop::IsInitializedForCurrentThread() {
function TaskQueueId (line 93) | TaskQueueId MessageLoop::GetCurrentTaskQueueId() {
FILE: base/src/fml/message_loop_impl.cc
type lynx (line 21) | namespace lynx {
type fml (line 22) | namespace fml {
function TaskQueueId (line 228) | TaskQueueId MessageLoopImpl::GetTaskQueueId() const {
FILE: base/src/fml/message_loop_impl_unittests.cc
type lynx (line 20) | namespace lynx {
class MockVSyncMonitor (line 21) | class MockVSyncMonitor {
method MockVSyncMonitor (line 23) | MockVSyncMonitor() = default;
method RequestVSync (line 26) | void RequestVSync(fml::VSyncCallback callback) {
method TriggerVSync (line 30) | void TriggerVSync() {
function TEST (line 42) | TEST(MessageLoopImpl, TIMESENSITIVE(WakeUpTimersAreSingletons)) {
function TEST (line 72) | TEST(MessageLoopImpl, WakeUpByVSync) {
FILE: base/src/fml/message_loop_task_queues.cc
type lynx (line 19) | namespace lynx {
type fml (line 20) | namespace fml {
function MessageLoopTaskQueues (line 32) | MessageLoopTaskQueues* MessageLoopTaskQueues::GetInstance() {
function TaskQueueId (line 37) | TaskQueueId MessageLoopTaskQueues::CreateTaskQueue(
type TopTaskInfo (line 137) | struct TopTaskInfo {
FILE: base/src/fml/message_loop_task_queues_merge_unmerge_unittests.cc
type lynx (line 18) | namespace lynx {
type fml (line 19) | namespace fml {
type testing (line 20) | namespace testing {
class TestWakeable (line 22) | class TestWakeable : public fml::Wakeable {
method TestWakeable (line 26) | explicit TestWakeable(WakeUpCall call) : wake_up_call_(call) {}
method WakeUp (line 28) | void WakeUp(fml::TimePoint time_point, bool is_woken_by_vsync) o...
function CountRemainingTasks (line 36) | static int CountRemainingTasks(MessageLoopTaskQueues* task_queue,
function TEST (line 55) | TEST(MessageLoopTaskQueueMergeUnmerge,
function TEST (line 74) | TEST(MessageLoopTaskQueueMergeUnmerge,
function TEST (line 90) | TEST(MessageLoopTaskQueueMergeUnmerge, MergeUnmergeTasksPreserved) {
function TEST (line 116) | TEST(MessageLoopTaskQueueMergeUnmerge,
function TEST (line 142) | TEST(MessageLoopTaskQueueMergeUnmerge,
function TEST (line 153) | TEST(MessageLoopTaskQueueMergeUnmerge, MergeFailIfAlreadySubsumed) {
function TEST (line 165) | TEST(MessageLoopTaskQueueMergeUnmerge,
function TEST (line 178) | TEST(MessageLoopTaskQueueMergeUnmerge, UnmergeFailsOnSubsumedOrNev...
function TEST (line 192) | TEST(MessageLoopTaskQueueMergeUnmerge, MergeInvokesBothWakeables) {
function TEST (line 217) | TEST(MessageLoopTaskQueueMergeUnmerge,
function TEST (line 250) | TEST(MessageLoopTaskQueueMergeUnmerge, DISABLED_GetTasksToRunNowBl...
function TEST (line 303) | TEST(MessageLoopTaskQueueMergeUnmerge,
FILE: base/src/fml/message_loop_task_queues_unittests.cc
type lynx (line 21) | namespace lynx {
type fml (line 22) | namespace fml {
type testing (line 23) | namespace testing {
class TestWakeable (line 25) | class TestWakeable : public fml::Wakeable {
method TestWakeable (line 29) | explicit TestWakeable(WakeUpCall call) : wake_up_call_(call) {}
method WakeUp (line 31) | void WakeUp(fml::TimePoint time_point, bool is_woken_by_vsync) o...
function TEST (line 39) | TEST(MessageLoopTaskQueue, StartsWithNoPendingTasks) {
function TEST (line 45) | TEST(MessageLoopTaskQueue, RegisterOneTask) {
function TEST (line 61) | TEST(MessageLoopTaskQueue, RegisterTwoTasksAndCount) {
function TEST (line 72) | TEST(MessageLoopTaskQueue, RegisterTasksOnMergedQueuesAndCount) {
function TEST (line 103) | TEST(MessageLoopTaskQueue, PreserveTaskOrdering) {
function TEST (line 130) | TEST(MessageLoopTaskQueue, RegisterTasksOnMergedQueuesPreserveTask...
function TEST (line 173) | TEST(MessageLoopTaskQueue, UnmergeRespectTheOriginalTaskOrderingIn...
function TestNotifyObservers (line 256) | void TestNotifyObservers(fml::TaskQueueId queue_id) {
function TEST (line 264) | TEST(MessageLoopTaskQueue, AddRemoveNotifyObservers) {
function TEST (line 281) | TEST(MessageLoopTaskQueue, WakeUpIndependentOfTime) {
function TEST (line 298) | TEST(MessageLoopTaskQueue, WokenUpWithNewerTime) {
function TEST (line 322) | TEST(MessageLoopTaskQueue, NotifyObserversWhileCreatingQueues) {
function TEST (line 348) | TEST(MessageLoopTaskQueue, QueueDoNotOwnItself) {
function TEST (line 354) | TEST(MessageLoopTaskQueue, QueueDoNotOwnUnmergedTaskQueueId) {
function TEST (line 361) | TEST(MessageLoopTaskQueue, QueueOwnsMergedTaskQueueId) {
function TEST (line 376) | TEST(MessageLoopTaskQueue, ConcurrentQueueAndTaskCreatingCounts) {
function TEST (line 432) | TEST(MessageLoopTaskQueue, RegisterTaskWakesUpOwnerQueue) {
FILE: base/src/fml/message_loop_unittests.cc
type lynx (line 29) | namespace lynx {
function TEST (line 31) | TEST(MessageLoop, GetCurrent) {
function TEST (line 39) | TEST(MessageLoop, DifferentThreadsHaveDifferentLoops) {
function TEST (line 68) | TEST(MessageLoop, CanRunAndTerminate) {
function TEST (line 87) | TEST(MessageLoop, NonDelayedTasksAreRunInOrder) {
function TEST (line 115) | TEST(MessageLoop, DelayedTasksAtSameTimeAreRunInOrder) {
function TEST (line 146) | TEST(MessageLoop, CheckRunsTaskOnCurrentThread) {
function TEST (line 162) | TEST(MessageLoop, TIMESENSITIVE(SingleDelayedTaskByDelta)) {
function TEST (line 184) | TEST(MessageLoop, TIMESENSITIVE(SingleDelayedTaskForTime)) {
function TEST (line 206) | TEST(MessageLoop, TIMESENSITIVE(MultipleDelayedTasksWithIncreasingDelt...
function TEST (line 233) | TEST(MessageLoop, TIMESENSITIVE(MultipleDelayedTasksWithDecreasingDelt...
function TEST (line 260) | TEST(MessageLoop, TaskObserverFire) {
function TEST (line 292) | TEST(MessageLoop, ConcurrentMessageLoopHasNonZeroWorkers) {
function TEST (line 299) | TEST(MessageLoop,
function TEST (line 308) | TEST(MessageLoop, CanCreateConcurrentMessageLoop) {
function MockThreadConfigSetter (line 328) | static void MockThreadConfigSetter(const fml::Thread::ThreadConfig& co...
function TEST (line 350) | TEST(MessageLoop, CreateConcurrentMessageLoopWithThreadConfigSetter) {
function TEST (line 384) | TEST(MessageLoop, PostEmergencyTask) {
function TEST (line 405) | TEST(MessageLoop, PostIdleTaskNotInIdlePeriod) {
function TEST (line 427) | TEST(MessageLoop, TIMESENSITIVE(PostIdleTaskInIdlePeriod)) {
function TEST (line 450) | TEST(MessageLoop, PostSyncTask) {
function TEST (line 480) | TEST(MessageLoop, PostMicroTask) {
FILE: base/src/fml/platform/android/cpu_affinity.cc
type lynx (line 22) | namespace lynx {
type fml (line 23) | namespace fml {
function InitCPUInfo (line 33) | void InitCPUInfo(size_t cpu_count) {
function SetUpCPUTracker (line 47) | bool SetUpCPUTracker() {
function AndroidEfficiencyCoreCount (line 61) | std::optional<size_t> AndroidEfficiencyCoreCount() {
function AndroidRequestAffinity (line 70) | bool AndroidRequestAffinity(CpuAffinity affinity) {
FILE: base/src/fml/platform/android/message_loop_android.cc
type lynx (line 17) | namespace lynx {
type fml (line 18) | namespace fml {
function LooperPrepare (line 33) | static void LooperPrepare() {
function LooperLoop (line 38) | static void LooperLoop() {
function LooperQuit (line 43) | static void LooperQuit() {
function ALooper (line 52) | static ALooper* AcquireLooperForThread() {
FILE: base/src/fml/platform/android/message_loop_android_ndk.cc
type lynx (line 18) | namespace lynx {
type fml (line 19) | namespace fml {
function ALooper (line 27) | static ALooper* AcquireLooperForThread() {
FILE: base/src/fml/platform/android/thread_config_setter_android.cc
type lynx (line 9) | namespace lynx {
type fml (line 10) | namespace fml {
FILE: base/src/fml/platform/darwin/thread_name_setter_darwin.cc
type lynx (line 9) | namespace lynx {
type fml (line 10) | namespace fml {
function SetThreadName (line 11) | void SetThreadName(const std::string& name) {
FILE: base/src/fml/platform/harmony/message_loop_harmony.cc
type lynx (line 19) | namespace lynx {
type fml (line 20) | namespace fml {
FILE: base/src/fml/platform/linux/message_loop_linux.cc
type lynx (line 16) | namespace lynx {
type fml (line 17) | namespace fml {
type epoll_event (line 43) | struct epoll_event
type epoll_event (line 61) | struct epoll_event
FILE: base/src/fml/platform/linux/timerfd.cc
function timerfd_create (line 22) | int timerfd_create(int clockid, int flags) {
function timerfd_settime (line 26) | int timerfd_settime(int ufc, int flags, const struct itimerspec* utmr,
type lynx (line 33) | namespace lynx {
type fml (line 34) | namespace fml {
function TimerRearm (line 40) | bool TimerRearm(int fd, fml::TimePoint time_point) {
function TimerDrain (line 73) | bool TimerDrain(int fd) {
FILE: base/src/fml/platform/posix/thread_name_setter_posix.cc
type lynx (line 8) | namespace lynx {
type fml (line 9) | namespace fml {
function SetThreadName (line 10) | void SetThreadName(const std::string& name) {
FILE: base/src/fml/platform/win/message_loop_win.cc
type lynx (line 18) | namespace lynx {
type fml (line 19) | namespace fml {
FILE: base/src/fml/platform/win/task_runner_win32.cc
type lynx (line 14) | namespace lynx {
type fml (line 15) | namespace fml {
FILE: base/src/fml/platform/win/task_runner_win32_window.cc
type lynx (line 13) | namespace lynx {
type fml (line 14) | namespace fml {
function WNDCLASS (line 98) | WNDCLASS TaskRunnerWin32Window::RegisterWindowClass() {
function LRESULT (line 116) | LRESULT
function LRESULT (line 128) | LRESULT TaskRunnerWin32Window::WndProc(HWND const window, UINT const...
FILE: base/src/fml/platform/win/thread_name_setter_win.cc
type lynx (line 9) | namespace lynx {
type fml (line 10) | namespace fml {
type tagTHREADNAME_INFO (line 15) | struct tagTHREADNAME_INFO {
function SetThreadName (line 25) | void SetThreadName(const std::string& name) {
FILE: base/src/fml/raster_thread_merger.cc
type lynx (line 15) | namespace lynx {
type fml (line 16) | namespace fml {
function RasterThreadStatus (line 162) | RasterThreadStatus RasterThreadMerger::DecrementLease() {
FILE: base/src/fml/raster_thread_merger_unittests.cc
type lynx (line 18) | namespace lynx {
type fml (line 19) | namespace fml {
type testing (line 20) | namespace testing {
type TaskQueueWrapper (line 23) | struct TaskQueueWrapper {
method TaskQueueWrapper (line 38) | TaskQueueWrapper()
method GetTaskQueueId (line 53) | fml::TaskQueueId GetTaskQueueId() const {
function TEST (line 58) | TEST(RasterThreadMerger, RemainMergedTillLeaseExpires) {
function TEST (line 79) | TEST(RasterThreadMerger, IsNotOnRasterizingThread) {
function TEST (line 170) | TEST(RasterThreadMerger, LeaseExtension) {
function TEST (line 202) | TEST(RasterThreadMerger, WaitUntilMerged) {
function TEST (line 255) | TEST(RasterThreadMerger, HandleTaskQueuesAreTheSame) {
function TEST (line 281) | TEST(RasterThreadMerger, Enable) {
function TEST (line 303) | TEST(RasterThreadMerger, Disable) {
function TEST (line 348) | TEST(RasterThreadMerger, IsEnabled) {
function TEST (line 364) | TEST(RasterThreadMerger, TwoMergersWithSameThreadPairShareEnabledS...
function TEST (line 385) | TEST(RasterThreadMerger, RunExpiredTasksWhileFirstTaskMergesThread...
function TEST (line 438) | TEST(RasterThreadMerger, RunExpiredTasksWhileFirstTaskUnMergesThre...
function TEST (line 491) | TEST(RasterThreadMerger, SetMergeUnmergeCallback) {
function TEST (line 513) | TEST(RasterThreadMerger, MultipleMergersCanMergeSameThreadPair) {
function TEST (line 560) | TEST(RasterThreadMerger, TheLastCallerOfMultipleMergersCanUnmergeN...
function TEST (line 599) | TEST(RasterThreadMerger,
FILE: base/src/fml/shared_thread_merger.cc
type lynx (line 17) | namespace lynx {
type fml (line 18) | namespace fml {
FILE: base/src/fml/synchronization/count_down_latch.cc
type lynx (line 10) | namespace lynx {
type fml (line 11) | namespace fml {
FILE: base/src/fml/synchronization/count_down_latch_unittests.cc
type lynx (line 16) | namespace lynx {
type fml (line 17) | namespace fml {
function TEST (line 19) | TEST(CountDownLatchTest, CanWaitOnZero) {
function TEST (line 24) | TEST(CountDownLatchTest, CanWait) {
FILE: base/src/fml/synchronization/semaphore.cc
type lynx (line 13) | namespace lynx {
type fml (line 14) | namespace fml {
class PlatformSemaphore (line 16) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 70) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 123) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
type fml (line 68) | namespace fml {
class PlatformSemaphore (line 16) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 70) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 123) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
type fml (line 121) | namespace fml {
class PlatformSemaphore (line 16) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 70) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 123) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
type fml (line 179) | namespace fml {
class PlatformSemaphore (line 16) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 70) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 123) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
type lynx (line 67) | namespace lynx {
type fml (line 14) | namespace fml {
class PlatformSemaphore (line 16) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 70) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 123) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
type fml (line 68) | namespace fml {
class PlatformSemaphore (line 16) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 70) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 123) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
type fml (line 121) | namespace fml {
class PlatformSemaphore (line 16) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 70) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 123) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
type fml (line 179) | namespace fml {
class PlatformSemaphore (line 16) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 70) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 123) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
type lynx (line 120) | namespace lynx {
type fml (line 14) | namespace fml {
class PlatformSemaphore (line 16) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 70) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 123) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
type fml (line 68) | namespace fml {
class PlatformSemaphore (line 16) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 70) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 123) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
type fml (line 121) | namespace fml {
class PlatformSemaphore (line 16) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 70) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 123) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
type fml (line 179) | namespace fml {
class PlatformSemaphore (line 16) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 70) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 123) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
type lynx (line 178) | namespace lynx {
type fml (line 14) | namespace fml {
class PlatformSemaphore (line 16) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 70) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 123) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
type fml (line 68) | namespace fml {
class PlatformSemaphore (line 16) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 70) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 123) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
type fml (line 121) | namespace fml {
class PlatformSemaphore (line 16) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 70) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 123) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
type fml (line 179) | namespace fml {
class PlatformSemaphore (line 16) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 70) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
class PlatformSemaphore (line 123) | class PlatformSemaphore {
method PlatformSemaphore (line 18) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 31) | bool IsValid() const { return sem_ != nullptr; }
method Wait (line 33) | bool Wait() {
method TryWait (line 40) | bool TryWait() {
method Signal (line 48) | void Signal() {
method PlatformSemaphore (line 72) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 82) | bool IsValid() const { return _sem != nullptr; }
method Wait (line 84) | bool Wait() {
method TryWait (line 92) | bool TryWait() {
method Signal (line 100) | void Signal() {
method PlatformSemaphore (line 125) | explicit PlatformSemaphore(uint32_t count)
method IsValid (line 138) | bool IsValid() const { return valid_; }
method Wait (line 140) | bool Wait() {
method TryWait (line 148) | bool TryWait() {
method Signal (line 156) | void Signal() {
FILE: base/src/fml/synchronization/semaphore_unittest.cc
function TEST (line 13) | TEST(SemaphoreTest, SimpleValidity) {
function TEST (line 18) | TEST(SemaphoreTest, WaitOnZero) {
function TEST (line 23) | TEST(SemaphoreTest, WaitOnZeroSignalThenWait) {
function TEST (line 32) | TEST(SemaphoreTest, IndefiniteWait) {
FILE: base/src/fml/synchronization/shared_mutex_posix.cc
type lynx (line 9) | namespace lynx {
type fml (line 10) | namespace fml {
function SharedMutex (line 12) | SharedMutex* SharedMutex::Create() { return new SharedMutexPosix(); }
FILE: base/src/fml/synchronization/shared_mutex_std.cc
type lynx (line 7) | namespace lynx {
type fml (line 8) | namespace fml {
function SharedMutex (line 10) | SharedMutex* SharedMutex::Create() { return new SharedMutexStd(); }
FILE: base/src/fml/synchronization/sync_switch.cc
type lynx (line 7) | namespace lynx {
type fml (line 8) | namespace fml {
FILE: base/src/fml/synchronization/sync_switch_unittest.cc
function TEST (line 13) | TEST(SyncSwitchTest, Basic) {
function TEST (line 27) | TEST(SyncSwitchTest, NoopIfUndefined) {
function TEST (line 34) | TEST(SyncSwitchTest, SharedLock) {
FILE: base/src/fml/synchronization/waitable_event.cc
type lynx (line 16) | namespace lynx {
type fml (line 17) | namespace fml {
function WaitWithTimeoutImpl (line 23) | bool WaitWithTimeoutImpl(std::unique_lock<std::mutex>* locker,
FILE: base/src/fml/synchronization/waitable_event_unittest.cc
type lynx (line 24) | namespace lynx {
type fml (line 25) | namespace fml {
function SleepFor (line 34) | void SleepFor(TimeDelta duration) {
function EpsilonRandomSleep (line 39) | void EpsilonRandomSleep() {
function TEST (line 47) | TEST(AutoResetWaitableEventTest, Basic) {
function TEST (line 75) | TEST(AutoResetWaitableEventTest, MultipleWaiters) {
function TEST (line 137) | TEST(ManualResetWaitableEventTest, Basic) {
function TEST (line 158) | TEST(ManualResetWaitableEventTest, SignalMultiple) {
FILE: base/src/fml/task_runner.cc
type lynx (line 20) | namespace lynx {
type fml (line 21) | namespace fml {
function TaskQueueId (line 136) | TaskQueueId TaskRunner::GetTaskQueueId() {
FILE: base/src/fml/task_runner_unittests.cc
type lynx (line 10) | namespace lynx {
type fml (line 11) | namespace fml {
type testing (line 12) | namespace testing {
class TaskRunnerTest (line 14) | class TaskRunnerTest : public ::testing::Test {
method TaskRunnerTest (line 16) | TaskRunnerTest() = default;
method SetUp (line 19) | void SetUp() override {}
method TearDown (line 21) | void TearDown() override {}
function TEST_F (line 24) | TEST_F(TaskRunnerTest, Bind) {
function TEST_F (line 77) | TEST_F(TaskRunnerTest, BindWithShouldRunExpiredTasksImmediately) {
FILE: base/src/fml/task_source.cc
type lynx (line 12) | namespace lynx {
type fml (line 13) | namespace fml {
function DelayedTask (line 126) | const DelayedTask* TaskSource::TopOrNull() const {
FILE: base/src/fml/task_source_unittests.cc
type lynx (line 18) | namespace lynx {
type fml (line 19) | namespace fml {
type testing (line 20) | namespace testing {
function TEST (line 22) | TEST(TaskSourceTests, SimpleInitialization) {
function TEST (line 29) | TEST(TaskSourceTests, MultipleTaskGrades) {
function TEST (line 44) | TEST(TaskSourceTests, SimpleOrdering) {
function TEST (line 61) | TEST(TaskSourceTests, SimpleOrderingMultiTaskHeaps) {
FILE: base/src/fml/thread.cc
type lynx (line 36) | namespace lynx {
type fml (line 37) | namespace fml {
class ThreadHandle (line 39) | class ThreadHandle {
type sched_param (line 88) | struct sched_param
type sched_param (line 91) | struct sched_param
FILE: base/src/fml/thread_host.cc
type lynx (line 16) | namespace lynx {
FILE: base/src/fml/thread_name_setter.h
function namespace (line 9) | namespace lynx {
FILE: base/src/fml/thread_unittests.cc
type lynx (line 26) | namespace lynx {
function TEST (line 28) | TEST(Thread, CanStartAndEnd) {
function TEST (line 33) | TEST(Thread, CanStartAndEndWithExplicitJoin) {
function TEST (line 39) | TEST(Thread, HasARunningMessageLoop) {
function TEST (line 48) | TEST(Thread, ThreadNameCreatedWithConfig) {
function MockThreadConfigSetter (line 65) | static void MockThreadConfigSetter(const fml::Thread::ThreadConfig& co...
function TEST (line 87) | TEST(Thread, ThreadPriorityCreatedWithConfig) {
FILE: base/src/fml/time/chrono_timestamp_provider.cc
type lynx (line 14) | namespace lynx {
type fml (line 15) | namespace fml {
function ChronoTicksSinceEpoch (line 27) | fml::TimePoint ChronoTicksSinceEpoch() {
FILE: base/src/fml/time/time_delta_unittest.cc
type lynx (line 12) | namespace lynx {
type fml (line 13) | namespace fml {
function TEST (line 16) | TEST(TimeDelta, Control) {
FILE: base/src/fml/time/time_point.cc
type lynx (line 18) | namespace lynx {
type fml (line 19) | namespace fml {
function TimePoint (line 24) | TimePoint TimePoint::Now() { return TimePoint(zx_clock_get_monotonic...
function TimePoint (line 26) | TimePoint TimePoint::CurrentWallTime() { return Now(); }
function NanosSinceEpoch (line 31) | static int64_t NanosSinceEpoch(
function TimePoint (line 37) | TimePoint TimePoint::Now() {
function TimePoint (line 42) | TimePoint TimePoint::CurrentWallTime() {
FILE: base/src/fml/time/time_point_unittest.cc
type lynx (line 13) | namespace lynx {
type fml (line 14) | namespace fml {
function TEST (line 17) | TEST(TimePoint, Control) {
FILE: base/src/fml/time/time_unittest.cc
type lynx (line 14) | namespace lynx {
type fml (line 15) | namespace fml {
function TEST (line 18) | TEST(Time, Now) {
function TEST (line 27) | TEST(Time, IntConversions) {
function TEST (line 36) | TEST(Time, FloatConversions) {
function TEST (line 45) | TEST(Time, TimespecConversions) {
FILE: base/src/fml/time/timer.cc
type lynx (line 11) | namespace lynx {
type fml (line 12) | namespace fml {
FILE: base/src/fml/unique_fd.cc
type lynx (line 12) | namespace lynx {
type fml (line 13) | namespace fml {
type internal (line 14) | namespace internal {
type os_win (line 18) | namespace os_win {
type os_unix (line 29) | namespace os_unix {
FILE: base/src/geometry_unittest.cc
type lynx (line 9) | namespace lynx {
type base (line 10) | namespace base {
type geometry (line 11) | namespace geometry {
function TEST (line 14) | TEST(GeometryTest, PointInitAndAccess) {
function TEST (line 29) | TEST(GeometryTest, PointMove) {
function TEST (line 42) | TEST(GeometryTest, PointOperation) {
function TEST (line 67) | TEST(GeometryTest, SizeInitAndAccess) {
function TEST (line 89) | TEST(GeometryTest, SizeOperation) {
function TEST (line 114) | TEST(GeometryTest, SizeExpand) {
function TEST (line 131) | TEST(GeometryTest, RectInitAndAccess) {
function TEST (line 149) | TEST(GeometryTest, RectContains) {
function TEST (line 160) | TEST(GeometryTest, RectIntersectedSize) {
function TEST (line 172) | TEST(GeometryTest, RectIntersect) {
FILE: base/src/hybrid_map_unittest.cc
type lynx (line 15) | namespace lynx {
type base (line 16) | namespace base {
type test (line 17) | namespace test {
function ConcatOrderedMap (line 19) | static std::string ConcatOrderedMap(
function Test_MapInsertOrAssign (line 44) | static void Test_MapInsertOrAssign() {
function Test_MapInsertOrAssign2 (line 84) | static void Test_MapInsertOrAssign2() {
function Test_MapEmplace (line 105) | static void Test_MapEmplace() {
function Test_MapElementAccess (line 169) | static void Test_MapElementAccess() {
function Test_MapInsertUpdate (line 184) | static void Test_MapInsertUpdate() {
function Test_MapEraseOperations (line 202) | static void Test_MapEraseOperations() {
function Test_MapEdgeCases (line 218) | static void Test_MapEdgeCases() {
function Test_MapEmplacePiecewise (line 233) | static void Test_MapEmplacePiecewise() {
function Test_MapForeach (line 254) | static void Test_MapForeach() {
function Test_MapIterator (line 279) | static void Test_MapIterator() {
function Test_MapEraseIterator (line 314) | static void Test_MapEraseIterator() {
function assert_map_content (line 350) | static void assert_map_content(MAP& map, const base::Vector<std::s...
function Test_MapMisc_4_As_SmallMap_MaxSize (line 370) | static void Test_MapMisc_4_As_SmallMap_MaxSize() {
function TEST (line 875) | TEST(HybridMap, All) {
function TEST (line 889) | TEST(HybridMap, ReserveWithInline) {
FILE: base/src/linked_hash_map_unittest.cc
type lynx (line 11) | namespace lynx {
type base (line 12) | namespace base {
type test (line 13) | namespace test {
function TEST (line 15) | TEST(LinkedHashMap, insert) {
function TEST (line 38) | TEST(LinkedHashMap, insert_if_absent) {
function TEST (line 59) | TEST(LinkedHashMap, operator_bracket) {
function TEST (line 73) | TEST(LinkedHashMap, emplace) {
function TEST (line 92) | TEST(LinkedHashMap, range_insert) {
function TEST (line 120) | TEST(LinkedHashMap, duplicated_in_initializer) {
function TEST (line 129) | TEST(LinkedHashMap, position_order) {
function TEST (line 161) | TEST(LinkedHashMap, copy_move_status) {
function TEST (line 255) | TEST(LinkedHashMap, for_each_status) {
function TEST (line 288) | TEST(LinkedHashMap, find) {
function TEST (line 330) | TEST(LinkedHashMap, find_inner_map_created) {
function TEST (line 343) | TEST(LinkedHashMap, contains) {
function TEST (line 353) | TEST(LinkedHashMap, erase) {
function TEST (line 399) | TEST(LinkedHashMap, merge) {
function TEST (line 416) | TEST(LinkedHashMap, clear) {
function TEST (line 437) | TEST(LinkedHashMap, clear_pool) {
function TEST (line 458) | TEST(LinkedHashMap, reserve) {
function TEST (line 472) | TEST(LinkedHashMap, set_pool_capacity) {
FILE: base/src/log/alog_wrapper.cc
type lynx (line 6) | namespace lynx {
type base (line 7) | namespace base {
function InitAlog (line 15) | bool InitAlog(alog_write_func_ptr addr) {
function ALogWrite (line 26) | void ALogWrite(unsigned int level, const char* tag, const char* msg) {
function ALogWriteV (line 32) | void ALogWriteV(const char* tag, const char* msg) {
function ALogWriteD (line 36) | void ALogWriteD(const char* tag, const char* msg) {
function ALogWriteI (line 40) | void ALogWriteI(const char* tag, const char* msg) {
function ALogWriteW (line 44) | void ALogWriteW(const char* tag, const char* msg) {
function ALogWriteE (line 48) | void ALogWriteE(const char* tag, const char* msg) {
function ALogWriteF (line 52) | void ALogWriteF(const char* tag, const char* msg) {
FILE: base/src/log/log_stream.cc
type lynx (line 18) | namespace lynx {
type base (line 19) | namespace base {
type logging (line 20) | namespace logging {
type detail (line 22) | namespace detail {
function Integer32ToString (line 38) | inline int32_t Integer32ToString(int32_t value, char* buffer) {
function UnsignedInteger32ToString (line 42) | inline int32_t UnsignedInteger32ToString(uint32_t value, char* b...
function Integer64ToString (line 46) | inline int32_t Integer64ToString(int64_t value, char* buffer) {
function UnsignedInteger64ToString (line 50) | inline int32_t UnsignedInteger64ToString(uint64_t value, char* b...
function DoubleToString (line 54) | inline int32_t DoubleToString(double value, char* buffer) {
function StaticCheck (line 58) | void StaticCheck() {
function ConvertAddressToHexString (line 76) | void ConvertAddressToHexString(char buffer[], uintptr_t value) {
function LogStream (line 94) | LogStream& LogStream::operator<<(bool value) {
function LogStream (line 99) | LogStream& LogStream::operator<<(int8_t value) {
function LogStream (line 103) | LogStream& LogStream::operator<<(uint8_t value) {
function LogStream (line 107) | LogStream& LogStream::operator<<(int16_t value) {
function LogStream (line 111) | LogStream& LogStream::operator<<(uint16_t value) {
function LogStream (line 115) | LogStream& LogStream::operator<<(int32_t value) {
function LogStream (line 124) | LogStream& LogStream::operator<<(uint32_t value) {
function LogStream (line 134) | LogStream& LogStream::operator<<(int64_t value) {
function LogStream (line 143) | LogStream& LogStream::operator<<(uint64_t value) {
function LogStream (line 157) | LogStream& LogStream::operator<<(const void* address) {
function LogStream (line 173) | LogStream& LogStream::operator<<(float value) {
function LogStream (line 183) | LogStream& LogStream::operator<<(double value) {
function LogStream (line 192) | LogStream& LogStream::operator<<(const char& value) {
function LogStream (line 199) | LogStream& LogStream::operator<<(const char* value) {
function LogStream (line 209) | LogStream& LogStream::operator<<(const std::string& value) {
function LogStream (line 214) | LogStream& LogStream::operator<<(const std::string_view& value) {
function LogStream (line 221) | LogStream& LogStream::operator<<(wchar_t value) {
function LogStream (line 225) | LogStream& LogStream::operator<<(const wchar_t* value) {
function LogStream (line 229) | LogStream& LogStream::operator<<(const std::wstring& value) {
function LogStream (line 233) | LogStream& LogStream::operator<<(const std::wstring_view& value) {
FILE: base/src/log/log_stream_unittest.cc
type lynx (line 16) | namespace lynx {
type base (line 17) | namespace base {
type logging (line 18) | namespace logging {
type NumberContrastString (line 20) | struct NumberContrastString {
function ConvertToString (line 27) | std::string ConvertToString(const INT& number) {
function SmartPointerToHexString (line 34) | void SmartPointerToHexString() {
class SelfType (line 59) | class SelfType {
method SelfType (line 63) | explicit SelfType(double value) : value_(value) {}
method friend (line 64) | inline friend LogStream& operator<<(LogStream& output,
function TEST (line 71) | TEST(LogStreamTest, BoolToString) {
function TEST (line 82) | TEST(LogStreamTest, NumberToString) {
function TEST (line 140) | TEST(LogStreamTest, Uint64ToString) {
function TEST (line 156) | TEST(LogStreamTest, Size_TToString) {
function TEST (line 173) | TEST(LogStreamTest, floatToString) {
function TEST (line 194) | TEST(LogStreamTest, DoubleToString) {
function TEST (line 220) | TEST(LogStreamTest, AddressToHexString) {
function TEST (line 240) | TEST(LogStreamTest, SharedPtrToHexString) {
function TEST (line 244) | TEST(LogStreamTest, UniquePtrToHexString) {
function TEST (line 248) | TEST(LogStreamTest, AtomicToHexString) {
function TEST (line 288) | TEST(LogStreamTest, WstringToString) {
function TEST (line 304) | TEST(LogStreamTest, WCharToString) {
function TEST (line 318) | TEST(LogStreamTest, NullCharToString) {
function TEST (line 328) | TEST(LogStreamTest, StringViewToString) {
function TEST (line 336) | TEST(LogStreamTest, LogStreamBase) {
FILE: base/src/log/logging.cc
type lynx (line 18) | namespace lynx {
type base (line 19) | namespace base {
type logging (line 20) | namespace logging {
function InitAlogNative (line 43) | bool InitAlogNative() {
function PrintLogMessageByAlog (line 54) | void PrintLogMessageByAlog(int level, const char* tag, const char*...
function PrintLogMessageByPlatformLog (line 71) | void PrintLogMessageByPlatformLog(LogMessage* msg, const char* tag) {
function IsLogOutputByPlatform (line 77) | bool IsLogOutputByPlatform() { return isLogOutputByPlatform; }
function Log (line 79) | void Log(LogMessage* msg) {
function HasInitedLynxLogWriteFunction (line 124) | [[maybe_unused]] bool HasInitedLynxLogWriteFunction() {
function InitLynxLogging (line 128) | void InitLynxLogging(InitAlogCallBack initAlogCallback,
function SetMinLogLevel (line 139) | void SetMinLogLevel(int level) {
function GetMinLogLevel (line 146) | int GetMinLogLevel() { return g_min_log_level; }
function PrintLogToLynxLogging (line 148) | void PrintLogToLynxLogging(int level, const char* tag, const char*...
function EnableLogOutputByPlatform (line 152) | [[maybe_unused]] void EnableLogOutputByPlatform() {
function DisableLogOutputByPlatform (line 156) | [[maybe_unused]] void DisableLogOutputByPlatform() {
FILE: base/src/log/logging_android.cc
type lynxbase (line 18) | namespace lynxbase {
type jni (line 19) | namespace jni {
function RegisterJNIForLynxLog (line 20) | bool RegisterJNIForLynxLog(JNIEnv* env) { return RegisterNativesImpl...
type lynx (line 26) | namespace lynx {
type base (line 27) | namespace base {
type logging (line 28) | namespace logging {
function InitAlog (line 30) | base::alog_write_func_ptr InitAlog() { return s_alog_write; }
function PrintLogMessageByLogDelegate (line 32) | void PrintLogMessageByLogDelegate(LogMessage* msg, const char* tag) {
function InitLynxLog (line 62) | void InitLynxLog(bool is_all_channels) {
function InitLynxLoggingNative (line 69) | void InitLynxLoggingNative(JNIEnv* env, jclass jcaller,
function SetNativeMinLogLevel (line 74) | void SetNativeMinLogLevel(JNIEnv* env, jclass jcaller, jint level) {
function InitALogNative (line 78) | void InitALogNative(JNIEnv* env, jclass jcaller, jlong addr) {
function InternalLog (line 82) | void InternalLog(JNIEnv* env, jclass jcaller, jint level, jstring tag,
function SetLogOutputByPlatform (line 92) | void SetLogOutputByPlatform(JNIEnv* env, jclass jcaller) {
FILE: base/src/log/logging_base.cc
type lynx (line 13) | namespace lynx {
type base (line 18) | namespace base {
type logging (line 19) | namespace logging {
function PrintLogMessageByDelegate (line 21) | void PrintLogMessageByDelegate(LogMessage* msg, const char* tag) {
function InitLynxBaseLog (line 60) | void InitLynxBaseLog(bool print_logs_to_all_channels) {
function IsExternalChannel (line 78) | bool IsExternalChannel(lynx::base::logging::LogChannel channel_type) {
function PrintLogMessageForDebug (line 83) | void PrintLogMessageForDebug(int level, const char* message) {
function SetDebugLoggingDelegate (line 94) | void SetDebugLoggingDelegate(LynxLogDelegate* delegate) {
function AddLoggingDelegate (line 98) | int AddLoggingDelegate(LynxLogDelegate* delegate) {
function LynxLogDelegate (line 104) | LynxLogDelegate* GetLoggingDelegate(int delegate_id) {
function GetLoggingDelegates (line 111) | std::vector<LynxLogDelegate*> GetLoggingDelegates() {
function RemoveLoggingDelegate (line 119) | void RemoveLoggingDelegate(int delegate_id) {
function SetMinimumLoggingLevel (line 126) | void SetMinimumLoggingLevel(int min_log_level) {
function SetJSLogsFromExternalChannels (line 133) | void SetJSLogsFromExternalChannels(bool is_open) {
function GetMinimumLoggingLevel (line 137) | int GetMinimumLoggingLevel() { return lynx_alog_min_level_; }
function LynxSetLogFunction (line 141) | __declspec(dllexport)
function DefaultLogFunction (line 150) | void DefaultLogFunction(int level, const char* message) {
function LynxLogFunction (line 154) | LynxLogFunction LynxGetLogFunction() {
FILE: base/src/log/logging_harmony.cc
type lynx (line 15) | namespace lynx {
type base (line 16) | namespace base {
type logging (line 17) | namespace logging {
function alog_write_func_ptr (line 22) | alog_write_func_ptr GetLynxLogWriteFunction() { return s_alog_writ...
function PrintLogMessageByLogDelegate (line 25) | void PrintLogMessageByLogDelegate(LogMessage *msg, const char *tag) {
function napi_value (line 51) | napi_value LynxLog::Init(napi_env env, napi_value exports) {
function napi_value (line 62) | napi_value LynxLog::NativeInitLynxLogWriteFunction(napi_env env,
function napi_value (line 75) | napi_value LynxLog::NativeInitLynxLog(napi_env env, napi_callback_...
function napi_value (line 85) | napi_value LynxLog::NativeUseSysLog(napi_env env, napi_callback_in...
function napi_value (line 98) | napi_value LynxLog::nativeInternalLog(napi_env env, napi_callback_...
function napi_value (line 109) | napi_value LynxLog::nativeSetMinLogLevel(napi_env env,
FILE: base/src/log/logging_harmony.h
function namespace (line 12) | namespace lynx {
FILE: base/src/lynx_actor_unittest.cc
type lynx (line 11) | namespace lynx {
type shell (line 12) | namespace shell {
function GetHookTaskRunner (line 14) | fml::RefPtr<fml::TaskRunner> GetHookTaskRunner() {
class LynxActorTest (line 19) | class LynxActorTest : public ::testing::Test {
method LynxActorTest (line 21) | LynxActorTest() = default;
method SetUp (line 24) | void SetUp() override {
method TearDown (line 29) | void TearDown() override {
function TEST_F (line 38) | TEST_F(LynxActorTest, ActAsync) {
function TEST_F (line 43) | TEST_F(LynxActorTest, ActAsyncAfterDestroy) {
function TEST_F (line 53) | TEST_F(LynxActorTest, ActSync) {
function TEST_F (line 58) | TEST_F(LynxActorTest, ActSyncAfterDestroy) {
function TEST_F (line 66) | TEST_F(LynxActorTest, ActSyncWithRet) {
function TEST_F (line 71) | TEST_F(LynxActorTest, ActSyncWithRetAfterDestroy) {
FILE: base/src/md5.cc
type lynx (line 47) | namespace lynx {
type base (line 48) | namespace base {
function MD5 (line 304) | MD5& MD5::finalize() {
function md5 (line 357) | std::string md5(const std::string& str) {
function md5 (line 363) | std::string md5(const char* str, const size_t length) {
FILE: base/src/path_utils_unittest.cc
type lynx (line 9) | namespace lynx {
type base (line 10) | namespace base {
function TEST (line 12) | TEST(PathUtils, AbsolutePathTest) {
function TEST (line 18) | TEST(PathUtils, RelativePathTest) {
function TEST (line 24) | TEST(PathUtils, OtherPathTest) {
function TEST (line 30) | TEST(PathUtils, GetLastPath) {
FILE: base/src/platform/android/java_type.cc
type lynx (line 8) | namespace lynx {
type base (line 9) | namespace base {
type android (line 10) | namespace android {
function jbyte (line 83) | jbyte JType::ByteValue(JNIEnv* env, jobject value) {
function jchar (line 88) | jchar JType::CharValue(JNIEnv* env, jobject value) {
function jboolean (line 93) | jboolean JType::BooleanValue(JNIEnv* env, jobject value) {
function jshort (line 98) | jshort JType::ShortValue(JNIEnv* env, jobject value) {
function jint (line 103) | jint JType::IntValue(JNIEnv* env, jobject value) {
function jlong (line 108) | jlong JType::LongValue(JNIEnv* env, jobject value) {
function jfloat (line 113) | jfloat JType::FloatValue(JNIEnv* env, jobject value) {
function jdouble (line 118) | jdouble JType::DoubleValue(JNIEnv* env, jobject value) {
FILE: base/src/platform/android/jni_convert_helper.cc
type lynx (line 9) | namespace lynx {
type base (line 10) | namespace base {
type android (line 11) | namespace android {
function ConvertVectorToBufferArray (line 171) | ScopedLocalJavaRef<jobjectArray> ConvertVectorToBufferArray(
FILE: base/src/platform/android/jni_utils.cc
type lynx (line 21) | namespace lynx {
type base (line 22) | namespace base {
type android (line 23) | namespace android {
function InitVM (line 25) | void InitVM(JavaVM *vm) { g_jvm = vm; }
type JNIDetach (line 27) | struct JNIDetach {
function JNIEnv (line 34) | JNIEnv *AttachCurrentThread() {
function DetachFromVM (line 67) | void DetachFromVM() {
function GetClass (line 73) | ScopedLocalJavaRef<jclass> GetClass(JNIEnv *env, const char *class...
function GetGlobalClass (line 82) | ScopedGlobalJavaRef<jclass> GetGlobalClass(JNIEnv *env,
function jmethodID (line 92) | jmethodID GetMethod(JNIEnv *env, jclass clazz, MethodType type,
function jmethodID (line 112) | jmethodID GetMethod(JNIEnv *env, jclass clazz, MethodType type,
function HasException (line 123) | bool HasException(JNIEnv *env) { return env->ExceptionCheck() != J...
function ClearException (line 125) | bool ClearException(JNIEnv *env) {
function CheckException (line 132) | bool CheckException(JNIEnv *env, std::string &exception_msg) {
function CheckAndPrintException (line 148) | bool CheckAndPrintException(JNIEnv *env) {
function GetJavaExceptionInfo (line 159) | std::string GetJavaExceptionInfo(JNIEnv *env, jthrowable java_thro...
function GetAPILevel (line 201) | int GetAPILevel() {
FILE: base/src/platform/android/scoped_java_ref.cc
type lynx (line 13) | namespace lynx {
type base (line 14) | namespace base {
type android (line 15) | namespace android {
function JNIEnv (line 24) | JNIEnv* JavaRef<jobject>::ResetNewLocalRef(JNIEnv* env, jobject ob...
FILE: base/src/platform/harmony/harmony_vsync_manager.cc
type lynx (line 19) | namespace lynx {
type base (line 20) | namespace base {
function HarmonyVsyncManager (line 28) | HarmonyVsyncManager& HarmonyVsyncManager::GetInstance() {
FILE: base/src/platform/harmony/napi_util.cc
type lynx (line 23) | namespace lynx {
type base (line 24) | namespace base {
function NapiGetLastError (line 28) | [[maybe_unused]] static std::string NapiGetLastError(napi_env env,
function napi_value (line 330) | napi_value NapiUtil::CreateArrayBuffer(napi_env env, void* input_data,
function napi_value (line 345) | napi_value NapiUtil::CreateMap(
function napi_value (line 359) | napi_value NapiUtil::CreateMap(napi_env env,
function napi_value (line 372) | napi_value NapiUtil::CreateMap(
function napi_value (line 386) | napi_value NapiUtil::CreatePtrArray(napi_env env, uint64_t ptr) {
function napi_value (line 396) | napi_value NapiUtil::CreateUint32(napi_env env, uint32_t num) {
function napi_value (line 402) | napi_value NapiUtil::CreateInt32(napi_env env, int32_t num) {
function napi_status (line 408) | napi_status NapiUtil::SetPropToJSMap(napi_env env, napi_value js_map,
function napi_status (line 416) | napi_status NapiUtil::SetPropToJSMap(napi_env env, napi_value js_map,
function napi_status (line 422) | napi_status NapiUtil::SetPropToJSMap(napi_env env, napi_value js_map,
function napi_status (line 438) | napi_status NapiUtil::InvokeJsMethod(napi_env env, napi_ref ref_napi...
function napi_status (line 453) | napi_status NapiUtil::AsyncInvokeJsMethod(napi_env env, napi_ref ref...
function napi_status (line 500) | napi_status NapiUtil::InvokeJsMethod(napi_env env, napi_ref ref_napi...
function napi_status (line 513) | napi_status NapiUtil::InvokeJsMethod(napi_env env, napi_value napi_obj,
function napi_value (line 560) | napi_value NapiUtil::GetReferenceNapiValue(const napi_env env,
FILE: base/src/sorted_for_each_unittest.cc
type lynx::base::testing (line 12) | namespace lynx::base::testing {
class FooMap (line 16) | class FooMap : public std::unordered_map<Key, Value> {
method FooMap (line 18) | FooMap() : std::unordered_map<Key, Value>() {}
method FooMap (line 19) | FooMap(std::initializer_list<std::pair<const Key, Value>> value)
function TEST (line 28) | TEST(SortedForEachTest, SortedTest) {
function TEST (line 38) | TEST(SortedForEachTest, MoveOnlyTest) {
function TEST (line 66) | TEST(SortedForEachTest, ConstIterTest) {
FILE: base/src/string/quickjs_dtoa.c
function js_ecvt1 (line 72) | static void js_ecvt1(double d, int n_digits, int* decpt, int* sign, char...
function js_ecvt (line 91) | static int js_ecvt(double d, int n_digits, int* decpt, int* sign, char* ...
function js_dtoa1 (line 127) | static void js_dtoa1(char* buf, double d, int radix, int n_digits, int f...
function js_dtoa (line 202) | void js_dtoa(char* buf, double val) {
FILE: base/src/string/string_conversion_win.cc
type lynx (line 9) | namespace lynx {
type base (line 10) | namespace base {
function Utf8FromUtf16 (line 12) | std::string Utf8FromUtf16(const std::wstring& utf16_string) {
function Utf8FromUtf16 (line 16) | std::string Utf8FromUtf16(const std::wstring_view& utf16_string) {
function Utf8FromUtf16 (line 20) | std::string Utf8FromUtf16(const wchar_t* utf16_string, int32_t lengt...
function Utf16FromUtf8 (line 41) | std::wstring Utf16FromUtf8(const std::string& utf8_string) {
function Utf16FromUtf8 (line 46) | std::wstring Utf16FromUtf8(const std::string_view& utf8_string) {
function Utf16FromUtf8 (line 51) | std::wstring Utf16FromUtf8(const char* utf8_string, int32_t length) {
function Utf8ToANSIOrOEM (line 72) | std::string Utf8ToANSIOrOEM(const std::string& utf8_string) {
FILE: base/src/string/string_number_convert.cc
type lynx (line 13) | namespace lynx {
type base (line 14) | namespace base {
function StringToDouble (line 16) | bool StringToDouble(const std::string& input, double& output,
function StringToFloat (line 33) | bool StringToFloat(const std::string& input, float& output,
function StringToInt (line 49) | bool StringToInt(const std::string& input, int64_t& output, uint8_t ...
function StringToInt (line 61) | bool StringToInt(const std::string& input, int* output, uint8_t base) {
FILE: base/src/string/string_number_convert_unittest.cc
type lynx (line 9) | namespace lynx {
type base (line 10) | namespace base {
function TEST (line 12) | TEST(StringNumberConvertTest, StringToDoubleTest) {
function TEST (line 21) | TEST(StringNumberConvertTest, StringToIntTest) {
FILE: base/src/string/string_utils.cc
type lynx (line 20) | namespace lynx {
type base (line 21) | namespace base {
function SplitString (line 83) | bool SplitString(std::string_view target, char separator,
function SplitStringBySpaceOutOfBrackets (line 108) | bool SplitStringBySpaceOutOfBrackets(std::string_view target,
function SplitStringBySpaceOutOfBrackets (line 137) | bool SplitStringBySpaceOutOfBrackets(std::string_view target,
function SplitStringBySpaceOutOfBrackets (line 142) | bool SplitStringBySpaceOutOfBrackets(
function SplitToStringViews (line 147) | std::vector<std::string_view> SplitToStringViews(std::string_view str,
function Join (line 164) | std::string Join(const std::vector<std::string>& vec, const char* de...
function JoinString (line 175) | std::string JoinString(const std::vector<std::string>& pieces) {
function EndsWithIgnoreSourceCase (line 183) | bool EndsWithIgnoreSourceCase(std::string_view s, std::string_view e...
function CamelCaseToDashCase (line 191) | std::string CamelCaseToDashCase(std::string_view camel_case_property) {
function TrimWhitespaceASCII (line 210) | void TrimWhitespaceASCII(std::string_view input, int position,
function StringToLowerASCII (line 237) | std::string StringToLowerASCII(std::string_view input) {
function TrimString (line 255) | std::string TrimString(std::string_view str) {
function TrimToStringView (line 272) | std::string_view TrimToStringView(std::string_view to_trim) {
function T (line 290) | T TrimStringT(T input, T trim_chars, TrimPositions positions) {
function TrimString (line 299) | std::string TrimString(std::string input, std::string trim_chars,
function TrimString (line 303) | std::string_view TrimString(std::string_view input, std::string_view...
function SplitStringByCharsOrderly (line 317) | base::InlineVector<std::string, 32> SplitStringByCharsOrderly(
function ReplaceAll (line 415) | void ReplaceAll(std::string& subject, std::string_view search,
function SafeStringConvert (line 424) | std::string SafeStringConvert(const char* str) {
function PtrToStr (line 428) | std::string PtrToStr(void* ptr) {
function ConvertParenthesesStringToVector (line 445) | bool ConvertParenthesesStringToVector(std::string& origin,
function SplitStringIgnoreBracket (line 458) | std::vector<std::string> SplitStringIgnoreBracket(std::string str,
function BothAreSpaces (line 485) | bool BothAreSpaces(char lhs, char rhs) {
function RemoveSpaces (line 489) | std::string RemoveSpaces(std::string_view str) {
function ReplaceMultiSpaceWithOne (line 500) | void ReplaceMultiSpaceWithOne(std::string& str) {
function ReplaceEscapeCharacterWithLiteralString (line 516) | void ReplaceEscapeCharacterWithLiteralString(std::string& input) {
function U8StringToU16 (line 574) | std::u16string U8StringToU16(std::string_view u8_string) {
function U16StringToU8 (line 579) | std::string U16StringToU8(std::u16string_view u16_string) {
function U8StringToU32 (line 584) | std::u32string U8StringToU32(std::string_view u8_string) {
function U32StringToU8 (line 635) | std::string U32StringToU8(std::u32string_view u32_string) {
function U16StringToU32 (line 667) | std::u32string U16StringToU32(std::u16string_view u16_string) {
function U32StringToU16 (line 703) | std::u16string U32StringToU16(std::u32string_view u32_string) {
function IsValidUtf8Bytes (line 727) | bool IsValidUtf8Bytes(const unsigned char* p, int count) {
function FormatStringWithVaList (line 737) | std::string FormatStringWithVaList(const char* format, va_list args) {
function FormatString (line 764) | std::string FormatString(const char* format, ...) {
function EqualsIgnoreCase (line 773) | bool EqualsIgnoreCase(std::string_view left, std::string_view right) {
FILE: base/src/string/string_utils_unittest.cc
type lynx (line 12) | namespace lynx {
type base (line 13) | namespace base {
function TEST (line 15) | TEST(StringUtils, ConvertParenthesesStringToVector) {
function TEST (line 58) | TEST(StringNumberConvertTest, SplitStringIgnoreBracket) {
function TEST (line 85) | TEST(StringNumberConvertTest, ReplaceMultiSpaceWithOne) {
function TEST (line 95) | TEST(StringNumberConvertTest, ReplaceEscapeCharacterWithLiteralStrin...
function TEST (line 121) | TEST(CamelCaseToDashCaseTest, CamelCaseToDashCase) {
function TEST (line 136) | TEST(SplitStringByCharsOrderlyTest, SplitStringByCharsOrderly) {
function TEST (line 181) | TEST(SplitStringByCharsOrderlyTest,
function TEST (line 193) | TEST(U8StringToU16Test, U8StringToU16) {
function TEST (line 278) | TEST(U16StringToU8Test, U16StringToU8) {
function TEST (line 339) | TEST(U8StringToU16Test, Utf16ToUtf16Empty) {
function TEST (line 343) | TEST(U8StringToU16Test, Utf8ToUtf16Ascii) {
function TEST (line 347) | TEST(U8StringToU16Test, Utf8ToUtf16Unicode) {
function TEST (line 351) | TEST(U16StringToU8Test, Utf16ToUtf8Empty) { EXPECT_EQ(U16StringToU8(...
function TEST (line 353) | TEST(U16StringToU8Test, Utf16ToUtf8Ascii) {
function TEST (line 357) | TEST(U16StringToU8Test, Utf16ToUtf8Unicode) {
function TEST (line 361) | TEST(FormatStringTest, FormatString) {
function TEST (line 388) | TEST(AppendStringTest, EmptyTest) {
function TEST (line 399) | TEST(AppendStringTest, StdStringTest) {
function TEST (line 409) | TEST(AppendStringTest, StdStringWithCStringTest) {
function TEST (line 417) | TEST(AppendStringTest, StdStringWithNonStringTest) {
type Foo (line 427) | struct Foo {
method Foo (line 428) | Foo() = default;
method Foo (line 429) | explicit Foo(std::int32_t x) : x_(x){}
function TEST (line 441) | TEST(AppendStringTest, CustomOperatorTest) {
function TEST (line 447) | TEST(StringUtils, SplitString) {
function TEST (line 530) | TEST(StringUtils, all) {
FILE: base/src/thread/timed_task.cc
type lynx (line 12) | namespace lynx {
type base (line 13) | namespace base {
FILE: base/src/thread/timed_task_unittest.cc
function usleep (line 15) | static void usleep(long num) {
type lynx (line 20) | namespace lynx {
type base (line 21) | namespace base {
class TimedTaskTest (line 23) | class TimedTaskTest : public ::testing::Test {
method TimedTaskTest (line 25) | TimedTaskTest() = default;
method SetUp (line 28) | void SetUp() override {
method TearDown (line 33) | void TearDown() override {
method WaitResult (line 43) | void WaitResult(int64_t delay) {
function TEST_F (line 61) | TEST_F(TimedTaskTest, SetTimeout) {
function TEST_F (line 74) | TEST_F(TimedTaskTest, SetInterval) {
function TEST_F (line 92) | TEST_F(TimedTaskTest, StopSetTimeout) {
function TEST_F (line 106) | TEST_F(TimedTaskTest, DISABLED_StopSetInterval) {
function TEST_F (line 127) | TEST_F(TimedTaskTest, StopAllTasks) {
function TEST_F (line 143) | TEST_F(TimedTaskTest, StopOtherTaskInSetTimeout) {
function TEST_F (line 155) | TEST_F(TimedTaskTest, StopSelfTaskInSetTimeout) {
function TEST_F (line 173) | TEST_F(TimedTaskTest, StopOtherTaskInSetInterval) {
function TEST_F (line 196) | TEST_F(TimedTaskTest, StopSelfTaskInSetInterval) {
FILE: base/src/timer/time_utils.cc
type lynx (line 16) | namespace lynx {
type base (line 17) | namespace base {
function CurrentSystemTimeMilliseconds (line 19) | uint64_t CurrentSystemTimeMilliseconds() {
function CurrentSystemTimeMicroseconds (line 25) | uint64_t CurrentSystemTimeMicroseconds() {
function CurrentTimeMilliseconds (line 31) | uint64_t CurrentTimeMilliseconds() {
function CurrentTimeMicroseconds (line 37) | uint64_t CurrentTimeMicroseconds() {
function CurrentThreadCPUTimeMicroseconds (line 43) | uint64_t CurrentThreadCPUTimeMicroseconds() {
function timespec (line 62) | timespec ToTimeSpecFromNow(uint64_t interval_time) {
FILE: base/src/timer/time_utils_unittest.cc
type lynx (line 9) | namespace lynx {
type base (line 10) | namespace base {
function TEST (line 12) | TEST(TimeUtils, GetCurrentTimeSimple) {
FILE: base/src/to_underlying_unittest.cc
type lynx (line 9) | namespace lynx {
function TEST (line 11) | TEST(ToUnderLyingTest, EnumClassTest) {
function TEST (line 35) | TEST(ToUnderLyingTest, EnumStructTest) {
function TEST (line 42) | TEST(ToUnderLyingTest, EnumTest) {
FILE: base/src/type_traits_addon_unittest.cc
type lynx (line 12) | namespace lynx {
type base (line 13) | namespace base {
type SimpleStruct (line 16) | struct SimpleStruct {}
function TEST (line 18) | TEST(TemplateUtil, RemoveCvRefT) {
FILE: base/src/value/base_string.cc
type lynx (line 12) | namespace lynx {
type base (line 13) | namespace base {
function RefCountedStringImpl (line 17) | RefCountedStringImpl& RefCountedStringImpl::Unsafe::kTrueString() {
function RefCountedStringImpl (line 23) | RefCountedStringImpl& RefCountedStringImpl::Unsafe::kFalseString() {
FILE: base/src/value/base_value.cc
type lynx (line 28) | namespace lynx {
type lepus (line 29) | namespace lepus {
function Value (line 71) | Value& Value::operator=(const Value& value) {
function Value (line 95) | Value& Value::operator=(Value&& value) noexcept {
function Value (line 281) | Value Value::ToLepusValue(bool deep_convert) const {
function CFunction (line 459) | CFunction Value::Function() const {
function CFunctionBuiltin (line 467) | CFunctionBuiltin Value::FunctionBuiltin() const {
function BuiltinFunctionTable (line 475) | BuiltinFunctionTable* Value::FunctionTable() const {
function Value (line 685) | Value Value::GetProperty(uint32_t idx) const {
function Value (line 713) | Value Value::GetProperty(const base::String& key) const {
function Value (line 808) | Value Value::GetPropertyFromTableOrArray(const std::string& key) con...
function Value (line 842) | Value Value::Clone(const Value& src, bool clone_as_jsvalue) {
function Value (line 846) | Value Value::CloneRecursively(const Value& src, bool clone_as_jsvalu...
function Value (line 932) | Value Value::ShallowCopy(const Value& src, bool clone_as_jsvalue) {
function lynx_value_type (line 1216) | lynx_value_type Value::ToLynxValueType(ValueType type) {
function ValueType (line 1259) | ValueType Value::LegacyTypeFromLynxValue(const lynx_value& value) {
function Value (line 1317) | Value Value::ToLepusValue(lynx_api_env env, const lynx_value& val,
function Value (line 1397) | Value Value::ToLepusArray(lynx_api_env env, const lynx_value& val,
function Value (line 1409) | Value Value::ToLepusMap(lynx_api_env env, const lynx_value& val, int...
function BASE_NEVER_INLINE (line 1515) | BASE_NEVER_INLINE CArray* Value::DummyArray() {
function BASE_NEVER_INLINE (line 1521) | BASE_NEVER_INLINE Dictionary* Value::DummyTable() {
function BASE_NEVER_INLINE (line 1527) | BASE_NEVER_INLINE ByteArray* Value::DummyByteArray() {
FILE: base/src/value/base_value_print.cc
type lynx (line 21) | namespace lynx {
type lepus (line 22) | namespace lepus {
FILE: base/src/value/base_value_unittest.cc
type lynx (line 16) | namespace lynx {
type base (line 17) | namespace base {
class BaseValueTest (line 19) | class BaseValueTest : public ::testing::Test {
method BaseValueTest (line 21) | BaseValueTest() = default;
method SetUp (line 24) | void SetUp() override {}
method TearDown (line 25) | void TearDown() override {}
function TEST_F (line 28) | TEST_F(BaseValueTest, BaseValueNull) {
function TEST_F (line 47) | TEST_F(BaseValueTest, BaseValueNumber) {
function TEST_F (line 117) | TEST_F(BaseValueTest, BaseValueString) {
function TEST_F (line 165) | TEST_F(BaseValueTest, BaseValueArray) {
function TEST_F (line 196) | TEST_F(BaseValueTest, BaseValueMap) {
function TEST_F (line 240) | TEST_F(BaseValueTest, BaseValueArrayBuffer) {
function TEST_F (line 251) | TEST_F(BaseValueTest, BaseValuePointer) {
function TEST_F (line 268) | TEST_F(BaseValueTest, BaseValueCloneValue) {
function TEST_F (line 332) | TEST_F(BaseValueTest, Dictionary) {
function TestLynxValueIteratorCallback (line 525) | static inline void TestLynxValueIteratorCallback(lynx_api_env env,
function TestIterateLynxValue (line 533) | static inline void TestIterateLynxValue(
function TEST_F (line 539) | TEST_F(BaseValueTest, LynxValueAPI) {
FILE: base/src/value/byte_array.cc
type lynx (line 6) | namespace lynx {
type lepus (line 7) | namespace lepus {
FILE: base/src/value/lynx_value_api_impl.cc
function lynx_api_status (line 13) | lynx_api_status lynx_value_typeof(lynx_api_env env, lynx_value value,
function lynx_api_status (line 19) | lynx_api_status lynx_value_create_null(lynx_api_env env, lynx_value* res...
function lynx_api_status (line 24) | lynx_api_status lynx_value_create_bool(lynx_api_env env, bool value,
function lynx_api_status (line 30) | lynx_api_status lynx_value_create_double(lynx_api_env env, double value,
function lynx_api_status (line 36) | lynx_api_status lynx_value_create_int32(lynx_api_env env, int32_t value,
function lynx_api_status (line 42) | lynx_api_status lynx_value_create_uint32(lynx_api_env env, uint32_t value,
function lynx_api_status (line 48) | lynx_api_status lynx_value_create_int64(lynx_api_env env, int64_t value,
function lynx_api_status (line 54) | lynx_api_status lynx_value_create_uint64(lynx_api_env env, uint64_t value,
function lynx_api_status (line 60) | lynx_api_status lynx_value_create_string_utf8(lynx_api_env env, const ch...
function lynx_api_status (line 69) | lynx_api_status lynx_value_create_map(lynx_api_env env, lynx_value* resu...
function lynx_api_status (line 76) | lynx_api_status lynx_value_create_array(lynx_api_env env, lynx_value* re...
function lynx_api_status (line 83) | lynx_api_status lynx_value_get_number(lynx_api_env env, lynx_value value,
function lynx_api_status (line 119) | lynx_api_status lynx_value_get_double(lynx_api_env env, lynx_value value,
function lynx_api_status (line 129) | lynx_api_status lynx_value_get_int32(lynx_api_env env, lynx_value value,
function lynx_api_status (line 138) | lynx_api_status lynx_value_get_uint32(lynx_api_env env, lynx_value value,
function lynx_api_status (line 147) | lynx_api_status lynx_value_get_int64(lynx_api_env env, lynx_value value,
function lynx_api_status (line 156) | lynx_api_status lynx_value_get_uint64(lynx_api_env env, lynx_value value,
function lynx_api_status (line 165) | lynx_api_status lynx_value_get_bool(lynx_api_env env, lynx_value value,
function lynx_api_status (line 174) | lynx_api_status lynx_value_get_string_utf8(lynx_api_env env, lynx_value ...
function lynx_api_status (line 197) | lynx_api_status lynx_value_get_array_length(lynx_api_env env, lynx_value...
function lynx_api_status (line 208) | lynx_api_status lynx_value_set_element(lynx_api_env env, lynx_value object,
function lynx_api_status (line 218) | lynx_api_status lynx_value_get_element(lynx_api_env env, lynx_value object,
function lynx_api_status (line 230) | lynx_api_status lynx_value_has_property(lynx_api_env env, lynx_value obj...
function lynx_api_status (line 241) | lynx_api_status lynx_value_get_property_names(lynx_api_env env,
function lynx_api_status (line 257) | lynx_api_status lynx_value_set_named_property(lynx_api_env env,
function lynx_api_status (line 269) | lynx_api_status lynx_value_get_named_property(lynx_api_env env,
function lynx_api_status (line 284) | lynx_api_status lynx_value_iterate_value(lynx_api_env env, lynx_value ob...
function lynx_api_status (line 312) | lynx_api_status lynx_value_add_reference(lynx_api_env env, lynx_value va...
function lynx_api_status (line 322) | lynx_api_status lynx_value_remove_reference(lynx_api_env env, lynx_value...
FILE: base/src/value/lynx_value_extended_empty.cc
function lynx_api_status (line 7) | lynx_api_status lynx_value_get_bool_ext(lynx_api_env env, lynx_value value,
function lynx_api_status (line 12) | lynx_api_status lynx_value_get_double_ext(lynx_api_env env, lynx_value v...
function lynx_api_status (line 17) | lynx_api_status lynx_value_get_int32_ext(lynx_api_env env, lynx_value va...
function lynx_api_status (line 22) | lynx_api_status lynx_value_get_int64_ext(lynx_api_env env, lynx_value va...
function lynx_api_status (line 27) | lynx_api_status lynx_value_is_integer_ext(lynx_api_env env, lynx_value v...
function lynx_api_status (line 32) | lynx_api_status lynx_value_get_integer_ext(lynx_api_env env, lynx_value ...
function lynx_api_status (line 37) | lynx_api_status lynx_value_get_number_ext(lynx_api_env env, lynx_value v...
function lynx_api_status (line 42) | lynx_api_status lynx_value_get_string_ref_ext(lynx_api_env env,
function lynx_api_status (line 47) | lynx_api_status lynx_value_get_external_ext(lynx_api_env env, lynx_value...
function lynx_api_status (line 52) | lynx_api_status lynx_value_get_length_ext(lynx_api_env env, lynx_value v...
function lynx_api_status (line 57) | lynx_api_status lynx_value_is_array_ext(lynx_api_env env, lynx_value value,
function lynx_api_status (line 62) | lynx_api_status lynx_value_set_element_ext(lynx_api_env env, lynx_value ...
function lynx_api_status (line 67) | lynx_api_status lynx_value_get_element_ext(lynx_api_env env, lynx_value ...
function lynx_api_status (line 72) | lynx_api_status lynx_value_is_map_ext(lynx_api_env env, lynx_value value,
function lynx_api_status (line 77) | lynx_api_status lynx_value_set_named_property_ext(lynx_api_env env,
function lynx_api_status (line 84) | lynx_api_status lynx_value_has_named_property_ext(lynx_api_env env,
function lynx_api_status (line 91) | lynx_api_status lynx_value_get_named_property_ext(lynx_api_env env,
function lynx_api_status (line 98) | lynx_api_status lynx_value_is_function_ext(lynx_api_env env, lynx_value ...
function lynx_api_status (line 103) | lynx_api_status lynx_value_to_string_utf8_ext(lynx_api_env env,
function lynx_api_status (line 108) | lynx_api_status lynx_value_typeof_ext(lynx_api_env env, lynx_value value,
function lynx_api_status (line 113) | lynx_api_status lynx_value_iterate_value_ext(
function lynx_api_status (line 119) | lynx_api_status lynx_value_equals_ext(lynx_api_env env, lynx_value lhs,
function lynx_api_status (line 124) | lynx_api_status lynx_value_deep_copy_value_ext(lynx_api_env env, lynx_va...
function lynx_api_status (line 129) | lynx_api_status lynx_value_print_ext(lynx_api_env env, lynx_value value,
function lynx_api_status (line 135) | lynx_api_status lynx_value_add_reference_ext(lynx_api_env env, lynx_valu...
function lynx_api_status (line 140) | lynx_api_status lynx_value_add_reference_weak_ext(lynx_api_env env,
function lynx_api_status (line 146) | lynx_api_status lynx_value_move_reference_ext(lynx_api_env env,
function lynx_api_status (line 153) | lynx_api_status lynx_value_remove_reference_ext(lynx_api_env env,
function lynx_api_status (line 159) | lynx_api_status lynx_value_has_ref_count_ext(lynx_api_env env, lynx_valu...
function lynx_api_status (line 164) | lynx_api_status lynx_value_is_uninitialized_ext(lynx_api_env env,
FILE: base/src/value/path_parser.cc
type lynx (line 11) | namespace lynx {
type lepus (line 12) | namespace lepus {
function PathVector (line 14) | PathVector ParseValuePath(const std::string &path) {
FILE: base/src/value/path_parser_unittest.cc
type lynx (line 11) | namespace lynx {
function TEST (line 13) | TEST(LepusPathParserTest, BasicUsageTest) {
function TEST (line 43) | TEST(LepusPathParserTest, StartsWithBracketsTest) {
function TEST (line 50) | TEST(LepusPathParserTest, BracketsNotMatchTest) {
function TEST (line 58) | TEST(LepusPathParserTest, NonNumberInBracketsTest) {
function TEST (line 65) | TEST(LepusPathParserTest, MultiBracketsTest) {
function TEST (line 72) | TEST(LepusPathParserTest, EscapeCharTest) {
FILE: base/src/value/table.cc
type lynx (line 9) | namespace lynx {
type lepus (line 10) | namespace lepus {
FILE: base/src/vector.cc
type MapStatisticsEntry (line 17) | struct MapStatisticsEntry {
function ClearBaseMapStatistics (line 33) | void ClearBaseMapStatistics() {
function PrintBaseMapStatistics (line 38) | void PrintBaseMapStatistics() {
type lynx (line 157) | namespace lynx {
type base (line 158) | namespace base {
FILE: base/src/vector_unittest.cc
type lynx (line 23) | namespace lynx {
type base (line 24) | namespace base {
function InsertionSort (line 40) | inline void InsertionSort(BidirectionalIterator first,
type Matrix3 (line 60) | struct Matrix3 {
method Matrix3 (line 85) | Matrix3() noexcept = default;
method Matrix3 (line 87) | Matrix3(float e00, float e01, float e02, float e10, float e11, flo...
method Matrix3 (line 92) | explicit Matrix3(const float arr[9]) {
method Matrix3 (line 106) | Matrix3& Set(const float e00, const float e01, const float e02,
function _checkVector (line 126) | void _checkVector([[maybe_unused]] const Vector<T>& array,
function TEST (line 135) | TEST(Vector, InlineTypeNoFullValueInitialization) {
function TEST (line 179) | TEST(Vector, ByteArray) {
type TinyTrivialStruct (line 245) | struct TinyTrivialStruct {
function TEST (line 249) | TEST(Vector, TrivialTinyInt){
function TEST (line 268) | TEST(Vector, TrivialTinyStruct){
function TEST (line 290) | TEST(Vector, FromStream) {
function TEST (line 321) | TEST(Vector, FromString) {
function TEST (line 333) | TEST(Vector, Pointer) {
function TEST (line 375) | TEST(Vector, ConstructFill) {
function TEST (line 522) | TEST(Vector, InlineSwap) {
function TEST (line 581) | TEST(Vector, Inline) {
function TEST (line 757) | TEST(Vector, InlineSafety) {
function TEST (line 987) | TEST(Vector, InlineNontrivial) {
function TEST (line 1135) | TEST(Vector, Trivial) {
function TEST (line 1746) | TEST(Vector, Nontrivial) {
function TEST (line 2243) | TEST(Vector, NontrivialHintOfTriviallyDestructibleAfterMove) {
function TEST (line 2778) | TEST(Vector, NontrivialHintOfTriviallyRelocatable) {
function TEST (line 3317) | TEST(Vector, Nontrivial2) {
function TEST (line 3402) | TEST(Vector, PairElement) {
function TEST (line 3462) | TEST(Vector, DestructOrder) {
function TEST (line 3512) | TEST(Vector, Slice) {
function TEST (line 3551) | TEST(Vector, Compare) {
function TEST (line 3627) | TEST(Vector, StackContainer) {
function TEST (line 3649) | TEST(Vector, Algorithms) {
function TEST (line 3750) | TEST(Vector, AlgorithmsNontrivial) {
function TEST (line 3899) | TEST(Vector, ArrayEmplace) {
function TEST (line 3927) | TEST(VectorIntTest, BasicOperations) {
function TEST (line 3944) | TEST(VectorStringTest, BasicOperations) {
function TEST (line 3955) | TEST(VectorIntTest, ElementAccess) {
function TEST (line 3965) | TEST(VectorStringTest, ElementAccess) {
function TEST (line 3972) | TEST(VectorIntTest, CapacityManagement) {
function TEST (line 4036) | TEST(VectorStringTest, CapacityManagement) {
function TEST (line 4045) | TEST(VectorIntTest, InsertOperations) {
function TEST (line 4057) | TEST(VectorStringTest, InsertOperations) {
function TEST (line 4067) | TEST(VectorIntTest, EdgeCases) {
function TestSet (line 4081) | static void TestSet() {
function TEST (line 4138) | TEST(Vector, OrderedFlatSet) {
function TEST (line 4143) | TEST(Vector, InlineOrderedFlatSet) {
function TestMap1 (line 4149) | static void TestMap1() {
function TestMap2 (line 4259) | static void TestMap2() {
function TEST (line 4339) | TEST(Vector, OrderedFlatMap) {
function TEST (line 4346) | TEST(Vector, InlineOrderedFlatMap) {
function TEST (line 4353) | TEST(Vector, MapInsertOrAssign) {
function TEST (line 4394) | TEST(Vector, MapEmplaceOrAssign) {
function TEST (line 4438) | TEST(Vector, SetInsert) {
function TEST (line 4462) | TEST(Vector, MapEmplace) {
function TEST (line 4532) | TEST(MapStringTest, BasicOperations) {
function TEST (line 4545) | TEST(MapStringTest, ElementAccess) {
function TEST (line 4586) | TEST(MapStringTest, InsertUpdate) {
function TEST (line 4603) | TEST(MapStringTest, EraseOperations) {
function TEST (line 4623) | TEST(SetStringTest, Iterators) {
function TEST (line 4639) | TEST(SetStringTest, FrontBack) {
function TEST (line 4667) | TEST(SetStringTest, Basic) {
function TEST (line 4687) | TEST(MapStringTest, Iterators) {
function TEST (line 4710) | TEST(MapStringTest, FrontBack) {
function TEST (line 4749) | TEST(MapStringTest, EdgeCases) {
function TEST (line 4763) | TEST(MapStringTest, InsertOrAssign) {
function TEST (line 4787) | TEST(MapStringTest, EmplaceOrAssign) {
function TEST (line 4812) | TEST(MapStringTest, EmplacePiecewise) {
function TEST (line 4832) | TEST(Vector, LinearMapInsertOrAssign) {
function TEST (line 4873) | TEST(Vector, LinearMapEmplaceOrAssign) {
function TEST (line 4917) | TEST(Vector, LinearSetInsert) {
function TEST (line 4941) | TEST(Vector, LinearMapEmplace) {
function TEST (line 5011) | TEST(MapStringTest, LinearBasicOperations) {
function TEST (line 5024) | TEST(MapStringTest, LinearElementAccess) {
function TEST (line 5089) | TEST(MapStringTest, LinearInsertUpdate) {
function TEST (line 5106) | TEST(MapStringTest, LinearEraseOperations) {
function TEST (line 5125) | TEST(SetStringTest, LinearIterators) {
function TEST (line 5141) | TEST(SetStringTest, LinearFrontBack) {
function TEST (line 5169) | TEST(SetStringTest, LinearBasic) {
function TEST (line 5189) | TEST(MapStringTest, LinearIterators) {
function TEST (line 5212) | TEST(MapStringTest, LinearFrontBack) {
function TEST (line 5251) | TEST(MapStringTest, LinearEdgeCases) {
function TEST (line 5265) | TEST(MapStringTest, LinearInsertOrAssign) {
function TEST (line 5289) | TEST(MapStringTest, LinearEmplaceOrAssign) {
function TEST (line 5314) | TEST(MapStringTest, LinearEmplacePiecewise) {
function AssertMapContent_ABC_123 (line 5336) | bool AssertMapContent_ABC_123(MapType& m) {
function AssertMapContent_abc_123 (line 5342) | bool AssertMapContent_abc_123(MapType& m) {
function TEST (line 5348) | TEST(MapStringTest, MixedInlineSize) {
function TEST (line 5465) | TEST(MapStringTest, LinearMixedInlineSize) {
function AssertSetContent_ABC (line 5584) | bool AssertSetContent_ABC(const SetType& m) {
function AssertSetContent_abc (line 5589) | bool AssertSetContent_abc(const SetType& m) {
function TEST (line 5594) | TEST(SetStringTest, Emplace) {
function TEST (line 5604) | TEST(SetStringTest, LinearEmplace) {
function TEST (line 5614) | TEST(SetStringTest, MixedInlineSize) {
function TEST (line 5722) | TEST(SetStringTest, LinearMixedInlineSize) {
function TEST (line 5830) | TEST(LinearMap, FromSourceArray) {
function TEST (line 5942) | TEST(LinearSet, FromSourceArray) {
function TEST (line 6041) | TEST(OrderedMap, Swap) {
function TEST (line 6151) | TEST(LinearMap, Swap) {
function TEST (line 6261) | TEST(OrderedSet, Swap) {
function TEST (line 6359) | TEST(LinearSet, Swap) {
function AssertMapContent_ABCbD_1232040 (line 6459) | bool AssertMapContent_ABCbD_1232040(MapType& m) {
function AssertMapContent_ABCbD_102302040 (line 6465) | bool AssertMapContent_ABCbD_102302040(MapType& m) {
function AssertMapContent_AbCD_10203040 (line 6471) | bool AssertMapContent_AbCD_10203040(MapType& m) {
function AssertMapContent_AC_1030 (line 6477) | bool AssertMapContent_AC_1030(MapType& m) {
function TEST (line 6482) | TEST(OrderedMap, Merge) {
function TEST (line 6548) | TEST(LinearMap, Merge) {
type MergeAssignKeyPolicy (line 6615) | struct MergeAssignKeyPolicy : public Redu
Copy disabled (too large)
Download .json
Condensed preview — 9795 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (16,480K chars).
[
{
"path": ".clang-format",
"chars": 21,
"preview": "BasedOnStyle: Google\n"
},
{
"path": ".editorconfig",
"chars": 229,
"preview": "# EditorConfig is awesome: https://EditorConfig.org\n\n# top-most EditorConfig file\nroot = true\n\n[*]\nindent_style = space\n"
},
{
"path": ".github/ISSUE_TEMPLATE/1-bug-report.en-US.yml",
"chars": 1739,
"preview": "name: '🐞 Bug Report'\ndescription: Report a bug to Lynx\ntitle: '[Bug]: '\ntype: Bug\nlabels: ['pending triage']\nbody:\n - t"
},
{
"path": ".github/ISSUE_TEMPLATE/2-feature-request.en-US.yml",
"chars": 1059,
"preview": "name: '✨ Feature Request'\ndescription: Submit a new feature request to Lynx\ntitle: '[Feature]: '\ntype: Feature\nlabels: ["
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 332,
"preview": "---\ncontact_links:\n - about: 'Please raise issues about framework or toolset on its own repo.'\n name: Framework or T"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE.md",
"chars": 854,
"preview": "<!--\n Thank you for submitting a pull request!\n\n We appreciate the time and effort you have invested in making these c"
},
{
"path": ".github/actions/android-explorer-build/action.yml",
"chars": 1192,
"preview": "name: build android explorer\n\ndescription: build android explorer apk\n\ninputs:\n abi-list:\n description: The abi list"
},
{
"path": ".github/actions/android-sdk-release/action.yml",
"chars": 1612,
"preview": "name: build android sdk\n\ndescription: build android sdk and publish aar to maven if build-type is 'release'\n\ninputs:\n v"
},
{
"path": ".github/actions/clay-macos-build/action.yml",
"chars": 1131,
"preview": "name: build clay example\n\ndescription: build clay example\n\nruns:\n using: composite\n steps:\n - name: Install Common "
},
{
"path": ".github/actions/common-deps/action.yml",
"chars": 4382,
"preview": "name: install common dependencies\n\ndescription: pull common source and binary dependencies via habitat.\n\ninputs:\n concu"
},
{
"path": ".github/actions/free-android-disk/action.yml",
"chars": 595,
"preview": "name: Free Android Disk Space\n\ndescription: Free up disk space on Android runner.\n\nruns:\n using: composite\n steps:\n "
},
{
"path": ".github/actions/generate-changelog/action.yml",
"chars": 3473,
"preview": "name: generate changelog\n\ndescription: Using git-cliff to generate changelog according to the given reference range\n\ninp"
},
{
"path": ".github/actions/get-latest-tag/action.yml",
"chars": 1670,
"preview": "name: Get Latest Ancestor Tag\n\ndescription: Get the latest ancestor tag of the current commit.\n\ninputs:\n current-tag:\n "
},
{
"path": ".github/actions/harmony-explorer-build/action.yml",
"chars": 906,
"preview": "name: build harmony explorer\n\ndescription: build harmony explorer hap\n\nruns:\n using: composite\n steps:\n - name: Ins"
},
{
"path": ".github/actions/ios-common-deps/action.yml",
"chars": 1547,
"preview": "name: setup ruby cache\n\ndescription: setup ruby cache for the Lynx iOS build stage\n\ninputs:\n path:\n default: 'lynx/r"
},
{
"path": ".github/actions/ios-explorer-build/action.yml",
"chars": 1718,
"preview": "name: build ios explorer\n\ndescription: build ios explorer app\n\ninputs:\n build-arch:\n description: The architecture o"
},
{
"path": ".github/actions/ios-sdk-publish/action.yml",
"chars": 1695,
"preview": "name: publish ios sdk\n\ndescription: package ios source code, upload the zip to release and publish the podspec file to c"
},
{
"path": ".github/actions/macos-explorer-build/action.yml",
"chars": 1661,
"preview": "name: build macos explorer\n\ndescription: build macos explorer\n\ninputs:\n build-arch:\n description: The architecture o"
},
{
"path": ".github/actions/release-changelog/action.yml",
"chars": 1524,
"preview": "name: release changelog\n\ndescription: Truncating changelog to max 124000 chars and pushing changelog to release note\n\nin"
},
{
"path": ".github/actions/setup-android-env/action.yml",
"chars": 650,
"preview": "name: setup android enviroment\n\ndescription: Setup Android enviroment, which includes JDK, Android SDK and NDK.\n\nruns:\n "
},
{
"path": ".github/actions/windows-common-deps/action.yml",
"chars": 4791,
"preview": "name: install windows common dependencies\n\ndescription: pull common source and binary dependencies via habitat for windo"
},
{
"path": ".github/actions/windows-explorer-build/action.yml",
"chars": 2603,
"preview": "name: build windows explorer\n\ndescription: build windows explorer apk.\n\ninputs:\n build-arch:\n description: The archi"
},
{
"path": ".github/workflows/ci.yml",
"chars": 32611,
"preview": "name: ci\n\non:\n pull_request:\n push:\n branches:\n - CQ-*\n - cq-*\n\ndefaults:\n run:\n working-directory: l"
},
{
"path": ".github/workflows/cocoapods_token_keepalive.yml",
"chars": 715,
"preview": "name: CocoaPods Token Keepalive\n\non:\n schedule:\n - cron: '0 4 * * *'\n workflow_dispatch:\njobs:\n token-keepalive:\n "
},
{
"path": ".github/workflows/codeql.yml",
"chars": 4987,
"preview": "# For most projects, this workflow file will not need changing; you simply need\n# to commit it to your repository.\n#\n# Y"
},
{
"path": ".github/workflows/css-defines-publish.yml",
"chars": 1100,
"preview": "name: css_defines_publish\n\non: workflow_dispatch\n\njobs:\n css-defines-publish:\n runs-on: ubuntu-latest\n environmen"
},
{
"path": ".github/workflows/issue-management.yml",
"chars": 1237,
"preview": "name: issue_management\non:\n issues:\n types:\n - opened\n - assigned\n\npermissions:\n issues: write\n\njobs:\n a"
},
{
"path": ".github/workflows/lynx-core-publish.yml",
"chars": 1214,
"preview": "name: lynx_core_publish\n\non: workflow_dispatch\n\njobs:\n lynx_types_publish:\n runs-on: ubuntu-latest\n environment: "
},
{
"path": ".github/workflows/lynx-types-publish.yml",
"chars": 1466,
"preview": "name: lynx_types_publish\n\non:\n workflow_dispatch:\n inputs:\n tag:\n description: 'The npm tag to publish w"
},
{
"path": ".github/workflows/publish-release.yml",
"chars": 10459,
"preview": "name: publish-release\non:\n workflow_dispatch:\n inputs:\n tag:\n description: 'release tag'\n require"
},
{
"path": ".github/workflows/sdk-release-test.yml",
"chars": 2782,
"preview": "name: sdk-release-test\n\non:\n workflow_dispatch:\n inputs:\n commitId:\n description: 'specific commit ID to"
},
{
"path": ".github/workflows/tasm-publish.yml",
"chars": 5206,
"preview": "name: tasm_publish\n\non:\n push:\n branches:\n - develop\n paths:\n - 'oliver/lynx-tasm/package.json'\n workf"
},
{
"path": ".github/workflows/type-config-publish.yml",
"chars": 1595,
"preview": "name: type_config_publish\n\non:\n workflow_dispatch:\n inputs:\n tag:\n description: 'The npm tag to publish "
},
{
"path": ".github/workflows/type-element-api-publish.yml",
"chars": 2097,
"preview": "name: type_element_api_publish\n\non:\n push:\n branches:\n - develop\n paths:\n - 'js_libraries/type-element-"
},
{
"path": ".gitignore",
"chars": 4421,
"preview": "# Managed by Habitat\n/platform/android/gradle/wrapper/gradle-6.7.1-all.zip\n/build\n/buildtools\n/third_party/quickjs/src\n/"
},
{
"path": ".gn",
"chars": 535,
"preview": "# Copyright 2020 The Lynx Authors. All rights reserved.\n# Licensed under the Apache License Version 2.0 that can be foun"
},
{
"path": ".habitat",
"chars": 496,
"preview": "habitat_version = \"0.3.146-alpha.2\"\nsolutions = [\n {\n 'name': '.',\n 'deps_file': 'dependencies/DEPS',\n "
},
{
"path": ".npmrc",
"chars": 239,
"preview": "# We are using flatten config of eslint and not using prettier\n# Disable the default public-hoist-pattern(*-eslint-*, *-"
},
{
"path": ".prettierignore",
"chars": 252,
"preview": "__dist__/\ndist/\npackages/template-assembler-cli/lepus/**/*\npackages/lynx-core/__tests__/fixtures/**/*\npackages/lynx-core"
},
{
"path": ".prettierrc",
"chars": 135,
"preview": "{\n \"bracketSpacing\": true,\n \"printWidth\": 80,\n \"singleQuote\": true,\n \"tabWidth\": 2,\n \"trailingComma\": \"es5\",\n \"use"
},
{
"path": ".rtf/android-ut-lynx.template",
"chars": 1521,
"preview": "# Copyright 2024 The Lynx Authors. All rights reserved.\n\nbuilder({\n \"default\": {\n \"args\": [\n \"--par"
},
{
"path": ".rtf/config",
"chars": 35,
"preview": "plugins = [\"NativeUT\", \"AndroidUT\"]"
},
{
"path": ".rtf/native-ut-devtool.template",
"chars": 2933,
"preview": "# Copyright 2024 The Lynx Authors. All rights reserved.\n# Licensed under the Apache License Version 2.0 that can be foun"
},
{
"path": ".rtf/native-ut-lynx.template",
"chars": 7736,
"preview": "# Copyright 2024 The Lynx Authors. All rights reserved.\n# Licensed under the Apache License Version 2.0 that can be foun"
},
{
"path": ".tools_shared",
"chars": 3607,
"preview": "checker-config:\n default-disable-checkers:\n - 'deps'\n - 'spell'\n file-type-checker:\n binary-files-allow-list:"
},
{
"path": "AGENTS.md",
"chars": 813,
"preview": "# AI Context & Guidelines\n\nThis repository contains a dedicated directory structure for AI agents to better understand t"
},
{
"path": "BUILD.gn",
"chars": 1734,
"preview": "# Copyright 2024 The Lynx Authors. All rights reserved.\n# Licensed under the Apache License Version 2.0 that can be foun"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 3302,
"preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\nIn the interest of fostering an open and welcoming environment, we"
},
{
"path": "CONTRIBUTING.md",
"chars": 11636,
"preview": "# Contributing to Lynx\n\nFirst off, thank you for considering contributing to Lynx!\nWe welcome you to join Lynx Authors a"
},
{
"path": "CPPLINT.cfg",
"chars": 536,
"preview": "set noparent\nfilter=-,+lynx_custom/new_java_ref,+build/namespaces,+build/c++14,+build/class,+build/c++tr1,+build/depreca"
},
{
"path": "DEFAULT_REVIEWERS",
"chars": 970,
"preview": "nhsprite\nAdrianLCA\nAwuiil\nBiggerDragonDragon\nChrisChan0668\ncjnhust\ncodeoxpower\ncolinaaa\ncoolkiid\nDango-2021\ndeanjingshui"
},
{
"path": "Gemfile",
"chars": 75,
"preview": "source 'https://rubygems.org'\ngem \"cocoapods\", '1.11.3'\ngem \"ffi\", \"1.16.3\""
},
{
"path": "LICENSE",
"chars": 11359,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "NOTICE",
"chars": 104,
"preview": "Lynx Project\nCopyright (c) 2018-2024 ByteDance Inc.\nCopyright (c) 2024 TikTok Inc.\nAll rights reserved.\n"
},
{
"path": "README.md",
"chars": 6180,
"preview": "<div align=\"center\">\n\n<p>\n <a href=\"https://lynxjs.org\">\n <img width=\"500\" alt=\"Lynx\" src=\"https://github.com/user-a"
},
{
"path": "SECURITY.md",
"chars": 505,
"preview": "# Reporting a Vulnerability\n\nIf you happen to discover a potential security issue in this project, please do **not** cre"
},
{
"path": "agents/code_review/commit_message_format.md",
"chars": 546,
"preview": "## Conventions\n\n- All commit messages MUST be written in **English**.\n- Preferred format:\n\n Header:\n `[Type][Scope] Sh"
},
{
"path": "base/CPPLINT.cfg",
"chars": 546,
"preview": "set noparent\nfilter=-,+lynx_custom/new_java_ref,+build/namespaces,+build/c++14,+build/class,+build/c++tr1,+build/depreca"
},
{
"path": "base/README.md",
"chars": 1848,
"preview": "# About //lynx/base\nThis is a basic library for the lynx project, which contains some basic components and utility funct"
},
{
"path": "base/include/algorithm.h",
"chars": 1413,
"preview": "/*\n * Copyright 2006 The Android Open Source Project\n *\n * Use of this source code is governed by a BSD-style license th"
},
{
"path": "base/include/auto_create_optional.h",
"chars": 1553,
"preview": "// Copyright 2025 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/auto_reset.h",
"chars": 1883,
"preview": "// Copyright 2022 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/base_defines.h",
"chars": 838,
"preview": "// Copyright 2025 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/base_export.h",
"chars": 1324,
"preview": "// Copyright (c) 2012 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style l"
},
{
"path": "base/include/base_public_headers.gni",
"chars": 6441,
"preview": "# Copyright 2025 The Lynx Authors. All rights reserved.\n# Licensed under the Apache License Version 2.0 that can be foun"
},
{
"path": "base/include/base_trace/trace_event_utils.h",
"chars": 1027,
"preview": "// Copyright 2025 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/boost/unordered.h",
"chars": 311383,
"preview": "// Copyright 2001, 2002 Peter Dimov and Multi Media Ltd\n// Copyright 2002, 2018-2022 Peter Dimov\n// Copyright 2002-2018 "
},
{
"path": "base/include/bundled_optional.h",
"chars": 12012,
"preview": "// Copyright 2025 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/bundled_optional_lldb.py",
"chars": 3844,
"preview": "# Copyright 2025 The Lynx Authors. All rights reserved.\n# Licensed under the Apache License Version 2.0 that can be foun"
},
{
"path": "base/include/cast_util.h",
"chars": 610,
"preview": "// Copyright 2019 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/closure.h",
"chars": 5658,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/compiler_specific.h",
"chars": 1781,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/concurrent_queue.h",
"chars": 5226,
"preview": "// Copyright 2024 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/datauri_utils.h",
"chars": 1612,
"preview": "// Copyright 2024 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/debug/backtrace.h",
"chars": 916,
"preview": "// Copyright 2017 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/debug/lynx_assert.h",
"chars": 1701,
"preview": "// Copyright 2020 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/debug/lynx_error.h",
"chars": 4291,
"preview": "// Copyright 2023 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/expected.h",
"chars": 39022,
"preview": "// Copyright 2022 The Chromium Authors\n// Use of this source code is governed by a BSD-style license that can be\n// foun"
},
{
"path": "base/include/expected_internal.h",
"chars": 17751,
"preview": "// Copyright 2022 The Chromium Authors\n// Use of this source code is governed by a BSD-style license that can be\n// foun"
},
{
"path": "base/include/file_utils.h",
"chars": 884,
"preview": "// Copyright 2022 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/flex_optional.h",
"chars": 16158,
"preview": "// Copyright 2025 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/float_comparison.h",
"chars": 1837,
"preview": "// Copyright 2020 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/fml/LICENSE",
"chars": 1519,
"preview": "Copyright 2013 The Flutter Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or wit"
},
{
"path": "base/include/fml/concurrent_message_loop.h",
"chars": 2941,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/cpu_affinity.h",
"chars": 3301,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/delayed_task.h",
"chars": 2610,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/eintr_wrapper.h",
"chars": 1741,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/fml_trace_event_def.h",
"chars": 732,
"preview": "// Copyright 2025 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/fml/hash_combine.h",
"chars": 1150,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/macros.h",
"chars": 1784,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/make_copyable.h",
"chars": 2200,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/memory/ref_counted.h",
"chars": 5938,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/memory/ref_counted_internal.h",
"chars": 5072,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/memory/ref_ptr.h",
"chars": 11431,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/memory/ref_ptr_internal.h",
"chars": 1277,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/memory/task_runner_checker.h",
"chars": 1498,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/memory/weak_ptr.h",
"chars": 6848,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/memory/weak_ptr_internal.h",
"chars": 1473,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/message_loop.h",
"chars": 2883,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/message_loop_impl.h",
"chars": 4755,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/message_loop_task_queues.h",
"chars": 6825,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/platform/android/cpu_affinity.h",
"chars": 888,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/platform/android/message_loop_android.h",
"chars": 1925,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/platform/darwin/cf_utils.h",
"chars": 1732,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/platform/darwin/message_loop_darwin.h",
"chars": 1922,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/platform/harmony/message_loop_harmony.h",
"chars": 1328,
"preview": "// Copyright 2023 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/fml/platform/linux/message_loop_linux.h",
"chars": 1442,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/platform/linux/timerfd.h",
"chars": 1883,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/platform/thread_config_setter.h",
"chars": 645,
"preview": "// Copyright 2022 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/fml/platform/win/message_loop_win.h",
"chars": 1533,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/platform/win/task_runner_win32.h",
"chars": 2890,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/platform/win/task_runner_win32_window.h",
"chars": 1741,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/raster_thread_merger.h",
"chars": 5956,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/shared_thread_merger.h",
"chars": 3008,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/synchronization/atomic_object.h",
"chars": 880,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/synchronization/count_down_latch.h",
"chars": 1126,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/synchronization/semaphore.h",
"chars": 3387,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/synchronization/shared_mutex.h",
"chars": 1453,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/synchronization/shared_mutex_posix.h",
"chars": 804,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/synchronization/shared_mutex_std.h",
"chars": 810,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/synchronization/sync_switch.h",
"chars": 2164,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/synchronization/waitable_event.h",
"chars": 5334,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/task_queue_id.h",
"chars": 1502,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/task_runner.h",
"chars": 4396,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/task_runner_delegate.h",
"chars": 883,
"preview": "// Copyright 2022 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/fml/task_source.h",
"chars": 3046,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/task_source_grade.h",
"chars": 1356,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/thread.h",
"chars": 3090,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/thread_host.h",
"chars": 4209,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/time/chrono_timestamp_provider.h",
"chars": 1531,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/time/time_delta.h",
"chars": 4575,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/time/time_point.h",
"chars": 2845,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/time/timer.h",
"chars": 2770,
"preview": "// Copyright 2021 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/fml/time/timestamp_provider.h",
"chars": 1065,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/unique_fd.h",
"chars": 2964,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/unique_object.h",
"chars": 4518,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/fml/wakeable.h",
"chars": 898,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "base/include/geometry/point.h",
"chars": 1671,
"preview": "// Copyright 2023 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/geometry/rect.h",
"chars": 3269,
"preview": "// Copyright 2023 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/geometry/size.h",
"chars": 2256,
"preview": "// Copyright 2023 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/hybrid_map.h",
"chars": 31559,
"preview": "// Copyright 2025 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/linked_hash_map.h",
"chars": 30016,
"preview": "// Copyright 2024 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/linked_hash_map_lldb.py",
"chars": 3682,
"preview": "# Copyright 2024 The Lynx Authors. All rights reserved.\n# Licensed under the Apache License Version 2.0 that can be foun"
},
{
"path": "base/include/log/alog_wrapper.h",
"chars": 1209,
"preview": "// Copyright 2022 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/log/log_stream.h",
"chars": 9126,
"preview": "// Copyright 2022 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/log/logging.h",
"chars": 9689,
"preview": "// Copyright 2023 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/log/logging_base.h",
"chars": 1631,
"preview": "// Copyright 2023 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/log/logging_darwin.h",
"chars": 889,
"preview": "// Copyright 2022 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/lru_cache.h",
"chars": 1674,
"preview": "// Copyright 2024 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/lynx_actor.h",
"chars": 5714,
"preview": "// Copyright 2021 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/md5.h",
"chars": 2638,
"preview": "// Copyright 2017 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/memory/memory_pressure_level.h",
"chars": 1367,
"preview": "// Copyright 2026 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/no_destructor.h",
"chars": 2373,
"preview": "// Copyright 2018 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licen"
},
{
"path": "base/include/path_utils.h",
"chars": 2539,
"preview": "// Copyright 2021 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/platform/android/java_type.h",
"chars": 3568,
"preview": "// Copyright 2019 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/platform/android/jni_convert_helper.h",
"chars": 4015,
"preview": "// Copyright 2019 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/platform/android/jni_utils.h",
"chars": 2182,
"preview": "// Copyright 2023 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/platform/android/scoped_java_ref.h",
"chars": 8084,
"preview": "// Copyright (c) 2012 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style l"
},
{
"path": "base/include/platform/darwin/type_utils.h",
"chars": 748,
"preview": "// Copyright 2024 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/platform/harmony/harmony_vsync_manager.h",
"chars": 1629,
"preview": "// Copyright 2024 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/platform/harmony/napi_util.h",
"chars": 6757,
"preview": "// Copyright 2023 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/position.h",
"chars": 2095,
"preview": "// Copyright 2017 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/shared_vector.h",
"chars": 837,
"preview": "// Copyright 2021 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/sorted_for_each.h",
"chars": 3630,
"preview": "// Copyright 2022 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/string/quickjs_dtoa.h",
"chars": 494,
"preview": "// Copyright 2025 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/string/string_conversion_win.h",
"chars": 1465,
"preview": "// Copyright 2021 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/string/string_number_convert.h",
"chars": 1324,
"preview": "// Copyright 2019 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/string/string_utils.h",
"chars": 11231,
"preview": "// Copyright 2019 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/thread/base_semaphore.h",
"chars": 1055,
"preview": "// Copyright 2023 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/thread/pthread_rw_lock_guard.h",
"chars": 977,
"preview": "// Copyright 2023 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/thread/timed_task.h",
"chars": 2156,
"preview": "// Copyright 2022 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/timer/time_utils.h",
"chars": 960,
"preview": "// Copyright 2017 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/to_underlying.h",
"chars": 828,
"preview": "// Copyright 2022 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/type_traits_addon.h",
"chars": 6053,
"preview": "// Copyright 2022 The Chromium Authors\n// Use of this source code is governed by a BSD-style license that can be\n// foun"
},
{
"path": "base/include/value/array.h",
"chars": 5717,
"preview": "// Copyright 2019 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/value/base_string.h",
"chars": 22889,
"preview": "// Copyright 2019 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/value/base_string_lldb.py",
"chars": 1603,
"preview": "# Copyright 2025 The Lynx Authors. All rights reserved.\n# Licensed under the Apache License Version 2.0 that can be foun"
},
{
"path": "base/include/value/base_value.h",
"chars": 23879,
"preview": "// Copyright 2019 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/value/byte_array.h",
"chars": 1384,
"preview": "// Copyright 2021 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/value/lynx_api_types.h",
"chars": 1658,
"preview": "/**\n * Copyright (c) 2017 Node.js API collaborators. All Rights Reserved.\n *\n * Use of this source code is governed by a"
},
{
"path": "base/include/value/lynx_value_api.h",
"chars": 11683,
"preview": "// Copyright 2025 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/value/lynx_value_extended.h",
"chars": 5716,
"preview": "// Copyright 2025 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/value/lynx_value_lldb.py",
"chars": 3946,
"preview": "# Copyright 2024 The Lynx Authors. All rights reserved.\n# Licensed under the Apache License Version 2.0 that can be foun"
},
{
"path": "base/include/value/lynx_value_types.h",
"chars": 2155,
"preview": "/**\n * Copyright (c) 2017 Node.js API collaborators. All Rights Reserved.\n *\n * Use of this source code is governed by a"
},
{
"path": "base/include/value/path_parser.h",
"chars": 665,
"preview": "// Copyright 2021 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/value/ref_counted_class.h",
"chars": 1819,
"preview": "// Copyright 2023 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/value/ref_type.h",
"chars": 1234,
"preview": "// Copyright 2024 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/value/table.h",
"chars": 20904,
"preview": "// Copyright 2019 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/vector.h",
"chars": 152973,
"preview": "// Copyright 2024 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/vector2d.h",
"chars": 680,
"preview": "// Copyright 2017 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/vector_helper.h",
"chars": 1374,
"preview": "// Copyright 2024 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/vector_lldb.py",
"chars": 4882,
"preview": "# Copyright 2024 The Lynx Authors. All rights reserved.\n# Licensed under the Apache License Version 2.0 that can be foun"
},
{
"path": "base/include/version.h",
"chars": 3183,
"preview": "// Copyright 2019 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/include/version_util.h",
"chars": 3198,
"preview": "// Copyright 2019 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/platform/android/.gitignore",
"chars": 28,
"preview": ".cxx\n/build\n/CMakeLists_impl"
},
{
"path": "base/platform/android/BUILD.gn",
"chars": 1240,
"preview": "# Copyright 2025 The Lynx Authors. All rights reserved.\n# Licensed under the Apache License Version 2.0 that can be foun"
},
{
"path": "base/platform/android/CMakeLists.txt",
"chars": 307,
"preview": "# Set the minimum version of CMAKE that is required\ncmake_minimum_required(VERSION 3.4.1)\n\n# According to the build vari"
},
{
"path": "base/platform/android/build.gradle",
"chars": 5617,
"preview": "// Copyright 2025 The Lynx Authors. All rights reserved.\n// Licensed under the Apache License Version 2.0 that can be fo"
},
{
"path": "base/platform/android/gradle.properties",
"chars": 271,
"preview": "# Project-wide Gradle settings.\n\nARTIFACT_GROUP=org.lynxsdk.lynx\nARTIFACT_NAME=lynx-base\nDESCRIPTION=Lynx Base\nREPOSITOR"
},
{
"path": "base/platform/android/proguard-rules.pro",
"chars": 1405,
"preview": "# Add project specific ProGuard rules here.\n# You can control the set of applied configuration files using the\n# proguar"
}
]
// ... and 9595 more files (download for full content)
About this extraction
This page contains the full source code of the lynx-family/lynx GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 9795 files (56.3 MB), approximately 4.6M tokens, and a symbol index with 11620 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.