Bug 1447382 - Update Debugger Frontend v19.3. r=jlast, a=jcristau
authorJulian Descottes <jdescottes@mozilla.com>
Tue, 20 Mar 2018 19:08:04 +0100
changeset 462794 1f86e8c381c66a232d926c62eb2f6272df21f660
parent 462793 9452d69547d28c2fbbae8b2dc6dcf581b5381480
child 462795 117ae537ef0d0a989b9505369a28c6a58bdfeae8
push id1683
push usersfraser@mozilla.com
push dateThu, 26 Apr 2018 16:43:40 +0000
treeherdermozilla-release@5af6cb21869d [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjlast, jcristau
bugs1447382
milestone60.0
Bug 1447382 - Update Debugger Frontend v19.3. r=jlast, a=jcristau MozReview-Commit-ID: Bdy4neTgJUp
devtools/client/debugger/new/README.mozilla
devtools/client/debugger/new/debugger.css
devtools/client/debugger/new/debugger.js
--- a/devtools/client/debugger/new/README.mozilla
+++ b/devtools/client/debugger/new/README.mozilla
@@ -1,13 +1,13 @@
 This is the debugger.html project output.
 See https://github.com/devtools-html/debugger.html
 
-Version 19.2
+Version 19.3
 
-Comparison: https://github.com/devtools-html/debugger.html/compare/release-19-1...release-19-2
+Comparison: https://github.com/devtools-html/debugger.html/compare/release-19-2...release-19-3
 
 Packages:
 - babel-plugin-transform-es2015-modules-commonjs @6.26.0
 - babel-preset-react @6.24.1
 - react @16.2.0
 - react-dom @16.2.0
 - webpack @3.11.0
--- a/devtools/client/debugger/new/debugger.css
+++ b/devtools/client/debugger/new/debugger.css
@@ -1753,17 +1753,16 @@ html[dir="rtl"] .arrow svg,
 .command-bar-button {
   appearance: none;
   background: transparent;
   border: none;
   display: inline-block;
   text-align: center;
   position: relative;
   padding: 0px 5px;
-  margin-inline-end: 0.3em;
   fill: currentColor;
 }
 
 .command-bar-button:focus {
   outline: none;
 }
 
 .command-bar-button:disabled {
@@ -3434,17 +3433,16 @@ html .breakpoints-list .breakpoint.pause
 
 .command-bar {
   flex: 0 0 30px;
   border-bottom: 1px solid var(--theme-splitter-color);
   display: flex;
   overflow: hidden;
   z-index: 1;
   background-color: var(--theme-toolbar-background);
-  align-items: center;
 }
 
 html[dir="rtl"] .command-bar {
   border-right: 1px solid var(--theme-splitter-color);
 }
 
 .theme-dark .command-bar {
   background-color: var(--theme-toolbar-background);
@@ -3539,17 +3537,18 @@ img.resume {
 }
 
 .command-bar .replay-inactive {
   opacity: 0.5;
 }
 
 .command-bar .step-position {
   color: var(--theme-comment-alt);
-  margin-inline-end: 1em;
+  padding-top: 8px;
+  margin-inline-end: 4px;
 }
 
 .command-bar .replay-active {
   color: var(--theme-highlight-blue);
 }
 
 .command-bar .subSettings {
   float: right;
--- a/devtools/client/debugger/new/debugger.js
+++ b/devtools/client/debugger/new/debugger.js
@@ -1166,128 +1166,16 @@ function isCrushed() {}
 if (false) {
   warning('You are currently using minified code outside of NODE_ENV === \'production\'. ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or DefinePlugin for webpack (http://stackoverflow.com/questions/30030031) ' + 'to ensure you have the correct code for your production build.');
 }
 
 
 
 /***/ }),
 /* 9 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
-/* 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/>. */
-
-// @flow
-
-const { isDevelopment } = __webpack_require__(13);
-const { Services, PrefsHelper } = __webpack_require__(70);
-
-const prefsSchemaVersion = "1.0.3";
-
-const pref = Services.pref;
-
-if (isDevelopment()) {
-  pref("devtools.debugger.auto-pretty-print", true);
-  pref("devtools.source-map.client-service.enabled", true);
-  pref("devtools.debugger.pause-on-exceptions", false);
-  pref("devtools.debugger.ignore-caught-exceptions", false);
-  pref("devtools.debugger.call-stack-visible", true);
-  pref("devtools.debugger.scopes-visible", true);
-  pref("devtools.debugger.workers-visible", true);
-  pref("devtools.debugger.expressions-visible", true);
-  pref("devtools.debugger.breakpoints-visible", true);
-  pref("devtools.debugger.start-panel-collapsed", false);
-  pref("devtools.debugger.end-panel-collapsed", false);
-  pref("devtools.debugger.tabs", "[]");
-  pref("devtools.debugger.ui.framework-grouping-on", true);
-  pref("devtools.debugger.pending-selected-location", "{}");
-  pref("devtools.debugger.pending-breakpoints", "{}");
-  pref("devtools.debugger.expressions", "[]");
-  pref("devtools.debugger.file-search-case-sensitive", false);
-  pref("devtools.debugger.file-search-whole-word", false);
-  pref("devtools.debugger.file-search-regex-match", false);
-  pref("devtools.debugger.project-directory-root", "");
-  pref("devtools.debugger.prefs-schema-version", "1.0.1");
-  pref("devtools.debugger.features.workers", true);
-  pref("devtools.debugger.features.async-stepping", true);
-  pref("devtools.debugger.features.wasm", true);
-  pref("devtools.debugger.features.shortcuts", true);
-  pref("devtools.debugger.features.root", true);
-  pref("devtools.debugger.features.column-breakpoints", false);
-  pref("devtools.debugger.features.chrome-scopes", false);
-  pref("devtools.debugger.features.map-scopes", true);
-  pref("devtools.debugger.features.breakpoints-dropdown", true);
-  pref("devtools.debugger.features.remove-command-bar-options", true);
-  pref("devtools.debugger.features.code-coverage", false);
-  pref("devtools.debugger.features.event-listeners", false);
-  pref("devtools.debugger.features.code-folding", false);
-  pref("devtools.debugger.features.outline", true);
-  pref("devtools.debugger.features.column-breakpoints", true);
-  pref("devtools.debugger.features.replay", true);
-}
-
-const prefs = new PrefsHelper("devtools", {
-  autoPrettyPrint: ["Bool", "debugger.auto-pretty-print"],
-  clientSourceMapsEnabled: ["Bool", "source-map.client-service.enabled"],
-  pauseOnExceptions: ["Bool", "debugger.pause-on-exceptions"],
-  ignoreCaughtExceptions: ["Bool", "debugger.ignore-caught-exceptions"],
-  callStackVisible: ["Bool", "debugger.call-stack-visible"],
-  scopesVisible: ["Bool", "debugger.scopes-visible"],
-  workersVisible: ["Bool", "debugger.workers-visible"],
-  breakpointsVisible: ["Bool", "debugger.breakpoints-visible"],
-  expressionsVisible: ["Bool", "debugger.expressions-visible"],
-  startPanelCollapsed: ["Bool", "debugger.start-panel-collapsed"],
-  endPanelCollapsed: ["Bool", "debugger.end-panel-collapsed"],
-  frameworkGroupingOn: ["Bool", "debugger.ui.framework-grouping-on"],
-  tabs: ["Json", "debugger.tabs", []],
-  pendingSelectedLocation: ["Json", "debugger.pending-selected-location", {}],
-  pendingBreakpoints: ["Json", "debugger.pending-breakpoints", {}],
-  expressions: ["Json", "debugger.expressions", []],
-  fileSearchCaseSensitive: ["Bool", "debugger.file-search-case-sensitive"],
-  fileSearchWholeWord: ["Bool", "debugger.file-search-whole-word"],
-  fileSearchRegexMatch: ["Bool", "debugger.file-search-regex-match"],
-  debuggerPrefsSchemaVersion: ["Char", "debugger.prefs-schema-version"],
-  projectDirectoryRoot: ["Char", "debugger.project-directory-root", ""]
-});
-/* harmony export (immutable) */ __webpack_exports__["prefs"] = prefs;
-
-
-const features = new PrefsHelper("devtools.debugger.features", {
-  asyncStepping: ["Bool", "async-stepping"],
-  wasm: ["Bool", "wasm"],
-  shortcuts: ["Bool", "shortcuts"],
-  root: ["Bool", "root"],
-  columnBreakpoints: ["Bool", "column-breakpoints"],
-  chromeScopes: ["Bool", "chrome-scopes"],
-  mapScopes: ["Bool", "map-scopes"],
-  breakpointsDropdown: ["Bool", "breakpoints-dropdown"],
-  removeCommandBarOptions: ["Bool", "remove-command-bar-options"],
-  workers: ["Bool", "workers"],
-  codeCoverage: ["Bool", "code-coverage"],
-  eventListeners: ["Bool", "event-listeners"],
-  outline: ["Bool", "outline"],
-  codeFolding: ["Bool", "code-folding"],
-  replay: ["Bool", "replay"]
-});
-/* harmony export (immutable) */ __webpack_exports__["features"] = features;
-
-
-if (prefs.debuggerPrefsSchemaVersion !== prefsSchemaVersion) {
-  // clear pending Breakpoints
-  prefs.pendingBreakpoints = {};
-  prefs.debuggerPrefsSchemaVersion = prefsSchemaVersion;
-}
-
-
-/***/ }),
-/* 10 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -1407,17 +1295,17 @@ function getPrettySourceURL(url) {
   return `${url}:formatted`;
 }
 
 /**
  * @memberof utils/source
  * @static
  */
 function getRawSourceURL(url) {
-  return url.replace(/:formatted$/, "");
+  return url ? url.replace(/:formatted$/, "") : url;
 }
 
 function resolveFileURL(url, transformUrl = initialUrl => initialUrl) {
   url = getRawSourceURL(url || "");
   const name = transformUrl(url);
   return (0, _utils.endTruncateStr)(name, 50);
 }
 
