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");