mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-21 09:15:35 +00:00
Bug 1521878 - Have fallback consistency for (de)serialization of principals. r=ckerschb
Differential Revision: https://phabricator.services.mozilla.com/D17271 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
7e0ec04242
commit
cf5ea59a1e
@ -3105,7 +3105,7 @@ var BrowserOnClick = {
|
||||
},
|
||||
|
||||
ignoreWarningLink(reason, blockedInfo) {
|
||||
let triggeringPrincipal = E10SUtils.deserializePrincipal(blockedInfo.triggeringPrincipal) || _createNullPrincipalFromTabUserContextId();
|
||||
let triggeringPrincipal = E10SUtils.deserializePrincipal(blockedInfo.triggeringPrincipal, _createNullPrincipalFromTabUserContextId());
|
||||
// Allow users to override and continue through to the site,
|
||||
// but add a notify bar as a reminder, so that they don't lose
|
||||
// track after, e.g., tab switching.
|
||||
|
@ -213,9 +213,7 @@ ContentRestoreInternal.prototype = {
|
||||
}
|
||||
let postData = loadArguments.postData ?
|
||||
E10SUtils.makeInputStream(loadArguments.postData) : null;
|
||||
let triggeringPrincipal = loadArguments.triggeringPrincipal
|
||||
? E10SUtils.deserializePrincipal(loadArguments.triggeringPrincipal)
|
||||
: Services.scriptSecurityManager.createNullPrincipal({});
|
||||
let triggeringPrincipal = E10SUtils.deserializePrincipal(loadArguments.triggeringPrincipal, () => Services.scriptSecurityManager.createNullPrincipal({}));
|
||||
|
||||
if (loadArguments.userContextId) {
|
||||
webNavigation.setOriginAttributesBeforeLoading({ userContextId: loadArguments.userContextId });
|
||||
|
@ -104,12 +104,11 @@ class WebNavigationChild extends ActorChild {
|
||||
if (baseURI)
|
||||
baseURI = Services.io.newURI(baseURI);
|
||||
this._assert(triggeringPrincipal, "We need a triggering principal to continue loading", new Error().lineNumber);
|
||||
if (triggeringPrincipal)
|
||||
triggeringPrincipal = E10SUtils.deserializePrincipal(triggeringPrincipal);
|
||||
this._assert(triggeringPrincipal, "Unable to deserialize passed triggering principal", new Error().lineNumber);
|
||||
if (!triggeringPrincipal) {
|
||||
triggeringPrincipal = Services.scriptSecurityManager.getSystemPrincipal({});
|
||||
}
|
||||
|
||||
triggeringPrincipal = E10SUtils.deserializePrincipal(triggeringPrincipal, () => {
|
||||
this._assert(false, "Unable to deserialize passed triggering principal", new Error().lineNumber);
|
||||
return Services.scriptSecurityManager.getSystemPrincipal({});
|
||||
});
|
||||
|
||||
let loadURIOptions = {
|
||||
triggeringPrincipal,
|
||||
|
@ -329,9 +329,15 @@ var E10SUtils = {
|
||||
* @param {String} principal_b64 A base64 encoded serialized principal.
|
||||
* @return {nsIPrincipal} A deserialized principal.
|
||||
*/
|
||||
deserializePrincipal(principal_b64) {
|
||||
if (!principal_b64)
|
||||
return null;
|
||||
deserializePrincipal(principal_b64, fallbackPrincipalCallback = null) {
|
||||
if (!principal_b64) {
|
||||
if (!fallbackPrincipalCallback) {
|
||||
debug("No principal passed to deserializePrincipal and no fallbackPrincipalCallback");
|
||||
return null;
|
||||
}
|
||||
|
||||
return fallbackPrincipalCallback();
|
||||
}
|
||||
|
||||
try {
|
||||
let principal = serializationHelper.deserializeObject(principal_b64);
|
||||
@ -340,7 +346,11 @@ var E10SUtils = {
|
||||
} catch (e) {
|
||||
debug(`Failed to deserialize principal_b64 '${principal_b64}' ${e}`);
|
||||
}
|
||||
return null;
|
||||
if (!fallbackPrincipalCallback) {
|
||||
debug("No principal passed to deserializePrincipal and no fallbackPrincipalCallback");
|
||||
return null;
|
||||
}
|
||||
return fallbackPrincipalCallback();
|
||||
},
|
||||
|
||||
shouldLoadURIInBrowser(browser, uri, multiProcess = true,
|
||||
|
@ -450,13 +450,12 @@ var SessionHistoryInternal = {
|
||||
}
|
||||
|
||||
if (entry.triggeringPrincipal_base64) {
|
||||
shEntry.triggeringPrincipal = E10SUtils.deserializePrincipal(entry.triggeringPrincipal_base64);
|
||||
}
|
||||
// Ensure that we have a null principal if we couldn't deserialize it.
|
||||
// This won't always work however is safe to use.
|
||||
if (!shEntry.triggeringPrincipal) {
|
||||
debug("Couldn't deserialize the triggeringPrincipal, falling back to NullPrincipal");
|
||||
shEntry.triggeringPrincipal = Services.scriptSecurityManager.createNullPrincipal({});
|
||||
shEntry.triggeringPrincipal = E10SUtils.deserializePrincipal(entry.triggeringPrincipal_base64, () => {
|
||||
// Ensure that we have a null principal if we couldn't deserialize it.
|
||||
// This won't always work however is safe to use.
|
||||
debug("Couldn't deserialize the triggeringPrincipal, falling back to NullPrincipal");
|
||||
return Services.scriptSecurityManager.createNullPrincipal({});
|
||||
});
|
||||
}
|
||||
if (entry.principalToInherit_base64) {
|
||||
shEntry.principalToInherit = E10SUtils.deserializePrincipal(entry.principalToInherit_base64);
|
||||
|
Loading…
Reference in New Issue
Block a user