@@ -1585,16 +1473,128 @@ function isLoaded(source) {
   return source.get("loadedState") === "loaded";
 }
 
 function isLoading(source) {
   return source.get("loadedState") === "loading";
 }
 
 /***/ }),
+/* 10 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
+/* 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/>. */
+
+// @flow
+
+const { isDevelopment } = __webpack_require__(13);
+const { Services, PrefsHelper } = __webpack_require__(70);
+
+const prefsSchemaVersion = "1.0.3";
+
+const pref = Services.pref;
+
+if (isDevelopment()) {
+  pref("devtools.debugger.auto-pretty-print", true);
+  pref("devtools.source-map.client-service.enabled", true);
+  pref("devtools.debugger.pause-on-exceptions", false);
+  pref("devtools.debugger.ignore-caught-exceptions", false);
+  pref("devtools.debugger.call-stack-visible", true);
+  pref("devtools.debugger.scopes-visible", true);
+  pref("devtools.debugger.workers-visible", true);
+  pref("devtools.debugger.expressions-visible", true);
+  pref("devtools.debugger.breakpoints-visible", true);
+  pref("devtools.debugger.start-panel-collapsed", false);
+  pref("devtools.debugger.end-panel-collapsed", false);
+  pref("devtools.debugger.tabs", "[]");
+  pref("devtools.debugger.ui.framework-grouping-on", true);
+  pref("devtools.debugger.pending-selected-location", "{}");
+  pref("devtools.debugger.pending-breakpoints", "{}");
+  pref("devtools.debugger.expressions", "[]");
+  pref("devtools.debugger.file-search-case-sensitive", false);
+  pref("devtools.debugger.file-search-whole-word", false);
+  pref("devtools.debugger.file-search-regex-match", false);
+  pref("devtools.debugger.project-directory-root", "");
+  pref("devtools.debugger.prefs-schema-version", "1.0.1");
+  pref("devtools.debugger.features.workers", true);
+  pref("devtools.debugger.features.async-stepping", true);
+  pref("devtools.debugger.features.wasm", true);
+  pref("devtools.debugger.features.shortcuts", true);
+  pref("devtools.debugger.features.root", true);
+  pref("devtools.debugger.features.column-breakpoints", false);
+  pref("devtools.debugger.features.chrome-scopes", false);
+  pref("devtools.debugger.features.map-scopes", true);
+  pref("devtools.debugger.features.breakpoints-dropdown", true);
+  pref("devtools.debugger.features.remove-command-bar-options", true);
+  pref("devtools.debugger.features.code-coverage", false);
+  pref("devtools.debugger.features.event-listeners", false);
+  pref("devtools.debugger.features.code-folding", false);
+  pref("devtools.debugger.features.outline", true);
+  pref("devtools.debugger.features.column-breakpoints", true);
+  pref("devtools.debugger.features.replay", true);
+}
+
+const prefs = new PrefsHelper("devtools", {
+  autoPrettyPrint: ["Bool", "debugger.auto-pretty-print"],
+  clientSourceMapsEnabled: ["Bool", "source-map.client-service.enabled"],
+  pauseOnExceptions: ["Bool", "debugger.pause-on-exceptions"],
+  ignoreCaughtExceptions: ["Bool", "debugger.ignore-caught-exceptions"],
+  callStackVisible: ["Bool", "debugger.call-stack-visible"],
+  scopesVisible: ["Bool", "debugger.scopes-visible"],
+  workersVisible: ["Bool", "debugger.workers-visible"],
+  breakpointsVisible: ["Bool", "debugger.breakpoints-visible"],
+  expressionsVisible: ["Bool", "debugger.expressions-visible"],
+  startPanelCollapsed: ["Bool", "debugger.start-panel-collapsed"],
+  endPanelCollapsed: ["Bool", "debugger.end-panel-collapsed"],
+  frameworkGroupingOn: ["Bool", "debugger.ui.framework-grouping-on"],
+  tabs: ["Json", "debugger.tabs", []],
+  pendingSelectedLocation: ["Json", "debugger.pending-selected-location", {}],
+  pendingBreakpoints: ["Json", "debugger.pending-breakpoints", {}],
+  expressions: ["Json", "debugger.expressions", []],
+  fileSearchCaseSensitive: ["Bool", "debugger.file-search-case-sensitive"],
+  fileSearchWholeWord: ["Bool", "debugger.file-search-whole-word"],
+  fileSearchRegexMatch: ["Bool", "debugger.file-search-regex-match"],
+  debuggerPrefsSchemaVersion: ["Char", "debugger.prefs-schema-version"],
+  projectDirectoryRoot: ["Char", "debugger.project-directory-root", ""]
+});
+/* harmony export (immutable) */ __webpack_exports__["prefs"] = prefs;
+
+
+const features = new PrefsHelper("devtools.debugger.features", {
+  asyncStepping: ["Bool", "async-stepping"],
+  wasm: ["Bool", "wasm"],
+  shortcuts: ["Bool", "shortcuts"],
+  root: ["Bool", "root"],
+  columnBreakpoints: ["Bool", "column-breakpoints"],
+  chromeScopes: ["Bool", "chrome-scopes"],
+  mapScopes: ["Bool", "map-scopes"],
+  breakpointsDropdown: ["Bool", "breakpoints-dropdown"],
+  removeCommandBarOptions: ["Bool", "remove-command-bar-options"],
+  workers: ["Bool", "workers"],
+  codeCoverage: ["Bool", "code-coverage"],
+  eventListeners: ["Bool", "event-listeners"],
+  outline: ["Bool", "outline"],
+  codeFolding: ["Bool", "code-folding"],
+  replay: ["Bool", "replay"]
+});
+/* harmony export (immutable) */ __webpack_exports__["features"] = features;
+
+
+if (prefs.debuggerPrefsSchemaVersion !== prefsSchemaVersion) {
+  // clear pending Breakpoints
+  prefs.pendingBreakpoints = {};
+  prefs.debuggerPrefsSchemaVersion = prefsSchemaVersion;
+}
+
+
+/***/ }),
 /* 11 */
 /***/ (function(module, exports) {
 
 module.exports = __WEBPACK_EXTERNAL_MODULE_11__;
 
 /***/ }),
 /* 12 */
 /***/ (function(module, exports, __webpack_require__) {
@@ -1757,17 +1757,17 @@ exports.markText = markText;
 exports.lineAtHeight = lineAtHeight;
 exports.getSourceLocationFromMouseEvent = getSourceLocationFromMouseEvent;
 exports.forEachLine = forEachLine;
 exports.removeLineClass = removeLineClass;
 exports.clearLineClass = clearLineClass;
 exports.getTextForLine = getTextForLine;
 exports.getCursorLine = getCursorLine;
 
-var _source = __webpack_require__(10);
+var _source = __webpack_require__(9);
 
 var _wasm = __webpack_require__(105);
 
 var _devtoolsSourceMap = __webpack_require__(12);
 
 function shouldShowPrettyPrint(selectedSource) {
   if (!selectedSource) {
     return false;
@@ -7283,21 +7283,21 @@ var _immutable = __webpack_require__(19)
 var I = _interopRequireWildcard(_immutable);
 
 var _reselect = __webpack_require__(48);
 
 var _makeRecord = __webpack_require__(24);
 
 var _makeRecord2 = _interopRequireDefault(_makeRecord);
 
-var _source = __webpack_require__(10);
+var _source = __webpack_require__(9);
 
 var _devtoolsSourceMap = __webpack_require__(12);
 
-var _prefs = __webpack_require__(9);
+var _prefs = __webpack_require__(10);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
 function initialSourcesState() {
   return (0, _makeRecord2.default)({
     sources: I.Map(),
@@ -7891,17 +7891,17 @@ exports.createBreakpoint = createBreakpo
 exports.createPendingBreakpoint = createPendingBreakpoint;
 
 var _selectors = __webpack_require__(1);
 
 var _assert = __webpack_require__(103);
 
 var _assert2 = _interopRequireDefault(_assert);
 
-var _prefs = __webpack_require__(9);
+var _prefs = __webpack_require__(10);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 // Return the first argument that is a string, or null if nothing is a
 // string.
 function firstString(...args) {
   for (const arg of args) {
     if (typeof arg === "string") {
@@ -8044,17 +8044,17 @@ exports.isNotJavaScript = isNotJavaScrip
 exports.isInvalidUrl = isInvalidUrl;
 exports.partIsFile = partIsFile;
 exports.createNode = createNode;
 exports.createParentMap = createParentMap;
 exports.getRelativePath = getRelativePath;
 
 var _url = __webpack_require__(100);
 
-var _source = __webpack_require__(10);
+var _source = __webpack_require__(9);
 
 /* 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/>. */
 
 const IGNORED_URLS = ["debugger eval code", "XStringBundle"];
 
 function nodeHasChildren(item) {
@@ -8916,17 +8916,17 @@ exports.getLibraryFromUrl = getLibraryFr
 exports.annotateFrame = annotateFrame;
 exports.simplifyDisplayName = simplifyDisplayName;
 exports.formatDisplayName = formatDisplayName;
 exports.formatCopyName = formatCopyName;
 exports.collapseFrames = collapseFrames;
 
 var _utils = __webpack_require__(72);
 
-var _source = __webpack_require__(10);
+var _source = __webpack_require__(9);
 
 var _lodash = __webpack_require__(11);
 
 function getFrameUrl(frame) {
   return (0, _lodash.get)(frame, "source.url", "") || "";
 }
 
 const libraryMap = [{
@@ -10038,17 +10038,17 @@ Object.defineProperty(exports, "__esModu
 });
 exports.clientEvents = exports.clientCommands = exports.createObjectClient = undefined;
 exports.onConnect = onConnect;
 
 var _commands = __webpack_require__(391);
 
 var _events = __webpack_require__(410);
 
-var _prefs = __webpack_require__(9);
+var _prefs = __webpack_require__(10);
 
 let DebuggerClient; /* 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/>. */
 
 function createObjectClient(grip) {
   return DebuggerClient.createObjectClient(grip);
 }
@@ -10312,17 +10312,17 @@ exports.getSelectedFrameId = getSelected
 exports.getTopFrame = getTopFrame;
 exports.getDebuggeeUrl = getDebuggeeUrl;
 exports.getChromeScopes = getChromeScopes;
 
 var _reselect = __webpack_require__(48);
 
 var _devtoolsSourceMap = __webpack_require__(12);
 
-var _prefs = __webpack_require__(9);
+var _prefs = __webpack_require__(10);
 
 var _sources = __webpack_require__(32);
 
 const createPauseState = exports.createPauseState = () => ({
   why: null,
   isWaitingOnBreak: false,
   frames: undefined,
   selectedFrameId: undefined,
@@ -10787,17 +10787,17 @@ var _devtoolsSourceMap = __webpack_requi
 var _promise = __webpack_require__(33);
 
 var _selectors = __webpack_require__(1);
 
 var _parser = __webpack_require__(27);
 
 var parser = _interopRequireWildcard(_parser);
 
-var _source = __webpack_require__(10);
+var _source = __webpack_require__(9);
 
 var _defer = __webpack_require__(429);
 
 var _defer2 = _interopRequireDefault(_defer);
 
 var _devtoolsModules = __webpack_require__(70);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -10905,17 +10905,17 @@ exports.closeConditionalPanel = closeCon
 exports.clearProjectDirectoryRoot = clearProjectDirectoryRoot;
 exports.setProjectDirectoryRoot = setProjectDirectoryRoot;
 exports.setOrientation = setOrientation;
 
 var _selectors = __webpack_require__(1);
 
 var _ui = __webpack_require__(154);
 
-var _source = __webpack_require__(10);
+var _source = __webpack_require__(9);
 
 function setContextMenu(type, event) {
   return ({ dispatch }) => {
     dispatch({ type: "SET_CONTEXT_MENU", contextMenu: { type, event } });
   };
 } /* 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/>. */
@@ -15993,17 +15993,17 @@ exports.getHighlightedLineRange = getHig
 exports.getConditionalPanelLine = getConditionalPanelLine;
 exports.getProjectDirectoryRoot = getProjectDirectoryRoot;
 exports.getOrientation = getOrientation;
 
 var _makeRecord = __webpack_require__(24);
 
 var _makeRecord2 = _interopRequireDefault(_makeRecord);
 
-var _prefs = __webpack_require__(9);
+var _prefs = __webpack_require__(10);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 /* 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/>. */
 
 /**
@@ -16601,17 +16601,17 @@ exports.astCommand = astCommand;
 var _selectors = __webpack_require__(1);
 
 var _promise = __webpack_require__(33);
 
 var _parser = __webpack_require__(27);
 
 var _breakpoints = __webpack_require__(59);
 
-var _prefs = __webpack_require__(9);
+var _prefs = __webpack_require__(10);
 
 /**
  * Debugger commands like stepOver, stepIn, stepUp
  *
  * @param string $0.type
  * @memberof actions/pause
  * @static
  */
@@ -16850,17 +16850,17 @@ var _assert2 = _interopRequireDefault(_a
 var _breakpoints = __webpack_require__(59);
 
 var _ast = __webpack_require__(163);
 
 var _prettyPrint = __webpack_require__(222);
 
 var _parser = __webpack_require__(27);
 
-var _source = __webpack_require__(10);
+var _source = __webpack_require__(9);
 
 var _loadSourceText = __webpack_require__(76);
 
 var _sources = __webpack_require__(34);
 
 var _pause = __webpack_require__(159);
 
 var _selectors = __webpack_require__(1);
@@ -17808,17 +17808,18 @@ class SearchInput extends _react.Compone
       onChange,
       onFocus,
       onKeyDown,
       onKeyUp,
       placeholder,
       query,
       selectedItemId,
       showErrorEmoji,
-      size
+      size,
+      summaryMsg
     } = this.props;
 
     const inputProps = {
       className: (0, _classnames2.default)({
         empty: showErrorEmoji
       }),
       onChange,
       onKeyDown,
@@ -17840,16 +17841,21 @@ class SearchInput extends _react.Compone
         className: (0, _classnames2.default)("search-field", size),
         role: "combobox",
         "aria-haspopup": "listbox",
         "aria-owns": "result-list",
         "aria-expanded": expanded
       },
       this.renderSvg(),
       _react2.default.createElement("input", inputProps),
+      summaryMsg && _react2.default.createElement(
+        "div",
+        { className: "summary" },
+        summaryMsg
+      ),
       this.renderNav(),
       _react2.default.createElement(_Close2.default, { handleClick: handleClose, buttonClass: size })
     );
   }
 }
 
 SearchInput.defaultProps = {
   expanded: false,
@@ -19653,17 +19659,17 @@ var _makeRecord = __webpack_require__(24
 var _makeRecord2 = _interopRequireDefault(_makeRecord);
 
 var _immutable = __webpack_require__(19);
 
 var _lodash = __webpack_require__(11);
 
 var _reselect = __webpack_require__(48);
 
-var _prefs = __webpack_require__(9);
+var _prefs = __webpack_require__(10);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 const createExpressionState = exports.createExpressionState = (0, _makeRecord2.default)({
   expressions: (0, _immutable.List)(restoreExpressions()),
   expressionError: false
 }); /* 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
@@ -19847,17 +19853,17 @@ var _immutable = __webpack_require__(19)
 var I = _interopRequireWildcard(_immutable);
 
 var _makeRecord = __webpack_require__(24);
 
 var _makeRecord2 = _interopRequireDefault(_makeRecord);
 
 var _breakpoint = __webpack_require__(41);
 
-var _prefs = __webpack_require__(9);
+var _prefs = __webpack_require__(10);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
 /* 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/>. */
@@ -19997,17 +20003,17 @@ exports.createFileSearchState = undefine
 exports.getFileSearchQuery = getFileSearchQuery;
 exports.getFileSearchModifiers = getFileSearchModifiers;
 exports.getFileSearchResults = getFileSearchResults;
 
 var _makeRecord = __webpack_require__(24);
 
 var _makeRecord2 = _interopRequireDefault(_makeRecord);
 
-var _prefs = __webpack_require__(9);
+var _prefs = __webpack_require__(10);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 /* 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/>. */
 
 /**
@@ -20516,17 +20522,17 @@ exports.parseQuickOpenQuery = parseQuick
 exports.parseLineColumn = parseLineColumn;
 exports.formatSymbol = formatSymbol;
 exports.formatSymbols = formatSymbols;
 exports.formatShortcutResults = formatShortcutResults;
 exports.formatSources = formatSources;
 
 var _utils = __webpack_require__(72);
 
-var _source = __webpack_require__(10);
+var _source = __webpack_require__(9);
 
 const MODIFIERS = exports.MODIFIERS = {
   "@": "functions",
   "#": "variables",
   ":": "goto",
   "?": "shortcuts"
 };
 
@@ -20810,17 +20816,17 @@ var _reducers2 = _interopRequireDefault(
 var _selectors = __webpack_require__(1);
 
 var selectors = _interopRequireWildcard(_selectors);
 
 var _App = __webpack_require__(423);
 
 var _App2 = _interopRequireDefault(_App);
 
-var _prefs = __webpack_require__(9);
+var _prefs = __webpack_require__(10);
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function bootstrapStore(client, { services, toolboxActions }) {
   const createStore = (0, _createStore2.default)({
     log: (0, _devtoolsConfig.isTesting)() || (0, _devtoolsConfig.getValue)("logging.actions"),
@@ -20889,17 +20895,17 @@ function updatePrefs(state) {
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.stopPrettyPrintWorker = exports.startPrettyPrintWorker = undefined;
 exports.prettyPrint = prettyPrint;
 
 var _devtoolsUtils = __webpack_require__(28);
 
-var _source = __webpack_require__(10);
+var _source = __webpack_require__(9);
 
 var _assert = __webpack_require__(103);
 
 var _assert2 = _interopRequireDefault(_assert);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 const { WorkerDispatcher } = _devtoolsUtils.workerUtils; /* This Source Code Form is subject to the terms of the Mozilla Public
@@ -21221,17 +21227,17 @@ function closeTabs(urls) {
 "use strict";
 
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.showLoading = exports.showErrorMessage = exports.showSourceText = exports.clearEditor = exports.updateDocument = exports.updateLineNumberFormat = exports.clearDocuments = exports.removeDocument = exports.hasDocument = exports.setDocument = exports.getDocument = undefined;
 
-var _source = __webpack_require__(10);
+var _source = __webpack_require__(9);
 
 var _wasm = __webpack_require__(105);
 
 var _ui = __webpack_require__(106);
 
 var _sourceEditor = __webpack_require__(229);
 
 var _sourceEditor2 = _interopRequireDefault(_sourceEditor);
@@ -23289,17 +23295,17 @@ var _classnames = __webpack_require__(6)
 var _classnames2 = _interopRequireDefault(_classnames);
 
 var _Svg = __webpack_require__(22);
 
 var _Svg2 = _interopRequireDefault(_Svg);
 
 var _frame = __webpack_require__(58);
 
-var _source = __webpack_require__(10);
+var _source = __webpack_require__(9);
 
 var _FrameMenu = __webpack_require__(249);
 
 var _FrameMenu2 = _interopRequireDefault(_FrameMenu);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
@@ -23589,17 +23595,17 @@ Object.defineProperty(exports, "__esModu
 exports.getHiddenTabs = getHiddenTabs;
 exports.getSourceAnnotation = getSourceAnnotation;
 exports.getTabMenuItems = getTabMenuItems;
 
 var _react = __webpack_require__(0);
 
 var _react2 = _interopRequireDefault(_react);
 
-var _source = __webpack_require__(10);
+var _source = __webpack_require__(9);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 /*
  * Finds the hidden tabs by comparing the tabs' top offset.
  * hidden tabs will have a great top offset.
  *
  * @param sourceTabs Immutable.list
@@ -30046,17 +30052,17 @@ exports.onConnect = undefined;
 var _firefox = __webpack_require__(69);
 
 var firefox = _interopRequireWildcard(_firefox);
 
 var _chrome = __webpack_require__(411);
 
 var chrome = _interopRequireWildcard(_chrome);
 
-var _prefs = __webpack_require__(9);
+var _prefs = __webpack_require__(10);
 
 var _dbg = __webpack_require__(414);
 
 var _devtoolsConfig = __webpack_require__(13);
 
 var _bootstrap = __webpack_require__(221);
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
@@ -32382,17 +32388,17 @@ Object.defineProperty(exports, "__esModu
 exports.clientEvents = exports.setupEvents = undefined;
 
 var _create = __webpack_require__(219);
 
 var _sourceQueue = __webpack_require__(156);
 
 var _sourceQueue2 = _interopRequireDefault(_sourceQueue);
 
-var _prefs = __webpack_require__(9);
+var _prefs = __webpack_require__(10);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 /* 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/>. */
 
 const CALL_STACK_PAGE_SIZE = 1000;
@@ -32796,17 +32802,17 @@ var _extends = Object.assign || function
 exports.setupHelper = setupHelper;
 
 var _redux = __webpack_require__(8);
 
 var _timings = __webpack_require__(415);
 
 var timings = _interopRequireWildcard(_timings);
 
-var _prefs = __webpack_require__(9);
+var _prefs = __webpack_require__(10);
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
 function findSource(dbg, url) {
   const sources = dbg.selectors.getSources();
   const source = sources.find(s => (s.get("url") || "").includes(url));
 
   if (!source) {
@@ -33374,17 +33380,17 @@ var _propTypes2 = _interopRequireDefault
 var _react = __webpack_require__(0);
 
 var _react2 = _interopRequireDefault(_react);
 
 var _reactRedux = __webpack_require__(4);
 
 var _redux = __webpack_require__(8);
 
-var _prefs = __webpack_require__(9);
+var _prefs = __webpack_require__(10);
 
 var _actions = __webpack_require__(7);
 
 var _actions2 = _interopRequireDefault(_actions);
 
 var _ShortcutsModal = __webpack_require__(461);
 
 var _selectors = __webpack_require__(1);
@@ -34076,17 +34082,17 @@ var _loadSourceText = __webpack_require_
 var _parser = __webpack_require__(27);
 
 var _promise = __webpack_require__(33);
 
 var _locColumn = __webpack_require__(226);
 
 var _findGeneratedBindingFromPosition = __webpack_require__(430);
 
-var _prefs = __webpack_require__(9);
+var _prefs = __webpack_require__(10);
 
 var _log = __webpack_require__(431);
 
 var _devtoolsSourceMap = __webpack_require__(12);
 
 function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
 
 function mapScopes(scopes, frame) {
@@ -34641,17 +34647,17 @@ function paused(pauseInfo) {
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.setInScopeLines = setInScopeLines;
 
 var _selectors = __webpack_require__(1);
 
-var _source = __webpack_require__(10);
+var _source = __webpack_require__(9);
 
 var _lodash = __webpack_require__(11);
 
 function getOutOfScopeLines(outOfScopeLocations) {
   if (!outOfScopeLocations) {
     return null;
   }
 
@@ -34710,17 +34716,17 @@ exports.newSources = newSources;
 var _breakpoints = __webpack_require__(59);
 
 var _loadSourceText = __webpack_require__(76);
 
 var _prettyPrint = __webpack_require__(162);
 
 var _sources = __webpack_require__(34);
 
-var _source = __webpack_require__(10);
+var _source = __webpack_require__(9);
 
 var _selectors = __webpack_require__(1);
 
 function createOriginalSource(originalUrl, generatedSource, sourceMaps) {
   return {
     url: originalUrl,
     id: sourceMaps.generatedToOriginalId(generatedSource.id, originalUrl),
     isPrettyPrinted: false,
@@ -34907,19 +34913,19 @@ var _ast = __webpack_require__(163);
 var _ui = __webpack_require__(77);
 
 var _prettyPrint = __webpack_require__(162);
 
 var _tabs = __webpack_require__(227);
 
 var _loadSourceText = __webpack_require__(76);
 
-var _prefs = __webpack_require__(9);
-
-var _source = __webpack_require__(10);
+var _prefs = __webpack_require__(10);
+
+var _source = __webpack_require__(9);
 
 var _location = __webpack_require__(442);
 
 var _sourceMaps = __webpack_require__(158);
 
 var _selectors = __webpack_require__(1);
 
 /**
@@ -35379,17 +35385,17 @@ Object.defineProperty(exports, "__esModu
   value: true
 });
 exports.createEditor = createEditor;
 
 var _sourceEditor = __webpack_require__(229);
 
 var _sourceEditor2 = _interopRequireDefault(_sourceEditor);
 
-var _prefs = __webpack_require__(9);
+var _prefs = __webpack_require__(10);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 /* 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/>. */
 
 function createEditor() {
@@ -35411,17 +35417,19 @@ function createEditor() {
     matchBrackets: true,
     showAnnotationRuler: true,
     gutters,
     value: " ",
     extraKeys: {
       // Override code mirror keymap to avoid conflicts with split console.
       Esc: false,
       "Cmd-F": false,
-      "Cmd-G": false
+      "Ctrl-F": false,
+      "Cmd-G": false,
+      "Ctrl-G": false
     }
   });
 }
 
 /***/ }),
 /* 442 */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -36044,17 +36052,17 @@ exports.updateSearchStatus = updateSearc
 exports.closeProjectSearch = closeProjectSearch;
 exports.searchSources = searchSources;
 exports.searchSource = searchSource;
 
 var _search = __webpack_require__(157);
 
 var _selectors = __webpack_require__(1);
 
-var _source = __webpack_require__(10);
+var _source = __webpack_require__(9);
 
 var _sources = __webpack_require__(34);
 
 var _projectTextSearch = __webpack_require__(102);
 
 function addSearchQuery(query) {
   return { type: "ADD_QUERY", query };
 } /* This Source Code Form is subject to the terms of the Mozilla Public
@@ -39716,17 +39724,17 @@ var _reactRedux = __webpack_require__(4)
 var _text = __webpack_require__(107);
 
 var _actions = __webpack_require__(7);
 
 var _actions2 = _interopRequireDefault(_actions);
 
 var _selectors = __webpack_require__(1);
 
-var _prefs = __webpack_require__(9);
+var _prefs = __webpack_require__(10);
 
 __webpack_require__(551);
 
 var _classnames = __webpack_require__(6);
 
 var _classnames2 = _interopRequireDefault(_classnames);
 
 var _Outline = __webpack_require__(552);
@@ -40036,23 +40044,36 @@ var _ManagedTree = __webpack_require__(1
 var _ManagedTree2 = _interopRequireDefault(_ManagedTree);
 
 var _Svg = __webpack_require__(22);
 
 var _Svg2 = _interopRequireDefault(_Svg);
 
 var _sourcesTree = __webpack_require__(235);
 
+var _source = __webpack_require__(9);
+
 var _clipboard = __webpack_require__(80);
 
-var _prefs = __webpack_require__(9);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-// Actions
+var _prefs = __webpack_require__(10);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+// Utils
+
+
+// Components
+
+
+// Selectors
+/* 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/>. */
+
+// Dependencies
 class SourcesTree extends _react.Component {
 
   constructor(props) {
     super(props);
 
     _initialiseProps.call(this);
 
     const { debuggeeUrl, sources, projectRoot } = this.props;
@@ -40090,17 +40111,17 @@ class SourcesTree extends _react.Compone
       if (listItems && listItems[0]) {
         this.selectItem(listItems[0]);
       }
 
       return this.setState({ listItems });
     }
 
     if (nextProps.selectedSource && nextProps.selectedSource != selectedSource) {
-      const highlightItems = (0, _sourcesTree.getDirectories)(nextProps.selectedSource.get("url"), sourceTree);
+      const highlightItems = (0, _sourcesTree.getDirectories)((0, _source.getRawSourceURL)(nextProps.selectedSource.get("url")), sourceTree);
 
       return this.setState({ highlightItems });
     }
 
     // NOTE: do not run this every time a source is clicked,
     // only when a new source is added
     if (nextProps.sources != this.props.sources) {
       this.setState((0, _sourcesTree.updateTree)({
@@ -40170,28 +40191,17 @@ class SourcesTree extends _react.Compone
     return _react2.default.createElement(
       "div",
       { className: "sources-list", onKeyDown: onKeyDown },
       tree
     );
   }
 }
 
-// Utils
-
-
-// Components
-
-
-// Selectors
-/* 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/>. */
-
-// Dependencies
+// Actions
 
 var _initialiseProps = function () {
   this.focusItem = item => {
     this.setState({ focusedItem: item });
   };
 
   this.selectItem = item => {
     if (!(0, _sourcesTree.nodeHasChildren)(item)) {
@@ -40382,21 +40392,21 @@ var _reactDom2 = _interopRequireDefault(
 var _reactRedux = __webpack_require__(4);
 
 var _classnames = __webpack_require__(6);
 
 var _classnames2 = _interopRequireDefault(_classnames);
 
 var _devtoolsLaunchpad = __webpack_require__(60);
 
-var _source = __webpack_require__(10);
+var _source = __webpack_require__(9);
 
 var _devtoolsConfig = __webpack_require__(13);
 
-var _prefs = __webpack_require__(9);
+var _prefs = __webpack_require__(10);
 
 var _indentation = __webpack_require__(104);
 
 var _selectors = __webpack_require__(1);
 
 var _redux = __webpack_require__(8);
 
 var _actions = __webpack_require__(7);
@@ -40977,19 +40987,19 @@ var _actions = __webpack_require__(7);
 var _actions2 = _interopRequireDefault(_actions);
 
 var _selectors = __webpack_require__(1);
 
 var _classnames = __webpack_require__(6);
 
 var _classnames2 = _interopRequireDefault(_classnames);
 
-var _prefs = __webpack_require__(9);
-
-var _source = __webpack_require__(10);
+var _prefs = __webpack_require__(10);
+
+var _source = __webpack_require__(9);
 
 var _sources = __webpack_require__(32);
 
 var _editor = __webpack_require__(15);
 
 var _PaneToggle = __webpack_require__(172);
 
 var _PaneToggle2 = _interopRequireDefault(_PaneToggle);
@@ -44716,17 +44726,17 @@ var _react2 = _interopRequireDefault(_re
 var _Breakpoint = __webpack_require__(601);
 
 var _Breakpoint2 = _interopRequireDefault(_Breakpoint);
 
 var _selectors = __webpack_require__(1);
 
 var _breakpoint = __webpack_require__(41);
 
-var _source = __webpack_require__(10);
+var _source = __webpack_require__(9);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 /* 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/>. */
 
 class Breakpoints extends _react.Component {
@@ -44789,17 +44799,17 @@ var _classnames = __webpack_require__(6)
 var _classnames2 = _interopRequireDefault(_classnames);
 
 var _Svg = __webpack_require__(22);
 
 var _Svg2 = _interopRequireDefault(_Svg);
 
 var _editor = __webpack_require__(15);
 
-var _prefs = __webpack_require__(9);
+var _prefs = __webpack_require__(10);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 /* 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/>. */
 
 const breakpointSvg = document.createElement("div");
@@ -45296,17 +45306,17 @@ Object.defineProperty(exports, "__esModu
   value: true
 });
 exports.DebugLine = undefined;
 
 var _react = __webpack_require__(0);
 
 var _editor = __webpack_require__(15);
 
-var _source = __webpack_require__(10);
+var _source = __webpack_require__(9);
 
 var _pause = __webpack_require__(78);
 
 var _indentation = __webpack_require__(104);
 
 var _reactRedux = __webpack_require__(4);
 
 var _selectors = __webpack_require__(1);
@@ -45405,17 +45415,17 @@ Object.defineProperty(exports, "__esModu
 exports.HighlightLine = undefined;
 
 var _react = __webpack_require__(0);
 
 var _editor = __webpack_require__(15);
 
 var _sourceDocuments = __webpack_require__(228);
 
-var _source = __webpack_require__(10);
+var _source = __webpack_require__(9);
 
 var _reactRedux = __webpack_require__(4);
 
 var _selectors = __webpack_require__(1);
 
 /* 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/>. */
@@ -45753,17 +45763,17 @@ var _devtoolsSourceMap = __webpack_requi
 var _clipboard = __webpack_require__(80);
 
 var _function = __webpack_require__(612);
 
 var _astBreakpointLocation = __webpack_require__(148);
 
 var _editor = __webpack_require__(15);
 
-var _source = __webpack_require__(10);
+var _source = __webpack_require__(9);
 
 var _selectors = __webpack_require__(1);
 
 var _actions = __webpack_require__(7);
 
 var _actions2 = _interopRequireDefault(_actions);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -46249,17 +46259,17 @@ var _actions = __webpack_require__(7);
 var _actions2 = _interopRequireDefault(_actions);
 
 var _selectors = __webpack_require__(1);
 
 var _Svg = __webpack_require__(22);
 
 var _Svg2 = _interopRequireDefault(_Svg);
 
-var _prefs = __webpack_require__(9);
+var _prefs = __webpack_require__(10);
 
 var _Breakpoints = __webpack_require__(618);
 
 var _Breakpoints2 = _interopRequireDefault(_Breakpoints);
 
 var _Expressions = __webpack_require__(621);
 
 var _Expressions2 = _interopRequireDefault(_Expressions);
@@ -46603,19 +46613,19 @@ var _actions = __webpack_require__(7);
 var _actions2 = _interopRequireDefault(_actions);
 
 var _Close = __webpack_require__(79);
 
 var _Close2 = _interopRequireDefault(_Close);
 
 var _utils = __webpack_require__(72);
 
-var _prefs = __webpack_require__(9);
-
-var _source = __webpack_require__(10);
+var _prefs = __webpack_require__(10);
+
+var _source = __webpack_require__(9);
 
 var _selectors = __webpack_require__(1);
 
 var _pause = __webpack_require__(78);
 
 var _breakpoint = __webpack_require__(41);
 
 var _BreakpointsContextMenu = __webpack_require__(619);
@@ -48019,17 +48029,17 @@ var _react2 = _interopRequireDefault(_re
 var _reactRedux = __webpack_require__(4);
 
 var _redux = __webpack_require__(8);
 
 var _classnames = __webpack_require__(6);
 
 var _classnames2 = _interopRequireDefault(_classnames);
 
-var _prefs = __webpack_require__(9);
+var _prefs = __webpack_require__(10);
 
 var _selectors = __webpack_require__(1);
 
 var _text = __webpack_require__(107);
 
 var _actions = __webpack_require__(7);
 
 var _actions2 = _interopRequireDefault(_actions);
@@ -49287,17 +49297,17 @@ var _immutable = __webpack_require__(19)
 var I = _interopRequireWildcard(_immutable);
 
 var _selectors = __webpack_require__(1);
 
 var _ui = __webpack_require__(106);
 
 var _tabs = __webpack_require__(253);
 
-var _source = __webpack_require__(10);
+var _source = __webpack_require__(9);
 
 var _actions = __webpack_require__(7);
 
 var _actions2 = _interopRequireDefault(_actions);
 
 var _lodash = __webpack_require__(11);
 
 __webpack_require__(652);
@@ -49503,17 +49513,17 @@ var _devtoolsContextmenu = __webpack_req
 var _Close = __webpack_require__(79);
 
 var _Close2 = _interopRequireDefault(_Close);
 
 var _actions = __webpack_require__(7);
 
 var _actions2 = _interopRequireDefault(_actions);
 
-var _source = __webpack_require__(10);
+var _source = __webpack_require__(9);
 
 var _clipboard = __webpack_require__(80);
 
 var _tabs = __webpack_require__(253);
 
 var _selectors = __webpack_require__(1);
 
 var _classnames = __webpack_require__(6);
@@ -49654,22 +49664,23 @@ class Tab extends _react.PureComponent {
       ),
       _react2.default.createElement(_Close2.default, {
         handleClick: onClickClose,
         tooltip: L10N.getStr("sourceTabs.closeTabButtonTooltip")
       })
     );
   }
 }
-exports.default = (0, _reactRedux.connect)(state => {
+exports.default = (0, _reactRedux.connect)((state, props) => {
   const selectedSource = (0, _selectors.getSelectedSource)(state);
+  const { source } = props;
   return {
     tabSources: (0, _selectors.getSourcesForTabs)(state),
     selectedSource: selectedSource,
-    sourceMetaData: (0, _selectors.getSourceMetaData)(state, selectedSource && selectedSource.get("id")),
+    sourceMetaData: (0, _selectors.getSourceMetaData)(state, source.get("id")),
     activeSearch: (0, _selectors.getActiveSearch)(state)
   };
 }, dispatch => (0, _redux.bindActionCreators)(_actions2.default, dispatch))(Tab);
 
 /***/ }),
 /* 654 */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -49733,29 +49744,24 @@ function filter(values, query) {
 class QuickOpenModal extends _react.Component {
   constructor(props) {
     super(props);
 
     this.closeModal = () => {
       this.props.closeQuickOpen();
     };
 
+    this.dropGoto = query => {
+      return query.split(":")[0];
+    };
+
     this.searchSources = query => {
-      if (query == "") {
-        const results = this.props.sources;
-        return this.setState({ results });
-      }
-      if (this.isGotoSourceQuery()) {
-        const [baseQuery] = query.split(":");
-        const results = filter(this.props.sources, baseQuery);
-        this.setState({ results });
-      } else {
-        const results = filter(this.props.sources, query);
-        this.setState({ results });
-      }
+      const { sources } = this.props;
+      const results = query == "" ? sources : filter(sources, this.dropGoto(query));
+      return this.setState({ results });
     };
 
     this.searchSymbols = query => {
       const { symbols: { functions, variables } } = this.props;
 
       let results = functions;
       if (this.isVariableQuery()) {
         results = variables;
@@ -50014,37 +50020,35 @@ class QuickOpenModal extends _react.Comp
 
   render() {
     const { enabled, query } = this.props;
     const { selectedIndex, results } = this.state;
 
     if (!enabled) {
       return null;
     }
-    const summaryMsg = L10N.getFormatStr("sourceSearch.resultsSummary1", this.getResultCount());
-    const showSummary = this.isSourcesQuery() || this.isSymbolSearch() || this.isShortcutQuery();
     const newResults = results && results.slice(0, 100);
     const items = this.highlightMatching(query, newResults || []);
     const expanded = !!items && items.length > 0;
     return _react2.default.createElement(
       _Modal2.default,
       { "in": enabled, handleClose: this.closeModal },
-      _react2.default.createElement(_SearchInput2.default, _extends({
+      _react2.default.createElement(_SearchInput2.default, {
         query: query,
         count: this.getResultCount(),
-        placeholder: L10N.getStr("sourceSearch.search")
-      }, showSummary === true ? { summaryMsg } : {}, {
+        placeholder: L10N.getStr("sourceSearch.search"),
+        summaryMsg: "",
         showErrorEmoji: this.shouldShowErrorEmoji(),
         onChange: this.onChange,
         onKeyDown: this.onKeyDown,
         handleClose: this.closeModal,
         hasPrefix: this.hasPrefix(),
         expanded: expanded,
-        selectedItemId: expanded ? items[selectedIndex].id : ""
-      })),
+        selectedItemId: expanded && items[selectedIndex] ? items[selectedIndex].id : ""
+      }),
       newResults && _react2.default.createElement(_ResultList2.default, _extends({
         key: "results",
         items: items,
         selected: selectedIndex,
         selectItem: this.selectResultItem,
         ref: "resultList",
         expanded: expanded
       }, this.isSourceSearch() ? { size: "big" } : {}))