Title: [99864] trunk
Revision
99864
Author
[email protected]
Date
2011-11-10 08:49:32 -0800 (Thu, 10 Nov 2011)

Log Message

Web Inspector: wrong JSON.stringify used in webInspector.inspectedWindow.eval() backend
https://bugs.webkit.org/show_bug.cgi?id=63083

Reviewed by Pavel Feldman.

Source/WebCore:

* inspector/front-end/ExtensionAPI.js:
(injectedExtensionAPI.InspectedWindow.prototype.eval):
* inspector/front-end/ExtensionServer.js:
(WebInspector.ExtensionServer.prototype._onEvaluateOnInspectedPage):

LayoutTests:

* inspector/extensions/extensions-eval-expected.txt:
* inspector/extensions/extensions-eval.html:
* platform/chromium/inspector/extensions/extensions-eval-expected.txt: Removed.

Modified Paths

Removed Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (99863 => 99864)


--- trunk/LayoutTests/ChangeLog	2011-11-10 16:47:25 UTC (rev 99863)
+++ trunk/LayoutTests/ChangeLog	2011-11-10 16:49:32 UTC (rev 99864)
@@ -1,3 +1,14 @@
+2011-11-10  Andrey Kosyakov  <[email protected]>
+
+        Web Inspector: wrong JSON.stringify used in webInspector.inspectedWindow.eval() backend
+        https://bugs.webkit.org/show_bug.cgi?id=63083
+
+        Reviewed by Pavel Feldman.
+
+        * inspector/extensions/extensions-eval-expected.txt:
+        * inspector/extensions/extensions-eval.html:
+        * platform/chromium/inspector/extensions/extensions-eval-expected.txt: Removed.
+
 2011-11-10  Florin Malita  <[email protected]>
 
         SVG object covers CSS background in HTML foreignObject

Modified: trunk/LayoutTests/inspector/extensions/extensions-eval-expected.txt (99863 => 99864)


--- trunk/LayoutTests/inspector/extensions/extensions-eval-expected.txt	2011-11-10 16:47:25 UTC (rev 99863)
+++ trunk/LayoutTests/inspector/extensions/extensions-eval-expected.txt	2011-11-10 16:49:32 UTC (rev 99864)
@@ -6,13 +6,15 @@
 Evaluate: "function" (exception: undefined)
 RUNNING TEST: extension_testEvalDefinesGlobalSymbols
 Evaluate: {"func":"function","variable":42} (exception: undefined)
-RUNNING TEST: extension_testEvalFailed
-Evaluate: "TypeError: JSON.stringify cannot serialize cyclic structures." (exception: true)
 RUNNING TEST: extension_testEvalOk
 Evaluate: {"str":"foo","num":42} (exception: undefined)
 RUNNING TEST: extension_testEvalStatement
 Evaluate: 0 (exception: undefined)
+RUNNING TEST: extension_testEvalStringifyingLoopFailed
+Evaluate: "Object has too long reference chain(must not be longer than 1000)" (exception: true)
 RUNNING TEST: extension_testEvalUndefined
 Evaluate: undefined (exception: undefined)
+RUNNING TEST: extension_testWithStringifyOverridden
+Evaluate: "OK" (exception: undefined)
 All tests done.
 

Modified: trunk/LayoutTests/inspector/extensions/extensions-eval.html (99863 => 99864)


--- trunk/LayoutTests/inspector/extensions/extensions-eval.html	2011-11-10 16:47:25 UTC (rev 99863)
+++ trunk/LayoutTests/inspector/extensions/extensions-eval.html	2011-11-10 16:49:32 UTC (rev 99864)
@@ -6,14 +6,17 @@
 
 window.inspectedValue = { str: "foo", num: 42 };
 
+window.loop = { };
+window.loop.next = window.loop;
+
 function extension_testEvalOk(nextTest)
 {
     webInspector.inspectedWindow.eval("inspectedValue", callbackAndNextTest(extension_onEval, nextTest));
 }
 
-function extension_testEvalFailed(nextTest)
+function extension_testEvalStringifyingLoopFailed(nextTest)
 {
-    webInspector.inspectedWindow.eval("document.body", callbackAndNextTest(extension_onEval, nextTest));
+    webInspector.inspectedWindow.eval("window.loop", callbackAndNextTest(extension_onEval, nextTest));
 }
 
 function extension_testEvalDefinesGlobalSymbols(nextTest)
@@ -38,6 +41,11 @@
     webInspector.inspectedWindow.eval("typeof inspect", callbackAndNextTest(extension_onEval, nextTest));
 }
 
