Title: [94666] trunk
Revision
94666
Author
ca...@chromium.org
Date
2011-09-07 06:12:23 -0700 (Wed, 07 Sep 2011)

Log Message

2011-09-02  Andrey Kosyakov  <ca...@chromium.org>

        Web Inspector: [Extensions API] expose console API
        https://bugs.webkit.org/show_bug.cgi?id=67506

        Reviewed by Pavel Feldman.

        Test: inspector/extensions/extensions-console.html

        * inspector/front-end/ConsoleMessage.js:
        (WebInspector.ConsoleMessage.prototype.get text):
        (WebInspector.ConsoleMessage.prototype.get parameters):
        * inspector/front-end/ExtensionAPI.js:
        (WebInspector.injectedExtensionAPI.InspectorExtensionAPI):
        (WebInspector.injectedExtensionAPI):
        (WebInspector.injectedExtensionAPI.Console.prototype.getMessages):
        (WebInspector.injectedExtensionAPI.Console.prototype.addMessage):
        (WebInspector.injectedExtensionAPI.Console.prototype.get MessageLevel):
        (WebInspector.injectedExtensionAPI.Network.dispatchRequestEvent):
        (WebInspector.injectedExtensionAPI.Network):
        (WebInspector.injectedExtensionAPI.AuditCategoryImpl.dispatchAuditEvent):
        (WebInspector.injectedExtensionAPI.AuditCategoryImpl):
        (WebInspector.injectedExtensionAPI.InspectedWindow.dispatchResourceEvent):
        (WebInspector.injectedExtensionAPI.InspectedWindow.dispatchResourceContentEvent):
        (WebInspector.injectedExtensionAPI.InspectedWindow):
        * inspector/front-end/ExtensionCommon.js:
        (WebInspector.commonExtensionSymbols):
        * inspector/front-end/ExtensionServer.js:
        (WebInspector.ExtensionServer):
        (WebInspector.ExtensionServer.prototype._notifyConsoleMessageAdded):
        (WebInspector.ExtensionServer.prototype._onGetConsoleMessages):
        (WebInspector.ExtensionServer.prototype._onAddConsoleMessage):
        (WebInspector.ExtensionServer.prototype._makeConsoleMessage):
        (WebInspector.ExtensionServer.prototype._makeConsoleMessage.convertParameter):
        (WebInspector.ExtensionServer.prototype._dispatchCallback):
        (WebInspector.ExtensionServer.prototype.initExtensions):

2011-09-02  Andrey Kosyakov  <ca...@chromium.org>

        Web Inspector: [Extensions API] expose console API
        https://bugs.webkit.org/show_bug.cgi?id=67506

        Reviewed by Pavel Feldman.

        * http/tests/inspector/resources/extension-main.js:
        * inspector/extensions/extensions-api-expected.txt:
        * inspector/extensions/extensions-console-expected.txt: Added.
        * inspector/extensions/extensions-console.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (94665 => 94666)


--- trunk/LayoutTests/ChangeLog	2011-09-07 12:31:11 UTC (rev 94665)
+++ trunk/LayoutTests/ChangeLog	2011-09-07 13:12:23 UTC (rev 94666)
@@ -1,3 +1,15 @@
+2011-09-02  Andrey Kosyakov  <ca...@chromium.org>
+
+        Web Inspector: [Extensions API] expose console API
+        https://bugs.webkit.org/show_bug.cgi?id=67506
+
+        Reviewed by Pavel Feldman.
+
+        * http/tests/inspector/resources/extension-main.js:
+        * inspector/extensions/extensions-api-expected.txt:
+        * inspector/extensions/extensions-console-expected.txt: Added.
+        * inspector/extensions/extensions-console.html: Added.
+
 2011-09-07  Oliver Varga  <voli...@inf.u-szeged.hu>
 
         Update LayoutTests/platform/qt-arm/fast/dom/Window/window-property-descriptors-expected.txt

