diff --git a/browser/devtools/shared/widgets/VariablesView.jsm b/browser/devtools/shared/widgets/VariablesView.jsm index e2973a7cd0be..ec8847d4369a 100644 --- a/browser/devtools/shared/widgets/VariablesView.jsm +++ b/browser/devtools/shared/widgets/VariablesView.jsm @@ -3643,9 +3643,14 @@ VariablesView.stringifiers.byObjectKind = { switch (preview.nodeType) { case Ci.nsIDOMNode.DOCUMENT_NODE: { - let location = WebConsoleUtils.abbreviateSourceURL(preview.location, - { onlyCropQuery: !concise }); - return aGrip.class + " \u2192 " + location; + let result = aGrip.class; + if (preview.location) { + let location = WebConsoleUtils.abbreviateSourceURL(preview.location, + { onlyCropQuery: !concise }); + result += " \u2192 " + location; + } + + return result; } case Ci.nsIDOMNode.ATTRIBUTE_NODE: { diff --git a/browser/devtools/webconsole/test/browser.ini b/browser/devtools/webconsole/test/browser.ini index aef72f9e2e88..386b6a75eaed 100644 --- a/browser/devtools/webconsole/test/browser.ini +++ b/browser/devtools/webconsole/test/browser.ini @@ -250,6 +250,7 @@ run-if = os == "mac" [browser_webconsole_for_of.js] [browser_webconsole_history.js] [browser_webconsole_input_field_focus_on_panel_select.js] +[browser_webconsole_inspect-parsed-documents.js] [browser_webconsole_js_input_expansion.js] [browser_webconsole_jsterm.js] [browser_webconsole_live_filtering_of_message_types.js] diff --git a/browser/devtools/webconsole/test/browser_webconsole_inspect-parsed-documents.js b/browser/devtools/webconsole/test/browser_webconsole_inspect-parsed-documents.js new file mode 100644 index 000000000000..12e27825f117 --- /dev/null +++ b/browser/devtools/webconsole/test/browser_webconsole_inspect-parsed-documents.js @@ -0,0 +1,33 @@ +/* vim: set ft=javascript ts=2 et sw=2 tw=80: */ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ +"use strict"; + +// Test that dynamically created (HTML|XML|SVG)Documents can be inspected by +// clicking on the object in console (bug 1035198). + +const TEST_CASES = [ + { + input: '(new DOMParser()).parseFromString("", "text/html")', + output: "HTMLDocument", + inspectable: true, + }, + { + input: '(new DOMParser()).parseFromString("", "application/xml")', + output: "XMLDocument", + inspectable: true, + }, + { + input: '(new DOMParser()).parseFromString("", "image/svg+xml")', + output: "SVGDocument", + inspectable: true, + }, +]; + +const TEST_URI = "data:text/html;charset=utf8," + + "browser_webconsole_inspect-parsed-documents.js"; +let test = asyncTest(function* () { + let {tab} = yield loadTab(TEST_URI); + let hud = yield openConsole(tab); + yield checkOutputForInputs(hud, TEST_CASES); +}); diff --git a/browser/devtools/webconsole/test/head.js b/browser/devtools/webconsole/test/head.js index 6b5004e2cf7f..352d7e88ad80 100644 --- a/browser/devtools/webconsole/test/head.js +++ b/browser/devtools/webconsole/test/head.js @@ -44,6 +44,13 @@ SimpleTest.registerCleanupFunction(() => { gDevTools.testing = false; }); +/** + * Define an async test based on a generator function + */ +function asyncTest(generator) { + return () => Task.spawn(generator).then(null, ok.bind(null, false)).then(finishTest); +} + function log(aMsg) { dump("*** WebConsoleTest: " + aMsg + "\n");