Bug 1383208 - Allow for null functionName in console messages;r=baku draft
authorBrian Grinstead <bgrinstead@mozilla.com>
Wed, 26 Jul 2017 15:14:07 -0700
changeset 616255 36f1434de4e252b254d0159137f33aa87908bf89
parent 615935 388d81ed93fa640f91d155f36254667c734157cf
child 639432 fcdb1ffde28ec23f78afb1d4aa21f5b3d0ccf972
push id70640
push userbgrinstead@mozilla.com
push dateWed, 26 Jul 2017 22:14:16 +0000
reviewersbaku
bugs1383208
milestone56.0a1
Bug 1383208 - Allow for null functionName in console messages;r=baku MozReview-Commit-ID: 47O6kPQ3W8o
devtools/client/webconsole/test/browser_console.js
toolkit/components/processsingleton/ContentProcessSingleton.js
--- a/devtools/client/webconsole/test/browser_console.js
+++ b/devtools/client/webconsole/test/browser_console.js
@@ -62,16 +62,22 @@ function consoleOpened(hud) {
   Cu.nukeSandbox(sandbox);
 
   // Add a message from a content window.
   content.console.log("bug587757b");
 
   // Test eval.
   hud.jsterm.execute("document.location.href");
 
+  // Test eval frame script
+  hud.jsterm.execute(`
+    gBrowser.selectedBrowser.messageManager.loadFrameScript('data:application/javascript,console.log("framescript-message")', false);
+    "framescript-eval";
+  `);
+
   // Check for network requests.
   let xhr = new XMLHttpRequest();
   xhr.onload = () => console.log("xhr loaded, status is: " + xhr.status);
   xhr.open("get", TEST_URI, true);
   xhr.send();
 
   // Check for xhr error.
   let xhrErr = new XMLHttpRequest();
@@ -124,16 +130,28 @@ function consoleOpened(hud) {
       },
       {
         name: "jsterm eval result",
         text: "browser.xul",
         category: CATEGORY_OUTPUT,
         severity: SEVERITY_LOG,
       },
       {
+        name: "jsterm eval result 2",
+        text: "framescript-eval",
+        category: CATEGORY_OUTPUT,
+        severity: SEVERITY_LOG,
+      },
+      {
+        name: "frame script message",
+        text: "framescript-message",
+        category: CATEGORY_WEBDEV,
+        severity: SEVERITY_LOG,
+      },
+      {
         name: "exception message",
         text: "foobarExceptionBug587757",
         category: CATEGORY_JS,
         severity: SEVERITY_ERROR,
       },
       {
         name: "network message",
         text: "test-console.html",
--- a/toolkit/components/processsingleton/ContentProcessSingleton.js
+++ b/toolkit/components/processsingleton/ContentProcessSingleton.js
@@ -54,18 +54,18 @@ ContentProcessSingleton.prototype = {
     }
     case "console-api-log-event": {
       let consoleMsg = subject.wrappedJSObject;
 
       let msgData = {
         level: consoleMsg.level,
         filename: consoleMsg.filename.substring(0, MSG_MGR_CONSOLE_INFO_MAX),
         lineNumber: consoleMsg.lineNumber,
-        functionName: consoleMsg.functionName.substring(0,
-          MSG_MGR_CONSOLE_INFO_MAX),
+        functionName: consoleMsg.functionName &&
+          consoleMsg.functionName.substring(0, MSG_MGR_CONSOLE_INFO_MAX),
         timeStamp: consoleMsg.timeStamp,
         addonId: consoleMsg.addonId,
         arguments: [],
       };
 
       // We can't send objects over the message manager, so we sanitize
       // them out, replacing those arguments with "<unavailable>".
       let unavailString = "<unavailable>";