| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[Refactor] Remove obsolete Air build configuration - Remove the remaining enable_air wiring and stale Air build glue after the source cleanup landed. - Keep an empty iOS Lynx/Air subspec for hosts that still resolve that pod name, while deleting the obsolete Air GN shim files. - This preserves pod install compatibility without restoring the removed Air implementation path. AutoSubmit:True | 7 个月前 | |
[BugFix] LynxTemplateBundle should be set with URL from all paths Delete unused `url_` from binary reader and make sure that all paths to initialize a LynxTemplateBundle provide template URL attribute. Add `url_` to MTSRuntimePool to track the memory of this pool later. | 23 天前 | |
[Feature][ET][List][Part1] Add batched list update recording for template items Add ListUpdateInfoRecorder to snapshot existing template items and record insertions, removals, moves, and platform metadata updates. Generate "update-list-info" actions with removal indices from the old sequence and insertion/update positions adjusted for the batch. Expose template identity and list item metadata without materializing item elements. Use consistent template types for list data sources and reuse pools, and carry current metadata in insertion actions for moved items. TEST: Static diff review only; builds and tests were not run. | 3 天前 | |
[Feature][Image] Support bindloadstart on Android, iOS and Harmony Add loadstart events for CUI and ordinary image loading paths. Include the original source URL in the event detail and dispatch before loading begins. Add event forwarding and ordering tests. | 3 天前 | |
[Optimize] Add TemplateBundle preload APIs - Add preload bindings for Android, Darwin, and Harmony TemplateBundle APIs. - Forward bytecode and completion callbacks to the native bundle preload implementation. - Update API baselines and include the Harmony preload method in generated public API documentation. TEST: git diff --check | 23 天前 | |
[BugFix][Android] Support ByteArray encoding/decoding in Lepus message codec Add ByteArray serialization in LepusEncoder and decoding in LepusBuffer to allow passing raw byte[] through TemplateData. Previously, ByteArray was asserted as unsupported; now it is encoded with type marker and length, and decoded to byte[] on Android. Key changes: - Implement LepusEncoder::WriteBytes for lepus::Value ByteArray - Handle Value_ByteArray in WriteValue instead of asserting - Decode BYTE_ARRAY in LepusBuffer to byte[] - Add Android test TemplateDataTest.testByteArray to verify round-trip of byte[] in maps issue: f-97823675 AutoSubmit: true | 10 个月前 | |
[Refactor] Prepare Element type surface adapters Move Element-owned traversal and rendering helper surfaces out of FiberElement so call sites can target Element before the final type merge. Route existing FiberElement, selector, style, Radon, and runtime renderer call sites through the Element helper surface while preserving current behavior. Keep this first landing slice scoped to type-surface adapters and leave runtime IDL generator configuration changes to the later dependency-removal slice. TEST: git diff --check TEST: Remote validation passed for the same code patch before landing. AutoSubmit:True | 3 个月前 | |
[BugFix][Embedder] Preserve first screen across late viewport - Preserve first-screen or engine-reuse intent when LayoutInElement receives a layout request before the viewport is ready. - Apply the deferred intent to the next actual page layout without changing existing viewport scheduling. - Document the equal-constraint viewport follow-up and add legacy plus unified coverage for ready, late, and deferred viewport flows. TEST: dom_unittest_exec --gtest_filter='*LayoutInElement*FirstScreen*:*LayoutInElement*Reuse*' (36 passed) TEST: dom_unittest_exec (3218 passed, 36 skipped) AutoSubmit: True | 1 个月前 | |
[Optimize][CSS] Batch pseudo-state updates across platform response chains Batch pseudo-state changes across Android, iOS and Harmony response chains for conventional and fragment-layer rendering, avoiding repeated engine entry and style resolution for each node. Persist the complete chain before invalidation. Collect all affected Radon nodes before refreshing them once in Radon ancestor order, so descendants inherit updated custom properties even when fixed elements are reparented. Request at most one style resolve per batch, filtering unchanged states and skipping empty batches. Capture each node's stored state before replacement for Radon invalidation, while preserving the platform-reported transition for Fiber. This includes removal of hover and focus styles when single-bit callbacks replace the stored state. Preserve this behavior for repeated nodes and the local single-node callback. Remove obsolete single-node forwarding APIs from the engine and Android bridges, migrate platform adapters, and update API metadata and existing tests. Preserve node-local state callbacks and Objective-C compatibility entry points. Rebuild native proxy consumers together after the interface change. TEST: GN source-list formatting and full git lynx check passed. The previous revision passed 214 related DOM cases and Android arm64 JNI compilation. This rebase preserves the existing patch behavior; unit tests and native compilation were not rerun. Temporary tests remain excluded. Device and performance validation was not run. | 4 天前 | |
[BugFix] Always flush layout-in-element completion operations on NoPatch Make NoPatch completion flushing unconditional for layout-in-element mode so pending operations reach the UI queue even when layout is skipped. Remove the temporary settings gate, its cached field, and the Harmony trail key and API declaration. Preserve completion-before-flush ordering and the existing Fragment repaint path. Add four parameterized tests covering layout-in-element and ordinary mode with both NoPatch causes: no pending layout and layout suppressed by the caller. Document the completion publication requirement. TEST: All 43 ElementManager and NoPatch tests pass. Restoring the pre-fix Fragment-only condition makes both layout-in-element regression cases fail while ordinary-mode cases pass. Harmony API metadata regenerated; formatting and whitespace checks pass. | 1 个月前 | |
[Feature][Text] Add synchronous detached text measurement Add a renderer-owned detached Compose Text measurement entry with local style and font preparation, observable native failure results, independent CSS-pixel size snapshots and per-call cleanup. Validate page and thread ownership, normalize layout units and honor definite size constraints. Support Android, Darwin, Harmony and Textra without changing ordinary text measurement's zero-size fallback. Initialize owner identity before the first page flush and keep renderer bindings and TypeScript declarations in sync. Append measurement to the LepusNG built-in table without renumbering existing bindings. Invalidate the local Starlight measurement cache after temporary native text cleanup without requesting page layout. Remounting the same node rebuilds native state and measures updated text even under identical constraints or after a detached measurement failure. Give detached cleanup a separate backend hook. Textra releases only its measurement paragraph and listener, creates no Page and leaves published platform bundles alone. Keep mounted bundle publication and full teardown on their existing paths. Reduce detached-measurement code size with bounded numeric validation, non-virtual painting bridge forwarding and reuse of thread-id equality. Keep backend dispatch and layout-scale validation unchanged. Convert validated numeric modes to SLMeasureMode before backend dispatch and definite-size checks, so Clang's enum/float conversion diagnostics do not break builds. Keep mode validation ahead of the conversion. TEST: Clang -Werror=enum-float-conversion on the full translation unit reproduces both original diagnostics and passes after the fix. Full DOM suite: 3813 passed, 36 skipped, 18 disabled, including all 102 detached measurement cases in six thread configurations. Formatting and git diff --check passed. | 5 天前 | |
[Refactor] Prepare Element type surface adapters Move Element-owned traversal and rendering helper surfaces out of FiberElement so call sites can target Element before the final type merge. Route existing FiberElement, selector, style, Radon, and runtime renderer call sites through the Element helper surface while preserving current behavior. Keep this first landing slice scoped to type-surface adapters and leave runtime IDL generator configuration changes to the later dependency-removal slice. TEST: git diff --check TEST: Remote validation passed for the same code patch before landing. AutoSubmit:True | 3 个月前 | |
[BugFix][CSS] Treat typed numeric lengths as pixels - Parse typed numeric length values with the PX pattern while preserving CSS string parsing. - Forward lepus numeric values into the inline style data model without string conversion. - Add parser and DOM coverage for numeric pixel styles. TEST: css_parser_test_exec (224 passed) TEST: dom_unittest_exec (2837 passed, 36 skipped) AutoSubmit: true | 2 个月前 | |
[BugFix][CSS] Treat typed numeric lengths as pixels - Parse typed numeric length values with the PX pattern while preserving CSS string parsing. - Forward lepus numeric values into the inline style data model without string conversion. - Add parser and DOM coverage for numeric pixel styles. TEST: css_parser_test_exec (224 passed) TEST: dom_unittest_exec (2837 passed, 36 skipped) AutoSubmit: true | 2 个月前 | |
[Refactor] Prepare safe fragment mutation and redraw boundaries Make redraw invalidation virtual and stop Fragment propagation at the nearest platform layer. Preserve platform attribute updates with empty bundles. Reject null stacking parents and assert against self-parenting and traverse child snapshots during reparenting. Use the guarded operation for reinserting fixed and z-index descendants. TEST: Full DOM suite, 3192 passed, 36 skipped, 18 disabled (debug, Inspector enabled, ASan disabled). Use the caller-established ancestry invariant instead of scanning the parent chain. Verify that same-parent reparent requests preserve sibling order and clean dirty state. | 1 个月前 | |
[Refactor] Prepare safe fragment mutation and redraw boundaries Make redraw invalidation virtual and stop Fragment propagation at the nearest platform layer. Preserve platform attribute updates with empty bundles. Reject null stacking parents and assert against self-parenting and traverse child snapshots during reparenting. Use the guarded operation for reinserting fixed and z-index descendants. TEST: Full DOM suite, 3192 passed, 36 skipped, 18 disabled (debug, Inspector enabled, ASan disabled). Use the caller-established ancestry invariant instead of scanning the parent chain. Verify that same-parent reparent requests preserve sibling order and clean dirty state. | 1 个月前 | |
[Feature][DevTool][Animation] Expose animation inspection metadata - Add stable animation identifiers, origins, and current-time metadata for DevTool inspection. - Track CSS and imperative animation lifecycle metadata without changing animation rendering timestamps. - Lazily allocate imperative animation metadata only for elements that use imperative animation APIs. - Use an FML monotonic anchor so platform VSync timestamp epochs do not affect inspector pause and resume timing. - Freeze inspector current time when an animation stops or is destroyed. - Preserve pending keyframe-effect rebuild requests across play-state-only updates. - Retain Web Animation origin when a forward-filled animation finishes before its first style resolution. - Cover imperative animation lifecycle operations across both styling pipelines and API entry points. TEST: animation_unittests_exec (135 passed); dom_unittest_exec (3150 passed, 36 skipped); focused origin coverage (6 passed across 24 configurations) | 1 个月前 | |
initial commit | 1 年前 | |
initial commit | 1 年前 | |
[Optimize] sizeof(RadonComponent) Reorder and use `auto_create_optional` to wrap member variables of `RadonElement` to reduce memory use. issue: m-6383995029 | 1 年前 | |
[Feature][Animation] Prepare platform animation routing policy and delivery Capture the routing setting and preserve explicit frontend animator selection. Evaluate platform eligibility and deliver typed commands through the painting pipeline. Preserve imperative animations across new styling updates and share painting exception reporting. Routing remains disabled by default. SkipChecks: macro | 5 天前 | |
[Optimize][CSS] Batch pseudo-state updates across platform response chains Batch pseudo-state changes across Android, iOS and Harmony response chains for conventional and fragment-layer rendering, avoiding repeated engine entry and style resolution for each node. Persist the complete chain before invalidation. Collect all affected Radon nodes before refreshing them once in Radon ancestor order, so descendants inherit updated custom properties even when fixed elements are reparented. Request at most one style resolve per batch, filtering unchanged states and skipping empty batches. Capture each node's stored state before replacement for Radon invalidation, while preserving the platform-reported transition for Fiber. This includes removal of hover and focus styles when single-bit callbacks replace the stored state. Preserve this behavior for repeated nodes and the local single-node callback. Remove obsolete single-node forwarding APIs from the engine and Android bridges, migrate platform adapters, and update API metadata and existing tests. Preserve node-local state callbacks and Objective-C compatibility entry points. Rebuild native proxy consumers together after the interface change. TEST: GN source-list formatting and full git lynx check passed. The previous revision passed 214 related DOM cases and Android arm64 JNI compilation. This rebase preserves the existing patch behavior; unit tests and native compilation were not rerun. Temporary tests remain excluded. Device and performance validation was not run. | 4 天前 | |
[Refactor] Move template root and layout queue paths to Element - What changed: template root typing, worklet access, and layout queue paths move to Element-facing APIs. - Why it was needed: this continues the Element and FiberElement unification in a reviewable single-commit slice. - How it was verified: local changed-file checks are run for the compact chain. TEST: tools/env.sh git lynx check --changed AutoSubmit:True | 3 个月前 | |
[Optimize] Migrate lepus::Value to base directory Migrate lepus::Value to the base module. lepus::Value will be set up as a standalone target that can be independently depended upon by other higher-level modules. issue:m-6042769122 doc:https://github.com/lynx-family/lynx/discussions/172 | 1 年前 | |
[BugFix] Preserve layout-only insertion order Parallel element preparation can materialize a layout-only node before its render siblings are established, leaving its native view ahead of earlier siblings. Detached fixed nodes can also attach to the wrong parent before ancestor reattachment restores render ancestry. Defer self-insertion for Fiber elements without a render parent to their normal insertion or reattachment action. Preserve immediate insertion for mounted and non-Fiber elements, including the existing mounted-position handling for unified fixed boundaries. Add the enableLayoutOnlyTransitionOrderFix compiler option, enabled by default, through the same template metadata, PageConfig, and ElementManager path as enableParallelElement. Explicit false restores immediate insertion independently of the parallel-element strategy. Templates without the option keep the fix enabled. Cover initial insertion, insert-before, wrapper descendants, mounted transitions, and legacy/new/unified fixed reattachment and position changes across all six rendering parameters. Verify default and explicit metadata values and propagation through OnPageConfigDecoded. TEST: 179 focused layout-only and unified-fixed cases passed. Full DOM suite: 3545 passed, 36 skipped, 18 disabled. Binary decoder: 23 passed. PageConfig: 22 passed. Type configuration: 7 passed with no type errors. A local MetaFactory-to-reader check passed all 12 combinations of parallel mode, existing metadata, and omitted/false/true fix values. Configuration regeneration, coding-style, and cpplint passed. | 9 天前 | |
[BugFix] Preserve unified fixed subtree order and z-index attachment Layout-only unified fixed subtrees can receive children at the wrong root position, lose descendants after reinsertion, or move when creating a native view. Preserve their mounted order with root-only native entries and empty fixed boundaries, relative insertion points, and symmetric reattachment. Keep physical-tail appends free of prefix scans and retain the existing list for stable z-index and sticky sorting, without caching absolute positions. Gate the ordering repair behind enableUnifyFixedOrderFix, defaulting to false. Like enableUnifyFixedBehavior, it accepts page and native JSON configuration and falls back to settings (enable_unify_fixed_order_fix). Resolve settings at page load, so subsequent settings changes do not switch an existing page between ordering implementations. The ordering repair applies to Fiber unified fixed behavior with enableFixedNew disabled. When the switch is off, retain the legacy ordering, reattachment and transition paths without allocating the mounted-order sequence. Keep the Harmony configuration scope aligned with enableUnifyFixedBehavior without extending the exported trail-key enum. Include generated type support. Fix z-index attachment for layout-only unified fixed descendants on both switch values. Resolve their native stacking container to the page root, while retaining real native stacking contexts. Also remove stale negative-z entries when a child's new style is no longer negative, so returning to zero does not produce an out-of-range insertion index. Keep the shared Fragment stacking-context lookup unchanged. Keep the 39 ordering regressions enabled explicitly. Add four paired test groups covering append order, subtree reinsertion, empty boundaries and nested fixed transitions with both switch values. Verify config defaults, settings fallback, explicit overrides, native JSON and page-load stability. Add eight paired z-index regressions for dynamic changes, wrappers, nested fixed nodes, initial nonzero values, native stacking boundaries, native transitions and stacking-context removal/restoration. Fourteen of these sixteen cases fail without the z-index fix; all pass with it. TEST: dom_unittest_exec (3375 passed, 36 skipped, 18 disabled), including all 63 focused ordering, switch and z-index cases; page_config_unittests_exec (22 passed); type-config tests (7 passed, TypeScript clean); coding-style, cpplint, api-check2 and harmony-trail-key passed. GithubPR:https://github.com/lynx-family/lynx/pull/9914 | 21 天前 | |
[BugFix] Preserve unified fixed subtree order and z-index attachment Layout-only unified fixed subtrees can receive children at the wrong root position, lose descendants after reinsertion, or move when creating a native view. Preserve their mounted order with root-only native entries and empty fixed boundaries, relative insertion points, and symmetric reattachment. Keep physical-tail appends free of prefix scans and retain the existing list for stable z-index and sticky sorting, without caching absolute positions. Gate the ordering repair behind enableUnifyFixedOrderFix, defaulting to false. Like enableUnifyFixedBehavior, it accepts page and native JSON configuration and falls back to settings (enable_unify_fixed_order_fix). Resolve settings at page load, so subsequent settings changes do not switch an existing page between ordering implementations. The ordering repair applies to Fiber unified fixed behavior with enableFixedNew disabled. When the switch is off, retain the legacy ordering, reattachment and transition paths without allocating the mounted-order sequence. Keep the Harmony configuration scope aligned with enableUnifyFixedBehavior without extending the exported trail-key enum. Include generated type support. Fix z-index attachment for layout-only unified fixed descendants on both switch values. Resolve their native stacking container to the page root, while retaining real native stacking contexts. Also remove stale negative-z entries when a child's new style is no longer negative, so returning to zero does not produce an out-of-range insertion index. Keep the shared Fragment stacking-context lookup unchanged. Keep the 39 ordering regressions enabled explicitly. Add four paired test groups covering append order, subtree reinsertion, empty boundaries and nested fixed transitions with both switch values. Verify config defaults, settings fallback, explicit overrides, native JSON and page-load stability. Add eight paired z-index regressions for dynamic changes, wrappers, nested fixed nodes, initial nonzero values, native stacking boundaries, native transitions and stacking-context removal/restoration. Fourteen of these sixteen cases fail without the z-index fix; all pass with it. TEST: dom_unittest_exec (3375 passed, 36 skipped, 18 disabled), including all 63 focused ordering, switch and z-index cases; page_config_unittests_exec (22 passed); type-config tests (7 passed, TypeScript clean); coding-style, cpplint, api-check2 and harmony-trail-key passed. GithubPR:https://github.com/lynx-family/lynx/pull/9914 | 21 天前 | |
[Feature][DevTool][Animation] Expose animation inspection metadata - Add stable animation identifiers, origins, and current-time metadata for DevTool inspection. - Track CSS and imperative animation lifecycle metadata without changing animation rendering timestamps. - Lazily allocate imperative animation metadata only for elements that use imperative animation APIs. - Use an FML monotonic anchor so platform VSync timestamp epochs do not affect inspector pause and resume timing. - Freeze inspector current time when an animation stops or is destroyed. - Preserve pending keyframe-effect rebuild requests across play-state-only updates. - Retain Web Animation origin when a forward-filled animation finishes before its first style resolution. - Cover imperative animation lifecycle operations across both styling pipelines and API entry points. TEST: animation_unittests_exec (135 passed); dom_unittest_exec (3150 passed, 36 skipped); focused origin coverage (6 passed across 24 configurations) | 1 个月前 | |
[Refactor] Move Element class and layout entry helpers - What changed: class handling, CSS variable, event, template notification, pseudo, and layout dispatch helpers move to Element-facing APIs. - Why it was needed: this continues the Element and FiberElement unification in a reviewable single-commit slice. - How it was verified: css_test_exec and local changed-file checks pass. TEST: css_test_exec SkipChecks: macro AutoSubmit:True | 3 个月前 | |
[Refactor] Prepare Element type surface adapters Move Element-owned traversal and rendering helper surfaces out of FiberElement so call sites can target Element before the final type merge. Route existing FiberElement, selector, style, Radon, and runtime renderer call sites through the Element helper surface while preserving current behavior. Keep this first landing slice scoped to type-surface adapters and leave runtime IDL generator configuration changes to the later dependency-removal slice. TEST: git diff --check TEST: Remote validation passed for the same code patch before landing. AutoSubmit:True | 3 个月前 | |
Revert "Revert "[BugFix] Fix unified pipeline list-item flush and enable E2E tests" This reverts commit d3be627f" Revert commit dea2dd85bd7e1961c11a07a80a609ea3aaa3e425 | 3 天前 | |
[Feature] Resolve subtrees within an enclosing layout pipeline Extract ElementManager::ResolveSubtree from ordinary patch resolution. Resolve pending render tasks and Element mutations synchronously while preserving the caller-owned layout request state. Keep layout, completion callbacks and UI submission with the enclosing pipeline. Expose ResolveElementSubtree for attached Element and Compose roots, with optional native measurement preparation. Keep this capability independent of custom measurement and placement bindings. Align renderer registration, TypeScript declarations and TASM builtin expectations. Exercise nested subtree resolution and native Box alignment through existing Element hooks in legacy and unified layout pipelines. Verify deferred layout, pending request preservation and native content preparation. Keep type regressions in their own test file so either feature can land independently. TEST: standalone Resolve regressions; dom_unittest_exec; tasm_unittests_exec; type-element-api Vitest and TypeScript checks. | 3 天前 | |
[BugFix][Frame] Serialize load callbacks on the engine thread Parallel property flushing can dispatch frame load callbacks from a resolve worker and reenter an active unified pipeline. Return both callbacks through the element reduce queue, then defer them until the active pipeline completes. Preserve callback order, use a weak frame reference and recheck the existing source-equality condition. Queued callbacks capture the bundle data by value. Cover worker dispatch, pipeline deferral, source changes and frame destruction. TEST: dom_unittest_exec (3429 passed, 36 skipped, 18 disabled). TEST: pipeline_test_exec (46 passed). TEST: Three boundary regression tests fail with the original implementation and pass with the fix. coding-style and cpplint passed. Assisted-by: Codex AutoLand: release/4.2 | 11 天前 | |
[BugFix] Complete setup timing when engine reuse produces no patch A reused engine runs the setup pipeline for a newly created LynxView. When data diffing produces no patch, the skipped layout stage leaves setup timing without layoutEnd, layoutUiOperationExecuteEnd, and paintEnd. For no-patch pipelines with both is_reuse_engine and need_timestamps set, record layoutStart and layoutEnd at the same timestamp to represent the skipped layout stage. Register the pipeline options and mark the layout UI operation queue flush start through the element container or painting context, allowing the existing UI completion path to finish setup timing. This covers both Fragment Layer/layout-in-element and painting-context paths while preserving timing behavior for regular no-patch updates. Add regression coverage for the reused-engine completion event sequence and verify that regular no-patch updates do not request paintEnd timing. issue: f-9273565 AutoSubmit: true | 11 天前 | |
[Feature][Element] Add element-local coordinate conversion - Add Element-owned point and rect conversion across attached layout trees. - Account for transforms, scroll offsets, sticky translation, fixed roots, and clipping. - Cover conversion behavior across supported rendering modes. TEST: dom_unittest_exec --gtest_filter="*ConvertPoint*:*ConvertRect*" | 2 个月前 | |
[Feature][Element] Add element-local coordinate conversion - Add Element-owned point and rect conversion across attached layout trees. - Account for transforms, scroll offsets, sticky translation, fixed roots, and clipping. - Cover conversion behavior across supported rendering modes. TEST: dom_unittest_exec --gtest_filter="*ConvertPoint*:*ConvertRect*" | 2 个月前 | |
[BugFix][Scroll] Create ScrollElement for x-scroll-view-origin - Register "x-scroll-view-origin" as a built-in element tag. - Create ScrollElement for this tag in the Fiber element factory to enable scroll-specific behavior. TEST: git diff --check passed. Unit and runtime tests were not run. NoLanding: release/4.2,release/4.3,develop | 1 个月前 | |
[BugFix][Scroll] Create ScrollElement for x-scroll-view-origin - Register "x-scroll-view-origin" as a built-in element tag. - Create ScrollElement for this tag in the Fiber element factory to enable scroll-specific behavior. TEST: git diff --check passed. Unit and runtime tests were not run. NoLanding: release/4.2,release/4.3,develop | 1 个月前 | |
[BugFix] Fix LynxElement tree metadata lookup Update LynxElement tree serialization so debugMetadataUrl is resolved from the current Element entry name while dumping the tree. Empty element entry names now walk to the nearest parent entry before falling back to the page config. Store the template entry name on Element when FiberSetCSSId receives entryName, keep ComponentElement entry state synchronized, and make the serializer reject invalid position rects before emitting frameInRoot or frameInScreen. Also make the default GetRectToScreen implementation write an invalid rect so unsupported platforms do not expose stale stack values. TEST: git diff --check TEST: tools/env.sh ninja -C out/Default dom_unittest_exec TEST: ./out/Default/dom_unittest_exec --gtest_filter=ElementTreeSerializerTest.* TEST: tools/env.sh git lynx check --checkers coding-style --verbose AutoSubmit:True | 4 个月前 | |
[Feature] Add iOS LynxElement tree serialization API Add shared Element tree serialization and sign-based async operations that resolve runtime Elements on the engine actor. Expose iOS LynxView root lookup and LynxElement toJSONString, with callbacks dispatched asynchronously on the main thread. Keep fine-grained element accessors private for future API expansion. TEST: tools/env.sh ninja -C out/Default dom_unittest_exec TEST: ./out/Default/dom_unittest_exec --gtest_filter="ElementTreeSerializerTest.*" TEST: cd lynx && tools/env.sh python3 -B tools/api/main.py -u TEST: tools/env.sh tools_shared/git-lynx check --ignore deps,hardcoded-secrets TEST: git diff --check TEST: git diff --cached --check AutoSubmit: True | 4 个月前 | |
[Refactor] Unify Element and FiberElement - What changed: Moved the remaining FiberElement behavior into Element, made element subclasses derive directly from Element, removed the FiberElement C++ type, and updated callers and tests. - Why it was needed: This completes the Element type convergence without retaining an intermediate FiberElement shell. - How it was verified: Changed-file checks and focused DOM, SSR, and RTS unit-test targets cover the consolidated result. TEST: tools/env.sh git lynx check --changed TEST: tools/env.sh ninja -C out/Default dom_unittest_exec ssr_unittests_exec renderer_function_ng_c_api_unittests_exec TEST: out/Default/dom_unittest_exec TEST: out/Default/ssr_unittests_exec TEST: out/Default/renderer_function_ng_c_api_unittests_exec AutoSubmit:True | 3 个月前 | |
[BugFix] Keep fragment layer transitions on New Animator Prevent enable-new-animator attributes from disabling New Animator when fragment layer rendering is enabled. Fragment nodes cannot use the legacy platform animation backend. Cover boolean and string opt-outs in both Radon and Fiber architectures while preserving non-fragment behavior. Normalize legacy and New Animator transition event names in the test case so successful transitions update all event counters and the result marker. Refresh the snapshot package for the regenerated Radon and Fiber transition templates while preserving the other 501 snapshot baselines. TEST: 56 ElementTest and ElementManagerTest tests and all template snapshot cases passed before this history rewrite. | 19 天前 | |
[BugFix][Animation] Reuse the VSync runner for background timers Create the background animation timer lazily using the VSyncMonitor's bound task runner. Delegate UI runners can then run New Animator on threads without an FML MessageLoop while callbacks stay on the owning animation runner. Skip frame scheduling until the monitor and runner are available, and keep timer cancellation safe before initialization. Add one regression test for foreground frames, background events and cancellation with a delegate runner. TEST: render_function_tests_exec (3935 passed, 40 skipped; unavailable RuntimeCSSReaderTest binary fixture excluded); delegate-runner regression repeated 20 times on macOS Debug. | 11 天前 | |
[BugFix][Animation] Reuse the VSync runner for background timers Create the background animation timer lazily using the VSyncMonitor's bound task runner. Delegate UI runners can then run New Animator on threads without an FML MessageLoop while callbacks stay on the owning animation runner. Skip frame scheduling until the monitor and runner are available, and keep timer cancellation safe before initialization. Add one regression test for foreground frames, background events and cancellation with a delegate runner. TEST: render_function_tests_exec (3935 passed, 40 skipped; unavailable RuntimeCSSReaderTest binary fixture excluded); delegate-runner regression repeated 20 times on macOS Debug. | 11 天前 | |
[BugFix][Animation] Reuse the VSync runner for background timers Create the background animation timer lazily using the VSyncMonitor's bound task runner. Delegate UI runners can then run New Animator on threads without an FML MessageLoop while callbacks stay on the owning animation runner. Skip frame scheduling until the monitor and runner are available, and keep timer cancellation safe before initialization. Add one regression test for foreground frames, background events and cancellation with a delegate runner. TEST: render_function_tests_exec (3935 passed, 40 skipped; unavailable RuntimeCSSReaderTest binary fixture excluded); delegate-runner regression repeated 20 times on macOS Debug. | 11 天前 | |
[Feature][DevTool][Animation] Expose animation inspection metadata - Add stable animation identifiers, origins, and current-time metadata for DevTool inspection. - Track CSS and imperative animation lifecycle metadata without changing animation rendering timestamps. - Lazily allocate imperative animation metadata only for elements that use imperative animation APIs. - Use an FML monotonic anchor so platform VSync timestamp epochs do not affect inspector pause and resume timing. - Freeze inspector current time when an animation stops or is destroyed. - Preserve pending keyframe-effect rebuild requests across play-state-only updates. - Retain Web Animation origin when a forward-filled animation finishes before its first style resolution. - Cover imperative animation lifecycle operations across both styling pipelines and API entry points. TEST: animation_unittests_exec (135 passed); dom_unittest_exec (3150 passed, 36 skipped); focused origin coverage (6 passed across 24 configurations) | 1 个月前 | |
[Feature][DevTool][Animation] Expose animation inspection metadata - Add stable animation identifiers, origins, and current-time metadata for DevTool inspection. - Track CSS and imperative animation lifecycle metadata without changing animation rendering timestamps. - Lazily allocate imperative animation metadata only for elements that use imperative animation APIs. - Use an FML monotonic anchor so platform VSync timestamp epochs do not affect inspector pause and resume timing. - Freeze inspector current time when an animation stops or is destroyed. - Preserve pending keyframe-effect rebuild requests across play-state-only updates. - Retain Web Animation origin when a forward-filled animation finishes before its first style resolution. - Cover imperative animation lifecycle operations across both styling pipelines and API entry points. TEST: animation_unittests_exec (135 passed); dom_unittest_exec (3150 passed, 36 skipped); focused origin coverage (6 passed across 24 configurations) | 1 个月前 | |
[Feature][DevTool][Animation] Expose animation inspection metadata - Add stable animation identifiers, origins, and current-time metadata for DevTool inspection. - Track CSS and imperative animation lifecycle metadata without changing animation rendering timestamps. - Lazily allocate imperative animation metadata only for elements that use imperative animation APIs. - Use an FML monotonic anchor so platform VSync timestamp epochs do not affect inspector pause and resume timing. - Freeze inspector current time when an animation stops or is destroyed. - Preserve pending keyframe-effect rebuild requests across play-state-only updates. - Retain Web Animation origin when a forward-filled animation finishes before its first style resolution. - Cover imperative animation lifecycle operations across both styling pipelines and API entry points. TEST: animation_unittests_exec (135 passed); dom_unittest_exec (3150 passed, 36 skipped); focused origin coverage (6 passed across 24 configurations) | 1 个月前 | |
[Feature][DevTool][Animation] Expose animation inspection metadata - Add stable animation identifiers, origins, and current-time metadata for DevTool inspection. - Track CSS and imperative animation lifecycle metadata without changing animation rendering timestamps. - Lazily allocate imperative animation metadata only for elements that use imperative animation APIs. - Use an FML monotonic anchor so platform VSync timestamp epochs do not affect inspector pause and resume timing. - Freeze inspector current time when an animation stops or is destroyed. - Preserve pending keyframe-effect rebuild requests across play-state-only updates. - Retain Web Animation origin when a forward-filled animation finishes before its first style resolution. - Cover imperative animation lifecycle operations across both styling pipelines and API entry points. TEST: animation_unittests_exec (135 passed); dom_unittest_exec (3150 passed, 36 skipped); focused origin coverage (6 passed across 24 configurations) | 1 个月前 | |
[Feature][DevTool][Animation] Expose animation inspection metadata - Add stable animation identifiers, origins, and current-time metadata for DevTool inspection. - Track CSS and imperative animation lifecycle metadata without changing animation rendering timestamps. - Lazily allocate imperative animation metadata only for elements that use imperative animation APIs. - Use an FML monotonic anchor so platform VSync timestamp epochs do not affect inspector pause and resume timing. - Freeze inspector current time when an animation stops or is destroyed. - Preserve pending keyframe-effect rebuild requests across play-state-only updates. - Retain Web Animation origin when a forward-filled animation finishes before its first style resolution. - Cover imperative animation lifecycle operations across both styling pipelines and API entry points. TEST: animation_unittests_exec (135 passed); dom_unittest_exec (3150 passed, 36 skipped); focused origin coverage (6 passed across 24 configurations) | 1 个月前 | |
[Feature][DevTool][Animation] Expose animation inspection metadata - Add stable animation identifiers, origins, and current-time metadata for DevTool inspection. - Track CSS and imperative animation lifecycle metadata without changing animation rendering timestamps. - Lazily allocate imperative animation metadata only for elements that use imperative animation APIs. - Use an FML monotonic anchor so platform VSync timestamp epochs do not affect inspector pause and resume timing. - Freeze inspector current time when an animation stops or is destroyed. - Preserve pending keyframe-effect rebuild requests across play-state-only updates. - Retain Web Animation origin when a forward-filled animation finishes before its first style resolution. - Cover imperative animation lifecycle operations across both styling pipelines and API entry points. TEST: animation_unittests_exec (135 passed); dom_unittest_exec (3150 passed, 36 skipped); focused origin coverage (6 passed across 24 configurations) | 1 个月前 | |
[Feature][DevTool][Animation] Expose animation inspection metadata - Add stable animation identifiers, origins, and current-time metadata for DevTool inspection. - Track CSS and imperative animation lifecycle metadata without changing animation rendering timestamps. - Lazily allocate imperative animation metadata only for elements that use imperative animation APIs. - Use an FML monotonic anchor so platform VSync timestamp epochs do not affect inspector pause and resume timing. - Freeze inspector current time when an animation stops or is destroyed. - Preserve pending keyframe-effect rebuild requests across play-state-only updates. - Retain Web Animation origin when a forward-filled animation finishes before its first style resolution. - Cover imperative animation lifecycle operations across both styling pipelines and API entry points. TEST: animation_unittests_exec (135 passed); dom_unittest_exec (3150 passed, 36 skipped); focused origin coverage (6 passed across 24 configurations) | 1 个月前 | |
[Optimize] Use RefPtr to manage PropBundle instead of std::shared_ptr PropBundle is created as `std::unique_ptr<T>` but will be immediately transferred its ownership to `std::shared_ptr<T>` which is not a good design. `std::shared_ptr` is 16 bytes larger than `RefPtr` of 8 bytes and copying and moving a `std::shared_ptr` takes more CPU cycles than `RefPtr`. issue: m-6383995029 | 1 年前 | |
initial commit | 1 年前 | |
[Optimize] Migrate lepus::Value to base directory Migrate lepus::Value to the base module. lepus::Value will be set up as a standalone target that can be independently depended upon by other higher-level modules. issue:m-6042769122 doc:https://github.com/lynx-family/lynx/discussions/172 | 1 年前 | |
[Refactor] Prepare Element type surface adapters Move Element-owned traversal and rendering helper surfaces out of FiberElement so call sites can target Element before the final type merge. Route existing FiberElement, selector, style, Radon, and runtime renderer call sites through the Element helper surface while preserving current behavior. Keep this first landing slice scoped to type-surface adapters and leave runtime IDL generator configuration changes to the later dependency-removal slice. TEST: git diff --check TEST: Remote validation passed for the same code patch before landing. AutoSubmit:True | 3 个月前 | |
[Feature][Core] Add logical LynxElement query APIs - Add native LynxElement query helpers for root lookup, liveness checks, identity lookup, parent and children traversal, id search, position info, dataset, attributes, single attribute lookup, and JSON tree dumping. - Reuse existing fiber selector and node field helpers for id lookup, identity, dataset, and attribute extraction so the platform Element API does not duplicate SelectorQuery internals. - Expose query dispatch through LynxEngineProxyImpl with a shared query type enum so callers can request logical element data on the engine thread. - Add build entries and unit coverage for logical tree traversal, invalid sign handling, attribute extraction, and JSON serialization. TEST: tools/env.sh lynx/tools/rtf/rtf native-ut run --names lynx --target dom_unittest_exec --disable-flutter-cxx --gtest-filter="LynxElementQueryTest.*" TEST: ./out/Default/dom_unittest_exec --gtest_filter="LynxElementQueryTest.*" AutoSubmit: True | 3 个月前 | |
[Feature][Core] Add logical LynxElement query APIs - Add native LynxElement query helpers for root lookup, liveness checks, identity lookup, parent and children traversal, id search, position info, dataset, attributes, single attribute lookup, and JSON tree dumping. - Reuse existing fiber selector and node field helpers for id lookup, identity, dataset, and attribute extraction so the platform Element API does not duplicate SelectorQuery internals. - Expose query dispatch through LynxEngineProxyImpl with a shared query type enum so callers can request logical element data on the engine thread. - Add build entries and unit coverage for logical tree traversal, invalid sign handling, attribute extraction, and JSON serialization. TEST: tools/env.sh lynx/tools/rtf/rtf native-ut run --names lynx --target dom_unittest_exec --disable-flutter-cxx --gtest-filter="LynxElementQueryTest.*" TEST: ./out/Default/dom_unittest_exec --gtest_filter="LynxElementQueryTest.*" AutoSubmit: True | 3 个月前 | |
[Optimize] Migrate lepus::Value to base directory Migrate lepus::Value to the base module. lepus::Value will be set up as a standalone target that can be independently depended upon by other higher-level modules. issue:m-6042769122 doc:https://github.com/lynx-family/lynx/discussions/172 | 1 年前 | |
[BugFix][DevTool] Preserve important CSS declarations in style inspection - Track important declarations separately when building and resolving inspector style sheets. - Normalize inline important values and serialize them without duplicate suffixes. - Use renderer-resolved standard and custom properties for computed style so cascade layers and important priority are reflected accurately. - Reuse the shared CSS important parser instead of maintaining a duplicate implementation. TEST: Built and ran devtool_element_exec (62 tests), InspectorTasmExecutorTest.* (33 tests), and CSSUtils tests; verified CSS.setStyleTexts important removal and restoration on an iOS simulator. Change-Id: Ie8df8a87994349effc929f880823f786ecc40a94 | 11 天前 | |
[Optimize][CSS] Unify condition-rule and cascade-layer detection into FeatureFlags Replace the per-query dep-walking GetConditionRuleFlags() with a single FeatureFlags bitmask (kHasCascadeLayers | kHasMediaQuery | kHasSupports) that is eagerly aggregated at RuleSet::Merge() time. For adopted stylesheets, ElementManager maintains an atomic adopted_feature_flags_ cache updated under the existing write lock, allowing CSSFragmentDecorator::GetFeatureFlags() to read it lock-free via std::memory_order_acquire. | 2 个月前 | |
[BugFix][DevTool] Preserve important CSS declarations in style inspection - Track important declarations separately when building and resolving inspector style sheets. - Normalize inline important values and serialize them without duplicate suffixes. - Use renderer-resolved standard and custom properties for computed style so cascade layers and important priority are reflected accurately. - Reuse the shared CSS important parser instead of maintaining a duplicate implementation. TEST: Built and ran devtool_element_exec (62 tests), InspectorTasmExecutorTest.* (33 tests), and CSSUtils tests; verified CSS.setStyleTexts important removal and restoration on an iOS simulator. Change-Id: Ie8df8a87994349effc929f880823f786ecc40a94 | 11 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 7 个月前 | ||
| 23 天前 | ||
| 3 天前 | ||
| 3 天前 | ||
| 23 天前 | ||
| 10 个月前 | ||
| 3 个月前 | ||
| 1 个月前 | ||
| 4 天前 | ||
| 1 个月前 | ||
| 5 天前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 5 天前 | ||
| 4 天前 | ||
| 3 个月前 | ||
| 1 年前 | ||
| 9 天前 | ||
| 21 天前 | ||
| 21 天前 | ||
| 1 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 3 天前 | ||
| 3 天前 | ||
| 11 天前 | ||
| 11 天前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 3 个月前 | ||
| 19 天前 | ||
| 11 天前 | ||
| 11 天前 | ||
| 11 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 1 年前 | ||
| 11 天前 | ||
| 2 个月前 | ||
| 11 天前 |