Commit 2c81f653 authored by Morten Stenshorne's avatar Morten Stenshorne Committed by Commit Bot

[LayoutNG] Stop using legacy layout for DETAILS / SUMMARY.

NG seems to support it just fine, but was prevented from doing so by two
things: We forced legacy layout on the subtree. AND we unconditionally
created (legacy) LayoutBlockFlow rather than LayoutNGBlockFlow. Use the
factory to create the right object type.

DETAILS does not establish a new formatting context, making it a rather
lousy entry-point for legacy layout.

This requires some rebaselining, due to cases of off by ~0.02px and also
the fact that NG creates fewer and larger text runs. There are also fewer
spaces than before in a couple of text dumps, apparently.

This fixes one crasher, but also introduces two failures; one which is not
related to DETAILS / MARKER, but rather how we deal with hit-testing inside
a vertical-rl container. The other one is a paint/invalidation/ tests that
behaves different from legacy now, because it has DETAILS / MARKER in it.

fast/multicol/span/summary-split.html now fails again with NG block
fragmentation. It recently started to pass, because of
https://chromium-review.googlesource.com/c/chromium/src/+/1063891 ,
but that was just because the legacy DETAILS element forced the entire
multicol container to be done with legacy. The actual problem here is that
NG block fragmentation doesn't support column-span:all and never has.

Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_layout_ng
Change-Id: I823b5cd2ce62240b820428302556ee6df64c8b22
Reviewed-on: https://chromium-review.googlesource.com/1114847Reviewed-by: default avatarKoji Ishii <kojii@chromium.org>
Reviewed-by: default avatarEmil A Eklund <eae@chromium.org>
Commit-Queue: Morten Stenshorne <mstensho@chromium.org>
Cr-Commit-Position: refs/heads/master@{#570678}
parent 81195612
...@@ -12,10 +12,6 @@ crbug.com/591099 fast/shapes/shape-outside-floats/shape-outside-floats-inset-rou ...@@ -12,10 +12,6 @@ crbug.com/591099 fast/shapes/shape-outside-floats/shape-outside-floats-inset-rou
crbug.com/714962 external/wpt/css/css-transforms/transform-abspos-006.html [ Skip ] crbug.com/714962 external/wpt/css/css-transforms/transform-abspos-006.html [ Skip ]
crbug.com/714962 external/wpt/css/css-transforms/transform-abspos-007.html [ Skip ] crbug.com/714962 external/wpt/css/css-transforms/transform-abspos-007.html [ Skip ]
# Caused by legacy fallback, <details> with position:absolute hits DCHECK in
# IsEmptyBlock() in NGBlockLayoutAlgorithm::HandleInflow()
crbug.com/591099 fast/block/child-not-removed-from-parent-lineboxes-crash.html [ Crash ]
# Fails because we don't yet special-case marquee like legacy does: # Fails because we don't yet special-case marquee like legacy does:
# https://cs.chromium.org/chromium/src/third_party/blink/renderer/core/layout/layout_block.cc?l=1372&rcl=0e081149ecd6a83f6289e3aee5797936008a1e10 # https://cs.chromium.org/chromium/src/third_party/blink/renderer/core/layout/layout_block.cc?l=1372&rcl=0e081149ecd6a83f6289e3aee5797936008a1e10
crbug.com/591099 fast/block/marquee-width-shrinks-to-fit-in-fixed-size-container.html [ Failure ] crbug.com/591099 fast/block/marquee-width-shrinks-to-fit-in-fixed-size-container.html [ Failure ]
...@@ -561,6 +557,7 @@ crbug.com/591099 fast/writing-mode/vertical-rl-replaced-selection.html [ Failure ...@@ -561,6 +557,7 @@ crbug.com/591099 fast/writing-mode/vertical-rl-replaced-selection.html [ Failure
crbug.com/591099 fullscreen/full-screen-with-flex-item.html [ Failure ] crbug.com/591099 fullscreen/full-screen-with-flex-item.html [ Failure ]
crbug.com/591099 hittesting/border-hittest-inlineFlowBox.html [ Failure ] crbug.com/591099 hittesting/border-hittest-inlineFlowBox.html [ Failure ]
crbug.com/591099 hittesting/inline-with-clip-path.html [ Failure ] crbug.com/591099 hittesting/inline-with-clip-path.html [ Failure ]
crbug.com/856730 html/details_summary/details-mouse-click.html [ Failure ]
crbug.com/855039 html/details_summary/details-writing-mode-align-center.html [ Failure ] crbug.com/855039 html/details_summary/details-writing-mode-align-center.html [ Failure ]
crbug.com/855039 html/details_summary/details-writing-mode-align-left.html [ Failure ] crbug.com/855039 html/details_summary/details-writing-mode-align-left.html [ Failure ]
crbug.com/855039 html/details_summary/details-writing-mode-align-right.html [ Failure ] crbug.com/855039 html/details_summary/details-writing-mode-align-right.html [ Failure ]
...@@ -649,6 +646,7 @@ crbug.com/591099 paint/invalidation/css-grid-layout/grid-element-change-columns- ...@@ -649,6 +646,7 @@ crbug.com/591099 paint/invalidation/css-grid-layout/grid-element-change-columns-
crbug.com/591099 paint/invalidation/css-grid-layout/grid-element-change-rows-repaint.html [ Failure ] crbug.com/591099 paint/invalidation/css-grid-layout/grid-element-change-rows-repaint.html [ Failure ]
crbug.com/591099 paint/invalidation/css-grid-layout/grid-item-change-column-repaint.html [ Failure ] crbug.com/591099 paint/invalidation/css-grid-layout/grid-item-change-column-repaint.html [ Failure ]
crbug.com/591099 paint/invalidation/css-grid-layout/grid-item-z-index-change-repaint.html [ Failure ] crbug.com/591099 paint/invalidation/css-grid-layout/grid-item-z-index-change-repaint.html [ Failure ]
crbug.com/591099 paint/invalidation/details-open-repaint.html [ Failure ]
crbug.com/591099 paint/invalidation/flexbox/align-content-change-keeping-geometry.html [ Failure ] crbug.com/591099 paint/invalidation/flexbox/align-content-change-keeping-geometry.html [ Failure ]
crbug.com/714962 paint/invalidation/flexbox/align-content-change-no-flex.html [ Failure ] crbug.com/714962 paint/invalidation/flexbox/align-content-change-no-flex.html [ Failure ]
crbug.com/591099 paint/invalidation/flexbox/align-content-change.html [ Failure ] crbug.com/591099 paint/invalidation/flexbox/align-content-change.html [ Failure ]
......
...@@ -938,6 +938,7 @@ crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/spanner-table ...@@ -938,6 +938,7 @@ crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/spanner-table
crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/spanner-with-margin.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/spanner-with-margin.html [ Failure ]
crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/spanner-with-margins-between-margins.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/spanner-with-margins-between-margins.html [ Failure ]
crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/spanner-with-relpos-child.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/spanner-with-relpos-child.html [ Failure ]
crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/summary-split.html [ Failure ]
crbug.com/824918 virtual/layout_ng_experimental/fast/multicol/span/trailing-margin-around-spanner.html [ Failure ] crbug.com/824918 virtual/layout_ng_experimental/fast/multicol/span/trailing-margin-around-spanner.html [ Failure ]
crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/trailing-margin-before-spanner.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/trailing-margin-before-spanner.html [ Failure ]
crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/two-rows-then-spanner-then-two-rows.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/two-rows-then-spanner-then-two-rows.html [ Failure ]
......
Visit Chromium Click the text! Button
Copyright 2015.
I have a checkbox Radio Button
I have a menuItem Menu ItemRadio
Birthday: Birthday(date and time): Birthday(datetime-local): Birthday (month and year): Select a week: Select a file: Min-Max: Color: Select a time:
0 100 + =
Blue Red
Text Input Controls
Text:
Password:
This test make sure that focusable elements are mapped implicitly to AX roles.
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
normal_link_id
PASS elem.role is "AXRole: AXLink"
mousedown_link_id
PASS elem.role is "AXRole: AXLink"
button_id
PASS elem.role is "AXRole: AXButton"
details_id
PASS elem.role is "AXRole: AXDetails"
summary_id
PASS elem.role is "AXRole: AXDisclosureTriangle"
input_datalist_id
PASS elem.role is "AXRole: AXTextFieldWithComboBox"
input_button_id
PASS elem.role is "AXRole: AXButton"
input_checkbox_id
PASS elem.role is "AXRole: AXCheckBox"
input_radio_id
PASS elem.role is "AXRole: AXRadioButton"
menu_button_id
PASS elem.role is "AXRole: AXButton"
menu_checkbox_id
PASS elem.role is "AXRole: AXMenuItemCheckBox"
menu_radio_id
PASS elem.role is "AXRole: AXMenuItemRadio"
input_date_id
PASS elem.role is "AXRole: AXDateField"
input_datetime_id
PASS elem.role is "AXRole: AXTextField"
input_datetime-local_id
PASS elem.role is "AXRole: AXDateTimeField"
input_month_id
PASS elem.role is "AXRole: AXDateTimeField"
input_week_id
PASS elem.role is "AXRole: AXDateTimeField"
input_file_id
PASS elem.role is "AXRole: AXButton"
input_number_id
PASS elem.role is "AXRole: AXSpinButton"
input_range_id
PASS elem.role is "AXRole: AXSlider"
input_color_id
PASS elem.role is "AXRole: AXColorWell"
input_time_id
PASS elem.role is "AXRole: AXInputTime"
input_reset_id
PASS elem.role is "AXRole: AXButton"
select_id
PASS elem.role is "AXRole: AXPopUpButton"
PASS axMenuListPopup.role is "AXRole: AXMenuListPopup"
select_option_id
PASS axMenuListOption.role is "AXRole: AXMenuListOption"
select_multiple_id
PASS elem.role is "AXRole: AXListBox"
select_multiple_option_id
PASS elem.role is "AXRole: AXListBoxOption"
textarea_id
PASS elem.role is "AXRole: AXTextField"
meter_id
PASS elem.role is "AXRole: AXMeter"
output_id
PASS elem.role is "AXRole: AXStatus"
input_radio_id
PASS elem.role is "AXRole: AXRadioButton"
legend_id
PASS elem.role is "AXRole: AXLegend"
input_text_id
PASS elem.role is "AXRole: AXTextField"
input_password_id
PASS elem.role is "AXRole: AXTextField"
PASS successfullyParsed is true
TEST COMPLETE
Dispaching a click event on #details-child
event.path on node #details-child
#details-child, #details, #sandbox, [object HTMLBodyElement], [object HTMLHtmlElement], [object HTMLDocument], [object Window], length: 7
event.path on node #details
#details-child, #details, #sandbox, [object HTMLBodyElement], [object HTMLHtmlElement], [object HTMLDocument], [object Window], length: 7
event.path on node #sandbox
#details-child, #details, #sandbox, [object HTMLBodyElement], [object HTMLHtmlElement], [object HTMLDocument], [object Window], length: 7
Dispaching a click event on #summary-child
event.path on node #summary-child
#summary-child, #summary, #details, #sandbox, [object HTMLBodyElement], [object HTMLHtmlElement], [object HTMLDocument], [object Window], length: 8
event.path on node #summary
#summary-child, #summary, #details, #sandbox, [object HTMLBodyElement], [object HTMLHtmlElement], [object HTMLDocument], [object Window], length: 8
event.path on node #details
#summary-child, #summary, #details, #sandbox, [object HTMLBodyElement], [object HTMLHtmlElement], [object HTMLDocument], [object Window], length: 8
event.path on node #sandbox
#summary-child, #summary, #details, #sandbox, [object HTMLBodyElement], [object HTMLHtmlElement], [object HTMLDocument], [object Window], length: 8
PASS successfullyParsed is true
TEST COMPLETE
crbug.com/337616: test for querySelectorAll with ::shadow and /deep/
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
PASS document.querySelectorAll("form /deep/ *").length is 1
PASS document.querySelectorAll("form /deep/ *")[0].id is "input"
PASS document.querySelectorAll("form::shadow *").length is 0
PASS document.querySelectorAll("input /deep/ *").length is 0
PASS document.querySelectorAll("input::shadow *").length is 0
PASS document.querySelectorAll("details /deep/ *").length is 2
PASS document.querySelectorAll("details /deep/ *")[0].id is "summary"
PASS document.querySelectorAll("details /deep/ *")[1].id is "p"
PASS document.querySelectorAll("details::shadow *").length is 0
PASS document.querySelectorAll("summary /deep/ *").length is 0
PASS document.querySelectorAll("summary::shadow *").length is 0
PASS document.querySelectorAll("meter /deep/ *").length is 0
PASS document.querySelectorAll("meter::shadow *").length is 0
PASS document.querySelectorAll("progress /deep/ *").length is 0
PASS document.querySelectorAll("progress::shadow *").length is 0
PASS successfullyParsed is true
TEST COMPLETE
layer at (0,0) size 800x600
LayoutView at (0,0) size 800x600
layer at (0,0) size 800x477
LayoutNGBlockFlow {HTML} at (0,0) size 800x476.84
LayoutNGBlockFlow {BODY} at (8,8) size 784x460.84
LayoutNGBlockFlow {DIV} at (0,0) size 784x86.83
LayoutNGBlockFlow {DETAILS} at (0,0) size 784x86.83
LayoutNGBlockFlow {SUMMARY} at (0,0) size 784x86.83
LayoutDetailsMarker {DIV} at (0,0) size 111.83x79.83 [border: (8px solid #00FF00) (16px solid #00FF00) (24px solid #00FF00) (32px solid #00FF00)]: right
LayoutText {#text} at (121,58) size 95x28
text run at (121,58) width 95: "Summary"
LayoutNGBlockFlow {DIV} at (0,86.83) size 118.83x183.42
LayoutNGBlockFlow {DETAILS} at (0,0) size 118.83x183.42
LayoutNGBlockFlow {SUMMARY} at (0,0) size 118.83x183.42
LayoutDetailsMarker {DIV} at (0,0) size 111.83x79.83 [border: (8px solid #00FF00) (16px solid #00FF00) (24px solid #00FF00) (32px solid #00FF00)]: down
LayoutText {#text} at (1,89) size 27x95
text run at (1,89) width 94: "Summary"
LayoutNGBlockFlow {DIV} at (0,270.25) size 784x47
LayoutNGBlockFlow {DETAILS} at (0,0) size 784x47
LayoutNGBlockFlow {SUMMARY} at (0,0) size 784x47
LayoutDetailsMarker {DIV} at (0,0) size 64x40 [border: (8px solid #00FF00)]: right
LayoutText {#text} at (73,19) size 95x27
text run at (73,19) width 95: "Summary"
LayoutNGBlockFlow {DIV} at (0,317.25) size 71x143.59
LayoutNGBlockFlow {DETAILS} at (0,0) size 71x143.59
LayoutNGBlockFlow {SUMMARY} at (0,0) size 71x143.59
LayoutDetailsMarker {DIV} at (0,0) size 64x40 [border: (8px solid #00FF00)]: down
LayoutText {#text} at (1,49) size 27x95
text run at (1,49) width 94: "Summary"
layer at (0,0) size 800x600
LayoutView at (0,0) size 800x600
layer at (0,0) size 800x600
LayoutNGBlockFlow {HTML} at (0,0) size 800x600
LayoutNGBlockFlow {BODY} at (8,8) size 784x584
LayoutNGBlockFlow {DETAILS} at (0,0) size 784x144 [border: (8px solid #555599)]
LayoutNGBlockFlow {SUMMARY} at (8,8) size 768x108 [border: (8px solid #9999CC)]
LayoutNGBlockFlow (anonymous) at (8,8) size 752x20
LayoutDetailsMarker {DIV} at (0,4.45) size 10.55x10.55: down
LayoutText {#text} at (16,0) size 63x19
text run at (16,0) width 63: " summary"
LayoutNGBlockFlow {DETAILS} at (8,28) size 752x72 [border: (8px solid #995555)]
LayoutNGBlockFlow {SUMMARY} at (8,8) size 736x36 [border: (8px solid #CC9999)]
LayoutDetailsMarker {DIV} at (8,12.45) size 10.55x10.55: down
LayoutText {#text} at (24,8) size 283x19
text run at (24,8) width 283: " nested summary (summary-deails-summary)"
LayoutNGBlockFlow {DIV} at (8,44) size 736x20
LayoutText {#text} at (0,0) size 197x19
text run at (0,0) width 197: "nested details (summary-deails)"
LayoutNGBlockFlow {DIV} at (8,116) size 768x20
LayoutText {#text} at (0,0) size 40x19
text run at (0,0) width 40: "details"
layer at (0,0) size 800x600
LayoutView at (0,0) size 800x600
layer at (0,0) size 800x600
LayoutNGBlockFlow {HTML} at (0,0) size 800x600
LayoutNGBlockFlow {BODY} at (8,8) size 784x584
LayoutNGBlockFlow {DETAILS} at (0,0) size 784x144 [border: (8px solid #555599)]
LayoutNGBlockFlow {SUMMARY} at (8,8) size 768x36 [border: (8px solid #9999CC)]
LayoutDetailsMarker {DIV} at (8,12.45) size 10.55x10.55: down
LayoutText {#text} at (24,8) size 63x19
text run at (24,8) width 63: " summary"
LayoutNGBlockFlow {DIV} at (8,44) size 768x92
LayoutNGBlockFlow {DETAILS} at (0,0) size 768x72 [border: (8px solid #995555)]
LayoutNGBlockFlow {SUMMARY} at (8,8) size 752x36 [border: (8px solid #CC9999)]
LayoutDetailsMarker {DIV} at (8,12.45) size 10.55x10.55: down
LayoutText {#text} at (24,8) size 265x19
text run at (24,8) width 265: " nested summary (details-deails-summary)"
LayoutNGBlockFlow {DIV} at (8,44) size 752x20
LayoutText {#text} at (0,0) size 179x19
text run at (0,0) width 179: "nested details (details-deails)"
LayoutNGBlockFlow (anonymous) at (0,72) size 768x20
LayoutText {#text} at (0,0) size 40x19
text run at (0,0) width 40: "details"
layer at (0,0) size 800x600 scrollWidth 942
LayoutView at (0,0) size 800x600
layer at (0,0) size 800x600
LayoutNGBlockFlow {HTML} at (0,0) size 800x600
LayoutNGBlockFlow {BODY} at (8,8) size 784x584
LayoutNGBlockFlow {DETAILS} at (0,0) size 784x0
LayoutNGBlockFlow {DETAILS} at (0,0) size 784x20
LayoutNGBlockFlow {DETAILS} at (0,20) size 784x0
layer at (50,150) size 49x20
LayoutNGBlockFlow (positioned) {SUMMARY} at (50,150) size 48.94x20
LayoutDetailsMarker {DIV} at (0,4.45) size 10.55x10.55: right
LayoutText {#text} at (16,0) size 33x19
text run at (16,0) width 33: "fixed"
layer at (158,158) size 784x20 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
LayoutNGBlockFlow (relative positioned) {SUMMARY} at (0,0) size 784x20
LayoutDetailsMarker {DIV} at (0,4.45) size 10.55x10.55: right
LayoutText {#text} at (16,0) size 47x19
text run at (16,0) width 47: "relative"
layer at (250,150) size 69x20
LayoutNGBlockFlow (positioned) {SUMMARY} at (250,150) size 68.94x20
LayoutDetailsMarker {DIV} at (0,4.45) size 10.55x10.55: right
LayoutText {#text} at (16,0) size 53x19
text run at (16,0) width 53: "absolute"
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
#include "third_party/blink/renderer/core/html/shadow/shadow_element_names.h" #include "third_party/blink/renderer/core/html/shadow/shadow_element_names.h"
#include "third_party/blink/renderer/core/html_names.h" #include "third_party/blink/renderer/core/html_names.h"
#include "third_party/blink/renderer/core/layout/layout_block_flow.h" #include "third_party/blink/renderer/core/layout/layout_block_flow.h"
#include "third_party/blink/renderer/core/layout/layout_object_factory.h"
#include "third_party/blink/renderer/platform/bindings/exception_state.h" #include "third_party/blink/renderer/platform/bindings/exception_state.h"
#include "third_party/blink/renderer/platform/text/platform_locale.h" #include "third_party/blink/renderer/platform/text/platform_locale.h"
...@@ -69,8 +70,9 @@ void HTMLDetailsElement::DispatchPendingEvent() { ...@@ -69,8 +70,9 @@ void HTMLDetailsElement::DispatchPendingEvent() {
DispatchEvent(Event::Create(EventTypeNames::toggle)); DispatchEvent(Event::Create(EventTypeNames::toggle));
} }
LayoutObject* HTMLDetailsElement::CreateLayoutObject(const ComputedStyle&) { LayoutObject* HTMLDetailsElement::CreateLayoutObject(
return new LayoutBlockFlow(this); const ComputedStyle& style) {
return LayoutObjectFactory::CreateBlockFlow(*this, style);
} }
void HTMLDetailsElement::DidAddUserAgentShadowRoot(ShadowRoot& root) { void HTMLDetailsElement::DidAddUserAgentShadowRoot(ShadowRoot& root) {
......
...@@ -45,7 +45,6 @@ class HTMLDetailsElement final : public HTMLElement { ...@@ -45,7 +45,6 @@ class HTMLDetailsElement final : public HTMLElement {
void DispatchPendingEvent(); void DispatchPendingEvent();
LayoutObject* CreateLayoutObject(const ComputedStyle&) override; LayoutObject* CreateLayoutObject(const ComputedStyle&) override;
bool ShouldForceLegacyLayout() const final { return true; }
void ParseAttribute(const AttributeModificationParams&) override; void ParseAttribute(const AttributeModificationParams&) override;
void DidAddUserAgentShadowRoot(ShadowRoot&) override; void DidAddUserAgentShadowRoot(ShadowRoot&) override;
bool IsInteractiveContent() const override; bool IsInteractiveContent() const override;
......
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
#include "third_party/blink/renderer/core/html/shadow/shadow_element_names.h" #include "third_party/blink/renderer/core/html/shadow/shadow_element_names.h"
#include "third_party/blink/renderer/core/html_names.h" #include "third_party/blink/renderer/core/html_names.h"
#include "third_party/blink/renderer/core/layout/layout_block_flow.h" #include "third_party/blink/renderer/core/layout/layout_block_flow.h"
#include "third_party/blink/renderer/core/layout/layout_object_factory.h"
#include "third_party/blink/renderer/platform/bindings/exception_state.h" #include "third_party/blink/renderer/platform/bindings/exception_state.h"
namespace blink { namespace blink {
...@@ -55,7 +56,7 @@ LayoutObject* HTMLSummaryElement::CreateLayoutObject( ...@@ -55,7 +56,7 @@ LayoutObject* HTMLSummaryElement::CreateLayoutObject(
display == EDisplay::kLayoutCustom || display == EDisplay::kLayoutCustom ||
display == EDisplay::kInlineLayoutCustom) display == EDisplay::kInlineLayoutCustom)
return LayoutObject::CreateObject(this, style); return LayoutObject::CreateObject(this, style);
return new LayoutBlockFlow(this); return LayoutObjectFactory::CreateBlockFlow(*this, style);
} }
void HTMLSummaryElement::DidAddUserAgentShadowRoot(ShadowRoot& root) { void HTMLSummaryElement::DidAddUserAgentShadowRoot(ShadowRoot& root) {
......
...@@ -39,7 +39,6 @@ class HTMLSummaryElement final : public HTMLElement { ...@@ -39,7 +39,6 @@ class HTMLSummaryElement final : public HTMLElement {
explicit HTMLSummaryElement(Document&); explicit HTMLSummaryElement(Document&);
LayoutObject* CreateLayoutObject(const ComputedStyle&) override; LayoutObject* CreateLayoutObject(const ComputedStyle&) override;
bool ShouldForceLegacyLayout() const final { return true; }
void DefaultEventHandler(Event*) override; void DefaultEventHandler(Event*) override;
bool HasActivationBehavior() const override; bool HasActivationBehavior() const override;
void DidAddUserAgentShadowRoot(ShadowRoot&) override; void DidAddUserAgentShadowRoot(ShadowRoot&) override;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment