2011-06-09 Ilya Tikhonovsky <loislo@chromium.org>
authorloislo@chromium.org <loislo@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 10 Jun 2011 08:33:11 +0000 (08:33 +0000)
committerloislo@chromium.org <loislo@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 10 Jun 2011 08:33:11 +0000 (08:33 +0000)
        Reviewed by Yury Semikhatsky.

        Web Inspector: protocol: json: Whitespace can be inserted between any pair of tokens.
        https://bugs.webkit.org/show_bug.cgi?id=62377

        * inspector/report-protocol-errors-expected.txt:
        * inspector/report-protocol-errors.html:
2011-06-09  Ilya Tikhonovsky  <loislo@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: protocol: json: Whitespace can be inserted between any pair of tokens.
        https://bugs.webkit.org/show_bug.cgi?id=62377

        * inspector/InspectorValues.cpp:

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

LayoutTests/ChangeLog
LayoutTests/inspector/report-protocol-errors-expected.txt
LayoutTests/inspector/report-protocol-errors.html
Source/WebCore/ChangeLog
Source/WebCore/inspector/InspectorValues.cpp

index 8371188..dd28eea 100644 (file)
@@ -1,3 +1,13 @@
+2011-06-09  Ilya Tikhonovsky  <loislo@chromium.org>
+
+        Reviewed by Yury Semikhatsky.
+
+        Web Inspector: protocol: json: Whitespace can be inserted between any pair of tokens.
+        https://bugs.webkit.org/show_bug.cgi?id=62377
+
+        * inspector/report-protocol-errors-expected.txt:
+        * inspector/report-protocol-errors.html:
+
 2011-06-10  Mahesh Kulkarni  <mahesh.kulkarni@nokia.com>
 
         Reviewed by Antonio Gomes.
index 3b8c289..60341bc 100644 (file)
@@ -101,4 +101,94 @@ Tests that InspectorBackendDispatcher is catching incorrect messages.
     }
     id : 7
 }
+{
+    error : {
+        code : -32601
+        message : "Method not found."
+        data : [
+            "Invalid method name was received. 'Page.test' wasn't found."
+        ]
+    }
+    id : 8
+}
+{
+    error : {
+        code : -32601
+        message : "Method not found."
+        data : [
+            "Invalid method name was received. 'Page.test' wasn't found."
+        ]
+    }
+    id : 9
+}
+{
+    error : {
+        code : -32601
+        message : "Method not found."
+        data : [
+            "Invalid method name was received. 'Page.test' wasn't found."
+        ]
+    }
+    id : 10
+}
+{
+    error : {
+        code : -32601
+        message : "Method not found."
+        data : [
+            "Invalid method name was received. 'Page.test' wasn't found."
+        ]
+    }
+    id : 11
+}
+{
+    error : {
+        code : -32601
+        message : "Method not found."
+        data : [
+            "Invalid method name was received. 'Page.test' wasn't found."
+        ]
+    }
+    id : 12
+}
+{
+    error : {
+        code : -32601
+        message : "Method not found."
+        data : [
+            "Invalid method name was received. 'Page.test' wasn't found."
+        ]
+    }
+    id : 13
+}
+{
+    error : {
+        code : -32601
+        message : "Method not found."
+        data : [
+            "Invalid method name was received. 'Page.test' wasn't found."
+        ]
+    }
+    id : 14
+}
+{
+    error : {
+        code : -32601
+        message : "Method not found."
+        data : [
+            "Invalid method name was received. 'Page.test' wasn't found."
+        ]
+    }
+    id : 15
+}
+{
+    error : {
+        code : -32601
+        message : "Method not found."
+        data : [
+            "Invalid method name was received. 'Page.test' wasn't found."
+        ]
+    }
+    id : 16
+}
 
index 530a0a6..ab41564 100644 (file)
@@ -16,6 +16,15 @@ function test()
         '{"id":5,"method":"Page.getResourceContent","params":[]}',
         '{"id":6,"method":"Page.getResourceContent","params":{}}',
         '{"id":7,"method":"Page.getResourceContent","params":{"frameId":"not a number"}}',
+        '{"id":8,"method":"Page.test"}',
+        '{"id":9,"method":"Page.test" }',
+        '{"id":10,"method": "Page.test" }',
+        '{"id":11,"method" : "Page.test" }',
+        '{"id":12, "method" : "Page.test" }',
+        '{"id": 13, "method" : "Page.test" }',
+        '{"id" : 14, "method" : "Page.test" }',
+        '{ "id" : 15, "method" : "Page.test" }',
+        '{  "id"\n :\r 16,\t "method"\f :\v "Page.test" }',
     ];
     var numberOfReports = 0;
 
index 13f9150..9fb2864 100644 (file)
@@ -1,3 +1,12 @@
+2011-06-09  Ilya Tikhonovsky  <loislo@chromium.org>
+
+        Reviewed by Yury Semikhatsky.
+
+        Web Inspector: protocol: json: Whitespace can be inserted between any pair of tokens.
+        https://bugs.webkit.org/show_bug.cgi?id=62377
+
+        * inspector/InspectorValues.cpp:
+
 2011-06-09  Jer Noble  <jer.noble@apple.com>
 
         Reviewed by Darin Adler.
index c80de51..2e72996 100644 (file)
@@ -186,11 +186,16 @@ bool parseStringToken(const UChar* start, const UChar* end, const UChar** tokenE
     return false;
 }
 
-Token parseToken(const UChar* start, const UChar* end, const UChar** tokenEnd)
+Token parseToken(const UChar* start, const UChar* end, const UChar** tokenStart, const UChar** tokenEnd)
 {
+    while (start < end && u_isspace(*start))
+        ++start;
+
     if (start == end)
         return INVALID_TOKEN;
 
+    *tokenStart = start;
+
     switch (*start) {
     case 'n':
         if (parseConstToken(start, end, tokenEnd, nullString))
@@ -330,8 +335,9 @@ PassRefPtr<InspectorValue> buildValue(const UChar* start, const UChar* end, cons
         return 0;
 
     RefPtr<InspectorValue> result;
+    const UChar* tokenStart;
     const UChar* tokenEnd;
-    Token token = parseToken(start, end, &tokenEnd);
+    Token token = parseToken(start, end, &tokenStart, &tokenEnd);
     switch (token) {
     case INVALID_TOKEN:
         return 0;
@@ -346,7 +352,7 @@ PassRefPtr<InspectorValue> buildValue(const UChar* start, const UChar* end, cons
         break;
     case NUMBER: {
         bool ok;
-        double value = charactersToDouble(start, tokenEnd - start, &ok);
+        double value = charactersToDouble(tokenStart, tokenEnd - tokenStart, &ok);
         if (!ok)
             return 0;
         result = InspectorBasicValue::create(value);
@@ -354,7 +360,7 @@ PassRefPtr<InspectorValue> buildValue(const UChar* start, const UChar* end, cons
     }
     case STRING: {
         String value;
-        bool ok = decodeString(start + 1, tokenEnd - 1, &value);
+        bool ok = decodeString(tokenStart + 1, tokenEnd - 1, &value);
         if (!ok)
             return 0;
         result = InspectorString::create(value);
@@ -363,7 +369,7 @@ PassRefPtr<InspectorValue> buildValue(const UChar* start, const UChar* end, cons
     case ARRAY_BEGIN: {
         RefPtr<InspectorArray> array = InspectorArray::create();
         start = tokenEnd;
-        token = parseToken(start, end, &tokenEnd);
+        token = parseToken(start, end, &tokenStart, &tokenEnd);
         while (token != ARRAY_END) {
             RefPtr<InspectorValue> arrayNode = buildValue(start, end, &tokenEnd, depth + 1);
             if (!arrayNode)
@@ -372,10 +378,10 @@ PassRefPtr<InspectorValue> buildValue(const UChar* start, const UChar* end, cons
 
             // After a list value, we expect a comma or the end of the list.
             start = tokenEnd;
-            token = parseToken(start, end, &tokenEnd);
+            token = parseToken(start, end, &tokenStart, &tokenEnd);
             if (token == LIST_SEPARATOR) {
                 start = tokenEnd;
-                token = parseToken(start, end, &tokenEnd);
+                token = parseToken(start, end, &tokenStart, &tokenEnd);
                 if (token == ARRAY_END)
                     return 0;
             } else if (token != ARRAY_END) {
@@ -391,16 +397,16 @@ PassRefPtr<InspectorValue> buildValue(const UChar* start, const UChar* end, cons
     case OBJECT_BEGIN: {
         RefPtr<InspectorObject> object = InspectorObject::create();
         start = tokenEnd;
-        token = parseToken(start, end, &tokenEnd);
+        token = parseToken(start, end, &tokenStart, &tokenEnd);
         while (token != OBJECT_END) {
             if (token != STRING)
                 return 0;
             String key;
-            if (!decodeString(start + 1, tokenEnd - 1, &key))
+            if (!decodeString(tokenStart + 1, tokenEnd - 1, &key))
                 return 0;
             start = tokenEnd;
 
-            token = parseToken(start, end, &tokenEnd);
+            token = parseToken(start, end, &tokenStart, &tokenEnd);
             if (token != OBJECT_PAIR_SEPARATOR)
                 return 0;
             start = tokenEnd;
@@ -413,10 +419,10 @@ PassRefPtr<InspectorValue> buildValue(const UChar* start, const UChar* end, cons
 
             // After a key/value pair, we expect a comma or the end of the
             // object.
-            token = parseToken(start, end, &tokenEnd);
+            token = parseToken(start, end, &tokenStart, &tokenEnd);
             if (token == LIST_SEPARATOR) {
                 start = tokenEnd;
-                token = parseToken(start, end, &tokenEnd);
+                token = parseToken(start, end, &tokenStart, &tokenEnd);
                  if (token == OBJECT_END)
                     return 0;
             } else if (token != OBJECT_END) {