diff options
author | Gaming4JC <g4jc@hyperbola.info> | 2020-01-07 09:10:56 -0500 |
---|---|---|
committer | Gaming4JC <g4jc@hyperbola.info> | 2020-01-07 18:33:23 -0500 |
commit | b91b0c37eb6cab1e179252692ad7e7a60606efa3 (patch) | |
tree | 9d0f870d382acab08d48996d2e47d0c0db0fff21 /dom | |
parent | a4011e72463bae700f212af9d2a530e38ea32ac1 (diff) | |
download | UXP-b91b0c37eb6cab1e179252692ad7e7a60606efa3.tar UXP-b91b0c37eb6cab1e179252692ad7e7a60606efa3.tar.gz UXP-b91b0c37eb6cab1e179252692ad7e7a60606efa3.tar.lz UXP-b91b0c37eb6cab1e179252692ad7e7a60606efa3.tar.xz UXP-b91b0c37eb6cab1e179252692ad7e7a60606efa3.zip |
Bug 1322938 - Put <dialog> element behind preference.
Tag #1343
Diffstat (limited to 'dom')
-rw-r--r-- | dom/html/HTMLDialogElement.cpp | 29 | ||||
-rw-r--r-- | dom/html/HTMLDialogElement.h | 2 | ||||
-rw-r--r-- | dom/tests/mochitest/general/test_interfaces.html | 2 | ||||
-rw-r--r-- | dom/webidl/HTMLDialogElement.webidl | 1 |
4 files changed, 32 insertions, 2 deletions
diff --git a/dom/html/HTMLDialogElement.cpp b/dom/html/HTMLDialogElement.cpp index 1f65b602f..48666628e 100644 --- a/dom/html/HTMLDialogElement.cpp +++ b/dom/html/HTMLDialogElement.cpp @@ -6,8 +6,20 @@ #include "mozilla/dom/HTMLDialogElement.h" #include "mozilla/dom/HTMLDialogElementBinding.h" +#include "mozilla/dom/HTMLUnknownElement.h" +#include "mozilla/Preferences.h" -NS_IMPL_NS_NEW_HTML_ELEMENT(Dialog) +// Expand NS_IMPL_NS_NEW_HTML_ELEMENT(Dialog) with pref check +nsGenericHTMLElement* +NS_NewHTMLDialogElement(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo, + mozilla::dom::FromParser aFromParser) +{ + if (!mozilla::dom::HTMLDialogElement::IsDialogEnabled()) { + return new mozilla::dom::HTMLUnknownElement(aNodeInfo); + } + + return new mozilla::dom::HTMLDialogElement(aNodeInfo); +} namespace mozilla { namespace dom { @@ -18,6 +30,21 @@ HTMLDialogElement::~HTMLDialogElement() NS_IMPL_ELEMENT_CLONE(HTMLDialogElement) +bool +HTMLDialogElement::IsDialogEnabled() +{ + static bool isDialogEnabled = false; + static bool added = false; + + if (!added) { + Preferences::AddBoolVarCache(&isDialogEnabled, + "dom.dialog_element.enabled"); + added = true; + } + + return isDialogEnabled; +} + void HTMLDialogElement::Close(const mozilla::dom::Optional<nsAString>& aReturnValue) { diff --git a/dom/html/HTMLDialogElement.h b/dom/html/HTMLDialogElement.h index 2222cd2f7..efa319f3c 100644 --- a/dom/html/HTMLDialogElement.h +++ b/dom/html/HTMLDialogElement.h @@ -26,6 +26,8 @@ public: virtual nsresult Clone(mozilla::dom::NodeInfo* aNodeInfo, nsINode** aResult) const override; + static bool IsDialogEnabled(); + bool Open() const { return GetBoolAttr(nsGkAtoms::open); } void SetOpen(bool aOpen, ErrorResult& aError) { diff --git a/dom/tests/mochitest/general/test_interfaces.html b/dom/tests/mochitest/general/test_interfaces.html index 9208997be..eb09f5962 100644 --- a/dom/tests/mochitest/general/test_interfaces.html +++ b/dom/tests/mochitest/general/test_interfaces.html @@ -443,7 +443,7 @@ var interfaceNamesInGlobalScope = // IMPORTANT: Do not change this list without review from a DOM peer! "HTMLDetailsElement", // IMPORTANT: Do not change this list without review from a DOM peer! - "HTMLDialogElement", + {name: "HTMLDialogElement", disabled: true}, // IMPORTANT: Do not change this list without review from a DOM peer! "HTMLDirectoryElement", // IMPORTANT: Do not change this list without review from a DOM peer! diff --git a/dom/webidl/HTMLDialogElement.webidl b/dom/webidl/HTMLDialogElement.webidl index f4aa8484a..b6cdbacf6 100644 --- a/dom/webidl/HTMLDialogElement.webidl +++ b/dom/webidl/HTMLDialogElement.webidl @@ -11,6 +11,7 @@ * and create derivative works of this document. */ +[Pref="dom.dialog_element.enabled"] interface HTMLDialogElement : HTMLElement { [SetterThrows] attribute boolean open; attribute DOMString returnValue; |