author | Jonathan Hao <jhao@mozilla.com> |
Tue, 24 May 2016 18:01:34 +0800 | |
changeset 299877 | 62903b5a04a7cabecdb76e59e65462d5bd594a8d |
parent 299876 | 38f8d1092552919b3797d2975337e56602614b9b |
child 299878 | 137c977846ada35c514cca0f46da608ac3067960 |
push id | 30302 |
push user | cbook@mozilla.com |
push date | Wed, 01 Jun 2016 13:08:19 +0000 |
treeherder | mozilla-central@111970c73823 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | sicking |
bugs | 1259871 |
milestone | 49.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/browser/base/content/test/general/browser_bug413915.js +++ b/browser/base/content/test/general/browser_bug413915.js @@ -1,15 +1,15 @@ XPCOMUtils.defineLazyModuleGetter(this, "Feeds", "resource:///modules/Feeds.jsm"); function test() { var exampleUri = makeURI("http://example.com/"); var secman = Cc["@mozilla.org/scriptsecuritymanager;1"].getService(Ci.nsIScriptSecurityManager); - var principal = secman.getSimpleCodebasePrincipal(exampleUri); + var principal = secman.createCodebasePrincipal(exampleUri, {}); function testIsFeed(aTitle, aHref, aType, aKnown) { var link = { title: aTitle, href: aHref, type: aType }; return Feeds.isValidFeed(link, principal, aKnown); } var href = "http://example.com/feed/"; var atomType = "application/atom+xml";
--- a/browser/components/feeds/FeedWriter.js +++ b/browser/components/feeds/FeedWriter.js @@ -919,17 +919,17 @@ FeedWriter.prototype = { return; this._window = window; this._document = window.document; this._handlersList = this._document.getElementById("handlersMenuList"); let secman = Cc["@mozilla.org/scriptsecuritymanager;1"]. getService(Ci.nsIScriptSecurityManager); - this._feedPrincipal = secman.getSimpleCodebasePrincipal(this._feedURI); + this._feedPrincipal = secman.createCodebasePrincipal(this._feedURI, {}); LOG("Subscribe Preview: feed uri = " + this._window.location.href); // Set up the subscription UI this._initSubscriptionUI(); let prefs = Services.prefs; prefs.addObserver(PREF_SELECTED_ACTION, this, false); prefs.addObserver(PREF_SELECTED_READER, this, false);
--- a/caps/nsIScriptSecurityManager.idl +++ b/caps/nsIScriptSecurityManager.idl @@ -129,23 +129,16 @@ interface nsIScriptSecurityManager : nsI ///////////////// Principals /////////////////////// /** * Return the all-powerful system principal. */ nsIPrincipal getSystemPrincipal(); /** - * Return a principal that has the same origin as aURI. - * This principals should not be used for any data/permission check, it will - * have appId = UNKNOWN_APP_ID. - */ - nsIPrincipal getSimpleCodebasePrincipal(in nsIURI aURI); - - /** * Returns a principal that has the given information. * @param appId is the app id of the principal. It can't be UNKNOWN_APP_ID. * @param inMozBrowser is true if the principal has to be considered as * inside a mozbrowser frame. * * @deprecated use createCodebasePrincipal instead. */ [deprecated] nsIPrincipal getAppCodebasePrincipal(in nsIURI uri,
--- a/caps/nsScriptSecurityManager.cpp +++ b/caps/nsScriptSecurityManager.cpp @@ -1104,26 +1104,16 @@ NS_IMETHODIMP nsScriptSecurityManager::GetSystemPrincipal(nsIPrincipal **result) { NS_ADDREF(*result = mSystemPrincipal); return NS_OK; } NS_IMETHODIMP -nsScriptSecurityManager::GetSimpleCodebasePrincipal(nsIURI* aURI, - nsIPrincipal** aPrincipal) -{ - PrincipalOriginAttributes attrs(UNKNOWN_APP_ID, false); - nsCOMPtr<nsIPrincipal> prin = BasePrincipal::CreateCodebasePrincipal(aURI, attrs); - prin.forget(aPrincipal); - return *aPrincipal ? NS_OK : NS_ERROR_FAILURE; -} - -NS_IMETHODIMP nsScriptSecurityManager::GetNoAppCodebasePrincipal(nsIURI* aURI, nsIPrincipal** aPrincipal) { PrincipalOriginAttributes attrs(NO_APP_ID, false); nsCOMPtr<nsIPrincipal> prin = BasePrincipal::CreateCodebasePrincipal(aURI, attrs); prin.forget(aPrincipal); return *aPrincipal ? NS_OK : NS_ERROR_FAILURE; }
--- a/dom/base/DOMParser.cpp +++ b/dom/base/DOMParser.cpp @@ -334,22 +334,19 @@ DOMParser::Init(nsIPrincipal* principal, return NS_ERROR_INVALID_ARG; } } mScriptHandlingObject = do_GetWeakReference(aScriptObject); mPrincipal = principal; nsresult rv; if (!mPrincipal) { - nsIScriptSecurityManager* secMan = nsContentUtils::GetSecurityManager(); - NS_ENSURE_TRUE(secMan, NS_ERROR_NOT_AVAILABLE); - rv = - secMan->GetSimpleCodebasePrincipal(mDocumentURI, - getter_AddRefs(mPrincipal)); - NS_ENSURE_SUCCESS(rv, rv); + PrincipalOriginAttributes attrs; + mPrincipal = BasePrincipal::CreateCodebasePrincipal(mDocumentURI, attrs); + NS_ENSURE_TRUE(mPrincipal, NS_ERROR_FAILURE); mOriginalPrincipal = mPrincipal; } else { mOriginalPrincipal = mPrincipal; if (nsContentUtils::IsSystemPrincipal(mPrincipal)) { // Don't give DOMParsers the system principal. Use a null // principal instead. mPrincipal = nsNullPrincipal::Create();
--- a/dom/security/test/TestCSPParser.cpp +++ b/dom/security/test/TestCSPParser.cpp @@ -96,17 +96,19 @@ nsresult runTest(uint32_t aExpectedPolic NS_ENSURE_SUCCESS(rv, rv); // we init the csp with http://www.selfuri.com nsCOMPtr<nsIURI> selfURI; rv = NS_NewURI(getter_AddRefs(selfURI), "http://www.selfuri.com"); NS_ENSURE_SUCCESS(rv, rv); nsCOMPtr<nsIPrincipal> selfURIPrincipal; - rv = secman->GetSimpleCodebasePrincipal(selfURI, getter_AddRefs(selfURIPrincipal)); + // Can't use BasePrincipal::CreateCodebasePrincipal here + // because the symbol is not visible here + rv = secman->GetCodebasePrincipal(selfURI, getter_AddRefs(selfURIPrincipal)); NS_ENSURE_SUCCESS(rv, rv); // create a CSP object nsCOMPtr<nsIContentSecurityPolicy> csp = do_CreateInstance(NS_CSPCONTEXT_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv, rv); // for testing the parser we only need to set a principal which is needed
--- a/dom/security/test/csp/test_bug949549.html +++ b/dom/security/test/csp/test_bug949549.html @@ -36,17 +36,17 @@ }); } function runTest() { try { var secMan = SpecialPowers.Cc["@mozilla.org/scriptsecuritymanager;1"] .getService(SpecialPowers.Ci.nsIScriptSecurityManager); var manifestURI = SpecialPowers.Services.io.newURI(gManifestURL, null, null); - principal = secMan.getSimpleCodebasePrincipal(manifestURI); + principal = secMan.createCodebasePrincipal(manifestURI, {}); csp.setRequestContext(null, principal); ok(true, "setRequestContext hasn't thown"); } catch(e) { ok(false, "setRequestContext throws"); } cleanup() }
--- a/dom/security/test/unit/test_csp_reports.js +++ b/dom/security/test/unit/test_csp_reports.js @@ -82,17 +82,17 @@ function makeTest(id, expectedJSON, useR var selfuri = NetUtil.newURI(REPORT_SERVER_URI + ":" + REPORT_SERVER_PORT + "/foo/self"); dump("Created test " + id + " : " + policy + "\n\n"); let ssm = Cc["@mozilla.org/scriptsecuritymanager;1"] .getService(Ci.nsIScriptSecurityManager); - principal = ssm.getSimpleCodebasePrincipal(selfuri); + principal = ssm.createCodebasePrincipal(selfuri, {}); csp.setRequestContext(null, principal); // Load up the policy // set as report-only if that's the case csp.appendPolicy(policy, useReportOnlyPolicy, false); // prime the report server var handler = makeReportHandler("/test" + id, "Test " + id, expectedJSON);
--- a/dom/xslt/xslt/txMozillaStylesheetCompiler.cpp +++ b/dom/xslt/xslt/txMozillaStylesheetCompiler.cpp @@ -412,21 +412,20 @@ txCompileObserver::loadURI(const nsAStri nsCOMPtr<nsIURI> uri; nsresult rv = NS_NewURI(getter_AddRefs(uri), aUri); NS_ENSURE_SUCCESS(rv, rv); nsCOMPtr<nsIURI> referrerUri; rv = NS_NewURI(getter_AddRefs(referrerUri), aReferrerUri); NS_ENSURE_SUCCESS(rv, rv); - nsCOMPtr<nsIPrincipal> referrerPrincipal; - rv = nsContentUtils::GetSecurityManager()-> - GetSimpleCodebasePrincipal(referrerUri, - getter_AddRefs(referrerPrincipal)); - NS_ENSURE_SUCCESS(rv, rv); + PrincipalOriginAttributes attrs; + nsCOMPtr<nsIPrincipal> referrerPrincipal = + BasePrincipal::CreateCodebasePrincipal(referrerUri, attrs); + NS_ENSURE_TRUE(referrerPrincipal, NS_ERROR_FAILURE); return startLoad(uri, aCompiler, referrerPrincipal, aReferrerPolicy); } void txCompileObserver::onDoneCompiling(txStylesheetCompiler* aCompiler, nsresult aResult, const char16_t *aErrorText, @@ -617,21 +616,19 @@ txSyncCompileObserver::loadURI(const nsA nsCOMPtr<nsIURI> uri; nsresult rv = NS_NewURI(getter_AddRefs(uri), aUri); NS_ENSURE_SUCCESS(rv, rv); nsCOMPtr<nsIURI> referrerUri; rv = NS_NewURI(getter_AddRefs(referrerUri), aReferrerUri); NS_ENSURE_SUCCESS(rv, rv); - nsCOMPtr<nsIPrincipal> referrerPrincipal; - rv = nsContentUtils::GetSecurityManager()-> - GetSimpleCodebasePrincipal(referrerUri, - getter_AddRefs(referrerPrincipal)); - NS_ENSURE_SUCCESS(rv, rv); + nsCOMPtr<nsIPrincipal> referrerPrincipal = + BasePrincipal::CreateCodebasePrincipal(referrerUri, PrincipalOriginAttributes()); + NS_ENSURE_TRUE(referrerPrincipal, NS_ERROR_FAILURE); // This is probably called by js, a loadGroup for the channel doesn't // make sense. nsCOMPtr<nsINode> source; if (mProcessor) { source = do_QueryInterface(mProcessor->GetSourceContentModel()); }
--- a/ipc/glue/BackgroundUtils.cpp +++ b/ipc/glue/BackgroundUtils.cpp @@ -72,22 +72,22 @@ PrincipalInfoToPrincipal(const Principal aPrincipalInfo.get_ContentPrincipalInfo(); nsCOMPtr<nsIURI> uri; rv = NS_NewURI(getter_AddRefs(uri), info.spec()); if (NS_WARN_IF(NS_FAILED(rv))) { return nullptr; } - if (info.attrs().mAppId == nsIScriptSecurityManager::UNKNOWN_APP_ID) { - rv = secMan->GetSimpleCodebasePrincipal(uri, getter_AddRefs(principal)); - } else { - principal = BasePrincipal::CreateCodebasePrincipal(uri, info.attrs()); - rv = principal ? NS_OK : NS_ERROR_FAILURE; + PrincipalOriginAttributes attrs; + if (info.attrs().mAppId != nsIScriptSecurityManager::UNKNOWN_APP_ID) { + attrs = info.attrs(); } + principal = BasePrincipal::CreateCodebasePrincipal(uri, attrs); + rv = principal ? NS_OK : NS_ERROR_FAILURE; if (NS_WARN_IF(NS_FAILED(rv))) { return nullptr; } return principal.forget(); } case PrincipalInfo::TExpandedPrincipalInfo: {
--- a/layout/tools/reftest/reftest.jsm +++ b/layout/tools/reftest/reftest.jsm @@ -1025,17 +1025,17 @@ function ReadManifest(aURL, inherited_st if (items.length > 1 && !items[1].match(gProtocolRE)) { items[1] = urlprefix + items[1]; } if (items.length > 2 && !items[2].match(gProtocolRE)) { items[2] = urlprefix + items[2]; } } - var principal = secMan.getSimpleCodebasePrincipal(aURL); + var principal = secMan.createCodebasePrincipal(aURL, {}); if (items[0] == "include") { if (items.length != 2) throw "Error in manifest file " + aURL.spec + " line " + lineNo + ": incorrect number of arguments to include"; if (runHttp) throw "Error in manifest file " + aURL.spec + " line " + lineNo + ": use of include with http"; var incURI = gIOService.newURI(items[1], null, listURL); secMan.checkLoadURIWithPrincipal(principal, incURI,
--- a/toolkit/components/places/nsLivemarkService.js +++ b/toolkit/components/places/nsLivemarkService.js @@ -477,17 +477,17 @@ Livemark.prototype = { PlacesUtils.annotations.removeItemAnnotation(this.id, PlacesUtils.LMANNO_SITEURI) this.siteURI = null; return; } // Security check the site URI against the feed URI principal. let secMan = Services.scriptSecurityManager; - let feedPrincipal = secMan.getSimpleCodebasePrincipal(this.feedURI); + let feedPrincipal = secMan.createCodebasePrincipal(this.feedURI, {}); try { secMan.checkLoadURIWithPrincipal(feedPrincipal, aSiteURI, Ci.nsIScriptSecurityManager.DISALLOW_INHERIT_PRINCIPAL); } catch (ex) { return; } @@ -754,17 +754,17 @@ LivemarkLoadListener.prototype = { if (this._isAborted) { return; } try { // We need this to make sure the item links are safe let feedPrincipal = Services.scriptSecurityManager - .getSimpleCodebasePrincipal(this._livemark.feedURI); + .createCodebasePrincipal(this._livemark.feedURI, {}); // Enforce well-formedness because the existing code does if (!aResult || !aResult.doc || aResult.bozo) { throw new Components.Exception("", Cr.NS_ERROR_FAILURE); } let feed = aResult.doc.QueryInterface(Ci.nsIFeed); let siteURI = this._livemark.siteURI;
--- a/toolkit/content/nsDragAndDrop.js +++ b/toolkit/content/nsDragAndDrop.js @@ -583,17 +583,17 @@ var nsDragAndDrop = { if (!aDragSession) aDragSession = this.mDragService.getCurrentSession(); var sourceDoc = aDragSession.sourceDocument; // Use "file:///" as the default sourceURI so that drops of file:// URIs // are always allowed. var principal = sourceDoc ? sourceDoc.nodePrincipal - : secMan.getSimpleCodebasePrincipal(ioService.newURI("file:///", null, null)); + : secMan.createCodebasePrincipal(ioService.newURI("file:///", null, null), {}); try { secMan.checkLoadURIStrWithPrincipal(principal, aDraggedText, nsIScriptSecurityManager.STANDARD); } catch (e) { // Stop event propagation right here. aEvent.stopPropagation();