Modified: trunk/LayoutTests/http/tests/inspector/resources/extension-main.js (94665 => 94666)


--- trunk/LayoutTests/http/tests/inspector/resources/extension-main.js	2011-09-07 12:31:11 UTC (rev 94665)
+++ trunk/LayoutTests/http/tests/inspector/resources/extension-main.js	2011-09-07 13:12:23 UTC (rev 94666)
@@ -1,5 +1,7 @@
 function trimURL(url)
 {
+    if (!url)
+        return;
     if (/^data:/.test(url))
         return url.replace(/,.*$/, "...");
     return url.replace(/.*\//, ".../");
@@ -16,9 +18,7 @@
         if (nondeterministicProps && prop in nondeterministicProps) {
             var value = nondeterministicProps[prop] === "url" ? trimURL(propValue) : "<" + typeof propValue + ">";
             output(prefixWithName + value);
-        } else if (propValue === null)
-            output(prefixWithName + "null");
-        else if (typeof propValue === "object")
+        } else if (typeof propValue === "object" && propValue != null)
             dumpObject(propValue, nondeterministicProps, prefix + "    ", prefixWithName);
         else if (typeof propValue === "string")
             output(prefixWithName + "\"" + propValue + "\"");

Modified: trunk/LayoutTests/inspector/extensions/extensions-api-expected.txt (94665 => 94666)


--- trunk/LayoutTests/inspector/extensions/extensions-api-expected.txt	2011-09-07 12:31:11 UTC (rev 94665)
+++ trunk/LayoutTests/inspector/extensions/extensions-api-expected.txt	2011-09-07 13:12:23 UTC (rev 94666)
@@ -76,6 +76,21 @@
             removeListener : <function>
         }
     }
