Bug 842372 - Part 1: Implement nsINode::ShouldExposeUserData. r=bholley

This commit is contained in:
Masatoshi Kimura 2013-02-23 13:46:05 +09:00
parent 9341f966c9
commit fdb26c9036
2 changed files with 18 additions and 0 deletions

View File

@ -1135,6 +1135,12 @@ public:
return NS_OK;
}
/**
* Control if GetUserData and SetUserData methods will be exposed to
* unprivileged content.
*/
static bool ShouldExposeUserData(JSContext* aCx, JSObject* /* unused */);
void LookupPrefix(const nsAString& aNamespace, nsAString& aResult);
bool IsDefaultNamespace(const nsAString& aNamespaceURI)
{

View File

@ -10,6 +10,7 @@
#include "nsINode.h"
#include "AccessCheck.h"
#include "jsapi.h"
#include "mozAutoDocUpdate.h"
#include "mozilla/CORSMode.h"
@ -96,6 +97,7 @@
#include "nsXBLInsertionPoint.h"
#include "nsXBLPrototypeBinding.h"
#include "prprf.h"
#include "xpcprivate.h" // XBLScopesEnabled
#include "xpcpublic.h"
#include "nsCSSRuleProcessor.h"
#include "nsCSSParser.h"
@ -719,6 +721,16 @@ nsINode::GetUserData(JSContext* aCx, const nsAString& aKey, ErrorResult& aError)
return result;
}
//static
bool
nsINode::ShouldExposeUserData(JSContext* aCx, JSObject* /* unused */)
{
JSCompartment* compartment = js::GetContextCompartment(aCx);
return xpc::AccessCheck::isChrome(compartment) ||
xpc::IsXBLScope(compartment) ||
!XPCJSRuntime::Get()->XBLScopesEnabled();
}
uint16_t
nsINode::CompareDocumentPosition(nsINode& aOtherNode) const
{