Bug 1283465 - New console frontend: Display cached messages. r=linclark draft
authorPeter Elmers <peter.elmers@yahoo.com>
Thu, 30 Jun 2016 06:59:55 -0700
changeset 382802 c526801feda5949f9a12d7fd355cdf90ac3cb266
parent 382391 b69a5bbb5e40bd426e35222baa600b481e50d265
child 524293 6f1aef002a0cefd1c878086d74758441603d26a9
push id21826
push userbmo:lclark@mozilla.com
push dateThu, 30 Jun 2016 14:05:46 +0000
reviewerslinclark
bugs1283465
milestone50.0a1
Bug 1283465 - New console frontend: Display cached messages. r=linclark
devtools/client/webconsole/new-console-output/utils/messages.js
devtools/client/webconsole/webconsole.js
--- a/devtools/client/webconsole/new-console-output/utils/messages.js
+++ b/devtools/client/webconsole/new-console-output/utils/messages.js
@@ -16,26 +16,46 @@ const {
   SEVERITY_ERROR,
   SEVERITY_WARNING,
   SEVERITY_LOG,
 } = require("../constants");
 const WebConsoleUtils = require("devtools/shared/webconsole/utils").Utils;
 const STRINGS_URI = "chrome://devtools/locale/webconsole.properties";
 const l10n = new WebConsoleUtils.L10n(STRINGS_URI);
 
+function convertCachedPacket(packet) {
+  // The devtools server provides cached message packets in a different shape
+  // from those of consoleApiCalls, so we prepare them for preparation here.
+  let convertPacket = {};
+  if (packet._type === "ConsoleAPI") {
+    convertPacket.message = packet;
+    convertPacket.type = "consoleAPICall";
+  } else if (packet._type === "PageError") {
+    convertPacket.pageError = packet;
+    convertPacket.type = "pageError";
+  } else {
+    throw new Error("Unexpected packet type");
+  }
+  return convertPacket;
+}
+
 function prepareMessage(packet) {
   // @TODO turn this into an Immutable Record.
   let allowRepeating;
   let category;
   let data;
   let messageType;
   let repeat;
   let repeatId;
   let severity;
 
+  if (packet._type) {
+    packet = convertCachedPacket(packet);
+  }
+
   switch (packet.type) {
     case "consoleAPICall":
       data = Object.assign({}, packet.message);
 
       if (data.level === "clear") {
         data.arguments = [l10n.getStr("consoleCleared")];
       }
 
--- a/devtools/client/webconsole/webconsole.js
+++ b/devtools/client/webconsole/webconsole.js
@@ -3267,20 +3267,25 @@ WebConsoleConnectionProxy.prototype = {
       // connection attempt is successful, nonetheless.
       console.error("Web Console getCachedMessages error: invalid state.");
     }
 
     let messages =
       response.messages.concat(...this.webConsoleClient.getNetworkEvents());
     messages.sort((a, b) => a.timeStamp - b.timeStamp);
 
-    this.webConsoleFrame.displayCachedMessages(messages);
-
-    if (!this._hasNativeConsoleAPI) {
-      this.webConsoleFrame.logWarningAboutReplacedAPI();
+    if (this.webConsoleFrame.NEW_CONSOLE_OUTPUT_ENABLED) {
+      for (let packet of messages) {
+        this.webConsoleFrame.newConsoleOutput.dispatchMessageAdd(packet);
+      }
+    } else {
+      this.webConsoleFrame.displayCachedMessages(messages);
+      if (!this._hasNativeConsoleAPI) {
+        this.webConsoleFrame.logWarningAboutReplacedAPI();
+      }
     }
 
     this.connected = true;
     this._connectDefer.resolve(this);
   },
 
   /**
    * The "pageError" message type handler. We redirect any page errors to the UI