+    console : {
+        onMessageAdded : {
+            addListener : <function>
+            removeListener : <function>
+        }
+        getMessages : <function>
+        addMessage : <function>
+        Severity : {
+            Tip : "tip"
+            Debug : "debug"
+            Log : "log"
+            Warning : "warning"
+            Error : "error"
+        }
+    }
     onReset : {
         addListener : <function>
         removeListener : <function>

Added: trunk/LayoutTests/inspector/extensions/extensions-console-expected.txt (0 => 94666)


--- trunk/LayoutTests/inspector/extensions/extensions-console-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/inspector/extensions/extensions-console-expected.txt	2011-09-07 13:12:23 UTC (rev 94666)
@@ -0,0 +1,151 @@
+CONSOLE MESSAGE: line 46: log message
+CONSOLE MESSAGE: line 47: debug message
+CONSOLE MESSAGE: line 48: warning message
+CONSOLE MESSAGE: line 49: error message
+CONSOLE MESSAGE: line 50: trace message
+CONSOLE MESSAGE: line 51: log message with two parameters, an integer: %d and a string: %s
+CONSOLE MESSAGE: line 1: log message from evaluated code
+CONSOLE MESSAGE: line 46: log message
+CONSOLE MESSAGE: line 47: debug message
+CONSOLE MESSAGE: line 48: warning message
+CONSOLE MESSAGE: line 49: error message
+CONSOLE MESSAGE: line 50: trace message
+CONSOLE MESSAGE: line 51: log message with two parameters, an integer: %d and a string: %s
+CONSOLE MESSAGE: line 1: log message from evaluated code
+Tests methods of webInspector.console extension API
+
+Started extension.
+Running tests...
+RUNNING TEST: extension_testAddConsoleMessages
+extensions-console.html:46log message console-message console-log-level
+extensions-console.html:47debug message console-message console-log-level
+extensions-console.html:48warning message console-message console-warning-level
+extensions-console.html:49error message console-message console-error-level
+extensions-console.html:50console.trace()logextensions-console.html:50 console-message console-log-level
+extensions-console.html:51log message with two parameters, an integer: 42 and a string: foo console-message console-log-level
+log message from evaluated code console-message console-log-level
+debug message from extension console-message console-debug-level
+test-url.html:42log message from extension console-message console-log-level
+warning message from extension console-message console-warning-level
+error message from extension console-message console-error-level
+RUNNING TEST: extension_testGetConsoleMessages
+{
+    0 : {
+        severity : "log"
+        text : "log message"
+        url : .../extensions-console.html
+        line : 46
+    }
+    1 : {
+        severity : "log"
+        text : "debug message"
+        url : .../extensions-console.html
+        line : 47
+    }
+    2 : {
+        severity : "warning"
+        text : "warning message"
+        url : .../extensions-console.html
+        line : 48
+    }
+    3 : {
+        severity : "error"
+        text : "error message"
+        url : .../extensions-console.html
+        line : 49
+    }
+    4 : {
+        severity : "log"
+        text : "trace message"
+        url : .../extensions-console.html
+        line : 50
+    }
+    5 : {
+        severity : "log"
+        text : "log message with two parameters, an integer: %d and a string: %s"
+        url : .../extensions-console.html
+        line : 51
+    }
+    6 : {
+        severity : "log"
+        text : "log message from evaluated code"
+        line : 1
+    }
+    7 : {
+        severity : "debug"
+        text : "debug message from extension"
+    }
+    8 : {
+        severity : "log"
+        text : "log message from extension"
+        url : test-url.html
+        line : 42
+    }
+    9 : {
+        severity : "warning"
+        text : "warning message from extension"
+    }
+    10 : {
+        severity : "error"
+        text : "error message from extension"
+        line : 42
+    }
+}
+RUNNING TEST: extension_testOnConsoleMessageAdded
+{
+    0 : {
+        severity : "log"
+        text : "log message"
+        url : .../extensions-console.html
+        line : 46
+    }
+}
+{
+    0 : {
+        severity : "log"
+        text : "debug message"
+        url : .../extensions-console.html
+        line : 47
+    }
+}
+{
+    0 : {
+        severity : "warning"
+        text : "warning message"
+        url : .../extensions-console.html
+        line : 48
+    }
+}
+{
+    0 : {
+        severity : "error"
+        text : "error message"
+        url : .../extensions-console.html
+        line : 49
+    }
+}
+{
+    0 : {
+        severity : "log"
+        text : "trace message"
+        url : .../extensions-console.html
+        line : 50
+    }
+}
+{
+    0 : {
+        severity : "log"
+        text : "log message with two parameters, an integer: %d and a string: %s"
+        url : .../extensions-console.html
+        line : 51
+    }
+}
+{
+    0 : {
+        severity : "log"
+        text : "log message from evaluated code"
+        line : 1
+    }
+}
+All tests done.
+
Property changes on: trunk/LayoutTests/inspector/extensions/extensions-console-expected.txt
___________________________________________________________________

Added: svn:eol-style

Added: trunk/LayoutTests/inspector/extensions/extensions-console.html (0 => 94666)


--- trunk/LayoutTests/inspector/extensions/extensions-console.html	                        (rev 0)
+++ trunk/LayoutTests/inspector/extensions/extensions-console.html	2011-09-07 13:12:23 UTC (rev 94666)
@@ -0,0 +1,61 @@
+<html>
+<head>
+<script src=""
+<script src=""
+<script src=""
+
+<script type="text/_javascript_">
+
+function extension_testGetConsoleMessages(nextTest)
+{
+    function callback(messages)
+    {
+        dumpObject(messages, { url: "url" });
+    }
+    webInspector.console.getMessages(callbackAndNextTest(callback, nextTest));
+
+}
+
+function extension_testAddConsoleMessages(nextTest)
+{
+    webInspector.console.addMessage(webInspector.console.Severity.Debug, "debug message from extension");
+    webInspector.console.addMessage(webInspector.console.Severity.Log, "log message from extension", "test-url.html", 42);
+    webInspector.console.addMessage(webInspector.console.Severity.Warning, "warning message from extension");
+    webInspector.console.addMessage(webInspector.console.Severity.Error, "error message from extension", null, 42);
+    evaluateOnFrontend("InspectorTest.dumpConsoleMessagesWithClasses(); reply();", nextTest)
+}
+
+function extension_testOnConsoleMessageAdded(nextTest)
+{
+    var expectedMessages = 7;
+
+    function onMessage(message)
+    {
+        dumpObject(Array.prototype.slice.call(arguments, 0), { url: "url" });
+        if (!--expectedMessages) {
+            webInspector.console.onMessageAdded.removeListener(onMessage);
+            nextTest();
+        }
+    }
+    webInspector.console.onMessageAdded.addListener(onMessage);
+    webInspector.inspectedWindow.eval("log();");
+}
+
+function log()
+{
+    console.log("log message");
+    console.debug("debug message");
+    console.warn("warning message");
+    console.error("error message");
+    console.trace("trace message");
+    console.log("log message with two parameters, an integer: %d and a string: %s", 42, "foo");
+    eval("console.log('log message from evaluated code')");
+}
+
+</script>
+</head>
+<body _onload_="log(); runTest()">
+<p>Tests methods of webInspector.console extension API</p>
+<div id="test-div" class="test"></div>
+</body>
+</html>
Property changes on: trunk/LayoutTests/inspector/extensions/extensions-console.html
___________________________________________________________________

Added: svn:eol-style

Modified: trunk/Source/WebCore/ChangeLog (94665 => 94666)


--- trunk/Source/WebCore/ChangeLog	2011-09-07 12:31:11 UTC (rev 94665)
+++ trunk/Source/WebCore/ChangeLog	2011-09-07 13:12:23 UTC (rev 94666)
@@ -1,3 +1,40 @@
+2011-09-02  Andrey Kosyakov  <ca...@chromium.org>
+
+        Web Inspector: [Extensions API] expose console API
+        https://bugs.webkit.org/show_bug.cgi?id=67506
+
+        Reviewed by Pavel Feldman.
+
+        Test: inspector/extensions/extensions-console.html
+
+        * inspector/front-end/ConsoleMessage.js:
+        (WebInspector.ConsoleMessage.prototype.get text):
+        (WebInspector.ConsoleMessage.prototype.get parameters):
+        * inspector/front-end/ExtensionAPI.js:
+        (WebInspector.injectedExtensionAPI.InspectorExtensionAPI):
+        (WebInspector.injectedExtensionAPI):
+        (WebInspector.injectedExtensionAPI.Console.prototype.getMessages):
+        (WebInspector.injectedExtensionAPI.Console.prototype.addMessage):
+        (WebInspector.injectedExtensionAPI.Console.prototype.get MessageLevel):
+        (WebInspector.injectedExtensionAPI.Network.dispatchRequestEvent):
+        (WebInspector.injectedExtensionAPI.Network):
+        (WebInspector.injectedExtensionAPI.AuditCategoryImpl.dispatchAuditEvent):
+        (WebInspector.injectedExtensionAPI.AuditCategoryImpl):
+        (WebInspector.injectedExtensionAPI.InspectedWindow.dispatchResourceEvent):
+        (WebInspector.injectedExtensionAPI.InspectedWindow.dispatchResourceContentEvent):
+        (WebInspector.injectedExtensionAPI.InspectedWindow):
+        * inspector/front-end/ExtensionCommon.js:
+        (WebInspector.commonExtensionSymbols):
+        * inspector/front-end/ExtensionServer.js:
+        (WebInspector.ExtensionServer):
+        (WebInspector.ExtensionServer.prototype._notifyConsoleMessageAdded):
+        (WebInspector.ExtensionServer.prototype._onGetConsoleMessages):
+        (WebInspector.ExtensionServer.prototype._onAddConsoleMessage):
+        (WebInspector.ExtensionServer.prototype._makeConsoleMessage):
+        (WebInspector.ExtensionServer.prototype._makeConsoleMessage.convertParameter):
+        (WebInspector.ExtensionServer.prototype._dispatchCallback):
+        (WebInspector.ExtensionServer.prototype.initExtensions):
+
 2011-09-05  Andrey Kosyakov  <ca...@chromium.org>
 
         Web Inspector: disable popover when a mouse button is pressed

Modified: trunk/Source/WebCore/inspector/front-end/ConsoleMessage.js (94665 => 94666)


--- trunk/Source/WebCore/inspector/front-end/ConsoleMessage.js	2011-09-07 12:31:11 UTC (rev 94665)
+++ trunk/Source/WebCore/inspector/front-end/ConsoleMessage.js	2011-09-07 13:12:23 UTC (rev 94666)
@@ -444,6 +444,11 @@
         return sourceString + " " + typeString + " " + levelString + ": " + this._formattedMessage.textContent + "\n" + this.url + " line " + this.line;
     },
 
