Skip to content

[Feature] Pass display_none to platform and skip draw in fragment layer#7524

Open
zhongyr wants to merge 2 commits into
developfrom
shadow/refs/merge-requests/73/66973/7
Open

[Feature] Pass display_none to platform and skip draw in fragment layer#7524
zhongyr wants to merge 2 commits into
developfrom
shadow/refs/merge-requests/73/66973/7

Conversation

@zhongyr

@zhongyr zhongyr commented Jun 26, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

zhongyr added 2 commits June 26, 2026 08:50
- What changed
  Add a display_none flag to LayoutContext::Delegate::OnLayoutUpdate and
  Element::UpdateLayout. LayoutContext::UpdateLayoutInfo and
  FiberElement::UpdateLayoutInfo now read the flag from the Starlight
  layout result and pass it down. Element stores the flag and exposes it
  via display_none().

- Why it was needed
  Downstream code needs to know whether a node is treated as display:none
  by the layout engine without recomputing it from CSS.

- How it was verified
  Ran layout_context_tests_exec, tasm_unittests_exec, layout_tests_exec,
  and fragment_test_exec. All passed.

TEST: layout_context_tests_exec, tasm_unittests_exec, layout_tests_exec,
fragment_test_exec
AutoLand: release/4.0
AutoSubmit: true
…ay list

- What changed
  Add a display_none flag to PaintingCtxPlatformImpl::UpdateLayout and the
  PaintingContext wrapper. All platform implementations (Android, iOS,
  Harmony, empty, mocks) now accept the flag. ElementContainer::UpdateLayout
  passes element()->display_none() through painting_context()->UpdateLayout.

  In FragmentLayerRender mode, Fragment::Draw() no longer returns early when
  element()->display_none() is true. Instead it emits a display list containing
  only the node's Begin/End so the platform layer receives an update and clears
  stale content, sublayers, and event-target state instead of keeping the
  previous frame. ReconstructEventTargetTreeForExposure() still runs as before.

- Why it was needed
  Returning early left the previous frame's display list / sublayer / event
  target tree active on the platform side when a node switched to display:none.

- How it was verified
  Ran dom_unittest_exec. Fragment tests and the new
  DisplayNoneEmitsEmptyDisplayListAndReconstructsExposure test passed.

TEST: dom_unittest_exec

AutoSubmit: true
AutoLand: true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant