Changeset 99864 in webkit


Ignore:
Timestamp:
Nov 10, 2011 8:49:32 AM (13 years ago)
Author:
caseq@chromium.org
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.
Location:
trunk
Files:
1 deleted
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r99862 r99864  
     12011-11-10  Andrey Kosyakov  <caseq@chromium.org>
     2
     3        Web Inspector: wrong JSON.stringify used in webInspector.inspectedWindow.eval() backend
     4        https://bugs.webkit.org/show_bug.cgi?id=63083
     5
     6        Reviewed by Pavel Feldman.
     7
     8        * inspector/extensions/extensions-eval-expected.txt:
     9        * inspector/extensions/extensions-eval.html:
     10        * platform/chromium/inspector/extensions/extensions-eval-expected.txt: Removed.
     11
    1122011-11-10  Florin Malita  <fmalita@google.com>
    213
  • trunk/LayoutTests/inspector/extensions/extensions-eval-expected.txt

    r92961 r99864  
    77RUNNING TEST: extension_testEvalDefinesGlobalSymbols
    88Evaluate: {"func":"function","variable":42} (exception: undefined)
    9 RUNNING TEST: extension_testEvalFailed
    10 Evaluate: "TypeError: JSON.stringify cannot serialize cyclic structures." (exception: true)
    119RUNNING TEST: extension_testEvalOk
    1210Evaluate: {"str":"foo","num":42} (exception: undefined)
    1311RUNNING TEST: extension_testEvalStatement
    1412Evaluate: 0 (exception: undefined)
     13RUNNING TEST: extension_testEvalStringifyingLoopFailed
     14Evaluate: "Object has too long reference chain(must not be longer than 1000)" (exception: true)
    1515RUNNING TEST: extension_testEvalUndefined
    1616Evaluate: undefined (exception: undefined)
     17RUNNING TEST: extension_testWithStringifyOverridden
     18Evaluate: "OK" (exception: undefined)
    1719All tests done.
    1820
  • trunk/LayoutTests/inspector/extensions/extensions-eval.html

    r82713 r99864  
    77window.inspectedValue = { str: "foo", num: 42 };
    88
     9window.loop = { };
     10window.loop.next = window.loop;
     11
    912function extension_testEvalOk(nextTest)
    1013{
     
    1215}
    1316
    14 function extension_testEvalFailed(nextTest)
     17function extension_testEvalStringifyingLoopFailed(nextTest)
    1518{
    16     webInspector.inspectedWindow.eval("document.body", callbackAndNextTest(extension_onEval, nextTest));
     19    webInspector.inspectedWindow.eval("window.loop", callbackAndNextTest(extension_onEval, nextTest));
    1720}
    1821
     
    3942}
    4043
     44function extension_testWithStringifyOverridden(nextTest)
     45{
     46    webInspector.inspectedWindow.eval("(JSON.stringify = function() { throw 'oops! you can not use JSON.stringify'; }), 'OK'", callbackAndNextTest(extension_onEval, nextTest));
     47}
     48
    4149function extension_onEval(value, isException)
    4250{
  • trunk/Source/WebCore/ChangeLog

    r99862 r99864  
     12011-11-10  Andrey Kosyakov  <caseq@chromium.org>
     2
     3        Web Inspector: wrong JSON.stringify used in webInspector.inspectedWindow.eval() backend
     4        https://bugs.webkit.org/show_bug.cgi?id=63083
     5
     6        Reviewed by Pavel Feldman.
     7
     8        * inspector/front-end/ExtensionAPI.js:
     9        (injectedExtensionAPI.InspectedWindow.prototype.eval):
     10        * inspector/front-end/ExtensionServer.js:
     11        (WebInspector.ExtensionServer.prototype._onEvaluateOnInspectedPage):
     12
    1132011-11-10  Florin Malita  <fmalita@google.com>
    214
  • trunk/Source/WebCore/inspector/front-end/ExtensionAPI.js

    r99575 r99864  
    507507        function callbackWrapper(result)
    508508        {
    509             var value = result.value;
    510             if (!result.isException)
    511                 value = value === "undefined" ? undefined : JSON.parse(value);
    512             callback(value, result.isException);
     509            callback(result.value, result.isException);
    513510        }
    514511        return extensionServer.sendRequest({ command: "evaluateOnInspectedPage", expression: expression }, callback && callbackWrapper);
  • trunk/Source/WebCore/inspector/front-end/ExtensionServer.js

    r98541 r99864  
    299299        function callback(error, resultPayload, wasThrown)
    300300        {
    301             if (error)
    302                 return;
    303             var resultObject = WebInspector.RemoteObject.fromPayload(resultPayload);
    304301            var result = {};
     302            if (error) {
     303                result.isException = true;
     304                result.value = error.message;
     305            }  else
     306                result.value = resultPayload.value;
     307
    305308            if (wasThrown)
    306309                result.isException = true;
    307             result.value = resultObject.description;
     310     
    308311            this._dispatchCallback(message.requestId, port, result);
    309312        }
    310         var evalExpression = "JSON.stringify(eval(unescape('" + escape(message.expression) + "')));";
    311         RuntimeAgent.evaluate(evalExpression, "", true, undefined, undefined, undefined, callback.bind(this));
     313        RuntimeAgent.evaluate(message.expression, "", true, undefined, undefined, true, callback.bind(this));
    312314    },
    313315
Note: See TracChangeset for help on using the changeset viewer.