Web Inspector: streamline Console's MessageType and MessageSource semantics.
authorpfeldman@chromium.org <pfeldman@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 20 Sep 2011 13:46:08 +0000 (13:46 +0000)
committerpfeldman@chromium.org <pfeldman@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 20 Sep 2011 13:46:08 +0000 (13:46 +0000)
https://bugs.webkit.org/show_bug.cgi?id=68342

Source/WebCore:

This change fixes semantics of the MessageSource and MessageType:
MessageSource is now the source of the message (be it Network, HTML
parser or Console API). MessageType is only defined for the Console API
messages and contains the name of the API call (log, dir, dirxml, etc.).
Subsequent https://bugs.webkit.org/show_bug.cgi?id=66371 will make MessageType
private to the inspector.

Reviewed by Tony Gentilcore.

* dom/Document.cpp:
(WebCore::Document::logExceptionToConsole):
* inspector/ConsoleMessage.cpp:
(WebCore::messageSourceValue):
(WebCore::messageTypeValue):
(WebCore::ConsoleMessage::addToFrontend):
* inspector/Inspector.json:
* inspector/InspectorConsoleAgent.cpp:
(WebCore::InspectorConsoleAgent::didReceiveResponse):
(WebCore::InspectorConsoleAgent::didFailLoading):
* inspector/front-end/ConsoleMessage.js:
(WebInspector.ConsoleMessage.createTextMessage):
(WebInspector.ConsoleMessage.prototype._formatMessage):
(WebInspector.ConsoleMessage.prototype.toString):
* page/Console.cpp:
(WebCore::printMessageSourceAndLevelPrefix):
(WebCore::Console::addMessage):
(WebCore::Console::dir):
(WebCore::Console::dirxml):
(WebCore::Console::group):
(WebCore::Console::groupCollapsed):
(WebCore::Console::groupEnd):
* page/ConsoleTypes.h:
* websockets/WebSocketChannel.cpp:
(WebCore::WebSocketChannel::didFailSocketStream):

Source/WebKit/mac:

This change fixes semantics of the MessageSource and MessageType:
MessageSource is now the source of the message (be it Network, HTML
parser or Console API). MessageType is only defined for the Console API
messages and contains the name of the API call (log, dir, dirxml, etc.).
Subsequent https://bugs.webkit.org/show_bug.cgi?id=66371 will make MessageType
private to the inspector.

Reviewed by Tony Gentilcore.

* WebCoreSupport/WebChromeClient.mm:
(stringForMessageSource):
(stringForMessageType):
* WebView/WebUIDelegatePrivate.h:

LayoutTests:

This change fixes semantics of the MessageSource and MessageType:
MessageSource is now the source of the message (be it Network, HTML
parser or Console API). MessageType is only defined for the Console API
messages and contains the name of the API call (log, dir, dirxml, etc.).
Subsequent https://bugs.webkit.org/show_bug.cgi?id=66371 will make MessageType
private to the inspector.

Reviewed by Tony Gentilcore.

* inspector/protocol/console-agent-expected.txt:
* platform/chromium/http/tests/inspector/console-resource-errors-expected.txt: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@95535 268f45cc-cd09-0410-ab3c-d52691b4dbfc

15 files changed:
LayoutTests/ChangeLog
LayoutTests/inspector/protocol/console-agent-expected.txt
LayoutTests/platform/chromium/http/tests/inspector/console-resource-errors-expected.txt [new file with mode: 0644]
Source/WebCore/ChangeLog
Source/WebCore/dom/Document.cpp
Source/WebCore/inspector/ConsoleMessage.cpp
Source/WebCore/inspector/Inspector.json
Source/WebCore/inspector/InspectorConsoleAgent.cpp
Source/WebCore/inspector/front-end/ConsoleMessage.js
Source/WebCore/page/Console.cpp
Source/WebCore/page/ConsoleTypes.h
Source/WebCore/websockets/WebSocketChannel.cpp
Source/WebKit/mac/ChangeLog
Source/WebKit/mac/WebCoreSupport/WebChromeClient.mm
Source/WebKit/mac/WebView/WebUIDelegatePrivate.h

index 723c191..9122e05 100644 (file)
@@ -1,3 +1,20 @@
+2011-09-19  Pavel Feldman  <pfeldman@google.com>
+
+        Web Inspector: streamline Console's MessageType and MessageSource semantics.
+        https://bugs.webkit.org/show_bug.cgi?id=68342
+
+        This change fixes semantics of the MessageSource and MessageType:
+        MessageSource is now the source of the message (be it Network, HTML
+        parser or Console API). MessageType is only defined for the Console API
+        messages and contains the name of the API call (log, dir, dirxml, etc.).
+        Subsequent https://bugs.webkit.org/show_bug.cgi?id=66371 will make MessageType
+        private to the inspector.
+
+        Reviewed by Tony Gentilcore.
+
+        * inspector/protocol/console-agent-expected.txt:
+        * platform/chromium/http/tests/inspector/console-resource-errors-expected.txt: Added.
+
 2011-09-20  Philippe Normand  <pnormand@igalia.com>
 
         Unreviewed, GTK baselines for new tests.
