Bug 1329731 - Add moz-extension to the principals immune to script policy. draft
authorLuca Greco <lgreco@mozilla.com>
Tue, 17 Jan 2017 13:54:03 +0100
changeset 483017 a17b98d31b04d024b16714613aa084aa13b515d3
parent 482503 00d16f03506b7f9f754b01a0a458c05445ac6dba
child 545532 26ffe907c72174a320c913c434e635aaf0b9bf76
push id45192
push userluca.greco@alcacoop.it
push dateMon, 13 Feb 2017 16:41:33 +0000
bugs1329731
milestone54.0a1
Bug 1329731 - Add moz-extension to the principals immune to script policy. MozReview-Commit-ID: FAn2Cq5Lz5O
js/xpconnect/src/XPCJSContext.cpp
--- a/js/xpconnect/src/XPCJSContext.cpp
+++ b/js/xpconnect/src/XPCJSContext.cpp
@@ -342,16 +342,25 @@ PrincipalImmuneToScriptPolicy(nsIPrincip
     if (ep)
         return true;
 
     // Check whether our URI is an "about:" URI that allows scripts.  If it is,
     // we need to allow JS to run.
     nsCOMPtr<nsIURI> principalURI;
     aPrincipal->GetURI(getter_AddRefs(principalURI));
     MOZ_ASSERT(principalURI);
+
+    // WebExtension principals gets a free pass.
+    nsString addonId;
+    aPrincipal->GetAddonId(addonId);
+    bool isWebExtension = !addonId.IsEmpty();
+    if (isWebExtension) {
+        return true;
+    }
+
     bool isAbout;
     nsresult rv = principalURI->SchemeIs("about", &isAbout);
     if (NS_SUCCEEDED(rv) && isAbout) {
         nsCOMPtr<nsIAboutModule> module;
         rv = NS_GetAboutModule(principalURI, getter_AddRefs(module));
         if (NS_SUCCEEDED(rv)) {
             uint32_t flags;
             rv = module->GetURIFlags(principalURI, &flags);