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()