[tbb-commits] [tor-browser/esr24] Bug 894448 part 1. Move IsChromeOrXBL to xpcpublic.h. r=bholley
mikeperry at torproject.org
mikeperry at torproject.org
Fri Aug 29 05:26:37 UTC 2014
commit 8f3244276e1f3d464239d2fe6ee44ea4a2c7f672
Author: Boris Zbarsky <bzbarsky at mit.edu>
Date: Mon Feb 10 14:07:26 2014 -0800
Bug 894448 part 1. Move IsChromeOrXBL to xpcpublic.h. r=bholley
---
content/base/public/nsINode.h | 6 ------
content/base/src/nsINode.cpp | 9 ---------
dom/bindings/Codegen.py | 3 +--
dom/webidl/Node.webidl | 4 ++--
js/xpconnect/src/nsXPConnect.cpp | 13 +++++++++++++
js/xpconnect/src/xpcpublic.h | 6 ++++++
6 files changed, 22 insertions(+), 19 deletions(-)
diff --git a/content/base/public/nsINode.h b/content/base/public/nsINode.h
index 8d725a5..2c0b0b5 100644
--- a/content/base/public/nsINode.h
+++ b/content/base/public/nsINode.h
@@ -1120,12 +1120,6 @@ public:
return NS_OK;
}
- /**
- * Control if GetUserData and SetUserData methods will be exposed to
- * unprivileged content.
- */
- static bool IsChromeOrXBL(JSContext* aCx, JSObject* /* unused */);
-
void LookupPrefix(const nsAString& aNamespace, nsAString& aResult);
bool IsDefaultNamespace(const nsAString& aNamespaceURI)
{
diff --git a/content/base/src/nsINode.cpp b/content/base/src/nsINode.cpp
index bc93f7e..297d519 100644
--- a/content/base/src/nsINode.cpp
+++ b/content/base/src/nsINode.cpp
@@ -735,15 +735,6 @@ nsINode::GetUserData(JSContext* aCx, const nsAString& aKey, ErrorResult& aError)
return result;
}
-//static
-bool
-nsINode::IsChromeOrXBL(JSContext* aCx, JSObject* /* unused */)
-{
- JSCompartment* compartment = js::GetContextCompartment(aCx);
- return xpc::AccessCheck::isChrome(compartment) ||
- xpc::IsXBLScope(compartment);
-}
-
uint16_t
nsINode::CompareDocumentPosition(nsINode& aOtherNode) const
{
diff --git a/dom/bindings/Codegen.py b/dom/bindings/Codegen.py
index a8f277f..88892d7 100644
--- a/dom/bindings/Codegen.py
+++ b/dom/bindings/Codegen.py
@@ -1479,8 +1479,7 @@ class MethodDefiner(PropertyDefiner):
"length": 1,
"flags": "0",
"condition":
- MemberCondition(None,
- "nsINode::IsChromeOrXBL") })
+ MemberCondition(None, "IsChromeOrXBL") })
if not static:
stringifier = descriptor.operations['Stringifier']
diff --git a/dom/webidl/Node.webidl b/dom/webidl/Node.webidl
index c6084de..2002d64 100644
--- a/dom/webidl/Node.webidl
+++ b/dom/webidl/Node.webidl
@@ -96,9 +96,9 @@ interface Node : EventTarget {
readonly attribute DOMString? localName;
boolean hasAttributes();
- [Throws, Func="nsINode::IsChromeOrXBL"]
+ [Throws, Func="IsChromeOrXBL"]
any setUserData(DOMString key, any data, UserDataHandler? handler);
- [Throws, Func="nsINode::IsChromeOrXBL"]
+ [Throws, Func="IsChromeOrXBL"]
any getUserData(DOMString key);
[ChromeOnly]
readonly attribute Principal nodePrincipal;
diff --git a/js/xpconnect/src/nsXPConnect.cpp b/js/xpconnect/src/nsXPConnect.cpp
index 9c6f74b..12a8fd0 100644
--- a/js/xpconnect/src/nsXPConnect.cpp
+++ b/js/xpconnect/src/nsXPConnect.cpp
@@ -1707,3 +1707,16 @@ IsXrayWrapper(JSObject *obj)
} // namespace xpc
+namespace mozilla {
+namespace dom {
+
+bool
+IsChromeOrXBL(JSContext* cx, JSObject* /* unused */)
+{
+ JSCompartment* compartment = js::GetContextCompartment(cx);
+ return AccessCheck::isChrome(compartment) ||
+ IsXBLScope(compartment);
+}
+
+} // namespace dom
+} // namespace mozilla
diff --git a/js/xpconnect/src/xpcpublic.h b/js/xpconnect/src/xpcpublic.h
index 9398f24..365f1ba5 100644
--- a/js/xpconnect/src/xpcpublic.h
+++ b/js/xpconnect/src/xpcpublic.h
@@ -498,6 +498,12 @@ DefineStaticJSVals(JSContext *cx);
void
Register(nsScriptNameSpaceManager* aNameSpaceManager);
+/**
+ * A test for whether WebIDL methods that should only be visible to
+ * chrome or XBL scopes should be exposed.
+ */
+bool IsChromeOrXBL(JSContext* cx, JSObject* /* unused */);
+
} // namespace dom
} // namespace mozilla
More information about the tbb-commits
mailing list