diff --git a/browser/devtools/webconsole/test/browser_console_consolejsm_output.js b/browser/devtools/webconsole/test/browser_console_consolejsm_output.js index 44f09db4fb8c..17b299598184 100644 --- a/browser/devtools/webconsole/test/browser_console_consolejsm_output.js +++ b/browser/devtools/webconsole/test/browser_console_consolejsm_output.js @@ -91,7 +91,7 @@ function test() }, { name: "console.dir output", - consoleDir: "XULDocument {", + consoleDir: /XULDocument .+ chrome:\/\/.+\/browser\.xul/, }, { name: "console.time output", diff --git a/toolkit/devtools/DevToolsUtils.js b/toolkit/devtools/DevToolsUtils.js index 4dfa477b9034..d920dff6df24 100644 --- a/toolkit/devtools/DevToolsUtils.js +++ b/toolkit/devtools/DevToolsUtils.js @@ -260,6 +260,11 @@ this.isSafeJSObject = function isSafeJSObject(aObj) { return true; // aObj is not a cross-compartment wrapper. } + let principal = Services.scriptSecurityManager.getObjectPrincipal(aObj); + if (Services.scriptSecurityManager.isSystemPrincipal(principal)) { + return true; // allow chrome objects + } + return Cu.isXrayWrapper(aObj); }; diff --git a/toolkit/devtools/server/actors/script.js b/toolkit/devtools/server/actors/script.js index aa431a62f7e7..e8a64484460c 100644 --- a/toolkit/devtools/server/actors/script.js +++ b/toolkit/devtools/server/actors/script.js @@ -3656,7 +3656,7 @@ DebuggerServer.ObjectActorPreviewers.Object = [ }, function DOMNode({obj, threadActor}, aGrip, aRawObj) { - if (!aRawObj || !(aRawObj instanceof Ci.nsIDOMNode)) { + if (obj.class == "Object" || !aRawObj || !(aRawObj instanceof Ci.nsIDOMNode)) { return false; }