forked from mirrors/gecko-dev
		
	- implement the new "inspected-window" command - move WebExtensionInspectedWindowFront implement to the command, making the front empty - migrate tests to use the commands instead of front - stop maintaining the current top level target in ExtensionParent.jsm, no longer have to use watchTargets - stop creating a new descriptor on each new target - instead only pull one new dedicated "commands" for WebExt (still in ExtensionParent.jsm) - remove TabDescriptor isDevToolsExtensionContext as we no longer need anything special in the descriptor - remove now unused methods on DevToolsShims (createWebExtensionInspectedWindowFront, createDescriptorForTabForWebExtension) - remove the now unused TabDescriptorFactory.createDescriptorForTab's "forceCreationForWebextension" option, as CommandsFactory.forTab always instantiate a brand new commands - migrate webext to use the command instead of front Differential Revision: https://phabricator.services.mozilla.com/D108994
		
			
				
	
	
		
			53 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 | 
						|
/* vim: set sts=2 sw=2 et tw=80: */
 | 
						|
/* This Source Code Form is subject to the terms of the Mozilla Public
 | 
						|
 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
 | 
						|
 * You can obtain one at http://mozilla.org/MPL/2.0/. */
 | 
						|
 | 
						|
"use strict";
 | 
						|
 | 
						|
var { SpreadArgs } = ExtensionCommon;
 | 
						|
 | 
						|
this.devtools_inspectedWindow = class extends ExtensionAPI {
 | 
						|
  getAPI(context) {
 | 
						|
    // TODO - Bug 1448878: retrieve a more detailed callerInfo object,
 | 
						|
    // like the filename and lineNumber of the actual extension called
 | 
						|
    // in the child process.
 | 
						|
    const callerInfo = {
 | 
						|
      addonId: context.extension.id,
 | 
						|
      url: context.extension.baseURI.spec,
 | 
						|
    };
 | 
						|
 | 
						|
    return {
 | 
						|
      devtools: {
 | 
						|
        inspectedWindow: {
 | 
						|
          async eval(expression, options) {
 | 
						|
            const toolboxEvalOptions = await getToolboxEvalOptions(context);
 | 
						|
            const evalOptions = Object.assign({}, options, toolboxEvalOptions);
 | 
						|
 | 
						|
            const commands = await context.getDevToolsCommands();
 | 
						|
            const evalResult = await commands.inspectedWindowCommand.eval(
 | 
						|
              callerInfo,
 | 
						|
              expression,
 | 
						|
              evalOptions
 | 
						|
            );
 | 
						|
 | 
						|
            // TODO(rpl): check for additional undocumented behaviors on chrome
 | 
						|
            // (e.g. if we should also print error to the console or set lastError?).
 | 
						|
            return new SpreadArgs([evalResult.value, evalResult.exceptionInfo]);
 | 
						|
          },
 | 
						|
          async reload(options) {
 | 
						|
            const { ignoreCache, userAgent, injectedScript } = options || {};
 | 
						|
 | 
						|
            const commands = await context.getDevToolsCommands();
 | 
						|
            commands.inspectedWindowCommand.reload(callerInfo, {
 | 
						|
              ignoreCache,
 | 
						|
              userAgent,
 | 
						|
              injectedScript,
 | 
						|
            });
 | 
						|
          },
 | 
						|
        },
 | 
						|
      },
 | 
						|
    };
 | 
						|
  }
 | 
						|
};
 |