123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
- /* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
- "use strict";
- // Test that the console receive exceptions include a stackframe.
- // See bug 1184172.
- // On e10s, the exception is triggered in child process
- // and is ignored by test harness
- if (!Services.appinfo.browserTabsRemoteAutostart) {
- SimpleTest.ignoreAllUncaughtExceptions();
- }
- function test() {
- let hud;
- const TEST_URI = "http://example.com/browser/devtools/client/webconsole/" +
- "test/test-exception-stackframe.html";
- const TEST_FILE = TEST_URI.substr(TEST_URI.lastIndexOf("/"));
- Task.spawn(runner).then(finishTest);
- function* runner() {
- const {tab} = yield loadTab(TEST_URI);
- hud = yield openConsole(tab);
- const stack = [{
- file: TEST_FILE,
- fn: "thirdCall",
- line: 21,
- }, {
- file: TEST_FILE,
- fn: "secondCall",
- line: 17,
- }, {
- file: TEST_FILE,
- fn: "firstCall",
- line: 12,
- }];
- let results = yield waitForMessages({
- webconsole: hud,
- messages: [{
- text: "nonExistingMethodCall is not defined",
- category: CATEGORY_JS,
- severity: SEVERITY_ERROR,
- collapsible: true,
- stacktrace: stack,
- }, {
- text: "SyntaxError: 'buggy;selector' is not a valid selector",
- category: CATEGORY_JS,
- severity: SEVERITY_ERROR,
- collapsible: true,
- stacktrace: [{
- file: TEST_FILE,
- fn: "domAPI",
- line: 25,
- }, {
- file: TEST_FILE,
- fn: "onLoadDomAPI",
- line: 33,
- }
- ]
- }, {
- text: "DOMException",
- category: CATEGORY_JS,
- severity: SEVERITY_ERROR,
- collapsible: true,
- stacktrace: [{
- file: TEST_FILE,
- fn: "domException",
- line: 29,
- }, {
- file: TEST_FILE,
- fn: "onLoadDomException",
- line: 36,
- },
- ]
- }],
- });
- let elem = [...results[0].matched][0];
- ok(elem, "message element");
- let msg = elem._messageObject;
- ok(msg, "message object");
- ok(msg.collapsed, "message is collapsed");
- msg.toggleDetails();
- ok(!msg.collapsed, "message is not collapsed");
- msg.toggleDetails();
- ok(msg.collapsed, "message is collapsed");
- yield closeConsole(tab);
- }
- }
|