Backed out changeset 955256297d6d (bug 1579367) for causing a top crash in Bug 1594404. a=backout

This commit is contained in:
Dorel Luca
2019-11-06 23:19:09 +02:00
parent 5e86d489c4
commit b855dec17b
11 changed files with 38 additions and 84 deletions

View File

@@ -85,6 +85,7 @@ using namespace mozilla;
using namespace mozilla::dom;
nsIIOService* nsScriptSecurityManager::sIOService = nullptr;
JSContext* nsScriptSecurityManager::sContext = nullptr;
bool nsScriptSecurityManager::sStrictFileOriginPolicy = true;
namespace {
@@ -1370,28 +1371,22 @@ nsresult nsScriptSecurityManager::Init() {
mSystemPrincipal = system;
return NS_OK;
}
void nsScriptSecurityManager::InitJSCallbacks(JSContext* aCx) {
//-- Register security check callback in the JS engine
// Currently this is used to control access to function.caller
sContext = danger::GetJSContext();
static const JSSecurityCallbacks securityCallbacks = {
ContentSecurityPolicyPermitsJSAction,
JSPrincipalsSubsume,
};
MOZ_ASSERT(!JS_GetSecurityCallbacks(aCx));
JS_SetSecurityCallbacks(aCx, &securityCallbacks);
JS_InitDestroyPrincipalsCallback(aCx, nsJSPrincipals::Destroy);
MOZ_ASSERT(!JS_GetSecurityCallbacks(sContext));
JS_SetSecurityCallbacks(sContext, &securityCallbacks);
JS_InitDestroyPrincipalsCallback(sContext, nsJSPrincipals::Destroy);
JS_SetTrustedPrincipals(aCx, BasePrincipal::Cast(mSystemPrincipal));
}
JS_SetTrustedPrincipals(sContext, system);
void nsScriptSecurityManager::ClearJSCallbacks(JSContext* aCx) {
JS_SetSecurityCallbacks(aCx, nullptr);
JS_SetTrustedPrincipals(aCx, nullptr);
return NS_OK;
}
static StaticRefPtr<nsScriptSecurityManager> gScriptSecMan;
@@ -1409,6 +1404,12 @@ nsScriptSecurityManager::~nsScriptSecurityManager(void) {
}
void nsScriptSecurityManager::Shutdown() {
if (sContext) {
JS_SetSecurityCallbacks(sContext, nullptr);
JS_SetTrustedPrincipals(sContext, nullptr);
sContext = nullptr;
}
NS_IF_RELEASE(sIOService);
BundleHelper::Shutdown();
}