+function extension_testWithStringifyOverridden(nextTest)
+{
+    webInspector.inspectedWindow.eval("(JSON.stringify = function() { throw 'oops! you can not use JSON.stringify'; }), 'OK'", callbackAndNextTest(extension_onEval, nextTest));
+}
+
 function extension_onEval(value, isException)
 {
     output("Evaluate: " + JSON.stringify(value) + " (exception: " + isException + ")");

Deleted: trunk/LayoutTests/platform/chromium/inspector/extensions/extensions-eval-expected.txt (99863 => 99864)


--- trunk/LayoutTests/platform/chromium/inspector/extensions/extensions-eval-expected.txt	2011-11-10 16:47:25 UTC (rev 99863)
+++ trunk/LayoutTests/platform/chromium/inspector/extensions/extensions-eval-expected.txt	2011-11-10 16:49:32 UTC (rev 99864)
@@ -1,18 +0,0 @@
-Tests WebInspector extension API
-
-Started extension.
-Running tests...
-RUNNING TEST: extension_testEvalConsoleAPI
-Evaluate: "function" (exception: undefined)
-RUNNING TEST: extension_testEvalDefinesGlobalSymbols
-Evaluate: {"func":"function","variable":42} (exception: undefined)
-RUNNING TEST: extension_testEvalFailed
-Evaluate: "TypeError: Converting circular structure to JSON" (exception: true)
-RUNNING TEST: extension_testEvalOk
-Evaluate: {"str":"foo","num":42} (exception: undefined)
-RUNNING TEST: extension_testEvalStatement
-Evaluate: 0 (exception: undefined)
-RUNNING TEST: extension_testEvalUndefined
-Evaluate: undefined (exception: undefined)
-All tests done.
-

Modified: trunk/Source/WebCore/ChangeLog (99863 => 99864)


--- trunk/Source/WebCore/ChangeLog	2011-11-10 16:47:25 UTC (rev 99863)
+++ trunk/Source/WebCore/ChangeLog	2011-11-10 16:49:32 UTC (rev 99864)
@@ -1,3 +1,15 @@
+2011-11-10  Andrey Kosyakov  <[email protected]>
+
+        Web Inspector: wrong JSON.stringify used in webInspector.inspectedWindow.eval() backend
+        https://bugs.webkit.org/show_bug.cgi?id=63083
+
+        Reviewed by Pavel Feldman.
+
+        * inspector/front-end/ExtensionAPI.js:
+        (injectedExtensionAPI.InspectedWindow.prototype.eval):
+        * inspector/front-end/ExtensionServer.js:
+        (WebInspector.ExtensionServer.prototype._onEvaluateOnInspectedPage):
+
 2011-11-10  Florin Malita  <[email protected]>
 
         SVG object covers CSS background in HTML foreignObject

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


--- trunk/Source/WebCore/inspector/front-end/ExtensionAPI.js	2011-11-10 16:47:25 UTC (rev 99863)
+++ trunk/Source/WebCore/inspector/front-end/ExtensionAPI.js	2011-11-10 16:49:32 UTC (rev 99864)
@@ -506,10 +506,7 @@
     {
         function callbackWrapper(result)
         {
-            var value = result.value;
-            if (!result.isException)
-                value = value === "undefined" ? undefined : JSON.parse(value);
-            callback(value, result.isException);
+            callback(result.value, result.isException);
         }
         return extensionServer.sendRequest({ command: "evaluateOnInspectedPage", _expression_: _expression_ }, callback && callbackWrapper);
     },

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


--- trunk/Source/WebCore/inspector/front-end/ExtensionServer.js	2011-11-10 16:47:25 UTC (rev 99863)
+++ trunk/Source/WebCore/inspector/front-end/ExtensionServer.js	2011-11-10 16:49:32 UTC (rev 99864)
@@ -298,17 +298,19 @@
     {
         function callback(error, resultPayload, wasThrown)
         {
-            if (error)
-                return;
-            var resultObject = WebInspector.RemoteObject.fromPayload(resultPayload);
             var result = {};
+            if (error) {
+                result.isException = true;
+                result.value = error.message;
+            }  else
+                result.value = resultPayload.value;
+
             if (wasThrown)
                 result.isException = true;
-            result.value = resultObject.description;
+      
             this._dispatchCallback(message.requestId, port, result);
         }
-        var evalExpression = "JSON.stringify(eval(unescape('" + escape(message._expression_) + "')));";
-        RuntimeAgent.evaluate(evalExpression, "", true, undefined, undefined, undefined, callback.bind(this));
+        RuntimeAgent.evaluate(message._expression_, "", true, undefined, undefined, true, callback.bind(this));
     },
 
     _onGetConsoleMessages: function()
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to