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/html | |
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/html')
-rw-r--r-- | dom/html/HTMLDialogElement.cpp | 29 | ||||
-rw-r--r-- | dom/html/HTMLDialogElement.h | 2 |
2 files changed, 30 insertions, 1 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) { |