| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[Optimize][JNI] Use new jni generator to generate jni headers and so load file for Lynx Summary: The old JNI automation configuration was overly fragmented and incurred high maintenance costs. It has now been updated to a new JNI automation generation solution, which not only automatically generates JNI headers but also produces the corresponding SO load files and BUILD.gn files. Key Modifications: 1. Invoking the generate_and_register_jni_files.py script in the GN build system to automatically generate JNI-related files and depend on the GN target for file collections; 2. add `!include` key value of yaml config script to include jni_classes in other config script. Adapting to the RegisterJNI APIs; 3. Removing some header files that had no implementation. AutoSubmit:true issue: gh-#731 | 1 年前 | |
[Feature][DevTool] Expose CSS cascade layer tree over CDP - Add the CSS.getLayersForNode request path and serialize the canonical cascade layer tree. - Reuse the renderer layer map so reported names and ordering match style resolution. - Export the cascade layer map for DevTool shared-library access. - Cover layered, unlayered, and invalid-node responses and publish the standard CDP method metadata. TEST: css_test_exec; devtool_element_exec; InspectorTasmExecutorTest.*; CDP metadata checks Change-Id: I35f3fed5748edc697c6574591f3db4f8235bbe96 | 2 个月前 | |
Revert "[Feature] Add text-spacing-trim CSS integration for Textra" This reverts commit eabd714d | 15 天前 | |
[Optimize] Move transform keyframe storage to gfx - Add directly usable scalar, color, integer, and transform keyframe primitives to gfx. - Store resolved transform operations in gfx while keeping CSS parsing and invalidation in the core adapter. - Cover scalar, length, vec2, transform, and filter keyframe storage semantics in gfx tests. TEST: animation_keyframe_unittests_exec and geometry_unittests_exec | 1 个月前 | |
[Optimize] Auto gen consumption status for layout properties Using the JSON file definitions to auto generate the consumption status to prevent mis codings. | 1 年前 | |
[Feature][CSS] Integrate adopted stylesheets into CSSFragmentDecorator - Add ElementManager* member with 2-arg constructor - Add ForEachAdoptedFragment(visitor, reverse) to iterate under lock - Override HasPseudoRules, HasAdjacentSiblingRules with HasInAdopted helper - Override GetKeyframesRule (reverse), ForEachKeyframesMap, ForEachFontFaceMap - Override ForEachRuleSet to iterate intrinsic then adopted - Override CollectInvalidationSetsForId/Class/PseudoClass | 5 个月前 | |
[Infra] Generate CSS keyword lookup tables with host gperf Generate css_keywords.cc from the keyword template during GN builds and CocoaPods preparation, and share the generated source across core, encoder, and DevTool targets. Keep the header and template in source control while removing the checked-in generated table. Add host gperf discovery, a configurable executable override, and C++17 normalization for legacy gperf output. Declare pinned Windows and Linux tool dependencies and platform conditions directly in DEPS, and invoke /usr/bin/gperf directly on macOS. TEST: 777 CSS tests passed; GN generated-source checks; iOS simulator css_keywords compilation and Podspec export; C++17 keyword lookup checks. Direct macOS generation preserves the validated output byte-for-byte; the css_keywords GN/Ninja build passes. | 1 个月前 | |
[Infra] Generate CSS keyword lookup tables with host gperf Generate css_keywords.cc from the keyword template during GN builds and CocoaPods preparation, and share the generated source across core, encoder, and DevTool targets. Keep the header and template in source control while removing the checked-in generated table. Add host gperf discovery, a configurable executable override, and C++17 normalization for legacy gperf output. Declare pinned Windows and Linux tool dependencies and platform conditions directly in DEPS, and invoke /usr/bin/gperf directly on macOS. TEST: 777 CSS tests passed; GN generated-source checks; iOS simulator css_keywords compilation and Podspec export; C++17 keyword lookup checks. Direct macOS generation preserves the validated output byte-for-byte; the css_keywords GN/Ninja build passes. | 1 个月前 | |
Revert "[Feature] Add text-spacing-trim CSS integration for Textra" This reverts commit eabd714d | 15 天前 | |
Revert "[Feature] Add text-spacing-trim CSS integration for Textra" This reverts commit eabd714d | 15 天前 | |
[Refactor] Move transform operations into GFX - Move transform matrices, operations, decomposition, and interpolation from the Lynx renderer into the shared GFX geometry layer. - Keep CSS parsing and unit resolution in a core adapter while preserving matrix, percentage resize, and unit update behavior. - Preserve full 4x4 values for mismatched transform-list interpolation and serialize fallback samples as matrix3d instead of decomposed function lists. - Preserve legacy new animator translateZ interpolation used for platform stacking, including raw percentage values. - Update Harmony renderer dependencies and add shared geometry and renderer regression coverage. - Only aggregate geometry unit tests when unit-test targets are enabled so Android GN generation does not reference an unavailable host test target. TEST: Run GFX geometry tests and Lynx transform adapter and animation tests; build the LynxAndroid noasan debug AndroidTest APK. SkipChecks: macro | 2 个月前 | |
[BugFix] Return computed lengths in CSS pixels - Convert layout-unit lengths, including transform matrix translations, to CSS pixels in GetComputedStyleByKey serialization. - Preserve percentages and default border widths while aligning density-scaled platforms with web behavior. - Add SetStyle and flush coverage for length-valued computed styles and transforms at a non-default layout scale. TEST: css_test_exec ComputedCSSStyleCssTextHelperTest.*, TransformOperationTest.*, TransformOperationsTest.*; dom_unittest_exec *UsesCssPixels*, *TestGetComputedStyleByKey_transform* | 3 个月前 | |
[Feature][Refactor][Painting] Support 4x4 transform in Fragment display list builder - What changed: - Migrated transform utility classes (Matrix44, Quaternion, DecomposedTransform) from `core/renderer/css/transforms` to `core/style/transform` for broader use. - Upgraded display list transform storage from a 2D matrix (6 floats) to a 4x4 matrix (16 floats). - Implemented `Fragment::DrawTransform` and enhanced `Fragment::OnDraw` to support 4x4 matrices and `transform-origin`. - Updated `DisplayListBuilder` and `DisplayList` to accommodate the 16-float matrix format. - Why it was needed: - To enable support for 3D transformations in the Fragment-based display list rendering pipeline. - How it was verified / impacts: - Verified by running the `fragment_test_exec` unit test suite. - Updated and passed all related unit tests in `DisplayListBuilder` and `DisplayList`. issue: m-6578359527 [internal] doc: https://bytedance.larkoffice.com/wiki/FHhfwsSKjiTo0Zkm11sckwy6nkM [end-internal] TEST: fragment_test_exec | 9 个月前 | |
Revert "[Feature] Add text-spacing-trim CSS integration for Textra" This reverts commit eabd714d | 15 天前 | |
[BugFix] Fix HSL color parsing issues with floating-point values and large hue values - What changed: - Fixed HSL parsing to use TokenToDouble instead of TokenToInt for hue, saturation, and lightness values to correctly handle floating-point inputs like hsl(0.0001, ...) - Initialized ret = 0 in TokenToInt to prevent garbage values when parsing fails - Replaced inefficient while loops with fmodf in css_hue_to_rgb for O(1) hue wrapping - Added NaN/Inf handling in clamp_css_byte and clamp_css_float functions - Added comprehensive HSL edge case tests - Why it was needed: - Parsing hsl(0.0001, 0.0001%, 0.0001%) caused an apparent hang due to uninitialized memory: TokenToInt returned garbage (85 billion) which triggered infinite loops - Large hue values (e.g., hsl(1000000, ...)) caused O(n) loop iterations - NaN/Inf values could propagate through color calculations causing undefined behavior - How it was verified: - All 193 css_parser_test_exec tests pass - Fixed test cases: hsl(0.0001, ...), hsl(1000000, ...), and NaN/Inf inputs issue: f-6887017582 AutoSubmit: true | 7 个月前 | |
initial commit | 1 年前 | |
initial commit | 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 年前 | |
[BugFix][CSS] Reject negative flex-shrink values - Add the independent "non-negative-number" CSS generator type and route it to a dedicated number handler. - Reject negative flex-shrink declarations without replacing an existing valid value while preserving generic number parsing. - Centralize the non-negative number diagnostic with the other CSS parser messages. TEST: Built css_parser_test_exec and passed all 223 tests; Black formatting check passed. | 2 个月前 | |
Revert "[Feature] Add text-spacing-trim CSS integration for Textra" This reverts commit eabd714d | 15 天前 | |
[Feature][Part3] Support retrieving core property value in computed style In this merge request, ComputedCSSStyleCssTextHelper is introduced to help decouple convert raw value in ComputedCSSStyle to string value representation conforming to web standard, and FiberElement utilize this GetComputedStyleByPropertyID method to return lepus_value to __GetComputedStyleByKey PAPI. Inside ComputedCSSStyleCssTextHelper, as ComputedCSSStyleCssTextHelper is a friend class of ComputedCSSStylem, it will use LayoutResultForRendering and ComputedCSSStyle to calculate string value representation. issue:m-6741814001 AutoSubmit: true | 1 年前 | |
[Optimize] Define CSS font-face relative types in single header Currently there are two sets of C++ class definitions for font-face. Unify definitions to layout_ctx_platform_impl.h. issue: m-4717134715 | 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 年前 | |
[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 年前 | |
[Optimize] Unified using base::String for CSS animation path `std::string` and `base::String` are mixed used and now change to `base::String` for consistency. issue: m-6327137251 | 1 年前 | |
[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 个月前 | |
[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 个月前 | |
[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] Isolate font-face resolved state per LynxView - What changed CSSFragmentDecorator no longer marks the shared intrinsic SharedCSSFragment as font-face resolved. Instead, it records the resolved state in the per-LynxView ElementManager. ForEachUnresolvedFontFaceMap now checks ElementManager before processing the intrinsic font-face map, and falls back to the decorator's own flag when no ElementManager is available. ComponentElement::PrepareForFontFaceIfNeeded now consults the same per-LynxView state through the new HasIntrinsicFontFacesResolved helper, so components in one view that share an intrinsic fragment flush its font faces only once. The ElementManager tracking set is guarded by a read-write lock because threaded element resolution may access it from worker threads. - Why it was needed In predecode scenarios multiple LynxViews share the same intrinsic SharedCSSFragment. Writing the resolved flag into that shared object caused the second LynxView to skip its own SetFontFaces/ResolveFontFaces. At the same time, multiple CSSFragmentDecorator instances within the same LynxView could share the same intrinsic fragment and load its font-faces repeatedly. The resolved state must be kept per-LynxView while the static CSS data remains shared. - How it was verified Added CSSFragmentDecoratorTest cases for cross-LynxView isolation and an ElementManagerTest case for same-LynxView deduplication. Added FiberElementTest.RadonFiberArchFontFaceResolvedOnceAcrossComponents covering two ComponentElements sharing one intrinsic fragment in the same view; the case fails with the previous per-decorator check and passes with the per-LynxView check. Ran css_test_exec and dom_unittest_exec; the relevant tests pass. TEST: CSSFragmentDecoratorTest, ElementManagerTest.IntrinsicFontFacesResolvedOnceAcrossDecoratorsInSameView, FiberElementTest.RadonFiberArchFontFaceResolvedOnceAcrossComponents, TextElementTest font-face cases, css_test_exec, dom_unittest_exec. | 3 个月前 | |
initial commit | 1 年前 | |
initial commit | 1 年前 | |
[Feature][Animation][Codec] Support custom property keyframe codec - Add custom property keyframe parsing and storage in CSSKeyframesToken. - Encode and decode keyframe custom properties in the template binary codec. - Gate the new payload behind SDK version 3.9 to preserve compatibility with older bundles. AutoSubmit: true issue:m-7074219574 | 6 个月前 | |
initial commit | 1 年前 | |
Revert "[Feature][CSS] Make border radius animatable" This reverts commit 7c82de1d | 2 个月前 | |
Revert "[Feature][CSS] Make border radius animatable" This reverts commit 7c82de1d | 2 个月前 | |
Revert "[Feature][CSS] Make border radius animatable" This reverts commit 7c82de1d | 2 个月前 | |
[Feature] Parse LynxML style rules and keyframes - Parse qualified style rules and @keyframes at-rules with the CSS NG tokenizer and selector parser. - Build runtime CSS fragments with declarations, custom properties, and keyframe content. - Register the required parser sources and platform dependencies. TEST: lynxml_parser_unittest_exec AutoSubmit: true | 1 个月前 | |
[Feature][CSS] Support !important in CSS parsing, cascade, and inline styles - Add StripImportant utility and detect !important in ParseStyleDeclarationList - Store important attributes in CSSParseToken and parse in compiled tokens - Support !important inline styles in FiberElement - Implement two-pass cascade for !important in StyleResolver - Strip !important from var() substitution results - Add unit tests for !important attribute storage Performance optimizations: - Zero-allocation StripImportant implementation (inline ASCII caseless check) - Avoid string copies in MaybeStripImportant fast paths - Deduplicate FiberElement inline style processing - Avoid StyleMap copies in ImportOtherFragment and MergeCSSParseToken - Strip !important at custom property storage boundaries to remove redundant post-resolution scans AutoSubmit: true | 6 个月前 | |
[Feature][CSS] Support !important in CSS parsing, cascade, and inline styles - Add StripImportant utility and detect !important in ParseStyleDeclarationList - Store important attributes in CSSParseToken and parse in compiled tokens - Support !important inline styles in FiberElement - Implement two-pass cascade for !important in StyleResolver - Strip !important from var() substitution results - Add unit tests for !important attribute storage Performance optimizations: - Zero-allocation StripImportant implementation (inline ASCII caseless check) - Avoid string copies in MaybeStripImportant fast paths - Deduplicate FiberElement inline style processing - Avoid StyleMap copies in ImportOtherFragment and MergeCSSParseToken - Strip !important at custom property storage boundaries to remove redundant post-resolution scans AutoSubmit: true | 6 个月前 | |
[Feature][Mask]Reland: Support 'mask-composite' and improve mask rendering Add 'mask-composite' as a first-class CSS property and wire it through parsing, computed style, and rendering. Mask layers can now be combined using add/subtract/intersect/exclude via Porter-Duff blend modes, with full-layer save/restore to avoid stale destination pixels. Also improve mask behavior by: - Support 'mask' shorthand expansion to include composite data; - Clearing masks when 'mask-image: none' is applied; - Adding rounded-rect clipping for 'mask-clip' to respect border radius; - Add unit tests for 'mask-composite' parser handler. This reverts commit 2a9ccd0229328135cbbd5368e61bc70331a04911. issue: m-7283924428 | 5 个月前 | |
Revert "[Feature][CSS] Make border radius animatable" This reverts commit 7c82de1d | 2 个月前 | |
[Feature][Style] Implement style resolution and side-effect replay for new styling pipeline - What changed Added `CSSBitsetBase::FromKeys` for efficient property existence checks. Extended `CSSStyleUtils::ResolveFontSize` to support unifying vw/vh behavior without `Element`. Enhanced `CSSVariableHandler` with `HasCSSVariableInAnyStyleMap` and simplified `ResolveCSSVariables` to accept generic custom property callbacks. Implemented core phases of the new styling pipeline in `StyleResolver`: custom property finalization, inherited side-effect replay (e.g., `font-size`), high-priority property resolution (e.g., `width`, `height`), and standard property application. Introduced robust test coverage for variable resolution, custom property merging, and style application workflows. - Why it was needed These changes introduce the core resolution mechanics required to compute final CSS styles from collected rules and inputs in the new styling pipeline, supporting dynamic variable substitution and dependent property resolution (e.g., em units dependent on font-size). - How it was verified / impacts Added unit tests in `css_variable_handler_unittest.cc`, `css_property_bitset_unittest.cc`, `css_style_utils_unittest.cc`, and `style_resolver_unittest.cc`. AutoSubmit: true issue: m-7074219574 | 6 个月前 | |
[Feature][Style] Implement style resolution and side-effect replay for new styling pipeline - What changed Added `CSSBitsetBase::FromKeys` for efficient property existence checks. Extended `CSSStyleUtils::ResolveFontSize` to support unifying vw/vh behavior without `Element`. Enhanced `CSSVariableHandler` with `HasCSSVariableInAnyStyleMap` and simplified `ResolveCSSVariables` to accept generic custom property callbacks. Implemented core phases of the new styling pipeline in `StyleResolver`: custom property finalization, inherited side-effect replay (e.g., `font-size`), high-priority property resolution (e.g., `width`, `height`), and standard property application. Introduced robust test coverage for variable resolution, custom property merging, and style application workflows. - Why it was needed These changes introduce the core resolution mechanics required to compute final CSS styles from collected rules and inputs in the new styling pipeline, supporting dynamic variable substitution and dependent property resolution (e.g., em units dependent on font-size). - How it was verified / impacts Added unit tests in `css_variable_handler_unittest.cc`, `css_property_bitset_unittest.cc`, `css_style_utils_unittest.cc`, and `style_resolver_unittest.cc`. AutoSubmit: true issue: m-7074219574 | 6 个月前 | |
[Feature][Mask]Reland: Support 'mask-composite' and improve mask rendering Add 'mask-composite' as a first-class CSS property and wire it through parsing, computed style, and rendering. Mask layers can now be combined using add/subtract/intersect/exclude via Porter-Duff blend modes, with full-layer save/restore to avoid stale destination pixels. Also improve mask behavior by: - Support 'mask' shorthand expansion to include composite data; - Clearing masks when 'mask-image: none' is applied; - Adding rounded-rect clipping for 'mask-clip' to respect border radius; - Add unit tests for 'mask-composite' parser handler. This reverts commit 2a9ccd0229328135cbbd5368e61bc70331a04911. issue: m-7283924428 | 5 个月前 | |
initial commit | 1 年前 | |
initial commit | 1 年前 | |
initial commit | 1 年前 | |
initial commit | 1 年前 | |
[Optimize][Trace] Standardize renderer module TraceEvent naming This commit standardizes the naming conventions for some TraceEvent. The main changes include: Centralizing all renderer TraceEvent names in the trace event define file for better management and consistency. issue: m-6042811105 SkipChecks: macro | 1 年前 | |
[Optimize] move page_config to template_codec module page_config should be moved to template_codec module, as it's more reasonable and maintainable. issue: f-1128467656 AutoSubmit: true | 1 年前 | |
[Optimize][Testing] Migrate Radon tests to FiberElement APIs This change updates animation, renderer, worklet and render function unit tests to construct elements via FiberElement-based APIs instead of legacy Radon ElementManager::CreateNode and RadonElement helpers. - Replace CreateNode usages with CreateFiberElement / CreateFiberView and set attribute holders explicitly where needed. - Remove assertions on is_fiber_element now that tests exercise only the fiber implementation. - Adjust animator and animation-curve tests to enable the new animator via SetEnableNewAnimatorRadon(true) instead of per-element attributes. - Simplify CSSStyleSheetManager pseudo tests to always fetch component-level style sheets. - Update ElementContainer and worklet event tests to use FiberElement child APIs (AddChildAt, InsertNode) with ref-counted pointers. - Drop obsolete RadonElement- and RadonNode-specific behaviors and tests that are no longer relevant in the fiber-only architecture. AutoSubmit: true | 10 个月前 | |
Revert "[Feature][CSS] Make border radius animatable" This reverts commit 7c82de1d | 2 个月前 | |
[Feature][Style] Add sampled animation updates for new styling pipeline - Add a sampling-based animation update path for the new styling pipeline so keyframe and transition managers can collect animated style changes without mutating timeline state on repeated resolves. - Preserve animation lifecycle correctness by caching samples, tracking pause timing, avoiding duplicate start and end events after dummy-time resolves, and keeping stopped animations from emitting extra events. - Support resolving keyframe values with custom properties from both keyframes and inherited or base styles, and fix transform and style lookup edge cases needed for sampled animation output. - Extend animation trace events and unit coverage for new-pipeline sync, custom-property keyframes, paused-state sampling, finished-animation behavior, and transform keyframe expectations. AutoSubmit: true | 4 个月前 | |
[BugFix][Style] Fix z-index change detection when transitioning from unset to 0 - What changed Updated ComputedCSSStyle::SetZIndex to return true if the "has_z_index_" state changes, even if the numeric value remains 0. Updated the corresponding unit test. - Why it was needed When z-index transitions from unset to 0, the previous numeric value was 0 and the new value is 0, so ComputeIntStyle returns false. However, the semantic state "has_z_index_" changed from false to true. This caused the style engine to miss this change, potentially skipping bundle creation or style application for "z-index: 0". - How it was verified / impacts Verified by updating the SetZIndex unit test in css_style_utils_unittest.cc which now correctly expects SetValue to return true when setting "z-index: 0" from default. AutoSubmit: true | 5 个月前 | |
[Feature][CSS] Support !important in CSS parsing, cascade, and inline styles - Add StripImportant utility and detect !important in ParseStyleDeclarationList - Store important attributes in CSSParseToken and parse in compiled tokens - Support !important inline styles in FiberElement - Implement two-pass cascade for !important in StyleResolver - Strip !important from var() substitution results - Add unit tests for !important attribute storage Performance optimizations: - Zero-allocation StripImportant implementation (inline ASCII caseless check) - Avoid string copies in MaybeStripImportant fast paths - Deduplicate FiberElement inline style processing - Avoid StyleMap copies in ImportOtherFragment and MergeCSSParseToken - Strip !important at custom property storage boundaries to remove redundant post-resolution scans AutoSubmit: true | 6 个月前 | |
[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 天前 | |
[Feature][CSS] Support !important in CSS parsing, cascade, and inline styles - Add StripImportant utility and detect !important in ParseStyleDeclarationList - Store important attributes in CSSParseToken and parse in compiled tokens - Support !important inline styles in FiberElement - Implement two-pass cascade for !important in StyleResolver - Strip !important from var() substitution results - Add unit tests for !important attribute storage Performance optimizations: - Zero-allocation StripImportant implementation (inline ASCII caseless check) - Avoid string copies in MaybeStripImportant fast paths - Deduplicate FiberElement inline style processing - Avoid StyleMap copies in ImportOtherFragment and MergeCSSParseToken - Strip !important at custom property storage boundaries to remove redundant post-resolution scans AutoSubmit: true | 6 个月前 | |
[BugFix] Preserve transitive CSS variable dependencies - Preserve custom property dependency metadata when eagerly resolving inherited variables. - Replay direct and transitive dependencies during CSS variable substitution so variable updates invalidate affected elements. - Add regression coverage for multi-level aliases and parent class changes. TEST: Added unit tests for transitive dependency replay and class-driven theme updates. AutoSubmit: true | 3 个月前 | |
[BugFix][DevTool] Support editing CSS variables - Preserve authored variable expressions while resolving computed values for inspection. - Synchronize custom property edits and invalidation across styling pipelines and descendants. - Preserve duplicate authored declarations during legacy variable normalization. - Stabilize custom section ordering for deterministic TASM codec output. - Add unit, end-to-end, and card template snapshot coverage for CSS variable editing behavior. TEST: devtool_element_exec (52 tests); ElementHelperTest.GetMatchedStyleSheetTest; TASM codec NAPI tests; Android CSS variable E2E tests for Radon and Fiber; npm run test --prefix testing/lynx-platform-tests/card_template | 2 个月前 | |
[Optimize] LLDB script for lynx value tagged union Handle int32_t, uint32_t and uint64_t separately in lldb script. | 5 个月前 | |
[BugFix] Preserve transitive CSS variable dependencies - Preserve custom property dependency metadata when eagerly resolving inherited variables. - Replay direct and transitive dependencies during CSS variable substitution so variable updates invalidate affected elements. - Add regression coverage for multi-level aliases and parent class changes. TEST: Added unit tests for transitive dependency replay and class-driven theme updates. AutoSubmit: true | 3 个月前 | |
[Feature][Style] Implement style resolution and side-effect replay for new styling pipeline - What changed Added `CSSBitsetBase::FromKeys` for efficient property existence checks. Extended `CSSStyleUtils::ResolveFontSize` to support unifying vw/vh behavior without `Element`. Enhanced `CSSVariableHandler` with `HasCSSVariableInAnyStyleMap` and simplified `ResolveCSSVariables` to accept generic custom property callbacks. Implemented core phases of the new styling pipeline in `StyleResolver`: custom property finalization, inherited side-effect replay (e.g., `font-size`), high-priority property resolution (e.g., `width`, `height`), and standard property application. Introduced robust test coverage for variable resolution, custom property merging, and style application workflows. - Why it was needed These changes introduce the core resolution mechanics required to compute final CSS styles from collected rules and inputs in the new styling pipeline, supporting dynamic variable substitution and dependent property resolution (e.g., em units dependent on font-size). - How it was verified / impacts Added unit tests in `css_variable_handler_unittest.cc`, `css_property_bitset_unittest.cc`, `css_style_utils_unittest.cc`, and `style_resolver_unittest.cc`. AutoSubmit: true issue: m-7074219574 | 6 个月前 | |
[Feature][Style] Implement style resolution and side-effect replay for new styling pipeline - What changed Added `CSSBitsetBase::FromKeys` for efficient property existence checks. Extended `CSSStyleUtils::ResolveFontSize` to support unifying vw/vh behavior without `Element`. Enhanced `CSSVariableHandler` with `HasCSSVariableInAnyStyleMap` and simplified `ResolveCSSVariables` to accept generic custom property callbacks. Implemented core phases of the new styling pipeline in `StyleResolver`: custom property finalization, inherited side-effect replay (e.g., `font-size`), high-priority property resolution (e.g., `width`, `height`), and standard property application. Introduced robust test coverage for variable resolution, custom property merging, and style application workflows. - Why it was needed These changes introduce the core resolution mechanics required to compute final CSS styles from collected rules and inputs in the new styling pipeline, supporting dynamic variable substitution and dependent property resolution (e.g., em units dependent on font-size). - How it was verified / impacts Added unit tests in `css_variable_handler_unittest.cc`, `css_property_bitset_unittest.cc`, `css_style_utils_unittest.cc`, and `style_resolver_unittest.cc`. AutoSubmit: true issue: m-7074219574 | 6 个月前 | |
[Feature][Style] Implement style resolution and side-effect replay for new styling pipeline - What changed Added `CSSBitsetBase::FromKeys` for efficient property existence checks. Extended `CSSStyleUtils::ResolveFontSize` to support unifying vw/vh behavior without `Element`. Enhanced `CSSVariableHandler` with `HasCSSVariableInAnyStyleMap` and simplified `ResolveCSSVariables` to accept generic custom property callbacks. Implemented core phases of the new styling pipeline in `StyleResolver`: custom property finalization, inherited side-effect replay (e.g., `font-size`), high-priority property resolution (e.g., `width`, `height`), and standard property application. Introduced robust test coverage for variable resolution, custom property merging, and style application workflows. - Why it was needed These changes introduce the core resolution mechanics required to compute final CSS styles from collected rules and inputs in the new styling pipeline, supporting dynamic variable substitution and dependent property resolution (e.g., em units dependent on font-size). - How it was verified / impacts Added unit tests in `css_variable_handler_unittest.cc`, `css_property_bitset_unittest.cc`, `css_style_utils_unittest.cc`, and `style_resolver_unittest.cc`. AutoSubmit: true issue: m-7074219574 | 6 个月前 | |
[Feature] Support CSS inline variables. In this MR, we support CSS inline variables. 1. The inline style parsing process supports variable declaration and usage, and saves the value of css variables as a `CSSValue`. 2. In `CSSVariableHandler::HandleCSSVariables`, it determines if the current `CSSValue` still needs parsing and calls `CSSValue::Substitution` to parse and substitute the `CSSValue`. 3. Inline style support nested css variables. 4. Add a unit test case for inline css (nested) variables. 5. Add `enableCSSInlineVariables` in PageConfig and Settings as a feature switch, disabled by default. | 1 年前 | |
[BugFix] Fix filter dynamic updates for viewport units - Treat "filter" as a temporary complex dynamic property so viewport-based values are recomputed when the viewport changes. - Guard the fallback with "fix_filter_dynamic_update_bug", keep it enabled by default, and document that the setting should be removed after rollout validation. - Add a fiber element unit test that verifies the behavior with the setting disabled and enabled. AutoSubmit:true | 6 个月前 | |
Revert "[Feature][CSS] Support prefers-reduced-motion media queries" This reverts commit 2c59094e | 2 个月前 | |
[Optimize] Hide CSSValue's internal value variable with explicit method Add specific constructors for using enumeration type to construct a CSSValue and reduce using `static_cast`. | 11 个月前 | |
initial commit | 1 年前 | |
[Optimize] Auto gen consumption status for layout properties Using the JSON file definitions to auto generate the consumption status to prevent mis codings. | 1 年前 | |
[BugFix][CSS] Initialize layout property consumption table at compile time Store the consumption table by value in a static constexpr std::array. This removes its writable reference slot and runtime initialization guard while preserving the generated property classifications and default SKIP entries. The lookup no longer depends on publishing a separate table pointer. Add classification, default-SKIP and concurrent-read tests to css_test_exec. The older layout_node_unittest.cc coverage is not part of that target. TEST: LayoutPropertyTest (3 tests); all 239 legal property IDs match the previous implementation; Android NDK 21 C++17 arm64 object uses a read-only table with no initialization guard or reference slot. | 1 个月前 | |
[BugFix][CSS] Initialize layout property consumption table at compile time Store the consumption table by value in a static constexpr std::array. This removes its writable reference slot and runtime initialization guard while preserving the generated property classifications and default SKIP entries. The lookup no longer depends on publishing a separate table pointer. Add classification, default-SKIP and concurrent-read tests to css_test_exec. The older layout_node_unittest.cc coverage is not part of that target. TEST: LayoutPropertyTest (3 tests); all 239 legal property IDs match the previous implementation; Android NDK 21 C++17 arm64 object uses a read-only table with no initialization guard or reference slot. | 1 个月前 | |
initial commit | 1 年前 | |
[Optimize][Harmony] Separate x-markdown module individually. Extract the x-markdown implementation into a dedicated `xelement_markdown` module on Harmony and wire it into the existing build pipeline. - Add Harmony xelement_markdown project with GN, build profile and package configuration - Implement Harmony markdown canvas, platform bridge, shadow node and UIMarkdown component - Register the x-markdown element and expose type definitions for ETS consumers - Update Harmony build scripts to include the new module issue:m-6825297168 | 9 个月前 | |
initial commit | 1 年前 | |
initial commit | 1 年前 | |
initial commit | 1 年前 | |
[Feature][CSS] Implement cascade layer tree construction during binary decode Introduce CascadeLayer tree node and wire it into the CSS binary decoder so that @layer rules build a proper layer hierarchy on SharedCSSFragment. Previously DecodeCSSLayerRule parsed the wire format but discarded all child rules; now style rules, condition rules, keyframes, and font-faces inside @layer blocks are added to the fragment with their layer association recorded in RuleData. issue:m-0 | 3 个月前 | |
[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 个月前 | |
[Optimize] Hide CSSValue's internal value variable with explicit method Currently a `lepus::Value& GetValue()` method is provided by CSSValue. This method returns a reference to internal value_ variable and that is not very good. This commit replaces previous `GetValue().Number()` by `GetNumber()`. Also Bool and String types are fixed by the way. | 1 年前 | |
initial commit | 1 年前 | |
[Optimize] Code structure of AttributeHolder AttributeHolder is changed to be managed by fml::RefPtr rather than std::shared_ptr. Three static methods for CSS computing are moved to CSSFragment. issue: m-6383995029 | 1 年前 | |
[Feature] Add text decoration extension and textservice support - Add CSS definitions for text decoration thickness and text decoration width/gap. - Parse and store the new values in computed style, style diff, and prop bundle paths. - Add parser, computed style, style resolver, and prop bundle tests. | 4 个月前 | |
Revert "[Feature] Add text-spacing-trim CSS integration for Textra" This reverts commit eabd714d | 15 天前 | |
[BugFix][CSS] Support percentage offset-distance parsing | 4 个月前 | |
[Feature] Modularize symbol export macros To enable per-module control over symbol visibility, this change introduces a dedicated *_EXPORT macro for each module. The main changes are as follows: 1. base module: Uses the BASE_EXPORT macro to control symbol visibility. This is enabled by the base_export_symbols GN argument, which defaults to true. 2. lynx module: Now uses the LYNX_EXPORT macro, defined in the new lynx_export.h header. Visibility is controlled by the lynx_export_symbols GN argument. 3. Updated relevant files to use the new module-specific macros and header paths. issue:m-6736726571 AutoSubmit:true SkipChecks:macro,spell | 1 年前 | |
initial commit | 1 年前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 年前 | ||
| 2 个月前 | ||
| 15 天前 | ||
| 1 个月前 | ||
| 1 年前 | ||
| 5 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 15 天前 | ||
| 15 天前 | ||
| 2 个月前 | ||
| 3 个月前 | ||
| 9 个月前 | ||
| 15 天前 | ||
| 7 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 个月前 | ||
| 15 天前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 3 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 6 个月前 | ||
| 1 年前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 6 个月前 | ||
| 6 个月前 | ||
| 5 个月前 | ||
| 2 个月前 | ||
| 6 个月前 | ||
| 6 个月前 | ||
| 5 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 10 个月前 | ||
| 2 个月前 | ||
| 4 个月前 | ||
| 5 个月前 | ||
| 6 个月前 | ||
| 11 天前 | ||
| 6 个月前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 5 个月前 | ||
| 3 个月前 | ||
| 6 个月前 | ||
| 6 个月前 | ||
| 6 个月前 | ||
| 1 年前 | ||
| 6 个月前 | ||
| 2 个月前 | ||
| 11 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 4 个月前 | ||
| 15 天前 | ||
| 4 个月前 | ||
| 1 年前 | ||
| 1 年前 |