+    get text()
+    {
+        return this._messageText;
+    },
+
     isEqual: function(msg)
     {
         if (!msg)

Modified: trunk/Source/WebCore/inspector/front-end/ExtensionAPI.js (94665 => 94666)


--- trunk/Source/WebCore/inspector/front-end/ExtensionAPI.js	2011-09-07 12:31:11 UTC (rev 94665)
+++ trunk/Source/WebCore/inspector/front-end/ExtensionAPI.js	2011-09-07 13:12:23 UTC (rev 94666)
@@ -93,6 +93,7 @@
     this.network = new Network();
     defineDeprecatedProperty(this, "webInspector", "resources", "network");
     this.timeline = new Timeline();
+    this.console = new Console();
 
     this._onReset_ = new EventSink("reset");
 }
@@ -104,15 +105,37 @@
     }
 }
 
+function Console()
+{
+    this._onMessageAdded_ = new EventSink("console-message-added");
+}
+
+Console.prototype = {
+    getMessages: function(callback)
+    {
+        extensionServer.sendRequest({ command: "getConsoleMessages" }, callback);
+    },
+
+    addMessage: function(severity, text, url, line)
+    {
+        extensionServer.sendRequest({ command: "addConsoleMessage", severity: severity, text: text, url: url, line: line });
+    },
+
+    get Severity()
+    {
+        return apiPrivate.console.Severity;
+    },
+};
+
 function Network()
 {
-    function requestDispatch(message)
+    function dispatchRequestEvent(message)
     {
         var request = message.arguments[1];
         request.__proto__ = new Request(message.arguments[0]);
         this._fire(request);
     }
-    this._onRequestFinished_ = new EventSink("network-request-finished", requestDispatch);
+    this._onRequestFinished_ = new EventSink("network-request-finished", dispatchRequestEvent);
     defineDeprecatedProperty(this, "network", "onFinished", "onRequestFinished");
     this._onNavigated_ = new EventSink("inspectedURLChanged");
 }
