2009-12-11 Fumitoshi Ukai <ukai@chromium.org>
authorukai@chromium.org <ukai@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 11 Dec 2009 10:44:33 +0000 (10:44 +0000)
committerukai@chromium.org <ukai@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 11 Dec 2009 10:44:33 +0000 (10:44 +0000)
        Reviewed by Pavel Feldman.

        Log WebSocket error to Web Inspector console.
        https://bugs.webkit.org/show_bug.cgi?id=32165

        * websocket/tests/handshake-error-expected.txt:
        * websocket/tests/handshake-fail-by-cross-origin-expected.txt:
        * websocket/tests/handshake-fail-by-sub-protocol-mismatch-expected.txt:
2009-12-11  Fumitoshi Ukai  <ukai@chromium.org>

        Reviewed by Pavel Feldman.

        Log WebSocket error to Web Inspector console.
        https://bugs.webkit.org/show_bug.cgi?id=32165

        * websockets/WebSocketChannel.cpp:
        (WebCore::WebSocketChannel::didOpen):
        (WebCore::WebSocketChannel::appendToBuffer):
        * websockets/WebSocketHandshake.cpp:
        (WebCore::WebSocketHandshake::readServerHandshake):
        (WebCore::WebSocketHandshake::readHTTPHeaders):
        (WebCore::WebSocketHandshake::checkResponseHeaders):

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

LayoutTests/ChangeLog
LayoutTests/websocket/tests/handshake-error-expected.txt
LayoutTests/websocket/tests/handshake-fail-by-cross-origin-expected.txt
LayoutTests/websocket/tests/handshake-fail-by-sub-protocol-mismatch-expected.txt
WebCore/ChangeLog
WebCore/websockets/WebSocketChannel.cpp
WebCore/websockets/WebSocketHandshake.cpp

index 80343e8..0e9e34d 100644 (file)
@@ -1,3 +1,14 @@
+2009-12-11  Fumitoshi Ukai  <ukai@chromium.org>
+
+        Reviewed by Pavel Feldman.
+
+        Log WebSocket error to Web Inspector console.
+        https://bugs.webkit.org/show_bug.cgi?id=32165
+
+        * websocket/tests/handshake-error-expected.txt:
+        * websocket/tests/handshake-fail-by-cross-origin-expected.txt:
+        * websocket/tests/handshake-fail-by-sub-protocol-mismatch-expected.txt:
+
 2009-12-10  Adam Barth  <abarth@webkit.org>
 
         Reviewed by Darin Adler.
index f704ce9..e1f1037 100644 (file)
@@ -1,3 +1,4 @@
+CONSOLE MESSAGE: line 0: Unexpected response code:101
 Handshake error test
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
index 721e655..4fb8706 100644 (file)
@@ -1,3 +1,4 @@
+CONSOLE MESSAGE: line 0: Error during WebSocket handshake: origin mismatch: http://127.0.0.1:8880 != http://example.com
 Make sure Web Socket connection failed if origin mismatches.
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
index 2ba72e7..164642b 100644 (file)
@@ -1,3 +1,4 @@
+CONSOLE MESSAGE: line 0: Error during WebSocket handshake: protocol mismatch: requestting-protocol != available-protocol
 Test WebSocket handshake fail if sub protocol name mismatches.
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
index 6316433..94b2056 100644 (file)
@@ -1,3 +1,18 @@
+2009-12-11  Fumitoshi Ukai  <ukai@chromium.org>
+
+        Reviewed by Pavel Feldman.
+
+        Log WebSocket error to Web Inspector console.
+        https://bugs.webkit.org/show_bug.cgi?id=32165
+
+        * websockets/WebSocketChannel.cpp:
+        (WebCore::WebSocketChannel::didOpen):
+        (WebCore::WebSocketChannel::appendToBuffer):
+        * websockets/WebSocketHandshake.cpp:
+        (WebCore::WebSocketHandshake::readServerHandshake):
+        (WebCore::WebSocketHandshake::readHTTPHeaders):
+        (WebCore::WebSocketHandshake::checkResponseHeaders):
+
 2009-12-10  Adam Barth  <abarth@webkit.org>
 
         Reviewed by Darin Adler.
index a222b4d..07b63d1 100644 (file)
@@ -118,7 +118,7 @@ void WebSocketChannel::didOpen(SocketStreamHandle* handle)
     ASSERT(handle == m_handle);
     const CString& handshakeMessage = m_handshake.clientHandshakeMessage();
     if (!handle->send(handshakeMessage.data(), handshakeMessage.length())) {
-        LOG(Network, "Error in sending handshake message.");
+        m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Error sending handshake message.", 0, m_handshake.clientOrigin());
         handle->close();
     }
 }
@@ -246,7 +246,7 @@ bool WebSocketChannel::appendToBuffer(const char* data, int len)
         m_bufferSize += len;
         return true;
     }
-    LOG(Network, "Too long WebSocket frame %d", m_bufferSize + len);
+    m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, String::format("WebSocket frame (at %d bytes) is too long.", m_bufferSize + len), 0, m_handshake.clientOrigin());
     return false;
 }
 
index d1da443..c21d1d7 100644 (file)
@@ -216,19 +216,19 @@ int WebSocketHandshake::readServerHandshake(const char* header, size_t len)
     else {
         const String& code = extractResponseCode(header, len);
         if (code.isNull()) {
-            LOG(Network, "short server handshake: %s", header);
+            m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Short server handshake: " + String(header, len), 0, clientOrigin());
             return -1;
         }
         if (code.isEmpty()) {
-            LOG(Network, "no response code found: %s", header);
+            m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "No response code found: " + String(header, len), 0, clientOrigin());
             return len;
         }
         LOG(Network, "response code: %s", code.utf8().data());
         if (code == "401") {
-            LOG(Network, "Authentication required");
+            m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Authentication required, but not implemented yet.", 0, clientOrigin());
             return len;
         } else {
-            LOG(Network, "Mismatch server handshake: %s", header);
+            m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Unexpected response code:" + code, 0, clientOrigin());
             return len;
         }
     }
@@ -240,7 +240,7 @@ int WebSocketHandshake::readServerHandshake(const char* header, size_t len)
         if (headerSize < sizeof(webSocketUpgradeHeader) - 1)
             return 0;
         if (memcmp(p, webSocketUpgradeHeader, sizeof(webSocketUpgradeHeader) - 1)) {
-            LOG(Network, "Bad upgrade header: %s", p);
+            m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Bad Upgrade header: " + String(p, end - p), 0, clientOrigin());
             return p - header + sizeof(webSocketUpgradeHeader) - 1;
         }
         p += sizeof(webSocketUpgradeHeader) - 1;
@@ -249,7 +249,7 @@ int WebSocketHandshake::readServerHandshake(const char* header, size_t len)
         if (headerSize < sizeof(webSocketConnectionHeader) - 1)
             return -1;
         if (memcmp(p, webSocketConnectionHeader, sizeof(webSocketConnectionHeader) - 1)) {
-            LOG(Network, "Bad connection header: %s", p);
+            m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Bad Connection header: " + String(p, end - p), 0, clientOrigin());
             return p - header + sizeof(webSocketConnectionHeader) - 1;
         }
         p += sizeof(webSocketConnectionHeader) - 1;
@@ -358,13 +358,13 @@ const char* WebSocketHandshake::readHTTPHeaders(const char* start, const char* e
                 if (name.isEmpty()) {
                     if (p + 1 < end && *(p + 1) == '\n')
                         return p + 2;
-                    LOG(Network, "CR doesn't follow LF p=%p end=%p", p, end);
+                    m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "CR doesn't follow LF at " + String(p, end - p), 0, clientOrigin());
                     return 0;
                 }
-                LOG(Network, "Unexpected CR in name");
+                m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Unexpected CR in name at " + String(p, end - p), 0, clientOrigin());
                 return 0;
             case '\n':
-                LOG(Network, "Unexpected LF in name");
+                m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Unexpected LF in name at " + String(p, end - p), 0, clientOrigin());
                 return 0;
             case ':':
                 break;
@@ -388,7 +388,7 @@ const char* WebSocketHandshake::readHTTPHeaders(const char* start, const char* e
             case '\r':
                 break;
             case '\n':
-                LOG(Network, "Unexpected LF in value");
+                m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Unexpected LF in value at " + String(p, end - p), 0, clientOrigin());
                 return 0;
             default:
                 value.append(*p);
@@ -399,7 +399,7 @@ const char* WebSocketHandshake::readHTTPHeaders(const char* start, const char* e
             }
         }
         if (p >= end || *p != '\n') {
-            LOG(Network, "CR doesn't follow LF after value p=%p end=%p", p, end);
+            m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "CR doesn't follow LF after value at " + String(p, end - p), 0, clientOrigin());
             return 0;
         }
         AtomicString nameStr(String::fromUTF8(name.data(), name.size()));
@@ -441,19 +441,25 @@ void WebSocketHandshake::checkResponseHeaders()
 {
     ASSERT(m_mode == Normal);
     m_mode = Failed;
-    if (m_wsOrigin.isNull() || m_wsLocation.isNull())
+    if (m_wsOrigin.isNull()) {
+        m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Error during WebSocket handshake: 'websocket-origin' header is missing", 0, clientOrigin());
         return;
+    }
+    if (m_wsLocation.isNull()) {
+        m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Error during WebSocket handshake: 'websocket-location' header is missing", 0, clientOrigin());
+        return;
+    }
 
     if (clientOrigin() != m_wsOrigin) {
-        LOG(Network, "Mismatch origin: %s != %s", clientOrigin().utf8().data(), m_wsOrigin.utf8().data());
+        m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Error during WebSocket handshake: origin mismatch: " + clientOrigin() + " != " + m_wsOrigin, 0, clientOrigin());
         return;
     }
     if (clientLocation() != m_wsLocation) {
-        LOG(Network, "Mismatch location: %s != %s", clientLocation().utf8().data(), m_wsLocation.utf8().data());
+        m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Error during WebSocket handshake: location mismatch: " + clientLocation() + " != " + m_wsLocation, 0, clientOrigin());
         return;
     }
     if (!m_clientProtocol.isEmpty() && m_clientProtocol != m_wsProtocol) {
-        LOG(Network, "Mismatch protocol: %s != %s", m_clientProtocol.utf8().data(), m_wsProtocol.utf8().data());
+        m_context->addMessage(ConsoleDestination, JSMessageSource, LogMessageType, ErrorMessageLevel, "Error during WebSocket handshake: protocol mismatch: " + m_clientProtocol + " != " + m_wsProtocol, 0, clientOrigin());
         return;
     }
     m_mode = Connected;