mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-21 09:15:35 +00:00
Bug 1316396: Part 2 - Rename contexts to make it clearer how and where they're used. r=aswan
MozReview-Commit-ID: 25oSbulhCmX --HG-- extra : rebase_source : 66a7160137e6824e7368be4fc087e7c16ee7e92d
This commit is contained in:
parent
5669335dd9
commit
322251a9ed
@ -750,11 +750,14 @@ class PseudoChildAPIManager extends ChildAPIManager {
|
||||
}
|
||||
}
|
||||
|
||||
class ExtensionContext extends BaseContext {
|
||||
class ExtensionPageContextChild extends BaseContext {
|
||||
/**
|
||||
* This ExtensionContext represents a privileged addon execution environment
|
||||
* that has full access to the WebExtensions APIs (provided that the correct
|
||||
* permissions have been requested).
|
||||
* This ExtensionPageContextChild represents a privileged addon
|
||||
* execution environment that has full access to the WebExtensions
|
||||
* APIs (provided that the correct permissions have been requested).
|
||||
*
|
||||
* This is the child side of the ExtensionPageContextParent class
|
||||
* defined in ExtensionParent.jsm.
|
||||
*
|
||||
* @param {BrowserExtensionContent} extension This context's owner.
|
||||
* @param {object} params
|
||||
@ -770,7 +773,7 @@ class ExtensionContext extends BaseContext {
|
||||
if (Services.appinfo.processType != Services.appinfo.PROCESS_TYPE_DEFAULT) {
|
||||
// This check is temporary. It should be removed once the proxy creation
|
||||
// is asynchronous.
|
||||
throw new Error("ExtensionContext cannot be created in child processes");
|
||||
throw new Error("ExtensionPageContextChild cannot be created in child processes");
|
||||
}
|
||||
|
||||
let {viewType, uri, contentWindow, tabId} = params;
|
||||
@ -848,7 +851,7 @@ class ExtensionContext extends BaseContext {
|
||||
}
|
||||
}
|
||||
|
||||
defineLazyGetter(ExtensionContext.prototype, "messenger", function() {
|
||||
defineLazyGetter(ExtensionPageContextChild.prototype, "messenger", function() {
|
||||
let filter = {extensionId: this.extension.id};
|
||||
let optionalFilter = {};
|
||||
// Addon-generated messages (not necessarily from the same process as the
|
||||
@ -859,7 +862,7 @@ defineLazyGetter(ExtensionContext.prototype, "messenger", function() {
|
||||
filter, optionalFilter);
|
||||
});
|
||||
|
||||
defineLazyGetter(ExtensionContext.prototype, "childManager", function() {
|
||||
defineLazyGetter(ExtensionPageContextChild.prototype, "childManager", function() {
|
||||
let localApis = {};
|
||||
apiManager.generateAPIs(this, localApis);
|
||||
|
||||
@ -981,7 +984,7 @@ ExtensionChild = {
|
||||
// Map<nsIContentFrameMessageManager, ContentGlobal>
|
||||
contentGlobals: new Map(),
|
||||
|
||||
// Map<innerWindowId, ExtensionContext>
|
||||
// Map<innerWindowId, ExtensionPageContextChild>
|
||||
extensionContexts: new Map(),
|
||||
|
||||
initOnce() {
|
||||
@ -1031,12 +1034,12 @@ ExtensionChild = {
|
||||
|
||||
let uri = contentWindow.document.documentURIObject;
|
||||
|
||||
context = new ExtensionContext(extension, {viewType, contentWindow, uri, tabId});
|
||||
context = new ExtensionPageContextChild(extension, {viewType, contentWindow, uri, tabId});
|
||||
this.extensionContexts.set(windowId, context);
|
||||
},
|
||||
|
||||
/**
|
||||
* Close the ExtensionContext belonging to the given window, if any.
|
||||
* Close the ExtensionPageContextChild belonging to the given window, if any.
|
||||
*
|
||||
* @param {number} windowId The inner window ID of the destroyed context.
|
||||
*/
|
||||
|
@ -286,10 +286,13 @@ function getWindowMessageManager(contentWindow) {
|
||||
var DocumentManager;
|
||||
var ExtensionManager;
|
||||
|
||||
// Scope in which extension content script code can run. It uses
|
||||
// Cu.Sandbox to run the code. There is a separate scope for each
|
||||
// frame.
|
||||
class ExtensionContext extends BaseContext {
|
||||
/**
|
||||
* An execution context for semi-privileged extension content scripts.
|
||||
*
|
||||
* This is the child side of the ContentScriptContextParent class
|
||||
* defined in ExtensionParent.jsm.
|
||||
*/
|
||||
class ContentScriptContextChild extends BaseContext {
|
||||
constructor(extension, contentWindow, contextOptions = {}) {
|
||||
super("content_child", extension);
|
||||
|
||||
@ -441,7 +444,7 @@ class ExtensionContext extends BaseContext {
|
||||
}
|
||||
}
|
||||
|
||||
defineLazyGetter(ExtensionContext.prototype, "messenger", function() {
|
||||
defineLazyGetter(ContentScriptContextChild.prototype, "messenger", function() {
|
||||
// The |sender| parameter is passed directly to the extension.
|
||||
let sender = {id: this.extension.uuid, frameId: this.frameId, url: this.url};
|
||||
let filter = {extensionId: this.extension.id};
|
||||
@ -450,7 +453,7 @@ defineLazyGetter(ExtensionContext.prototype, "messenger", function() {
|
||||
return new Messenger(this, [this.messageManager], sender, filter, optionalFilter);
|
||||
});
|
||||
|
||||
defineLazyGetter(ExtensionContext.prototype, "childManager", function() {
|
||||
defineLazyGetter(ContentScriptContextChild.prototype, "childManager", function() {
|
||||
let localApis = {};
|
||||
apiManager.generateAPIs(this, localApis);
|
||||
|
||||
@ -469,10 +472,10 @@ defineLazyGetter(ExtensionContext.prototype, "childManager", function() {
|
||||
DocumentManager = {
|
||||
extensionCount: 0,
|
||||
|
||||
// Map[windowId -> Map[extensionId -> ExtensionContext]]
|
||||
// Map[windowId -> Map[extensionId -> ContentScriptContextChild]]
|
||||
contentScriptWindows: new Map(),
|
||||
|
||||
// Map[windowId -> ExtensionContext]
|
||||
// Map[windowId -> ContentScriptContextChild]
|
||||
extensionPageWindows: new Map(),
|
||||
|
||||
init() {
|
||||
@ -671,7 +674,7 @@ DocumentManager = {
|
||||
|
||||
let extensions = this.contentScriptWindows.get(winId);
|
||||
if (!extensions.has(extension.id)) {
|
||||
let context = new ExtensionContext(extension, window);
|
||||
let context = new ContentScriptContextChild(extension, window);
|
||||
extensions.set(extension.id, context);
|
||||
}
|
||||
|
||||
@ -683,7 +686,7 @@ DocumentManager = {
|
||||
|
||||
let context = this.extensionPageWindows.get(winId);
|
||||
if (!context) {
|
||||
let context = new ExtensionContext(extension, window, {isExtensionPage: true});
|
||||
let context = new ContentScriptContextChild(extension, window, {isExtensionPage: true});
|
||||
this.extensionPageWindows.set(winId, context);
|
||||
}
|
||||
|
||||
|
@ -267,7 +267,11 @@ class BrowserDocshellFollower {
|
||||
}
|
||||
}
|
||||
|
||||
class ProxyContext extends BaseContext {
|
||||
/**
|
||||
* The proxied parent side of a context in ExtensionChild.jsm, for the
|
||||
* parent side of a proxied API.
|
||||
*/
|
||||
class ProxyContextParent extends BaseContext {
|
||||
constructor(envType, extension, params, xulBrowser, principal) {
|
||||
super(envType, extension);
|
||||
|
||||
@ -321,18 +325,29 @@ class ProxyContext extends BaseContext {
|
||||
}
|
||||
}
|
||||
|
||||
defineLazyGetter(ProxyContext.prototype, "apiObj", function() {
|
||||
defineLazyGetter(ProxyContextParent.prototype, "apiObj", function() {
|
||||
let obj = {};
|
||||
GlobalManager.injectInObject(this, false, obj);
|
||||
return obj;
|
||||
});
|
||||
|
||||
defineLazyGetter(ProxyContext.prototype, "sandbox", function() {
|
||||
defineLazyGetter(ProxyContextParent.prototype, "sandbox", function() {
|
||||
return Cu.Sandbox(this.principal);
|
||||
});
|
||||
|
||||
// The parent ProxyContext of an ExtensionContext in ExtensionChild.jsm.
|
||||
class ExtensionChildProxyContext extends ProxyContext {
|
||||
/**
|
||||
* The parent side of proxied API context for extension content script
|
||||
* running in ExtensionContent.jsm.
|
||||
*/
|
||||
class ContentScriptContextParent extends ProxyContextParent {
|
||||
}
|
||||
|
||||
/**
|
||||
* The parent side of proxied API context for extension page, such as a
|
||||
* background script, a tab page, or a popup, running in
|
||||
* ExtensionChild.jsm.
|
||||
*/
|
||||
class ExtensionPageContextParent extends ProxyContextParent {
|
||||
constructor(envType, extension, params, xulBrowser) {
|
||||
super(envType, extension, params, xulBrowser, extension.principal);
|
||||
|
||||
@ -451,9 +466,9 @@ ParentAPIManager = {
|
||||
!target.contentPrincipal.subsumes(principal)) {
|
||||
throw new Error(`Refused to create privileged WebExtension context for ${principal.URI.spec}`);
|
||||
}
|
||||
context = new ExtensionChildProxyContext(envType, extension, data, target);
|
||||
context = new ExtensionPageContextParent(envType, extension, data, target);
|
||||
} else if (envType == "content_parent") {
|
||||
context = new ProxyContext(envType, extension, data, target, principal);
|
||||
context = new ContentScriptContextParent(envType, extension, data, target, principal);
|
||||
} else {
|
||||
throw new Error(`Invalid WebExtension context envType: ${envType}`);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user