@@ -271,7 +294,7 @@
 
 function AuditCategoryImpl(id)
 {
-    function auditResultDispatch(request)
+    function dispatchAuditEvent(request)
     {
         var auditResult = new AuditResult(request.arguments[0]);
         try {
@@ -282,7 +305,7 @@
         }
     }
     this._id = id;
-    this._onAuditStarted_ = new EventSink("audit-started-" + id, auditResultDispatch);
+    this._onAuditStarted_ = new EventSink("audit-started-" + id, dispatchAuditEvent);
 }
 
 function AuditResultImpl(id)
@@ -357,16 +380,16 @@
 
 function InspectedWindow()
 {
-    function resourceDispatch(message)
+    function dispatchResourceEvent(message)
     {
         this._fire(new Resource(message.arguments[0]));
     }
-    function resourceContentDispatch(message)
+    function dispatchResourceContentEvent(message)
     {
         this._fire(new Resource(message.arguments[0]), message.arguments[1]);
     }
-    this._onResourceAdded_ = new EventSink("resource-added", resourceDispatch);
-    this._onResourceContentCommitted_ = new EventSink("resource-content-committed", resourceContentDispatch);
+    this._onResourceAdded_ = new EventSink("resource-added", dispatchResourceEvent);
+    this._onResourceContentCommitted_ = new EventSink("resource-content-committed", dispatchResourceContentEvent);
 }
 
 InspectedWindow.prototype = {

Modified: trunk/Source/WebCore/inspector/front-end/ExtensionCommon.js (94665 => 94666)


--- trunk/Source/WebCore/inspector/front-end/ExtensionCommon.js	2011-09-07 12:31:11 UTC (rev 94665)
+++ trunk/Source/WebCore/inspector/front-end/ExtensionCommon.js	2011-09-07 13:12:23 UTC (rev 94666)
@@ -39,6 +39,16 @@
         Warning: "warning",
         Severe: "severe"
     };
