gecko/browser/devtools/profiler/commands.js
Joe Walker ffa9c6e99c Bug 984365 - Refactor and split out BuiltinCommands.jsm; r=mratcliffe,robcee,panos
BuiltinCommands.jsm was huge to avoid slowing things down by having many
modules loading.

To avoid splitting it up from slowing things down we want to delay loading
commands. Create [add|remove]ItemsByModule to allow us to lazily add modules,
and convert all command modules to use this.

Then break up BuiltinCommands into a set of files, for each command, and do
some refactoring to use JS files rather than JSMs and use "use strict".

--HG--
rename : browser/devtools/commandline/Commands.jsm => browser/devtools/commandline/commands-index.js
rename : browser/devtools/debugger/CmdDebugger.jsm => browser/devtools/debugger/debugger-commands.js
rename : browser/devtools/inspector/CmdInspect.jsm => browser/devtools/inspector/inspector-commands.js
rename : browser/devtools/responsivedesign/CmdResize.jsm => browser/devtools/responsivedesign/resize-commands.js
rename : browser/devtools/scratchpad/CmdScratchpad.jsm => browser/devtools/scratchpad/scratchpad-commands.js
rename : browser/devtools/styleeditor/CmdEdit.jsm => browser/devtools/styleeditor/styleeditor-commands.js
rename : browser/devtools/tilt/CmdTilt.jsm => browser/devtools/tilt/tilt-commands.js
2014-04-13 07:47:27 +01:00

138 lines
3.6 KiB
JavaScript

/* 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";
const gcli = require('gcli/index');
loader.lazyGetter(this, "gDevTools",
() => Cu.import("resource:///modules/devtools/gDevTools.jsm", {}).gDevTools);
module.exports.items = [
{
name: "profiler",
description: gcli.lookup("profilerDesc"),
manual: gcli.lookup("profilerManual")
},
{
name: "profiler open",
description: gcli.lookup("profilerOpenDesc"),
exec: function (args, context) {
return gDevTools.showToolbox(context.environment.target, "jsprofiler")
.then(function () null);
}
},
{
name: "profiler close",
description: gcli.lookup("profilerCloseDesc"),
exec: function (args, context) {
let toolbox = gDevTools.getToolbox(context.environment.target);
let panel = (toolbox == null) ? null : toolbox.getPanel(id);
if (panel == null)
return;
return gDevTools.closeToolbox(context.environment.target)
.then(function () null);
}
},
{
name: "profiler start",
description: gcli.lookup("profilerStartDesc"),
returnType: "string",
exec: function (args, context) {
let target = context.environment.target
return gDevTools.showToolbox(target, "jsprofiler").then(toolbox => {
let panel = toolbox.getCurrentPanel();
if (panel.recordingProfile)
throw gcli.lookup("profilerAlreadyStarted2");
panel.toggleRecording();
return gcli.lookup("profilerStarted2");
});
}
},
{
name: "profiler stop",
description: gcli.lookup("profilerStopDesc"),
returnType: "string",
exec: function (args, context) {
let target = context.environment.target
return gDevTools.showToolbox(target, "jsprofiler").then(toolbox => {
let panel = toolbox.getCurrentPanel();
if (!panel.recordingProfile)
throw gcli.lookup("profilerNotStarted3");
panel.toggleRecording();
return gcli.lookup("profilerStopped");
});
}
},
{
name: "profiler list",
description: gcli.lookup("profilerListDesc"),
returnType: "profileList",
exec: function (args, context) {
let toolbox = gDevTools.getToolbox(context.environment.target);
let panel = (toolbox == null) ? null : toolbox.getPanel("jsprofiler");
if (panel == null) {
throw gcli.lookup("profilerNotReady");
}
let profileList = [];
for ([ uid, profile ] of panel.profiles) {
profileList.push({ name: profile.name, started: profile.isStarted });
}
return profileList;
}
},
{
item: "converter",
from: "profileList",
to: "view",
exec: function(profileList, context) {
return {
html: "<div>" +
" <ol>" +
" <li forEach='profile of ${profiles}'>${profile.name}</li>" +
" ${profile.name} ${profile.started ? '*' : ''}" +
" </li>" +
" </ol>" +
"</div>",
data: { profiles: profileList.profiles },
options: { allowEval: true }
};
},
},
{
name: "profiler show",
description: gcli.lookup("profilerShowDesc"),
params: [
{
name: "name",
type: "string",
manual: gcli.lookup("profilerShowManual")
}
],
exec: function (args, context) {
let toolbox = gDevTools.getToolbox(context.environment.target);
let panel = (toolbox == null) ? null : toolbox.getPanel(id);
if (!panel) {
throw gcli.lookup("profilerNotReady");
}
let profile = panel.getProfileByName(args.name);
if (!profile) {
throw gcli.lookup("profilerNotFound");
}
panel.sidebar.selectedItem = panel.sidebar.getItemByProfile(profile);
}
}];