Bug 1303862 - update new debugger frontend (9/19/2016) r=me

This commit is contained in:
James Long 2016-09-19 21:58:05 -04:00
Родитель 868fe79485
Коммит 1702ada4bf
12 изменённых файлов: 924 добавлений и 779 удалений

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

Просмотреть файл

@ -46,7 +46,7 @@ var Debugger =
/***/ 0:
/***/ function(module, exports, __webpack_require__) {
var prettyFast = __webpack_require__(365);
var prettyFast = __webpack_require__(366);
self.onmessage = function (msg) {
var _prettyPrint = prettyPrint(msg.data);
@ -100,7 +100,7 @@ var Debugger =
/***/ },
/***/ 365:
/***/ 366:
/***/ function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/* -*- indent-tabs-mode: nil; js-indent-level: 2; fill-column: 80 -*- */
@ -122,8 +122,8 @@ var Debugger =
}(this, function () {
"use strict";
var acorn = this.acorn || __webpack_require__(366);
var sourceMap = this.sourceMap || __webpack_require__(367);
var acorn = this.acorn || __webpack_require__(367);
var sourceMap = this.sourceMap || __webpack_require__(368);
var SourceNode = sourceMap.SourceNode;
// If any of these tokens are seen before a "[" token, we know that "[" token
@ -982,7 +982,7 @@ var Debugger =
/***/ },
/***/ 366:
/***/ 367:
/***/ function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// Acorn is a tiny, fast JavaScript parser written in JavaScript.
@ -3642,7 +3642,7 @@ var Debugger =
/***/ },
/***/ 367:
/***/ 368:
/***/ function(module, exports, __webpack_require__) {
/*
@ -3650,14 +3650,14 @@ var Debugger =
* Licensed under the New BSD license. See LICENSE.txt or:
* http://opensource.org/licenses/BSD-3-Clause
*/
exports.SourceMapGenerator = __webpack_require__(368).SourceMapGenerator;
exports.SourceMapConsumer = __webpack_require__(374).SourceMapConsumer;
exports.SourceNode = __webpack_require__(376).SourceNode;
exports.SourceMapGenerator = __webpack_require__(369).SourceMapGenerator;
exports.SourceMapConsumer = __webpack_require__(375).SourceMapConsumer;
exports.SourceNode = __webpack_require__(377).SourceNode;
/***/ },
/***/ 368:
/***/ 369:
/***/ function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_RESULT__;/* -*- Mode: js; js-indent-level: 2; -*- */
@ -3671,10 +3671,10 @@ var Debugger =
}
!(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) {
var base64VLQ = __webpack_require__(369);
var util = __webpack_require__(371);
var ArraySet = __webpack_require__(372).ArraySet;
var MappingList = __webpack_require__(373).MappingList;
var base64VLQ = __webpack_require__(370);
var util = __webpack_require__(372);
var ArraySet = __webpack_require__(373).ArraySet;
var MappingList = __webpack_require__(374).MappingList;
/**
* An instance of the SourceMapGenerator represents a source map which is
@ -4064,7 +4064,7 @@ var Debugger =
/***/ },
/***/ 369:
/***/ 370:
/***/ function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_RESULT__;/* -*- Mode: js; js-indent-level: 2; -*- */
@ -4108,7 +4108,7 @@ var Debugger =
}
!(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) {
var base64 = __webpack_require__(370);
var base64 = __webpack_require__(371);
// A single base 64 digit can contain 6 bits of data. For the base 64 variable
// length quantities we use in the source map spec, the first bit is the sign,
@ -4213,7 +4213,7 @@ var Debugger =
/***/ },
/***/ 370:
/***/ 371:
/***/ function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_RESULT__;/* -*- Mode: js; js-indent-level: 2; -*- */
@ -4262,7 +4262,7 @@ var Debugger =
/***/ },
/***/ 371:
/***/ 372:
/***/ function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_RESULT__;/* -*- Mode: js; js-indent-level: 2; -*- */
@ -4588,7 +4588,7 @@ var Debugger =
/***/ },
/***/ 372:
/***/ 373:
/***/ function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_RESULT__;/* -*- Mode: js; js-indent-level: 2; -*- */
@ -4602,7 +4602,7 @@ var Debugger =
}
!(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) {
var util = __webpack_require__(371);
var util = __webpack_require__(372);
/**
* A data structure which is a combination of an array and a set. Adding a new
@ -4692,7 +4692,7 @@ var Debugger =
/***/ },
/***/ 373:
/***/ 374:
/***/ function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_RESULT__;/* -*- Mode: js; js-indent-level: 2; -*- */
@ -4706,7 +4706,7 @@ var Debugger =
}
!(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) {
var util = __webpack_require__(371);
var util = __webpack_require__(372);
/**
* Determine whether mappingB is after mappingA with respect to generated
@ -4785,7 +4785,7 @@ var Debugger =
/***/ },
/***/ 374:
/***/ 375:
/***/ function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_RESULT__;/* -*- Mode: js; js-indent-level: 2; -*- */
@ -4799,10 +4799,10 @@ var Debugger =
}
!(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) {
var util = __webpack_require__(371);
var binarySearch = __webpack_require__(375);
var ArraySet = __webpack_require__(372).ArraySet;
var base64VLQ = __webpack_require__(369);
var util = __webpack_require__(372);
var binarySearch = __webpack_require__(376);
var ArraySet = __webpack_require__(373).ArraySet;
var base64VLQ = __webpack_require__(370);
/**
* A SourceMapConsumer instance represents a parsed source map which we can
@ -5367,7 +5367,7 @@ var Debugger =
/***/ },
/***/ 375:
/***/ 376:
/***/ function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_RESULT__;/* -*- Mode: js; js-indent-level: 2; -*- */
@ -5454,7 +5454,7 @@ var Debugger =
/***/ },
/***/ 376:
/***/ 377:
/***/ function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_RESULT__;/* -*- Mode: js; js-indent-level: 2; -*- */
@ -5468,8 +5468,8 @@ var Debugger =
}
!(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) {
var SourceMapGenerator = __webpack_require__(368).SourceMapGenerator;
var util = __webpack_require__(371);
var SourceMapGenerator = __webpack_require__(369).SourceMapGenerator;
var util = __webpack_require__(372);
// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other
// operating systems these days (capturing the result).

Просмотреть файл

@ -48,19 +48,19 @@ var Debugger =
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
var _require = __webpack_require__(377);
var _require = __webpack_require__(378);
var SourceMapConsumer = _require.SourceMapConsumer;
var SourceNode = _require.SourceNode;
var SourceMapGenerator = _require.SourceMapGenerator;
var _require2 = __webpack_require__(216);
var _require2 = __webpack_require__(217);
var makeOriginalSource = _require2.makeOriginalSource;
var getGeneratedSourceId = _require2.getGeneratedSourceId;
var toPairs = __webpack_require__(312);
var toPairs = __webpack_require__(313);
var sourceMapConsumers = new Map();
var sourceNodes = new Map();
@ -657,7 +657,7 @@ var Debugger =
/***/ },
/***/ 216:
/***/ 217:
/***/ function(module, exports) {
@ -687,11 +687,11 @@ var Debugger =
/***/ },
/***/ 312:
/***/ 313:
/***/ function(module, exports, __webpack_require__) {
var createToPairs = __webpack_require__(313),
keys = __webpack_require__(323);
var createToPairs = __webpack_require__(314),
keys = __webpack_require__(324);
/**
* Creates an array of own enumerable string keyed-value pairs for `object`
@ -724,13 +724,13 @@ var Debugger =
/***/ },
/***/ 313:
/***/ 314:
/***/ function(module, exports, __webpack_require__) {
var baseToPairs = __webpack_require__(314),
getTag = __webpack_require__(316),
mapToArray = __webpack_require__(321),
setToPairs = __webpack_require__(322);
var baseToPairs = __webpack_require__(315),
getTag = __webpack_require__(317),
mapToArray = __webpack_require__(322),
setToPairs = __webpack_require__(323);
/** `Object#toString` result references. */
var mapTag = '[object Map]',
@ -761,10 +761,10 @@ var Debugger =
/***/ },
/***/ 314:
/***/ 315:
/***/ function(module, exports, __webpack_require__) {
var arrayMap = __webpack_require__(315);
var arrayMap = __webpack_require__(316);
/**
* The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array
@ -786,7 +786,7 @@ var Debugger =
/***/ },
/***/ 315:
/***/ 316:
/***/ function(module, exports) {
/**
@ -814,14 +814,14 @@ var Debugger =
/***/ },
/***/ 316:
/***/ 317:
/***/ function(module, exports, __webpack_require__) {
var DataView = __webpack_require__(317),
var DataView = __webpack_require__(318),
Map = __webpack_require__(82),
Promise = __webpack_require__(318),
Set = __webpack_require__(319),
WeakMap = __webpack_require__(320),
Promise = __webpack_require__(319),
Set = __webpack_require__(320),
WeakMap = __webpack_require__(321),
toSource = __webpack_require__(68);
/** `Object#toString` result references. */
@ -891,7 +891,7 @@ var Debugger =
/***/ },
/***/ 317:
/***/ 318:
/***/ function(module, exports, __webpack_require__) {
var getNative = __webpack_require__(60),
@ -905,7 +905,7 @@ var Debugger =
/***/ },
/***/ 318:
/***/ 319:
/***/ function(module, exports, __webpack_require__) {
var getNative = __webpack_require__(60),
@ -919,7 +919,7 @@ var Debugger =
/***/ },
/***/ 319:
/***/ 320:
/***/ function(module, exports, __webpack_require__) {
var getNative = __webpack_require__(60),
@ -933,7 +933,7 @@ var Debugger =
/***/ },
/***/ 320:
/***/ 321:
/***/ function(module, exports, __webpack_require__) {
var getNative = __webpack_require__(60),
@ -947,7 +947,7 @@ var Debugger =
/***/ },
/***/ 321:
/***/ 322:
/***/ function(module, exports) {
/**
@ -972,7 +972,7 @@ var Debugger =
/***/ },
/***/ 322:
/***/ 323:
/***/ function(module, exports) {
/**
@ -997,15 +997,15 @@ var Debugger =
/***/ },
/***/ 323:
/***/ 324:
/***/ function(module, exports, __webpack_require__) {
var baseHas = __webpack_require__(324),
baseKeys = __webpack_require__(325),
indexKeys = __webpack_require__(326),
isArrayLike = __webpack_require__(330),
isIndex = __webpack_require__(335),
isPrototype = __webpack_require__(336);
var baseHas = __webpack_require__(325),
baseKeys = __webpack_require__(326),
indexKeys = __webpack_require__(327),
isArrayLike = __webpack_require__(331),
isIndex = __webpack_require__(336),
isPrototype = __webpack_require__(337);
/**
* Creates an array of the own enumerable property names of `object`.
@ -1060,7 +1060,7 @@ var Debugger =
/***/ },
/***/ 324:
/***/ 325:
/***/ function(module, exports, __webpack_require__) {
var getPrototype = __webpack_require__(5);
@ -1093,7 +1093,7 @@ var Debugger =
/***/ },
/***/ 325:
/***/ 326:
/***/ function(module, exports) {
/* Built-in method references for those with the same name as other `lodash` methods. */
@ -1116,14 +1116,14 @@ var Debugger =
/***/ },
/***/ 326:
/***/ 327:
/***/ function(module, exports, __webpack_require__) {
var baseTimes = __webpack_require__(327),
isArguments = __webpack_require__(328),
var baseTimes = __webpack_require__(328),
isArguments = __webpack_require__(329),
isArray = __webpack_require__(52),
isLength = __webpack_require__(333),
isString = __webpack_require__(334);
isLength = __webpack_require__(334),
isString = __webpack_require__(335);
/**
* Creates an array of index keys for `object` values of arrays,
@ -1147,7 +1147,7 @@ var Debugger =
/***/ },
/***/ 327:
/***/ 328:
/***/ function(module, exports) {
/**
@ -1174,10 +1174,10 @@ var Debugger =
/***/ },
/***/ 328:
/***/ 329:
/***/ function(module, exports, __webpack_require__) {
var isArrayLikeObject = __webpack_require__(329);
var isArrayLikeObject = __webpack_require__(330);
/** `Object#toString` result references. */
var argsTag = '[object Arguments]';
@ -1227,10 +1227,10 @@ var Debugger =
/***/ },
/***/ 329:
/***/ 330:
/***/ function(module, exports, __webpack_require__) {
var isArrayLike = __webpack_require__(330),
var isArrayLike = __webpack_require__(331),
isObjectLike = __webpack_require__(7);
/**
@ -1267,12 +1267,12 @@ var Debugger =
/***/ },
/***/ 330:
/***/ 331:
/***/ function(module, exports, __webpack_require__) {
var getLength = __webpack_require__(331),
var getLength = __webpack_require__(332),
isFunction = __webpack_require__(62),
isLength = __webpack_require__(333);
isLength = __webpack_require__(334);
/**
* Checks if `value` is array-like. A value is considered array-like if it's
@ -1308,10 +1308,10 @@ var Debugger =
/***/ },
/***/ 331:
/***/ 332:
/***/ function(module, exports, __webpack_require__) {
var baseProperty = __webpack_require__(332);
var baseProperty = __webpack_require__(333);
/**
* Gets the "length" property value of `object`.
@ -1331,7 +1331,7 @@ var Debugger =
/***/ },
/***/ 332:
/***/ 333:
/***/ function(module, exports) {
/**
@ -1352,7 +1352,7 @@ var Debugger =
/***/ },
/***/ 333:
/***/ 334:
/***/ function(module, exports) {
/** Used as references for various `Number` constants. */
@ -1395,7 +1395,7 @@ var Debugger =
/***/ },
/***/ 334:
/***/ 335:
/***/ function(module, exports, __webpack_require__) {
var isArray = __webpack_require__(52),
@ -1442,7 +1442,7 @@ var Debugger =
/***/ },
/***/ 335:
/***/ 336:
/***/ function(module, exports) {
/** Used as references for various `Number` constants. */
@ -1471,7 +1471,7 @@ var Debugger =
/***/ },
/***/ 336:
/***/ 337:
/***/ function(module, exports) {
/** Used for built-in method references. */
@ -1496,7 +1496,7 @@ var Debugger =
/***/ },
/***/ 377:
/***/ 378:
/***/ function(module, exports, __webpack_require__) {
/*
@ -1504,14 +1504,14 @@ var Debugger =
* Licensed under the New BSD license. See LICENSE.txt or:
* http://opensource.org/licenses/BSD-3-Clause
*/
exports.SourceMapGenerator = __webpack_require__(378).SourceMapGenerator;
exports.SourceMapConsumer = __webpack_require__(384).SourceMapConsumer;
exports.SourceNode = __webpack_require__(387).SourceNode;
exports.SourceMapGenerator = __webpack_require__(379).SourceMapGenerator;
exports.SourceMapConsumer = __webpack_require__(385).SourceMapConsumer;
exports.SourceNode = __webpack_require__(388).SourceNode;
/***/ },
/***/ 378:
/***/ 379:
/***/ function(module, exports, __webpack_require__) {
/* -*- Mode: js; js-indent-level: 2; -*- */
@ -1521,10 +1521,10 @@ var Debugger =
* http://opensource.org/licenses/BSD-3-Clause
*/
var base64VLQ = __webpack_require__(379);
var util = __webpack_require__(381);
var ArraySet = __webpack_require__(382).ArraySet;
var MappingList = __webpack_require__(383).MappingList;
var base64VLQ = __webpack_require__(380);
var util = __webpack_require__(382);
var ArraySet = __webpack_require__(383).ArraySet;
var MappingList = __webpack_require__(384).MappingList;
/**
* An instance of the SourceMapGenerator represents a source map which is
@ -1922,7 +1922,7 @@ var Debugger =
/***/ },
/***/ 379:
/***/ 380:
/***/ function(module, exports, __webpack_require__) {
/* -*- Mode: js; js-indent-level: 2; -*- */
@ -1962,7 +1962,7 @@ var Debugger =
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
var base64 = __webpack_require__(380);
var base64 = __webpack_require__(381);
// A single base 64 digit can contain 6 bits of data. For the base 64 variable
// length quantities we use in the source map spec, the first bit is the sign,
@ -2069,7 +2069,7 @@ var Debugger =
/***/ },
/***/ 380:
/***/ 381:
/***/ function(module, exports) {
/* -*- Mode: js; js-indent-level: 2; -*- */
@ -2143,7 +2143,7 @@ var Debugger =
/***/ },
/***/ 381:
/***/ 382:
/***/ function(module, exports) {
/* -*- Mode: js; js-indent-level: 2; -*- */
@ -2567,7 +2567,7 @@ var Debugger =
/***/ },
/***/ 382:
/***/ 383:
/***/ function(module, exports, __webpack_require__) {
/* -*- Mode: js; js-indent-level: 2; -*- */
@ -2577,7 +2577,7 @@ var Debugger =
* http://opensource.org/licenses/BSD-3-Clause
*/
var util = __webpack_require__(381);
var util = __webpack_require__(382);
var has = Object.prototype.hasOwnProperty;
/**
@ -2678,7 +2678,7 @@ var Debugger =
/***/ },
/***/ 383:
/***/ 384:
/***/ function(module, exports, __webpack_require__) {
/* -*- Mode: js; js-indent-level: 2; -*- */
@ -2688,7 +2688,7 @@ var Debugger =
* http://opensource.org/licenses/BSD-3-Clause
*/
var util = __webpack_require__(381);
var util = __webpack_require__(382);
/**
* Determine whether mappingB is after mappingA with respect to generated
@ -2764,7 +2764,7 @@ var Debugger =
/***/ },
/***/ 384:
/***/ 385:
/***/ function(module, exports, __webpack_require__) {
/* -*- Mode: js; js-indent-level: 2; -*- */
@ -2774,11 +2774,11 @@ var Debugger =
* http://opensource.org/licenses/BSD-3-Clause
*/
var util = __webpack_require__(381);
var binarySearch = __webpack_require__(385);
var ArraySet = __webpack_require__(382).ArraySet;
var base64VLQ = __webpack_require__(379);
var quickSort = __webpack_require__(386).quickSort;
var util = __webpack_require__(382);
var binarySearch = __webpack_require__(386);
var ArraySet = __webpack_require__(383).ArraySet;
var base64VLQ = __webpack_require__(380);
var quickSort = __webpack_require__(387).quickSort;
function SourceMapConsumer(aSourceMap) {
var sourceMap = aSourceMap;
@ -3853,7 +3853,7 @@ var Debugger =
/***/ },
/***/ 385:
/***/ 386:
/***/ function(module, exports) {
/* -*- Mode: js; js-indent-level: 2; -*- */
@ -3971,7 +3971,7 @@ var Debugger =
/***/ },
/***/ 386:
/***/ 387:
/***/ function(module, exports) {
/* -*- Mode: js; js-indent-level: 2; -*- */
@ -4092,7 +4092,7 @@ var Debugger =
/***/ },
/***/ 387:
/***/ 388:
/***/ function(module, exports, __webpack_require__) {
/* -*- Mode: js; js-indent-level: 2; -*- */
@ -4102,8 +4102,8 @@ var Debugger =
* http://opensource.org/licenses/BSD-3-Clause
*/
var SourceMapGenerator = __webpack_require__(378).SourceMapGenerator;
var util = __webpack_require__(381);
var SourceMapGenerator = __webpack_require__(379).SourceMapGenerator;
var util = __webpack_require__(382);
// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other
// operating systems these days (capturing the result).

Просмотреть файл

@ -427,15 +427,22 @@ ul.sources-list {
.split-box .splitter {
background-color: var(--theme-splitter-color);
border-bottom-width: 0;
border-color: white;
border-left-width: 0;
border-right-width: 0;
border-style: solid;
border-top-width: 0;
box-sizing: content-box;
cursor: ew-resize;
flex: 0 0 1px;
position: relative;
}
/* The actual handle that users drag is a transparent element that's slightly wider than
the splitter element itself, so it's easier to grab it. */
.split-box .splitter .splitter-handle {
cursor: ew-resize;
position: absolute;
top: 0;
left: -4px;
width: 8px;
height: 100%;
/* Stack above the code-mirror editor so it's actually possible to grab the handle. */
z-index: 5;
}
.breakpoints-list .breakpoint {
@ -937,6 +944,13 @@ ul.sources-list {
margin: 0;
padding: 0;
}
.source-footer {
border-top: 1px solid var(--theme-splitter-color);
left: 0;
opacity: 1;
width: 100%;
}
.source-footer .prettyPrint.pretty {
stroke: var(--theme-highlight-blue);
}

Просмотреть файл

@ -47,11 +47,13 @@
"isPaused": false,
"assertPausedLocation": false,
"assertHighlightLocation": false,
"createDebuggerContext": false,
"initDebugger": false,
"invokeInTab": false,
"findSource": false,
"findElement": false,
"findAllElements": false,
"openNewTabAndToolbox": false,
"selectSource": false,
"stepOver": false,
"stepIn": false,

Просмотреть файл

@ -17,6 +17,8 @@ support-files =
examples/code-script-switching-02.js
examples/code-script-switching-01.js
[browser_dbg-breaking.js]
[browser_dbg-breaking-from-console.js]
[browser_dbg-editor-gutter.js]
[browser_dbg-editor-mode.js]
[browser_dbg-editor-select.js]

Просмотреть файл

@ -0,0 +1,31 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
// Tests that `debugger` statements are hit before the debugger even
// initializes and it properly highlights the right location in the
// debugger.
add_task(function* () {
const url = EXAMPLE_URL + "doc-script-switching.html";
const toolbox = yield openNewTabAndToolbox(url, "webconsole");
// Type "debugger" into console
let jsterm = toolbox.getPanel("webconsole").hud.jsterm;
jsterm.execute("debugger");
// Wait for the debugger to be selected and make sure it's paused
yield new Promise((resolve) => {
toolbox.on("jsdebugger-selected", resolve);
});
is(toolbox.threadClient.state, "paused");
// Create a dbg context
const dbg = createDebuggerContext(toolbox);
const { selectors: { getSelectedSource }, getState } = dbg;
// Make sure the thread is paused in the right source and location
yield waitForDispatch(dbg, "LOAD_SOURCE_TEXT");
is(dbg.win.cm.getValue(), "debugger");
const source = getSelectedSource(getState()).toJS();
assertPausedLocation(dbg, source, 1);
});

Просмотреть файл

@ -0,0 +1,33 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
// Tests the breakpoints are hit in various situations.
add_task(function* () {
const dbg = yield initDebugger("doc-scripts.html", "scripts.html");
const { selectors: { getSelectedSource }, getState } = dbg;
// Make sure we can set a top-level breakpoint and it will be hit on
// reload.
yield addBreakpoint(dbg, "scripts.html", 18);
reload(dbg);
yield waitForPaused(dbg);
assertPausedLocation(dbg, "scripts.html", 18);
yield resume(dbg);
const paused = waitForPaused(dbg);
// Create an eval script that pauses itself.
invokeInTab("doEval");
yield paused;
yield resume(dbg);
const source = getSelectedSource(getState()).toJS();
// TODO: The url of an eval source should be null.
ok(source.url.indexOf("SOURCE") === 0, "It is an eval source");
yield addBreakpoint(dbg, source, 5);
invokeInTab("evaledFunc");
yield waitForPaused(dbg);
assertPausedLocation(dbg, source, 5);
});

Просмотреть файл

@ -11,15 +11,13 @@ function countSources(dbg) {
* navigating while paused will reset the pause state and sources
*/
add_task(function* () {
const dbg = yield initDebugger(
"doc-script-switching.html",
"script-switching-01.js"
);
const dbg = yield initDebugger("doc-script-switching.html");
const { selectors: { getSelectedSource, getPause }, getState } = dbg;
invokeInTab("firstCall");
yield waitForPaused(dbg);
yield navigate(dbg, "doc-scripts.html", "simple1.js", "long.js");
yield navigate(dbg, "doc-scripts.html", "simple1.js");
yield addBreakpoint(dbg, "simple1.js", 4);
invokeInTab("main");
yield waitForPaused(dbg);
@ -29,6 +27,7 @@ add_task(function* () {
yield navigate(dbg, "about:blank");
yield waitForDispatch(dbg, "NAVIGATE");
is(countSources(dbg), 0, "0 sources are loaded.");
ok(!getPause(getState()), "No pause state exists");
yield navigate(dbg,
"doc-scripts.html",
@ -39,4 +38,10 @@ add_task(function* () {
);
is(countSources(dbg), 4, "4 sources are loaded.");
// Test that the current select source persists across reloads
yield selectSource(dbg, "long.js");
yield reload(dbg, "long.js");
ok(getSelectedSource(getState()).get("url").includes("long.js"),
"Selected source is long.js");
});

Просмотреть файл

@ -5,3 +5,27 @@ function main() {
const result = func();
return result;
}
function doEval() {
eval("(" + function() {
debugger;
window.evaledFunc = function() {
var foo = 1;
var bar = 2;
return foo + bar;
};
}.toString() + ")()");
}
function doNamedEval() {
eval("(" + function() {
debugger;
window.evaledFunc = function() {
var foo = 1;
var bar = 2;
return foo + bar;
};
}.toString() + ")();\n //# sourceURL=evaled.js");
}

Просмотреть файл

@ -118,7 +118,7 @@ function assertPausedLocation(dbg, source, line) {
source = findSource(dbg, source);
// Check the selected source
is(getSelectedSource(getState()).get("url"), source.url);
is(getSelectedSource(getState()).get("id"), source.id);
// Check the pause location
const location = getPause(getState()).getIn(["frame", "location"]);
@ -172,25 +172,26 @@ function waitForPaused(dbg) {
});
};
function createDebuggerContext(toolbox) {
const win = toolbox.getPanel("jsdebugger").panelWin;
const store = win.Debugger.store;
return {
actions: win.Debugger.actions,
selectors: win.Debugger.selectors,
getState: store.getState,
store: store,
client: win.Debugger.client,
toolbox: toolbox,
win: win
};
}
function initDebugger(url, ...sources) {
return Task.spawn(function* () {
const toolbox = yield openNewTabAndToolbox(EXAMPLE_URL + url, "jsdebugger");
const win = toolbox.getPanel("jsdebugger").panelWin;
const store = win.Debugger.store;
const { getSources } = win.Debugger.selectors;
const dbg = {
actions: win.Debugger.actions,
selectors: win.Debugger.selectors,
getState: store.getState,
store: store,
client: win.Debugger.client,
toolbox: toolbox,
win: win
};
const dbg = createDebuggerContext(toolbox);
yield waitForSources(dbg, ...sources);
return dbg;
});
};
@ -256,8 +257,8 @@ function resume(dbg) {
return waitForThreadEvents(dbg, "resumed");
}
function reload(dbg) {
return dbg.client.reload();
function reload(dbg, ...sources) {
return dbg.client.reload().then(() => waitForSources(...sources));
}
function navigate(dbg, url, ...sources) {