+
+    if (!apiPrivate.console)
+        apiPrivate.console = {};
+    apiPrivate.console.Severity = {
+        Tip: "tip",
+        Debug: "debug",
+        Log: "log",
+        Warning: "warning",
+        Error: "error"
+    };
 }
 
 WebInspector.extensionAPI = {};

Modified: trunk/Source/WebCore/inspector/front-end/ExtensionServer.js (94665 => 94666)


--- trunk/Source/WebCore/inspector/front-end/ExtensionServer.js	2011-09-07 12:31:11 UTC (rev 94665)
+++ trunk/Source/WebCore/inspector/front-end/ExtensionServer.js	2011-09-07 13:12:23 UTC (rev 94666)
@@ -41,13 +41,15 @@
     this._allowedOrigins = {};
     this._status = new WebInspector.ExtensionStatus();
 
-    this._registerHandler("addRequestHeaders", this._onAddRequestHeaders.bind(this));
     this._registerHandler("addAuditCategory", this._onAddAuditCategory.bind(this));
     this._registerHandler("addAuditResult", this._onAddAuditResult.bind(this));
+    this._registerHandler("addConsoleMessage", this._onAddConsoleMessage.bind(this));
+    this._registerHandler("addRequestHeaders", this._onAddRequestHeaders.bind(this));
     this._registerHandler("createPanel", this._onCreatePanel.bind(this));
     this._registerHandler("createSidebarPane", this._onCreateSidebarPane.bind(this));
     this._registerHandler("evaluateOnInspectedPage", this._onEvaluateOnInspectedPage.bind(this));
     this._registerHandler("getHAR", this._onGetHAR.bind(this));
+    this._registerHandler("getConsoleMessages", this._onGetConsoleMessages.bind(this));
     this._registerHandler("getPageResources", this._onGetPageResources.bind(this));
     this._registerHandler("getRequestContent", this._onGetRequestContent.bind(this));
     this._registerHandler("getResourceContent", this._onGetResourceContent.bind(this));
@@ -61,17 +63,10 @@
     this._registerHandler("subscribe", this._onSubscribe.bind(this));
     this._registerHandler("unsubscribe", this._onUnsubscribe.bind(this));
 
