diff options
author | Moonchild <moonchild@palemoon.org> | 2021-04-01 07:17:23 +0000 |
---|---|---|
committer | Moonchild <moonchild@palemoon.org> | 2021-04-01 07:17:23 +0000 |
commit | 5e6b15940f0c2bc208bd1becafc745c85b01717b (patch) | |
tree | 444da72bb727e5e916204be42c39cf2f9e1e27e1 /layout | |
parent | 2953a5b1a1f73cc6defe27e414069cd78befcaa0 (diff) | |
parent | 82cb11de19e8aa2b4dbee923e16cab6d35dd908d (diff) | |
download | uxp-5e6b15940f0c2bc208bd1becafc745c85b01717b.tar.gz |
Merge pull request 'Reinstate "dom.details_element.enabled" preference' (#1758) from athenian200/UXP:details_element_pref into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/1758
Diffstat (limited to 'layout')
-rw-r--r-- | layout/base/nsCSSFrameConstructor.cpp | 8 | ||||
-rw-r--r-- | layout/generic/crashtests/crashtests.list | 16 | ||||
-rw-r--r-- | layout/generic/nsContainerFrame.cpp | 10 | ||||
-rw-r--r-- | layout/reftests/details-summary/disabled-no-summary-ref.html | 11 | ||||
-rw-r--r-- | layout/reftests/details-summary/disabled-single-summary-ref.html | 12 | ||||
-rw-r--r-- | layout/reftests/details-summary/reftest.list | 7 | ||||
-rw-r--r-- | layout/style/nsLayoutStylesheetCache.cpp | 10 |
7 files changed, 58 insertions, 16 deletions
diff --git a/layout/base/nsCSSFrameConstructor.cpp b/layout/base/nsCSSFrameConstructor.cpp index b40e6f8b61..9a0410d737 100644 --- a/layout/base/nsCSSFrameConstructor.cpp +++ b/layout/base/nsCSSFrameConstructor.cpp @@ -3580,6 +3580,10 @@ nsCSSFrameConstructor::FindHTMLData(Element* aElement, return nullptr; } + if (aTag == nsGkAtoms::details && !HTMLDetailsElement::IsDetailsEnabled()) { + return nullptr; + } + static const FrameConstructionDataByTag sHTMLData[] = { SIMPLE_TAG_CHAIN(img, nsCSSFrameConstructor::FindImgData), SIMPLE_TAG_CHAIN(mozgeneratedcontentimage, @@ -5791,7 +5795,7 @@ nsCSSFrameConstructor::AddFrameConstructionItemsInternal(nsFrameConstructorState // ::before and ::after); we always want to create "internal" anonymous // content. auto* details = HTMLDetailsElement::FromContentOrNull(parent); - if (details && !details->Open() && + if (details && details->IsDetailsEnabled() && !details->Open() && (!aContent->IsRootOfNativeAnonymousSubtree() || aContent->IsGeneratedContentContainerForBefore() || aContent->IsGeneratedContentContainerForAfter())) { @@ -5959,7 +5963,7 @@ nsCSSFrameConstructor::AddFrameConstructionItemsInternal(nsFrameConstructorState } FrameConstructionItem* item = nullptr; - if (details && details->Open()) { + if (details && details->IsDetailsEnabled() && details->Open()) { auto* summary = HTMLSummaryElement::FromContentOrNull(aContent); if (summary && summary->IsMainSummary()) { // If details is open, the main summary needs to be rendered as if it is diff --git a/layout/generic/crashtests/crashtests.list b/layout/generic/crashtests/crashtests.list index d44d7614c1..c8fb84feb9 100644 --- a/layout/generic/crashtests/crashtests.list +++ b/layout/generic/crashtests/crashtests.list @@ -606,19 +606,19 @@ pref(layout.css.grid.enabled,true) load 1225376.html pref(layout.css.grid.enabled,true) load 1225592.html load 1229437-1.html load 1229437-2.html -load details-containing-only-text.html -load details-display-none-summary-1.html -load details-display-none-summary-2.html -load details-display-none-summary-3.html -load details-open-overflow-auto.html -load details-open-overflow-hidden.html -load details-three-columns.html +pref(dom.details_element.enabled,true) load details-containing-only-text.html +pref(dom.details_element.enabled,true) load details-display-none-summary-1.html +pref(dom.details_element.enabled,true) load details-display-none-summary-2.html +pref(dom.details_element.enabled,true) load details-display-none-summary-3.html +pref(dom.details_element.enabled,true) load details-open-overflow-auto.html +pref(dom.details_element.enabled,true) load details-open-overflow-hidden.html +pref(dom.details_element.enabled,true) load details-three-columns.html load first-letter-638937-1.html load first-letter-638937-2.html load flex-nested-abspos-1.html pref(dom.meta-viewport.enabled,true) test-pref(font.size.inflation.emPerLine,15) asserts(0-100) load font-inflation-762332.html # bug 762332 load outline-on-frameset.xhtml -load summary-position-out-of-flow.html +pref(dom.details_element.enabled,true) load summary-position-out-of-flow.html load text-overflow-bug666751-1.html load text-overflow-bug666751-2.html load text-overflow-bug670564.xhtml diff --git a/layout/generic/nsContainerFrame.cpp b/layout/generic/nsContainerFrame.cpp index 835ba9b262..47afed9de1 100644 --- a/layout/generic/nsContainerFrame.cpp +++ b/layout/generic/nsContainerFrame.cpp @@ -1891,10 +1891,12 @@ nsContainerFrame::RenumberFrameAndDescendants(int32_t* aOrdinal, } // Do not renumber list for summary elements. - HTMLSummaryElement* summary = - HTMLSummaryElement::FromContent(kid->GetContent()); - if (summary && summary->IsMainSummary()) { - return false; + if (HTMLDetailsElement::IsDetailsEnabled()) { + HTMLSummaryElement* summary = + HTMLSummaryElement::FromContent(kid->GetContent()); + if (summary && summary->IsMainSummary()) { + return false; + } } bool kidRenumberedABullet = false; diff --git a/layout/reftests/details-summary/disabled-no-summary-ref.html b/layout/reftests/details-summary/disabled-no-summary-ref.html new file mode 100644 index 0000000000..6ecdbcdc0a --- /dev/null +++ b/layout/reftests/details-summary/disabled-no-summary-ref.html @@ -0,0 +1,11 @@ +<!DOCTYPE html> +<!-- Any copyright is dedicated to the Public Domain. + - http://creativecommons.org/publicdomain/zero/1.0/ --> + +<html> + <body> + <div> + <p>This is the details.</p> + </div> + </body> +</html> diff --git a/layout/reftests/details-summary/disabled-single-summary-ref.html b/layout/reftests/details-summary/disabled-single-summary-ref.html new file mode 100644 index 0000000000..f643af6dcd --- /dev/null +++ b/layout/reftests/details-summary/disabled-single-summary-ref.html @@ -0,0 +1,12 @@ +<!DOCTYPE html> +<!-- Any copyright is dedicated to the Public Domain. + - http://creativecommons.org/publicdomain/zero/1.0/ --> + +<html> + <body> + <div> + <div>Summary</div> + <p>This is the details.</p> + </div> + </body> +</html> diff --git a/layout/reftests/details-summary/reftest.list b/layout/reftests/details-summary/reftest.list index a972cf4980..6b558ea137 100644 --- a/layout/reftests/details-summary/reftest.list +++ b/layout/reftests/details-summary/reftest.list @@ -1,3 +1,10 @@ +default-preferences pref(dom.details_element.enabled,true) + +# Disable <details> and <summary> +pref(dom.details_element.enabled,false) == single-summary.html disabled-single-summary-ref.html +pref(dom.details_element.enabled,false) == open-single-summary.html disabled-single-summary-ref.html +pref(dom.details_element.enabled,false) == no-summary.html disabled-no-summary-ref.html + # Basic <summary> handling == multiple-summary.html single-summary.html == open-multiple-summary.html open-multiple-summary-ref.html diff --git a/layout/style/nsLayoutStylesheetCache.cpp b/layout/style/nsLayoutStylesheetCache.cpp index bf87b006ca..1905d8c5cd 100644 --- a/layout/style/nsLayoutStylesheetCache.cpp +++ b/layout/style/nsLayoutStylesheetCache.cpp @@ -121,6 +121,11 @@ nsLayoutStylesheetCache::UASheet() StyleSheet* nsLayoutStylesheetCache::HTMLSheet() { + if (!mHTMLSheet) { + LoadSheetURL("resource://gre-resources/html.css", + &mHTMLSheet, eAgentSheetFeatures, eCrash); + } + return mHTMLSheet; } @@ -316,8 +321,6 @@ nsLayoutStylesheetCache::nsLayoutStylesheetCache(StyleBackendType aType) // per-profile, since they're profile-invariant. LoadSheetURL("resource://gre-resources/counterstyles.css", &mCounterStylesSheet, eAgentSheetFeatures, eCrash); - LoadSheetURL("resource://gre-resources/html.css", - &mHTMLSheet, eAgentSheetFeatures, eCrash); LoadSheetURL("chrome://global/content/minimal-xul.css", &mMinimalXULSheet, eAgentSheetFeatures, eCrash); LoadSheetURL("resource://gre-resources/quirk.css", @@ -378,6 +381,8 @@ nsLayoutStylesheetCache::For(StyleBackendType aType) // "layout.css.example-pref.enabled"); Preferences::RegisterCallback(&DependentPrefChanged, "layout.css.grid.enabled"); + Preferences::RegisterCallback(&DependentPrefChanged, + "dom.details_element.enabled"); } return cache; @@ -549,6 +554,7 @@ nsLayoutStylesheetCache::DependentPrefChanged(const char* aPref, void* aData) gStyleCache_Servo ? &gStyleCache_Servo->sheet_ : nullptr); INVALIDATE(mUASheet); // for layout.css.grid.enabled + INVALIDATE(mHTMLSheet); // for dom.details_element.enabled #undef INVALIDATE } |