diff --git a/browser/base/content/browser.xul b/browser/base/content/browser.xul
index 6de9144b33ee..092d1d61e439 100644
--- a/browser/base/content/browser.xul
+++ b/browser/base/content/browser.xul
@@ -704,8 +704,6 @@
aria-label="&urlbar.webRTCShareMicrophoneNotificationAnchor.label;"/>
-
-
-
-
-
-
-
-
diff --git a/browser/locales/en-US/chrome/browser/browser.dtd b/browser/locales/en-US/chrome/browser/browser.dtd
index c771c236f2d5..f1beee0f4f9d 100644
--- a/browser/locales/en-US/chrome/browser/browser.dtd
+++ b/browser/locales/en-US/chrome/browser/browser.dtd
@@ -222,7 +222,6 @@ These should match what Safari and other Apple applications use on OS X Lion. --
-
@@ -830,8 +829,6 @@ you can use these alternative items. Otherwise, their values should be empty. -
-
-
diff --git a/browser/themes/shared/notification-icons.inc.css b/browser/themes/shared/notification-icons.inc.css
index 18f668b922be..0766bf22d348 100644
--- a/browser/themes/shared/notification-icons.inc.css
+++ b/browser/themes/shared/notification-icons.inc.css
@@ -52,14 +52,12 @@
.login-icon,
.microphone-icon,
.plugin-icon,
-.pointerLock-icon,
.popup-icon,
.screen-icon,
.desktop-notification-icon,
.popup-notification-icon[popupid="geolocation"],
.popup-notification-icon[popupid="indexedDB-permissions-prompt"],
.popup-notification-icon[popupid="password"],
-.popup-notification-icon[popupid="pointerLock"],
.popup-notification-icon[popupid="webRTC-shareDevices"],
.popup-notification-icon[popupid="webRTC-shareMicrophone"],
.popup-notification-icon[popupid="webRTC-shareScreen"],
@@ -166,15 +164,6 @@
list-style-image: url(chrome://browser/skin/notification-icons.svg#screen-blocked);
}
-.popup-notification-icon[popupid="pointerLock"],
-.pointerLock-icon {
- list-style-image: url(chrome://browser/skin/notification-icons.svg#pointerLock);
-}
-
-.pointerLock-icon.blocked-permission-icon {
- list-style-image: url(chrome://browser/skin/notification-icons.svg#pointerLock-blocked);
-}
-
/* This icon has a block sign in it, so we don't need a blocked version. */
.popup-icon {
list-style-image: url("chrome://browser/skin/notification-icons.svg#popup");
diff --git a/browser/themes/shared/notification-icons.svg b/browser/themes/shared/notification-icons.svg
index ff131813a0ba..7868c62b4633 100644
--- a/browser/themes/shared/notification-icons.svg
+++ b/browser/themes/shared/notification-icons.svg
@@ -34,7 +34,6 @@
-
@@ -64,8 +63,6 @@
-
-
diff --git a/devtools/client/debugger/new/bundle.js b/devtools/client/debugger/new/bundle.js
index 2f4684252d62..9d739106b6ad 100644
--- a/devtools/client/debugger/new/bundle.js
+++ b/devtools/client/debugger/new/bundle.js
@@ -1,4 +1,4 @@
-// Generated from: b918892ece90180a8826e80796dcf7e78c36c0e8 make prefs bail if it can't access localStorage (fixes Firefox bundle)
+// Generated from: 9c498c2c83e7562909132883e12578a9b45fc295 Fix #653, finesse selected tab designs (#654)
var Debugger =
/******/ (function(modules) { // webpackBootstrap
@@ -79,11 +79,12 @@ var Debugger =
var isEnabled = _require4.isEnabled;
var isFirefoxPanel = _require4.isFirefoxPanel;
+ var getValue = _require4.getValue;
var isDevelopment = _require4.isDevelopment;
var setConfig = _require4.setConfig;
- setConfig(({"environment":"firefox-panel","baseWorkerURL":"resource://devtools/client/debugger/new/","logging":false,"clientLogging":false,"features":{"tabs":true},"hotReloading":false}));
+ setConfig(({"environment":"firefox-panel","baseWorkerURL":"resource://devtools/client/debugger/new/","logging":{"client":false,"firefoxProxy":false,"actions":false},"clientLogging":false,"features":{"tabs":true,"sourceMaps":false,"prettyPrint":true,"watchExpressions":false},"hotReloading":true}));
// Set various flags before requiring app code.
if (isEnabled("logging.client")) {
@@ -99,19 +100,20 @@ var Debugger =
var firefox = __webpack_require__(247);
var configureStore = __webpack_require__(328);
var reducers = __webpack_require__(336);
+ var selectors = __webpack_require__(347);
- var Tabs = __webpack_require__(347);
- var App = __webpack_require__(359);
+ var Tabs = __webpack_require__(354);
+ var App = __webpack_require__(360);
var createStore = configureStore({
- log: false,
+ log: getValue("logging.actions"),
makeThunkArgs: (args, state) => {
return Object.assign({}, args, { client: getClient(state) });
}
});
var store = createStore(combineReducers(reducers));
- var actions = bindActionCreators(__webpack_require__(360), store.dispatch);
+ var actions = bindActionCreators(__webpack_require__(362), store.dispatch);
if (isDevelopment()) {
AppConstants.DEBUG_JS_MODULES = true;
@@ -161,18 +163,36 @@ var Debugger =
renderRoot(App);
});
} else if (isFirefoxPanel()) {
- // The toolbox already provides the tab to debug.
- module.exports = {
- setThreadClient: firefox.setThreadClient,
- setTabTarget: firefox.setTabTarget,
- initPage: firefox.initPage,
- getActions: () => actions,
- renderApp: () => renderRoot(App)
- };
+ (function () {
+ // The toolbox already provides the tab to debug.
+ function bootstrap(_ref) {
+ var threadClient = _ref.threadClient;
+ var tabTarget = _ref.tabTarget;
+
+ firefox.setThreadClient(threadClient);
+ firefox.setTabTarget(tabTarget);
+ firefox.initPage(actions);
+ renderRoot(App);
+ }
+
+ module.exports = {
+ bootstrap,
+ store: store,
+ actions: actions,
+ selectors: selectors,
+
+ // Remove these once we update the API on m-c
+ setThreadClient: firefox.setThreadClient,
+ setTabTarget: firefox.setTabTarget,
+ initPage: firefox.initPage,
+ renderApp: () => renderRoot(App),
+ getActions: () => actions
+ };
+ })();
} else {
+ renderRoot(Tabs);
connectClients().then(tabs => {
actions.newTabs(tabs);
- renderRoot(Tabs);
});
}
@@ -26915,7 +26935,7 @@ var Debugger =
{
if (aRequest instanceof Ci.nsIChannel) {
let loadInfo = aRequest.loadInfo;
- if (loadInfo && loadInfo.isTopLevelLoad) {
+ if (loadInfo && loadInfo.parentOuterWindowID == loadInfo.outerWindowID) {
return (aRequest.loadFlags & Ci.nsIChannel.LOAD_DOCUMENT_URI);
}
}
@@ -27512,9 +27532,15 @@ var Debugger =
return pick(config, key);
}
- var isEnabled = getValue;
+ function isEnabled(key) {
+ return config.features[key];
+ }
function isDevelopment() {
+ if (isFirefoxPanel()) {
+ // Default to production if compiling for the Firefox panel
+ return ("production") === "development";
+ }
return ("production") !== "production";
}
@@ -29021,7 +29047,7 @@ var Debugger =
return Promise.resolve(injectedDebuggee);
}
- return window.client.evaluate(debuggeeStatement).then(result => {
+ return window.client.debuggeeCommand(debuggeeStatement).then(result => {
injectedDebuggee = result;
});
}
@@ -29231,7 +29257,6 @@ var Debugger =
function connectClient() {
var deferred = defer();
- var isConnected = false;
var useProxy = !getValue("firefox.webSocketConnection");
var portPref = useProxy ? "firefox.proxyPort" : "firefox.webSocketPort";
var webSocketPort = getValue(portPref);
@@ -29240,17 +29265,7 @@ var Debugger =
var transport = useProxy ? new DebuggerTransport(socket) : new WebSocketDebuggerTransport(socket);
debuggerClient = new DebuggerClient(transport);
- // TODO: the timeout logic should be moved to DebuggerClient.connect.
- setTimeout(() => {
- if (isConnected) {
- return;
- }
-
- deferred.resolve([]);
- }, 6000);
-
debuggerClient.connect().then(() => {
- isConnected = true;
return debuggerClient.listTabs().then(response => {
deferred.resolve(createTabs(response.tabs));
});
@@ -29283,15 +29298,10 @@ var Debugger =
tabTarget = getTabTarget();
threadClient = getThreadClient();
- setupCommands({ threadClient, tabTarget });
+ setupCommands({ threadClient, tabTarget, debuggerClient });
tabTarget.on("will-navigate", actions.willNavigate);
tabTarget.on("navigate", actions.navigate);
- tabTarget.on("frame-update", function (_, packet) {
- if (packet.destroyAll) {
- actions.willNavigate();
- }
- });
// Listen to all the requested events.
setupEvents({ threadClient, actions });
@@ -29675,23 +29685,28 @@ var Debugger =
* and behaviors of the server we connect to. See RootActor).
*/
connect: function (aOnConnected) {
- let deferred = promise.defer();
- this.emit("connect");
+ return Promise.race([
+ new Promise((resolve, reject) => {
+ this.emit("connect");
- // Also emit the event on the |DebuggerClient| object (not on the instance),
- // so it's possible to track all instances.
- events.emit(DebuggerClient, "connect", this);
+ // Also emit the event on the |DebuggerClient| object (not on the instance),
+ // so it's possible to track all instances.
+ events.emit(DebuggerClient, "connect", this);
- this.addOneTimeListener("connected", (aName, aApplicationType, aTraits) => {
- this.traits = aTraits;
- if (aOnConnected) {
- aOnConnected(aApplicationType, aTraits);
- }
- deferred.resolve([aApplicationType, aTraits]);
- });
+ this.addOneTimeListener("connected", (aName, aApplicationType, aTraits) => {
+ this.traits = aTraits;
+ if (aOnConnected) {
+ aOnConnected(aApplicationType, aTraits);
+ }
+ resolve([aApplicationType, aTraits]);
+ });
- this._transport.ready();
- return deferred.promise;
+ this._transport.ready();
+ }),
+ new Promise((resolve, reject) => {
+ setTimeout(() => reject(new Error("Connect timeout error")), 6000);
+ })
+ ]);
},
/**
@@ -35819,7 +35834,6 @@ var Debugger =
// Prevent a bad listener from interfering with the others.
var msg = ex + ": " + ex.stack;
console.error(msg);
- dump(msg + "\n");
}
}
};
@@ -36597,6 +36611,7 @@ var Debugger =
id: t.String,
displayName: t.String,
location: Location,
+ this: t.union([t.Object, t.Nil]),
scope: t.union([t.Object, t.Nil])
}, "Frame");
@@ -38567,10 +38582,12 @@ var Debugger =
var bpClients = void 0;
var threadClient = void 0;
var tabTarget = void 0;
+ var debuggerClient = void 0;
function setupCommands(dependencies) {
threadClient = dependencies.threadClient;
tabTarget = dependencies.tabTarget;
+ debuggerClient = dependencies.debuggerClient;
bpClients = {};
}
@@ -38646,7 +38663,6 @@ var Debugger =
function evaluate(script) {
var deferred = defer();
-
tabTarget.activeConsole.evaluateJS(script, result => {
deferred.resolve(result);
});
@@ -38654,6 +38670,17 @@ var Debugger =
return deferred.promise;
}
+ function debuggeeCommand(script) {
+ tabTarget.activeConsole.evaluateJS(script, () => {});
+
+ var consoleActor = tabTarget.form.consoleActor;
+ var request = debuggerClient._activeRequests.get(consoleActor);
+ request.emit("json-reply", {});
+ debuggerClient._activeRequests.delete(consoleActor);
+
+ return Promise.resolve();
+ }
+
function navigate(url) {
return tabTarget.activeTab.navigateTo(url);
}
@@ -38663,8 +38690,8 @@ var Debugger =
return objClient.getPrototypeAndProperties();
}
- function pauseOnExceptions(toggle) {
- return threadClient.pauseOnExceptions(toggle);
+ function pauseOnExceptions(shouldPauseOnExceptions, shouldIgnoreCaughtExceptions) {
+ return threadClient.pauseOnExceptions(shouldPauseOnExceptions, shouldIgnoreCaughtExceptions);
}
function prettyPrint(sourceId, indentSize) {
@@ -38687,6 +38714,7 @@ var Debugger =
setBreakpoint,
removeBreakpoint,
evaluate,
+ debuggeeCommand,
navigate,
getProperties,
pauseOnExceptions,
@@ -38739,10 +38767,9 @@ var Debugger =
var CALL_STACK_PAGE_SIZE = 1000;
- var NEW_SOURCE_IGNORED_URLS = ["debugger eval code", "XStringBundle"];
-
var threadClient = void 0;
var actions = void 0;
+ var evalIndex = 1;
function setupEvents(dependencies) {
threadClient = dependencies.threadClient;
@@ -38766,6 +38793,7 @@ var Debugger =
line: frame.where.line,
column: frame.where.column
}),
+ this: frame.this,
scope: frame.environment
});
}
@@ -38777,13 +38805,8 @@ var Debugger =
function newSource(_, packet) {
var source = packet.source;
-
- if (NEW_SOURCE_IGNORED_URLS.indexOf(source.url) > -1) {
- return;
- }
-
- if (source.introductionType == "debugger eval") {
- return;
+ if (!source.url) {
+ source.url = `SOURCE${ evalIndex++ }`;
}
actions.newSource(Source({
@@ -38869,7 +38892,7 @@ var Debugger =
function connectClient() {
var deferred = defer();
- if (!isEnabled("chrome.debug")) {
+ if (!getValue("chrome.debug")) {
return deferred.resolve(createTabs([]));
}
@@ -38877,6 +38900,9 @@ var Debugger =
var url = `http://localhost:${ webSocketPort }/json/list`;
networkRequest(url).then(body => {
deferred.resolve(createTabs(body));
+ }).catch(err => {
+ console.log(err);
+ deferred.reject();
});
return deferred.promise;
@@ -38898,7 +38924,7 @@ var Debugger =
var agents = connection._agents;
setupCommands({ agents: agents });
- setupEvents({ actions });
+ setupEvents({ actions, agents });
agents.Debugger.enable();
agents.Debugger.setPauseOnExceptions("none");
@@ -38937,9 +38963,15 @@ var Debugger =
function networkRequest(url) {
- return fetch(`/get?url=${ url }`).then(res => res.json()).catch(res => {
+ return Promise.race([fetch(`/get?url=${ url }`).then(res => {
+ if (res.status >= 200 && res.status < 300) {
+ return res.json();
+ }
log(`failed to request ${ url }`);
- });
+ return Promise.resolve([]);
+ }), new Promise((resolve, reject) => {
+ setTimeout(() => reject(new Error("Connect timeout error")), 6000);
+ })]);
}
module.exports = {
@@ -38980,6 +39012,8 @@ var Debugger =
*/
+ function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
+
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { return step("next", value); }, function (err) { return step("throw", err); }); } } return step("next"); }); }; }
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
@@ -39153,6 +39187,24 @@ var Debugger =
return Object.assign({}, obj, fields);
}
+ function throttle(func, ms) {
+ var timeout = void 0,
+ _this = void 0;
+ return function () {
+ for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
+ args[_key4] = arguments[_key4];
+ }
+
+ _this = this;
+ if (!timeout) {
+ timeout = setTimeout(() => {
+ func.apply.apply(func, [_this].concat(_toConsumableArray(args)));
+ timeout = null;
+ }, ms);
+ }
+ };
+ }
+
module.exports = {
asPaused,
handleError,
@@ -39167,7 +39219,8 @@ var Debugger =
mapObject,
compose,
log,
- updateObj
+ updateObj,
+ throttle
};
/***/ },
@@ -39506,6 +39559,11 @@ var Debugger =
});
}
+ function debuggeeCommand(script) {
+ evaluate(script);
+ return Promise.resolve();
+ }
+
function navigate(url) {
return pageAgent.navigate(url, (_, result) => {
return result;
@@ -39523,6 +39581,7 @@ var Debugger =
setBreakpoint,
removeBreakpoint,
evaluate,
+ debuggeeCommand,
navigate
};
@@ -39554,6 +39613,8 @@ var Debugger =
type: reason
}, data);
+ pageAgent.setOverlayMessage("Paused in debugger.html");
+
yield actions.paused({ frame, why, frames });
});
@@ -39572,9 +39633,11 @@ var Debugger =
var actions = void 0;
+ var pageAgent = void 0;
function setupEvents(dependencies) {
actions = dependencies.actions;
+ pageAgent = dependencies.agents.Page;
}
// Debugger Events
@@ -39594,6 +39657,7 @@ var Debugger =
function scriptFailedToParse() {}
function resumed() {
+ pageAgent.setOverlayMessage(undefined);
actions.resumed();
}
@@ -39787,25 +39851,24 @@ var Debugger =
/* 330 */
/***/ function(module, exports) {
- /* 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";
-
/**
* A middleware that logs all actions coming through the system
* to the console.
*/
- function log({ dispatch, getState }) {
+ function log(_ref) {
+ var dispatch = _ref.dispatch;
+ var getState = _ref.getState;
+
return next => action => {
- console.log("[DISPATCH]", JSON.stringify(action, null, 2));
+ var actionText = JSON.stringify(action, null, 2);
+ var truncatedActionText = actionText.slice(0, 1000) + "...";
+ console.log(`[DISPATCH ${ action.type }]`, action, truncatedActionText);
next(action);
};
}
exports.log = log;
-
/***/ },
/* 331 */
/***/ function(module, exports, __webpack_require__) {
@@ -39992,9 +40055,9 @@ var Debugger =
eventListeners,
sources: sources.update,
breakpoints: breakpoints.update,
+ pause: pause.update,
asyncRequests,
- tabs,
- pause
+ tabs
};
/***/ },
@@ -40062,6 +40125,7 @@ var Debugger =
exports.ENABLE_BREAKPOINT = "ENABLE_BREAKPOINT";
exports.DISABLE_BREAKPOINT = "DISABLE_BREAKPOINT";
exports.SET_BREAKPOINT_CONDITION = "SET_BREAKPOINT_CONDITION";
+ exports.TOGGLE_BREAKPOINTS = "TOGGLE_BREAKPOINTS";
exports.ADD_SOURCE = "ADD_SOURCE";
exports.LOAD_SOURCE_MAP = "LOAD_SOURCE_MAP";
@@ -40118,8 +40182,8 @@ var Debugger =
switch (action.type) {
case "ADD_SOURCE":
{
- var source = action.source;
- return state.mergeIn(["sources", action.source.id], source);
+ var _source = action.source;
+ return state.mergeIn(["sources", action.source.id], _source);
}
case "ADD_SOURCES":
@@ -40159,9 +40223,9 @@ var Debugger =
values = [generatedSourceText].concat(_toConsumableArray(originalSourceTexts));
} else {
- var _source = action.source;
+ var _source2 = action.source;
- values = [_source];
+ values = [_source2];
}
return _updateText(state, action, values);
@@ -40179,10 +40243,11 @@ var Debugger =
}
return _updateText(state, action, [action.originalSource]);
+
case "NAVIGATE":
- // Reset the entire state to just the initial state, a blank state
- // if you will.
- return State();
+ var source = state.selectedSource;
+ var sourceUrl = source && source.get("url");
+ return State().set("pendingSelectedSourceURL", sourceUrl);
}
return state;
@@ -40316,6 +40381,15 @@ var Debugger =
return state.sources.sourceMaps.get(sourceId);
}
+ function getPrettySource(state, id) {
+ var source = getSource(state, id);
+ if (!source) {
+ return;
+ }
+
+ return getSourceByURL(state, source.get("url") + ":formatted");
+ }
+
module.exports = {
State,
update,
@@ -40327,7 +40401,8 @@ var Debugger =
getSourceTabs,
getSelectedSource,
getPendingSelectedSourceURL,
- getSourceMap
+ getSourceMap,
+ getPrettySource
};
/***/ },
@@ -45404,7 +45479,8 @@ var Debugger =
var makeRecord = __webpack_require__(342);
var State = makeRecord({
- breakpoints: I.Map()
+ breakpoints: I.Map(),
+ breakpointsDisabled: false
});
// Return the first argument that is a string, or null if nothing is a
@@ -45502,6 +45578,14 @@ var Debugger =
break;
}
+ case "TOGGLE_BREAKPOINTS":
+ {
+ if (action.status === "start") {
+ return state.set("breakpointsDisabled", action.shouldDisableBreakpoints);
+ }
+ break;
+ }
+
case "SET_BREAKPOINT_CONDITION":
{
var _id2 = makeLocationId(action.breakpoint.location);
@@ -45543,13 +45627,26 @@ var Debugger =
});
}
+ function getBreakpointsDisabled(state) {
+ return state.breakpoints.get("breakpointsDisabled");
+ }
+
+ function getBreakpointsLoading(state) {
+ var breakpoints = getBreakpoints(state);
+ var isLoading = !!breakpoints.valueSeq().filter(bp => bp.loading).first();
+
+ return breakpoints.size > 0 && isLoading;
+ }
+
module.exports = {
State,
update,
makeLocationId,
getBreakpoint,
getBreakpoints,
- getBreakpointsForSource
+ getBreakpointsForSource,
+ getBreakpointsDisabled,
+ getBreakpointsLoading
};
/***/ },
@@ -45659,9 +45756,10 @@ var Debugger =
pause: null,
isWaitingOnBreak: false,
frames: null,
- selectedFrame: null,
+ selectedFrameId: null,
loadedObjects: {},
shouldPauseOnExceptions: false,
+ shouldIgnoreCaughtExceptions: false,
expressions: []
});
@@ -45673,14 +45771,18 @@ var Debugger =
switch (action.type) {
case constants.PAUSED:
if (action.status == "done") {
- var pause = action.value.pauseInfo;
- pause.isInterrupted = pause.why.type === "interrupted";
+ var _action$value = action.value;
+ var selectedFrameId = _action$value.selectedFrameId;
+ var frames = _action$value.frames;
+ var pauseInfo = _action$value.pauseInfo;
+
+ pauseInfo.isInterrupted = pauseInfo.why.type === "interrupted";
return state.merge({
isWaitingOnBreak: false,
- pause: fromJS(pause),
- selectedFrame: action.value.pauseInfo.frame,
- frames: action.value.frames
+ pause: fromJS(pauseInfo),
+ selectedFrameId,
+ frames
});
}
@@ -45689,10 +45791,17 @@ var Debugger =
return state.merge({
pause: null,
frames: null,
- selectedFrame: null,
+ selectedFrameId: null,
loadedObjects: {}
});
+ case constants.TOGGLE_PRETTY_PRINT:
+ if (action.status == "done") {
+ var _frames = action.value.frames;
+ return state.merge({ frames: _frames });
+ }
+
+ break;
case constants.BREAK_ON_NEXT:
return state.set("isWaitingOnBreak", true);
@@ -45703,7 +45812,7 @@ var Debugger =
break;
case constants.SELECT_FRAME:
- return state.set("selectedFrame", action.frame);
+ return state.set("selectedFrameId", action.frame.id);
case constants.LOAD_OBJECT_PROPERTIES:
if (action.status === "done") {
@@ -45718,8 +45827,13 @@ var Debugger =
return initialState;
case constants.PAUSE_ON_EXCEPTIONS:
- var toggle = action.toggle;
- return state.set("shouldPauseOnExceptions", toggle);
+ var shouldPauseOnExceptions = action.shouldPauseOnExceptions;
+ var shouldIgnoreCaughtExceptions = action.shouldIgnoreCaughtExceptions;
+
+ return state.merge({
+ shouldPauseOnExceptions,
+ shouldIgnoreCaughtExceptions
+ });
case constants.ADD_EXPRESSION:
return state.setIn(["expressions", action.id], { id: action.id,
@@ -45748,75 +45862,6 @@ var Debugger =
return state;
}
- module.exports = update;
-
-/***/ },
-/* 347 */
-/***/ function(module, exports, __webpack_require__) {
-
- var React = __webpack_require__(17);
-
- var _require = __webpack_require__(15);
-
- var connect = _require.connect;
-
- var _require2 = __webpack_require__(348);
-
- var getTabs = _require2.getTabs;
-
-
- __webpack_require__(355);
- var dom = React.DOM;
-
- function getTabsByBrowser(tabs, browser) {
- return tabs.valueSeq().filter(tab => tab.get("browser") == browser);
- }
-
- function renderTabs(tabTitle, tabs, paramName) {
- if (tabs.count() == 0) {
- return null;
- }
-
- return dom.div({ className: `tab-group ${ tabTitle }` }, dom.div({ className: "tab-group-title" }, tabTitle), dom.ul({ className: "tab-list" }, tabs.valueSeq().map(tab => dom.li({ "className": "tab",
- "key": tab.get("id"),
- "onClick": () => {
- window.location = "/?" + paramName + "=" + tab.get("id");
- } }, dom.div({ className: "tab-title" }, tab.get("title")), dom.div({ className: "tab-url" }, tab.get("url"))))));
- }
-
- function renderMessage(tabsIsEmpty) {
- return dom.div({ className: "not-connected-message" }, !tabsIsEmpty || "No remote tabs found. ", "You may be looking to ", dom.a({ href: `/?ws=${ document.location.hostname }:9229/node` }, "connect to Node"), ".", dom.br(), "Make sure you run ", dom.a({ href: "https://github.com/devtools-html/debugger.html/blob/master/CONTRIBUTING.md#firefox" }, "Firefox"), ", ", dom.a({ href: "https://github.com/devtools-html/debugger.html/blob/master/CONTRIBUTING.md#chrome" }, "Chrome"), " or ", dom.a({ href: "https://github.com/devtools-html/debugger.html/blob/master/CONTRIBUTING.md#nodejs" }, "Node"), " with the right flags.");
- }
- function Tabs(_ref) {
- var tabs = _ref.tabs;
-
- var firefoxTabs = getTabsByBrowser(tabs, "firefox");
- var chromeTabs = getTabsByBrowser(tabs, "chrome");
-
- return dom.div({ className: "tabs theme-light" }, renderTabs("Firefox Tabs", firefoxTabs, "firefox-tab"), renderTabs("Chrome Tabs", chromeTabs, "chrome-tab"), renderMessage(tabs.isEmpty()));
- }
-
- module.exports = connect(state => ({ tabs: getTabs(state) }))(Tabs);
-
-/***/ },
-/* 348 */
-/***/ function(module, exports, __webpack_require__) {
-
-
-
- var URL = __webpack_require__(349);
- var path = __webpack_require__(354);
- var sources = __webpack_require__(339);
- var breakpoints = __webpack_require__(343);
-
- function getTabs(state) {
- return state.tabs.get("tabs");
- }
-
- function getSelectedTab(state) {
- return state.tabs.get("selectedTab");
- }
-
function getPause(state) {
return state.pause.get("pause");
}
@@ -45837,12 +45882,51 @@ var Debugger =
return state.pause.get("shouldPauseOnExceptions");
}
+ function getShouldIgnoreCaughtExceptions(state) {
+ return state.pause.get("shouldIgnoreCaughtExceptions");
+ }
+
function getFrames(state) {
return state.pause.get("frames") || [];
}
function getSelectedFrame(state) {
- return state.pause.get("selectedFrame");
+ var selectedFrameId = state.pause.get("selectedFrameId");
+ var frames = state.pause.get("frames");
+ return frames && frames.find(frame => frame.id == selectedFrameId);
+ }
+
+ module.exports = {
+ initialState,
+ update,
+ getPause,
+ getLoadedObjects,
+ getExpressions,
+ getIsWaitingOnBreak,
+ getShouldPauseOnExceptions,
+ getShouldIgnoreCaughtExceptions,
+ getFrames,
+ getSelectedFrame
+ };
+
+/***/ },
+/* 347 */
+/***/ function(module, exports, __webpack_require__) {
+
+
+
+ var URL = __webpack_require__(348);
+ var path = __webpack_require__(353);
+ var sources = __webpack_require__(339);
+ var pause = __webpack_require__(346);
+ var breakpoints = __webpack_require__(343);
+
+ function getTabs(state) {
+ return state.tabs.get("tabs");
+ }
+
+ function getSelectedTab(state) {
+ return state.tabs.get("selectedTab");
}
function getSourceMapURL(state, source) {
@@ -45875,26 +45959,31 @@ var Debugger =
getSelectedSource: sources.getSelectedSource,
getPendingSelectedSourceURL: sources.getPendingSelectedSourceURL,
getSourceMap: sources.getSourceMap,
+ getPrettySource: sources.getPrettySource,
getSourceMapURL,
getBreakpoint: breakpoints.getBreakpoint,
getBreakpoints: breakpoints.getBreakpoints,
getBreakpointsForSource: breakpoints.getBreakpointsForSource,
+ getBreakpointsDisabled: breakpoints.getBreakpointsDisabled,
+ getBreakpointsLoading: breakpoints.getBreakpointsLoading,
getTabs,
getSelectedTab,
- getPause,
- getLoadedObjects,
- getExpressions,
- getIsWaitingOnBreak,
- getShouldPauseOnExceptions,
- getFrames,
- getSelectedFrame
+
+ getPause: pause.getPause,
+ getLoadedObjects: pause.getLoadedObjects,
+ getExpressions: pause.getExpressions,
+ getIsWaitingOnBreak: pause.getIsWaitingOnBreak,
+ getShouldPauseOnExceptions: pause.getShouldPauseOnExceptions,
+ getShouldIgnoreCaughtExceptions: pause.getShouldIgnoreCaughtExceptions,
+ getFrames: pause.getFrames,
+ getSelectedFrame: pause.getSelectedFrame
};
/***/ },
-/* 349 */
+/* 348 */
/***/ function(module, exports, __webpack_require__) {
// Copyright Joyent, Inc. and other Node contributors.
@@ -45918,7 +46007,7 @@ var Debugger =
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
- var punycode = __webpack_require__(350);
+ var punycode = __webpack_require__(349);
exports.parse = urlParse;
exports.resolve = urlResolve;
@@ -45990,7 +46079,7 @@ var Debugger =
'gopher:': true,
'file:': true
},
- querystring = __webpack_require__(351);
+ querystring = __webpack_require__(350);
function urlParse(url, parseQueryString, slashesDenoteHost) {
if (url && isObject(url) && url instanceof Url) return url;
@@ -46607,7 +46696,7 @@ var Debugger =
/***/ },
-/* 350 */
+/* 349 */
/***/ function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(module, global) {/*! https://mths.be/punycode v1.3.2 by @mathias */
@@ -47142,17 +47231,17 @@ var Debugger =
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(250)(module), (function() { return this; }())))
/***/ },
-/* 351 */
+/* 350 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
- exports.decode = exports.parse = __webpack_require__(352);
- exports.encode = exports.stringify = __webpack_require__(353);
+ exports.decode = exports.parse = __webpack_require__(351);
+ exports.encode = exports.stringify = __webpack_require__(352);
/***/ },
-/* 352 */
+/* 351 */
/***/ function(module, exports) {
// Copyright Joyent, Inc. and other Node contributors.
@@ -47238,7 +47327,7 @@ var Debugger =
/***/ },
-/* 353 */
+/* 352 */
/***/ function(module, exports) {
// Copyright Joyent, Inc. and other Node contributors.
@@ -47308,7 +47397,7 @@ var Debugger =
/***/ },
-/* 354 */
+/* 353 */
/***/ function(module, exports) {
function basename(path) {
@@ -47332,356 +47421,125 @@ var Debugger =
basename, dirname, isURL, isAbsolute
};
+/***/ },
+/* 354 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var React = __webpack_require__(17);
+
+ var _require = __webpack_require__(15);
+
+ var connect = _require.connect;
+
+ var classnames = __webpack_require__(355);
+
+ var _require2 = __webpack_require__(347);
+
+ var getTabs = _require2.getTabs;
+
+
+ __webpack_require__(356);
+ var dom = React.DOM;
+
+ var githubUrl = "https://github.com/devtools-html/debugger.html/blob/master";
+
+ function getTabsByBrowser(tabs, browser) {
+ return tabs.valueSeq().filter(tab => tab.get("browser") == browser);
+ }
+
+ function renderTabs(tabTitle, tabs, paramName) {
+ if (tabs.count() == 0) {
+ return null;
+ }
+
+ return dom.div({ className: `tab-group ${ tabTitle }` }, dom.div({ className: "tab-group-title" }, tabTitle), dom.ul({ className: "tab-list" }, tabs.valueSeq().map(tab => dom.li({ "className": "tab",
+ "key": tab.get("id"),
+ "onClick": () => {
+ window.location = "/?" + paramName + "=" + tab.get("id");
+ } }, dom.div({ className: "tab-title" }, tab.get("title")), dom.div({ className: "tab-url" }, tab.get("url"))))));
+ }
+
+ function renderMessage(noTabs) {
+ return dom.div({ className: classnames("connect-message", { "not-connected": noTabs }) }, dom.p(null, noTabs && "No remote tabs found. ", "You may be looking to ", dom.a({
+ href: `/?ws=${ document.location.hostname }:9229/node`
+ }, "connect to Node"), "."), dom.p(null, "Make sure you run ", dom.a({ href: `${ githubUrl }/CONTRIBUTING.md#firefox` }, "Firefox"), ", ", dom.a({ href: `${ githubUrl }/CONTRIBUTING.md#chrome` }, "Chrome"), " or ", dom.a({ href: `${ githubUrl }/CONTRIBUTING.md#nodejs` }, "Node"), " with the right flags."));
+ }
+ function Tabs(_ref) {
+ var tabs = _ref.tabs;
+
+ var firefoxTabs = getTabsByBrowser(tabs, "firefox");
+ var chromeTabs = getTabsByBrowser(tabs, "chrome");
+
+ return dom.div({ className: "tabs theme-light" }, renderTabs("Firefox Tabs", firefoxTabs, "firefox-tab"), renderTabs("Chrome Tabs", chromeTabs, "chrome-tab"), renderMessage(tabs.isEmpty()));
+ }
+
+ module.exports = connect(state => ({ tabs: getTabs(state) }))(Tabs);
+
/***/ },
/* 355 */
/***/ function(module, exports, __webpack_require__) {
- // style-loader: Adds some css to the DOM by adding a