-    this._registerSubscriptionHandler("timeline-event-recorded", WebInspector.timelineManager.start.bind(WebInspector.timelineManager), WebInspector.timelineManager.stop.bind(WebInspector.timelineManager));
-
     window.addEventListener("message", this._onWindowMessage.bind(this), false);
 }
 
 WebInspector.ExtensionServer.prototype = {
-    _addRecordToTimeline: function(event)
-    {
-        this._postNotification("timeline-event-recorded", event.data);
-    },
-
     notifyObjectSelected: function(panelId, objectId)
     {
         this._postNotification("panel-objectSelected-" + panelId, objectId);
@@ -120,29 +115,11 @@
         delete this._clientObjects[auditRun.id];
     },
 
-    _notifyResourceAdded: function(event)
-    {
-        var resource = event.data;
-        this._postNotification("resource-added", this._makeResource(resource));
-    },
-
     notifyResourceContentCommitted: function(resource, content)
     {
         this._postNotification("resource-content-committed", this._makeResource(resource), content);
     },
 
-    _notifyRequestFinished: function(event)
-    {
-        var request = event.data;
-        if (this._hasSubscribers("network-request-finished"))
-            this._postNotification("network-request-finished", this._requestId(request), (new WebInspector.HAREntry(request)).build());
-    },
-
-    _hasSubscribers: function(type)
-    {
-        return !!this._subscribers[type];
-    },
-
     _postNotification: function(type, details)
     {
         var subscribers = this._subscribers[type];
@@ -164,7 +141,7 @@
         else {
             this._subscribers[message.type] = [ port ];
             if (this._subscriptionStartHandlers[message.type])
-                this._subscriptionStartHandlers[message.type]()
+                this._subscriptionStartHandlers[message.type]();
         }
     },
 
@@ -177,7 +154,7 @@
         if (!subscribers.length) {
             delete this._subscribers[message.type];
             if (this._subscriptionStopHandlers[message.type])
-                this._subscriptionStopHandlers[message.type]()
+                this._subscriptionStopHandlers[message.type]();
         }
     },
 
@@ -305,11 +282,78 @@
         RuntimeAgent.evaluate(evalExpression, "", true, callback.bind(this));
     },
 
-    _dispatchCallback: function(requestId, port, result)
+    _onGetConsoleMessages: function()
     {
-        port.postMessage({ command: "callback", requestId: requestId, result: result });
+        return WebInspector.console.messages.map(this._makeConsoleMessage);
     },
 
+    _onAddConsoleMessage: function(message)
+    {
+        function convertSeverity(level)
+        {
+            switch (level) {
+                case WebInspector.extensionAPI.console.Severity.Tip:
+                    return WebInspector.ConsoleMessage.MessageLevel.Tip;
+                case WebInspector.extensionAPI.console.Severity.Log:
+                    return WebInspector.ConsoleMessage.MessageLevel.Log;
+                case WebInspector.extensionAPI.console.Severity.Warning:
+                    return WebInspector.ConsoleMessage.MessageLevel.Warning;
+                case WebInspector.extensionAPI.console.Severity.Error:
+                    return WebInspector.ConsoleMessage.MessageLevel.Error;
+                case WebInspector.extensionAPI.console.Severity.Debug:
+                    return WebInspector.ConsoleMessage.MessageLevel.Debug;
+            }
+        }
+        var level = convertSeverity(message.severity);
+        if (!level)
+            return this._status.E_BADARG("message.severity", message.severity);
+
+        var consoleMessage = new WebInspector.ConsoleMessage(
+            WebInspector.ConsoleMessage.MessageSource.JS,
+            WebInspector.ConsoleMessage.MessageType.Log,
+            level,
+            message.line,
+            message.url,
+            1,
+            message.text,
+            null, // parameters
+            null, // stackTrace
+            null); // networkRequestId
+        WebInspector.console.addMessage(consoleMessage);
+    },
+
+    _makeConsoleMessage: function(message)
+    {
+        function convertLevel(level)
+        {
+            if (!level)
+                return;
+            switch (level) {
+                case WebInspector.ConsoleMessage.MessageLevel.Tip:
+                    return WebInspector.extensionAPI.console.Severity.Tip;
+                case WebInspector.ConsoleMessage.MessageLevel.Log:
+                    return WebInspector.extensionAPI.console.Severity.Log;
+                case WebInspector.ConsoleMessage.MessageLevel.Warning:
+                    return WebInspector.extensionAPI.console.Severity.Warning;
+                case WebInspector.ConsoleMessage.MessageLevel.Error:
+                    return WebInspector.extensionAPI.console.Severity.Error;
+                case WebInspector.ConsoleMessage.MessageLevel.Debug:
+                    return WebInspector.extensionAPI.console.Severity.Debug;
+                default:
+                    return WebInspector.extensionAPI.console.Severity.Log;
+            }
+        }
+        var result = {
+            severity: convertLevel(message.level),
+            text: message.text,
+        };
+        if (message.url)
+            result.url = ""
+        if (message.line)
+            result.line = message.line;
+        return result;
+    },
+
     _onGetHAR: function()
     {
         var requests = WebInspector.networkLog.resources;
@@ -424,17 +468,61 @@
         auditRun.cancel();
     },
 