index e03cce2..8e08cc0 100644 (file)
@@ -53,8 +53,8 @@ event ConsoleAgent.messageAdded
 {
     method : "Console.messageAdded"
     params : {
-        messageObj : {
-            source : "javascript"
+        message : {
+            source : "console-api"
             type : "log"
             level : "log"
             line : 0
diff --git a/LayoutTests/platform/chromium/http/tests/inspector/console-resource-errors-expected.txt b/LayoutTests/platform/chromium/http/tests/inspector/console-resource-errors-expected.txt
new file mode 100644 (file)
index 0000000..efc7943
--- /dev/null
@@ -0,0 +1,8 @@
+Tests that errors to load a resource cause error messages to be logged to console.
+
+
+GET http://127.0.0.1:8000/inspector/missing.css 404 (Not Found) console-message console-error-level
+GET http://127.0.0.1:8000/inspector/non-existent-iframe.html 404 (Not Found) console-message console-error-level
+GET http://127.0.0.1:8000/inspector/non-existent-script.js 404 (Not Found) console-message console-error-level
+GET http://127.0.0.1:8000/inspector/non-existent-xhr 404 (Not Found)loadXHRconsole-resource-errors.html:18performActionsconsole-resource-errors.html:10(anonymous function)InjectedScript._evaluateOnInjectedScript._evaluateAndWrapInjectedScript.evaluate console-message console-error-level
+
index 3e2bb66..54f5cac 100644 (file)
@@ -1,3 +1,43 @@
+2011-09-19  Pavel Feldman  <pfeldman@google.com>
+
+        Web Inspector: streamline Console's MessageType and MessageSource semantics.
+        https://bugs.webkit.org/show_bug.cgi?id=68342
+
+        This change fixes semantics of the MessageSource and MessageType:
+        MessageSource is now the source of the message (be it Network, HTML
+        parser or Console API). MessageType is only defined for the Console API
+        messages and contains the name of the API call (log, dir, dirxml, etc.).
+        Subsequent https://bugs.webkit.org/show_bug.cgi?id=66371 will make MessageType
+        private to the inspector.
+
+        Reviewed by Tony Gentilcore.
+
+        * dom/Document.cpp:
+        (WebCore::Document::logExceptionToConsole):
+        * inspector/ConsoleMessage.cpp:
+        (WebCore::messageSourceValue):
+        (WebCore::messageTypeValue):
+        (WebCore::ConsoleMessage::addToFrontend):
+        * inspector/Inspector.json:
+        * inspector/InspectorConsoleAgent.cpp:
+        (WebCore::InspectorConsoleAgent::didReceiveResponse):
+        (WebCore::InspectorConsoleAgent::didFailLoading):
+        * inspector/front-end/ConsoleMessage.js:
+        (WebInspector.ConsoleMessage.createTextMessage):
+        (WebInspector.ConsoleMessage.prototype._formatMessage):
+        (WebInspector.ConsoleMessage.prototype.toString):
+        * page/Console.cpp:
+        (WebCore::printMessageSourceAndLevelPrefix):
+        (WebCore::Console::addMessage):
+        (WebCore::Console::dir):
+        (WebCore::Console::dirxml):
+        (WebCore::Console::group):
+        (WebCore::Console::groupCollapsed):
+        (WebCore::Console::groupEnd):
+        * page/ConsoleTypes.h:
+        * websockets/WebSocketChannel.cpp:
+        (WebCore::WebSocketChannel::didFailSocketStream):
+
 2011-09-20  Adenilson Cavalcanti  <adenilson.silva@openbossa.org>
 
         [Qt] resizeToContent seems to trigger infinite resize on some pages
index d52fc92..b326a70 100644 (file)
@@ -2356,8 +2356,7 @@ EventTarget* Document::errorEventTarget()
 
 void Document::logExceptionToConsole(const String& errorMessage, int lineNumber, const String& sourceURL, PassRefPtr<ScriptCallStack> callStack)
 {
-    MessageType messageType = callStack ? UncaughtExceptionMessageType : LogMessageType;
-    addMessage(JSMessageSource, messageType, ErrorMessageLevel, errorMessage, lineNumber, sourceURL, callStack);
+    addMessage(JSMessageSource, LogMessageType, ErrorMessageLevel, errorMessage, lineNumber, sourceURL, callStack);
 }
 
 void Document::setURL(const KURL& url)
index 0bc4ba1..d44a495 100644 (file)
@@ -91,7 +91,8 @@ static String messageSourceValue(MessageSource source)
     case HTMLMessageSource: return "html";
     case XMLMessageSource: return "xml";
     case JSMessageSource: return "javascript";
-    case CSSMessageSource: return "css";
+    case NetworkMessageSource: return "network";
+    case ConsoleAPIMessageSource: return "console-api";
     case OtherMessageSource: return "other";
     }
     return "other";
@@ -101,14 +102,13 @@ static String messageTypeValue(MessageType type)
 {
     switch (type) {
     case LogMessageType: return "log";
-    case ObjectMessageType: return "other";
+    case DirMessageType: return "dir";
+    case DirXMLMessageType: return "dirXML";
     case TraceMessageType: return "trace";
     case StartGroupMessageType: return "startGroup";
     case StartGroupCollapsedMessageType: return "startGroupCollapsed";
     case EndGroupMessageType: return "endGroup";
     case AssertMessageType: return "assert";
-    case UncaughtExceptionMessageType: return "uncaughtException";
-    case NetworkErrorMessageType: return "networkError";
     }
     return "other";
 }
@@ -129,13 +129,14 @@ void ConsoleMessage::addToFrontend(InspectorFrontend::Console* frontend, Injecte
 {
     RefPtr<InspectorObject> jsonObj = InspectorObject::create();
     jsonObj->setString("source", messageSourceValue(m_source));
+    // FIXME: only send out type for ConsoleAPI source messages.
     jsonObj->setString("type", messageTypeValue(m_type));
     jsonObj->setString("level", messageLevelValue(m_level));
     jsonObj->setNumber("line", static_cast<int>(m_line));
     jsonObj->setString("url", m_url);
     jsonObj->setNumber("repeatCount", static_cast<int>(m_repeatCount));
     jsonObj->setString("text", m_message);
-    if (m_type == NetworkErrorMessageType) 
+    if (m_source == NetworkMessageSource && !m_requestId.isEmpty())
         jsonObj->setString("networkRequestId", m_requestId);
     if (m_arguments && m_arguments->argumentCount()) {
         InjectedScript injectedScript = injectedScriptManager->injectedScriptFor(m_arguments->globalState());
index a937751..5028d4b 100644 (file)
     },
     {
         "domain": "Console",
-        "description": "Console domain defines methods and events for interaction with the JavaScript console. Console collects messages created by means of the <a href='http://getfirebug.com/wiki/index.php/Console_API'>JavaScript Console API</a>. One needs to enable this domain using <code>enable</code> function in order to start receiving the console messages. Browser will collect messages issued while console domain is not enabled and will report them using <code>messageAdded</code> notification upon enabling.",
+        "description": "Console domain defines methods and events for interaction with the JavaScript console. Console collects messages created by means of the <a href='http://getfirebug.com/wiki/index.php/Console_API'>JavaScript Console API</a>. One needs to enable this domain using <code>enable</code> command in order to start receiving the console messages. Browser collects messages issued while console domain is not enabled as well and reports them using <code>messageAdded</code> notification upon enabling.",
         "types": [
             {
                 "id": "ConsoleMessage",
                 "type": "object",
                 "description": "Console message.",
                 "properties": [
-                    { "name": "source", "type": "string", "enum": ["html", "wml", "xml", "javascript", "css", "other"], "description": "Message source." },
-                    { "name": "type", "type": "string", "enum": ["log", "other", "trace", "startGroup", "startGroupCollapsed", "endGroup", "assert", "uncaughtException", "networkError", "result"], "description": "Message type." },
+                    { "name": "source", "type": "string", "enum": ["html", "wml", "xml", "javascript", "network", "console-api", "other"], "description": "Message source." },
+                    { "name": "type", "type": "string", "enum": ["log", "dir", "dirxml", "trace", "startGroup", "startGroupCollapsed", "endGroup", "assert"], "description": "Console message type." },
                     { "name": "level", "type": "string", "enum": ["tip", "log", "warning", "error", "debug"], "description": "Message severity." },
-                    { "name": "line", "type": "integer", "description": "Line number in the message origin resource." },
+                    { "name": "line", "type": "integer", "description": "Line number in the resource that generated this message." },
                     { "name": "url", "type": "string", "description": "URL of the message origin." },
                     { "name": "repeatCount", "type": "integer", "description": "Repeat count for repeated messages." },
                     { "name": "text", "type": "string", "description": "Message text." },
                     { "name": "networkRequestId", "$ref": "Network.RequestId", "optional": true, "description": "Identifier of the network request associated with this message." },
-                    { "name": "parameters", "type": "array", "items": { "$ref": "Runtime.RemoteObject" }, "description": "Message parameters in case of the formatted message." },
+                    { "name": "parameters", "type": "array", "items": { "$ref": "Runtime.RemoteObject" }, "optional": true, "description": "Message parameters in case of the formatted message." },
                     { "name": "stackTrace", "$ref": "StackTrace", "description": "JavaScript stack trace for assertions and error messages." }
                 ]
             },
             {
                 "name": "enable",
                 "returns": [
-                    { "name": "expiredMessagesCount", "type": "integer", "description": "Number of messages collected due to message threashold overflow." }
+                    { "name": "expiredMessagesCount", "type": "integer", "description": "Number of messages dropped due to message threashold overflow." }
                 ],
                 "description": "Enables console domain, sends the messages collected so far to the client by means of the <code>messageAdded</code> notification." 
             },
             {
                 "name": "disable",
-                "description": "Disables console domain, prevents further console messages from being sent to the client." 
+                "description": "Disables console domain, prevents further console messages from being reported to the client." 
             },
             {
                 "name": "clearMessages",
             {
                 "name": "messageAdded",
                 "parameters": [
-                    { "name": "messageObj", "$ref": "ConsoleMessage", "description": "Console message that has been added." }
+                    { "name": "message", "$ref": "ConsoleMessage", "description": "Console message that has been added." }
                 ],
                 "description": "Issued when new console message is added."
             },
                 "parameters": [
                     { "name": "count", "type": "integer", "description": "New repeat count value." }
                 ],
-                "description": "Issued when subsequent message(s) are equal to the previous one."
+                "description": "Issued when subsequent message(s) are equal to the previous one(s)."
             },
             {
                 "name": "messagesCleared",
-                "description": "Issued when console is cleared."
+                "description": "Issued when console is cleared. This happens either upon <code>clearMessages</code> command or after page navigation."
             }
         ]
     },
index d6b3268..91e4027 100644 (file)
@@ -227,7 +227,7 @@ void InspectorConsoleAgent::didReceiveResponse(unsigned long identifier, const R
     if (response.httpStatusCode() >= 400) {
         String message = "Failed to load resource: the server responded with a status of " + String::number(response.httpStatusCode()) + " (" + response.httpStatusText() + ')';
         String requestId = IdentifiersFactory::requestId(identifier);
-        addConsoleMessage(adoptPtr(new ConsoleMessage(OtherMessageSource, NetworkErrorMessageType, ErrorMessageLevel, message, response.url().string(), requestId)));
+        addConsoleMessage(adoptPtr(new ConsoleMessage(NetworkMessageSource, LogMessageType, ErrorMessageLevel, message, response.url().string(), requestId)));
     }
 }
 
@@ -241,7 +241,7 @@ void InspectorConsoleAgent::didFailLoading(unsigned long identifier, const Resou
     if (!error.localizedDescription().isEmpty())
         message += ": " + error.localizedDescription();
     String requestId = IdentifiersFactory::requestId(identifier);
-    addConsoleMessage(adoptPtr(new ConsoleMessage(OtherMessageSource, NetworkErrorMessageType, ErrorMessageLevel, message, error.failingURL(), requestId)));
+    addConsoleMessage(adoptPtr(new ConsoleMessage(NetworkMessageSource, LogMessageType, ErrorMessageLevel, message, error.failingURL(), requestId)));
 }
 
 void InspectorConsoleAgent::setMonitoringXHREnabled(ErrorString*, bool enabled)
index a1d4c8c..5f50e65 100644 (file)
@@ -73,64 +73,62 @@ WebInspector.ConsoleMessage = function(source, type, level, line, url, repeatCou
 WebInspector.ConsoleMessage.createTextMessage = function(text, level)
 {
     level = level || WebInspector.ConsoleMessage.MessageLevel.Log;
-    return new WebInspector.ConsoleMessage(WebInspector.ConsoleMessage.MessageSource.JS, WebInspector.ConsoleMessage.MessageType.Log, level, 0, null, 1, null, [text], null);
+    return new WebInspector.ConsoleMessage(WebInspector.ConsoleMessage.MessageSource.ConsoleAPI, WebInspector.ConsoleMessage.MessageType.Log, level, 0, null, 1, null, [text], null);
 }
 
 WebInspector.ConsoleMessage.prototype = {
     _formatMessage: function()
     {
-        var stackTrace = this._stackTrace;
-
         this._formattedMessage = document.createElement("span");
         this._formattedMessage.className = "console-message-text source-code";
 
         var messageText;
-        switch (this.type) {
-            case WebInspector.ConsoleMessage.MessageType.Trace:
-                messageText = document.createTextNode("console.trace()");
-                break;
-            case WebInspector.ConsoleMessage.MessageType.UncaughtException:
-                messageText = document.createTextNode(this._messageText);
-                break;
-            case WebInspector.ConsoleMessage.MessageType.NetworkError:
-                if (this._request) {
-                    stackTrace = this._request.stackTrace;
-
-                    messageText = document.createElement("span");
-                    messageText.appendChild(document.createTextNode(this._request.requestMethod + " "));
-                    var anchor = WebInspector.linkifyURLAsNode(this._request.url);
-                    anchor.setAttribute("request_id", this._request.requestId);
-                    anchor.setAttribute("preferred_panel", "network");
-                    messageText.appendChild(anchor);
-                    if (this._request.failed)
-                        messageText.appendChild(document.createTextNode(" " + this._request.localizedFailDescription));
-                    else
-                        messageText.appendChild(document.createTextNode(" " + this._request.statusCode + " (" + this._request.statusText + ")"));
-                } else {
-                    var isExternal = !WebInspector.resourceForURL(this.url);
-                    var anchor = WebInspector.linkifyURLAsNode(this.url, this.url, "console-message-url", isExternal);
-                    this._formattedMessage.appendChild(anchor);
-                    messageText = this._format([this._messageText]);
-                }
-                break;
-            case WebInspector.ConsoleMessage.MessageType.Assert:
-                var args = [WebInspector.UIString("Assertion failed:")];
-                if (this._parameters)
-                    args = args.concat(this._parameters);
-                messageText = this._format(args);
-                break;
-            case WebInspector.ConsoleMessage.MessageType.Object:
-                var obj = this._parameters ? this._parameters[0] : undefined;
-                var args = ["%O", obj];
-                messageText = this._format(args);
-                break;
-            default:
-                var args = this._parameters || [this._messageText];
-                messageText = this._format(args);
-                break;
+        if (this.source === WebInspector.ConsoleMessage.MessageSource.ConsoleAPI) {
+            switch (this.type) {
+                case WebInspector.ConsoleMessage.MessageType.Trace:
+                    messageText = document.createTextNode("console.trace()");
+                    break;
+                case WebInspector.ConsoleMessage.MessageType.Assert:
+                    var args = [WebInspector.UIString("Assertion failed:")];
+                    if (this._parameters)
+                        args = args.concat(this._parameters);
+                    messageText = this._format(args);
+                    break;
+                case WebInspector.ConsoleMessage.MessageType.Dir:
+                    var obj = this._parameters ? this._parameters[0] : undefined;
+                    var args = ["%O", obj];
+                    messageText = this._format(args);
+                    break;
+                default:
+                    var args = this._parameters || [this._messageText];
+                    messageText = this._format(args);
+            }
+        } else if (this.source === WebInspector.ConsoleMessage.MessageSource.Network) {
+            if (this._request) {
+                this._stackTrace = this._request.stackTrace;
+                messageText = document.createElement("span");
+                messageText.appendChild(document.createTextNode(this._request.requestMethod + " "));
+                var anchor = WebInspector.linkifyURLAsNode(this._request.url);
+                anchor.setAttribute("request_id", this._request.requestId);
+                anchor.setAttribute("preferred_panel", "network");
+                messageText.appendChild(anchor);
+                if (this._request.failed)
+                    messageText.appendChild(document.createTextNode(" " + this._request.localizedFailDescription));
+                else
+                    messageText.appendChild(document.createTextNode(" " + this._request.statusCode + " (" + this._request.statusText + ")"));
+            } else {
+                var isExternal = !WebInspector.resourceForURL(this.url);
+                var anchor = WebInspector.linkifyURLAsNode(this.url, this.url, "console-message-url", isExternal);
+                this._formattedMessage.appendChild(anchor);
+                messageText = this._format([this._messageText]);
+            }
+        } else {
+            var args = this._parameters || [this._messageText];
+            messageText = this._format(args);
         }
 
-        if (this.type !== WebInspector.ConsoleMessage.MessageType.NetworkError) {
+        // FIXME: we should dump network message origins as well.
+        if (this.source !== WebInspector.ConsoleMessage.MessageSource.Network) {
             if (this._stackTrace && this._stackTrace.length && this._stackTrace[0].url) {
                 var urlElement = this._linkifyCallFrame(this._stackTrace[0]);
                 this._formattedMessage.appendChild(urlElement);
@@ -142,27 +140,21 @@ WebInspector.ConsoleMessage.prototype = {
 
         this._formattedMessage.appendChild(messageText);
 
-        if (this._stackTrace) {
-            switch (this.type) {
-                case WebInspector.ConsoleMessage.MessageType.Trace:
-                case WebInspector.ConsoleMessage.MessageType.UncaughtException:
-                case WebInspector.ConsoleMessage.MessageType.NetworkError:
-                case WebInspector.ConsoleMessage.MessageType.Assert: {
-                    var ol = document.createElement("ol");
-                    ol.className = "outline-disclosure";
-                    var treeOutline = new TreeOutline(ol);
-
-                    var content = this._formattedMessage;
-                    var root = new TreeElement(content, null, true);
-                    content.treeElementForTest = root;
-                    treeOutline.appendChild(root);
-                    if (this.type === WebInspector.ConsoleMessage.MessageType.Trace)
-                        root.expand();
-
-                    this._populateStackTraceTreeElement(root);
-                    this._formattedMessage = ol;
-                }
-            }
+        var dumpStackTrace = !!this._stackTrace && (this.level === WebInspector.ConsoleMessage.MessageLevel.Error || this.type === WebInspector.ConsoleMessage.MessageType.Trace);
+        if (dumpStackTrace) {
+            var ol = document.createElement("ol");
+            ol.className = "outline-disclosure";
+            var treeOutline = new TreeOutline(ol);
+
+            var content = this._formattedMessage;
+            var root = new TreeElement(content, null, true);
+            content.treeElementForTest = root;
+            treeOutline.appendChild(root);
+            if (this.type === WebInspector.ConsoleMessage.MessageType.Trace)
+                root.expand();
+
+            this._populateStackTraceTreeElement(root);
+            this._formattedMessage = ol;
         }
 
         // This is used for inline message bubbles in SourceFrames, or other plain-text representations.
@@ -386,8 +378,11 @@ WebInspector.ConsoleMessage.prototype = {
             case WebInspector.ConsoleMessage.MessageSource.JS:
                 sourceString = "JS";
                 break;
-            case WebInspector.ConsoleMessage.MessageSource.CSS:
-                sourceString = "CSS";
+            case WebInspector.ConsoleMessage.MessageSource.Network:
+                sourceString = "Network";
+                break;
+            case WebInspector.ConsoleMessage.MessageSource.ConsoleAPI:
+                sourceString = "ConsoleAPI";
                 break;
             case WebInspector.ConsoleMessage.MessageSource.Other:
                 sourceString = "Other";
@@ -397,12 +392,13 @@ WebInspector.ConsoleMessage.prototype = {
         var typeString;
         switch (this.type) {
             case WebInspector.ConsoleMessage.MessageType.Log:
-            case WebInspector.ConsoleMessage.MessageType.UncaughtException:
-            case WebInspector.ConsoleMessage.MessageType.NetworkError:
                 typeString = "Log";
                 break;
-            case WebInspector.ConsoleMessage.MessageType.Object:
-                typeString = "Object";
+            case WebInspector.ConsoleMessage.MessageType.Dir:
+                typeString = "Dir";
+                break;
+            case WebInspector.ConsoleMessage.MessageType.DirXML:
+                typeString = "Dir XML";
                 break;
             case WebInspector.ConsoleMessage.MessageType.Trace:
                 typeString = "Trace";
@@ -488,20 +484,20 @@ WebInspector.ConsoleMessage.MessageSource = {
     HTML: "html",
     XML: "xml",
     JS: "javascript",
-    CSS: "css",
+    Network: "network",
+    ConsoleAPI: "console-api",
     Other: "other"
 }
 
 WebInspector.ConsoleMessage.MessageType = {
     Log: "log",
-    Object: "other",
+    Dir: "dir",
+    DirXML: "dirxml",
     Trace: "trace",
     StartGroup: "startGroup",
     StartGroupCollapsed: "startGroupCollapsed",
     EndGroup: "endGroup",
     Assert: "assert",
-    UncaughtException: "uncaughtException",
-    NetworkError: "networkError",
     Result: "result"
 }
 
index 95fdb39..74dfe74 100644 (file)
@@ -95,8 +95,11 @@ static void printMessageSourceAndLevelPrefix(MessageSource source, MessageLevel
     case JSMessageSource:
         sourceString = "JS";
         break;
-    case CSSMessageSource:
-        sourceString = "CSS";
+    case NetworkMessageSource:
+        sourceString = "NETWORK";
+        break;
+    case ConsoleAPIMessageSource:
+        sourceString = "CONSOLEAPI";
         break;
     case OtherMessageSource:
         sourceString = "OTHER";
@@ -176,7 +179,7 @@ void Console::addMessage(MessageType type, MessageLevel level, PassRefPtr<Script
 
     if (Console::shouldPrintExceptions()) {
         printSourceURLAndLine(lastCaller.sourceURL(), 0);
-        printMessageSourceAndLevelPrefix(JSMessageSource, level);
+        printMessageSourceAndLevelPrefix(ConsoleAPIMessageSource, level);
 
         for (unsigned i = 0; i < arguments->argumentCount(); ++i) {
             String argAsString;
@@ -188,9 +191,9 @@ void Console::addMessage(MessageType type, MessageLevel level, PassRefPtr<Script
 
     String message;
     if (arguments->getFirstArgumentAsString(message))
-        page->chrome()->client()->addMessageToConsole(JSMessageSource, type, level, message, lastCaller.lineNumber(), lastCaller.sourceURL());
+        page->chrome()->client()->addMessageToConsole(ConsoleAPIMessageSource, type, level, message, lastCaller.lineNumber(), lastCaller.sourceURL());
 
-    InspectorInstrumentation::addMessageToConsole(page, JSMessageSource, type, level, message, arguments, callStack);
+    InspectorInstrumentation::addMessageToConsole(page, ConsoleAPIMessageSource, type, level, message, arguments, callStack);
 }
 
 void Console::debug(PassRefPtr<ScriptArguments> arguments, PassRefPtr<ScriptCallStack> callStack)
@@ -216,13 +219,12 @@ void Console::log(PassRefPtr<ScriptArguments> arguments, PassRefPtr<ScriptCallSt
 
 void Console::dir(PassRefPtr<ScriptArguments> arguments, PassRefPtr<ScriptCallStack> callStack)
 {
-    addMessage(ObjectMessageType, LogMessageLevel, arguments, callStack);
+    addMessage(DirMessageType, LogMessageLevel, arguments, callStack);
 }
 
 void Console::dirxml(PassRefPtr<ScriptArguments> arguments, PassRefPtr<ScriptCallStack> callStack)
 {
-    // The standard behavior of our console.log will print the DOM tree for nodes.
-    log(arguments, callStack);
+    addMessage(DirXMLMessageType, LogMessageLevel, arguments, callStack);
 }
 
 void Console::trace(PassRefPtr<ScriptArguments> arguments, PassRefPtr<ScriptCallStack> prpCallStack)
@@ -316,17 +318,17 @@ void Console::timeStamp(PassRefPtr<ScriptArguments> arguments, PassRefPtr<Script
 
 void Console::group(PassRefPtr<ScriptArguments> arguments, PassRefPtr<ScriptCallStack> callStack)
 {
-    InspectorInstrumentation::addMessageToConsole(page(), JSMessageSource, StartGroupMessageType, LogMessageLevel, String(), arguments, callStack);
+    InspectorInstrumentation::addMessageToConsole(page(), ConsoleAPIMessageSource, StartGroupMessageType, LogMessageLevel, String(), arguments, callStack);
 }
 
 void Console::groupCollapsed(PassRefPtr<ScriptArguments> arguments, PassRefPtr<ScriptCallStack> callStack)
 {
-    InspectorInstrumentation::addMessageToConsole(page(), JSMessageSource, StartGroupCollapsedMessageType, LogMessageLevel, String(), arguments, callStack);
+    InspectorInstrumentation::addMessageToConsole(page(), ConsoleAPIMessageSource, StartGroupCollapsedMessageType, LogMessageLevel, String(), arguments, callStack);
 }
 
 void Console::groupEnd()
 {
-    InspectorInstrumentation::addMessageToConsole(page(), JSMessageSource, EndGroupMessageType, LogMessageLevel, String(), 0, String());
+    InspectorInstrumentation::addMessageToConsole(page(), ConsoleAPIMessageSource, EndGroupMessageType, LogMessageLevel, String(), 0, String());
 }
 
 bool Console::shouldCaptureFullStackTrace() const
index 0721b36..8b44030 100644 (file)
@@ -32,20 +32,22 @@ enum MessageSource {
     HTMLMessageSource,
     XMLMessageSource,
     JSMessageSource,
-    CSSMessageSource,
-    OtherMessageSource
+    NetworkMessageSource,
+    ConsoleAPIMessageSource,
+    OtherMessageSource,
 };
 
+// FIXME: make this enum private to inspector, remove it from client callbacks.
+// https://bugs.webkit.org/show_bug.cgi?id=66371
 enum MessageType {
     LogMessageType,
-    ObjectMessageType,
+    DirMessageType,
+    DirXMLMessageType,
     TraceMessageType,
     StartGroupMessageType,
     StartGroupCollapsedMessageType,
     EndGroupMessageType,
-    AssertMessageType,
-    UncaughtExceptionMessageType,
-    NetworkErrorMessageType
+    AssertMessageType
 };
 
 enum MessageLevel {
index c1135b5..770865f 100644 (file)
@@ -333,7 +333,7 @@ void WebSocketChannel::didFailSocketStream(SocketStreamHandle* handle, const Soc
         ASSERT(failingURL.isNull() || m_handshake->url().string() == failingURL);
         if (failingURL.isNull())
             failingURL = m_handshake->url().string();
-        m_context->addMessage(OtherMessageSource, NetworkErrorMessageType, ErrorMessageLevel, message, 0, failingURL, 0);
+        m_context->addMessage(NetworkMessageSource, LogMessageType, ErrorMessageLevel, message, 0, failingURL, 0);
     }
     m_shouldDiscardReceivedData = true;
     handle->disconnect();
index 9710d5d..17f7197 100644 (file)
@@ -1,3 +1,22 @@
+2011-09-19  Pavel Feldman  <pfeldman@google.com>
+
+        Web Inspector: streamline Console's MessageType and MessageSource semantics.
+        https://bugs.webkit.org/show_bug.cgi?id=68342
+
+        This change fixes semantics of the MessageSource and MessageType:
+        MessageSource is now the source of the message (be it Network, HTML
+        parser or Console API). MessageType is only defined for the Console API
+        messages and contains the name of the API call (log, dir, dirxml, etc.). 
+        Subsequent https://bugs.webkit.org/show_bug.cgi?id=66371 will make MessageType
+        private to the inspector.
+
+        Reviewed by Tony Gentilcore.
+
+        * WebCoreSupport/WebChromeClient.mm:
+        (stringForMessageSource):
+        (stringForMessageType):
+        * WebView/WebUIDelegatePrivate.h:
+
 2011-09-19  Timothy Hatcher  <timothy@apple.com>
 
         Make WebViews in NSPopovers render as they would in active windows.
index 65d6b87..7cf8387 100644 (file)
 NSString *WebConsoleMessageHTMLMessageSource = @"HTMLMessageSource";
 NSString *WebConsoleMessageXMLMessageSource = @"XMLMessageSource";
 NSString *WebConsoleMessageJSMessageSource = @"JSMessageSource";
-NSString *WebConsoleMessageCSSMessageSource = @"CSSMessageSource";
+NSString *WebConsoleMessageNetworkMessageSource = @"NetworkMessageSource";
+NSString *WebConsoleMessageConsoleAPIMessageSource = @"ConsoleAPIMessageSource";
 NSString *WebConsoleMessageOtherMessageSource = @"OtherMessageSource";
 
 NSString *WebConsoleMessageLogMessageType = @"LogMessageType";
-NSString *WebConsoleMessageObjectMessageType = @"ObjectMessageType";
+NSString *WebConsoleMessageDirMessageType = @"DirMessageType";
+NSString *WebConsoleMessageDirXMLMessageType = @"DirXMLMessageType";
 NSString *WebConsoleMessageTraceMessageType = @"TraceMessageType";
 NSString *WebConsoleMessageStartGroupMessageType = @"StartGroupMessageType";
 NSString *WebConsoleMessageStartGroupCollapsedMessageType = @"StartGroupCollapsedMessageType";
 NSString *WebConsoleMessageEndGroupMessageType = @"EndGroupMessageType";
 NSString *WebConsoleMessageAssertMessageType = @"AssertMessageType";
-NSString *WebConsoleMessageUncaughtExceptionMessageType = @"UncaughtExceptionMessageType";
-NSString *WebConsoleMessageNetworkErrorMessageType = @"NetworkErrorMessageType";
 
 NSString *WebConsoleMessageTipMessageLevel = @"TipMessageLevel";
 NSString *WebConsoleMessageLogMessageLevel = @"LogMessageLevel";
@@ -357,8 +357,10 @@ inline static NSString *stringForMessageSource(MessageSource source)
         return WebConsoleMessageXMLMessageSource;
     case JSMessageSource:
         return WebConsoleMessageJSMessageSource;
-    case CSSMessageSource:
-        return WebConsoleMessageCSSMessageSource;
+    case NetworkMessageSource:
+        return WebConsoleMessageNetworkMessageSource;
+    case ConsoleAPIMessageSource:
+        return WebConsoleMessageConsoleAPIMessageSource;
     case OtherMessageSource:
         return WebConsoleMessageOtherMessageSource;
     }
@@ -371,8 +373,10 @@ inline static NSString *stringForMessageType(MessageType type)
     switch (type) {
     case LogMessageType:
         return WebConsoleMessageLogMessageType;
-    case ObjectMessageType:
-        return WebConsoleMessageObjectMessageType;
+    case DirMessageType:
+        return WebConsoleMessageDirMessageType;
+    case DirXMLMessageType:
+        return WebConsoleMessageDirXMLMessageType;
     case TraceMessageType:
         return WebConsoleMessageTraceMessageType;
     case StartGroupMessageType:
@@ -383,10 +387,6 @@ inline static NSString *stringForMessageType(MessageType type)
         return WebConsoleMessageEndGroupMessageType;
     case AssertMessageType:
         return WebConsoleMessageAssertMessageType;
-    case UncaughtExceptionMessageType:
-        return WebConsoleMessageUncaughtExceptionMessageType;
-    case NetworkErrorMessageType:
-        return WebConsoleMessageNetworkErrorMessageType;
     }
     ASSERT_NOT_REACHED();
     return @"";
index 37041d4..9c98fdf 100644 (file)
@@ -96,19 +96,19 @@ enum {
 extern NSString *WebConsoleMessageHTMLMessageSource;
 extern NSString *WebConsoleMessageXMLMessageSource;
 extern NSString *WebConsoleMessageJSMessageSource;
-extern NSString *WebConsoleMessageCSSMessageSource;
+extern NSString *WebConsoleMessageNetworkMessageSource;
+extern NSString *WebConsoleMessageConsoleAPIMessageSource;
 extern NSString *WebConsoleMessageOtherMessageSource;
 
 // Message Types.
 extern NSString *WebConsoleMessageLogMessageType;
-extern NSString *WebConsoleMessageObjectMessageType;
+extern NSString *WebConsoleMessageDirMessageType;
+extern NSString *WebConsoleMessageDirXMLMessageType;
 extern NSString *WebConsoleMessageTraceMessageType;
 extern NSString *WebConsoleMessageStartGroupMessageType;
 extern NSString *WebConsoleMessageStartGroupCollapsedMessageType;
 extern NSString *WebConsoleMessageEndGroupMessageType;
 extern NSString *WebConsoleMessageAssertMessageType;
-extern NSString *WebConsoleMessageUncaughtExceptionMessageType;
-extern NSString *WebConsoleMessageNetworkErrorMessageType;
 
 // Message Levels.
 extern NSString *WebConsoleMessageTipMessageLevel;