Files
tubestation/devtools/client/debugger/new/panel.js
Julian Descottes 99bcf6d7c1 Bug 1354672 - update debugger frontend 04/18/17;r=jdescottes
MozReview-Commit-ID: HI2NymoCLYR
2017-04-20 14:49:44 +02:00

94 lines
2.3 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 { Task } = require("devtools/shared/task");
var { LocalizationHelper } = require("devtools/shared/l10n");
const DBG_STRINGS_URI = "devtools/client/locales/debugger.properties";
var L10N = new LocalizationHelper(DBG_STRINGS_URI);
function DebuggerPanel(iframeWindow, toolbox) {
this.panelWin = iframeWindow;
this.panelWin.L10N = L10N;
this.toolbox = toolbox;
}
DebuggerPanel.prototype = {
open: async function() {
if (!this.toolbox.target.isRemote) {
await this.toolbox.target.makeRemote();
}
const {
actions,
store,
selectors,
client
} = await this.panelWin.Debugger.bootstrap({
threadClient: this.toolbox.threadClient,
tabTarget: this.toolbox.target,
debuggerClient: this.toolbox.target._client,
sourceMaps: this.toolbox.sourceMapService
});
this._actions = actions;
this._store = store;
this._selectors = selectors;
this._client = client;
this.isReady = true;
return this;
},
getVarsForTests() {
return {
store: this._store,
selectors: this._selectors,
actions: this._actions,
client: this._client
};
},
_getState: function() {
return this._store.getState();
},
getFrames: function() {
let frames = this._selectors.getFrames(this._getState());
// Frames is null when the debugger is not paused.
if (!frames) {
return {
frames: [],
selected: -1
};
}
frames = frames.toJS();
const selectedFrame = this._selectors.getSelectedFrame(this._getState());
const selected = frames.findIndex(frame => frame.id == selectedFrame.id);
frames.forEach(frame => {
frame.actor = frame.id;
});
return { frames, selected };
},
selectSource(sourceURL, sourceLine) {
this._actions.selectSourceURL(sourceURL, { line: sourceLine });
},
getSource(sourceURL) {
return this._selectors.getSourceByURL(this._getState(), sourceURL);
},
destroy: function() {
this.panelWin.Debugger.destroy();
this.emit("destroyed");
}
};
exports.DebuggerPanel = DebuggerPanel;