+    _dispatchCallback: function(requestId, port, result)
+    {
+        port.postMessage({ command: "callback", requestId: requestId, result: result });
+    },
+
     initExtensions: function()
     {
-        // The networkManager is normally created after the ExtensionServer is constructed, but before initExtensions() is called.
-        WebInspector.networkManager.addEventListener(WebInspector.NetworkManager.EventTypes.ResourceFinished, this._notifyRequestFinished, this);
-        WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.InspectedURLChanged, this._inspectedURLChanged, this);
-        WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.ResourceAdded, this._notifyResourceAdded, this);
-        WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.EventTypes.TimelineEventRecorded, this._addRecordToTimeline, this);
+        this._registerAutosubscriptionHandler("console-message-added",
+            WebInspector.console, WebInspector.ConsoleModel.Events.MessageAdded, this._notifyConsoleMessageAdded);
+        this._registerAutosubscriptionHandler("network-request-finished",
+            WebInspector.networkManager, WebInspector.NetworkManager.EventTypes.ResourceFinished, this._notifyRequestFinished);
+        this._registerAutosubscriptionHandler("resource-added",
+            WebInspector.resourceTreeModel, WebInspector.ResourceTreeModel.EventTypes.ResourceAdded, this._notifyResourceAdded);
 
+        function onTimelineSubscriptionStarted()
+        {
+            WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.EventTypes.TimelineEventRecorded,
+                this._notifyTimelineEventRecorded, this);
+            WebInspector.timelineManager.start();
+        }
+        function onTimelineSubscriptionStopped()
+        {
+            WebInspector.timelineManager.stop();
+            WebInspector.timelineManager.removeEventListener(WebInspector.TimelineManager.EventTypes.TimelineEventRecorded,
+                this._notifyTimelineEventRecorded, this);
+        }
+        this._registerSubscriptionHandler("timeline-event-recorded", onTimelineSubscriptionStarted.bind(this), onTimelineSubscriptionStopped.bind(this));
+
+        WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.InspectedURLChanged,
+            this._inspectedURLChanged, this);
         InspectorExtensionRegistry.getExtensionsAsync();
     },
 
+    _notifyConsoleMessageAdded: function(event)
+    {
+        this._postNotification("console-message-added", this._makeConsoleMessage(event.data));
+    },
+
+    _notifyResourceAdded: function(event)
+    {
+        var resource = event.data;
+        this._postNotification("resource-added", this._makeResource(resource));
+    },
+
+    _notifyRequestFinished: function(event)
+    {
+        var request = event.data;
+        this._postNotification("network-request-finished", this._requestId(request), (new WebInspector.HAREntry(request)).build());
+    },
+
+    _notifyTimelineEventRecorded: function(event)
+    {
+        this._postNotification("timeline-event-recorded", event.data);
+    },
+
     _addExtensions: function(extensions)
     {
         const urlOriginRegExp = new RegExp("([^:]+:\/\/[^/]*)\/"); // Can't use regexp literal here, MinJS chokes on it.
@@ -521,6 +609,13 @@
         this._subscriptionStopHandlers[eventTopic] =  onUnsubscribeLast;
     },
 
+    _registerAutosubscriptionHandler: function(eventTopic, eventTarget, frontendEventType, handler)
+    {
+        this._registerSubscriptionHandler(eventTopic,
+            WebInspector.Object.prototype.addEventListener.bind(eventTarget, frontendEventType, handler, this),
+            WebInspector.Object.prototype.removeEventListener.bind(eventTarget, frontendEventType, handler, this));
+    },
+
     _expandResourcePath: function(extensionPath, resourcePath)
     {
         if (!resourcePath)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to