Changeset 142486 in webkit


Ignore:
Timestamp:
Feb 11, 2013 10:05:33 AM (11 years ago)
Author:
caseq@chromium.org
Message:

Web Inspector: [Extension API] adjust inspectedWindow.eval() callback parameters to expose non-exceptional error
https://bugs.webkit.org/show_bug.cgi?id=108640

Reviewed by Vsevolod Vlasov.

Source/WebCore:

  • only set first parameter to eval() callback iff expression successfully evaluates;
  • use object, not bool as second parameter;
  • pass exceptions and extension errors as second parameter if evaluate failed;
  • minor drive-by changes in ExtensionAPI utilities.
  • inspector/front-end/ExtensionAPI.js:

(injectedExtensionAPI.ExtensionSidebarPaneImpl.prototype.setExpression):
(injectedExtensionAPI.InspectedWindow.prototype.):
(injectedExtensionAPI.InspectedWindow.prototype.eval):
(injectedExtensionAPI.extractCallbackArgument):

  • inspector/front-end/ExtensionServer.js:

(WebInspector.ExtensionServer.prototype.):
(WebInspector.ExtensionServer.prototype._onEvaluateOnInspectedPage):
(WebInspector.ExtensionStatus):

LayoutTests:

Rebase tests following change in exception parameter to inspectedWindow.eval() callback.

  • inspector/extensions/extensions-eval-expected.txt:
  • inspector/extensions/extensions-eval.html:
  • inspector/extensions/extensions-sidebar-expected.txt:
Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r142485 r142486  
     12013-02-01  Andrey Kosyakov  <caseq@chromium.org>
     2
     3        Web Inspector: [Extension API] adjust inspectedWindow.eval() callback parameters to expose non-exceptional error
     4        https://bugs.webkit.org/show_bug.cgi?id=108640
     5
     6        Reviewed by Vsevolod Vlasov.
     7
     8        Rebase tests following change in exception parameter to inspectedWindow.eval() callback.
     9
     10        * inspector/extensions/extensions-eval-expected.txt:
     11        * inspector/extensions/extensions-eval.html:
     12        * inspector/extensions/extensions-sidebar-expected.txt:
     13
    1142013-02-11  Andrey Kosyakov  <caseq@chromium.org>
    215
  • trunk/LayoutTests/inspector/extensions/extensions-eval-expected.txt

    r140114 r142486  
    1212Evaluate: 0 (exception: undefined)
    1313RUNNING TEST: extension_testEvalStringifyingLoopFailed
    14 Evaluate: "Object has too long reference chain(must not be longer than 1000)" (exception: true)
     14log: Extension server error: Inspector protocol error: Object has too long reference chain(must not be longer than 1000)
     15Evaluate: undefined (exception: {"code":"E_PROTOCOLERROR","description":"Inspector protocol error: %s","details":["Object has too long reference chain(must not be longer than 1000)"],"isError":true})
    1516RUNNING TEST: extension_testEvalThrows
    16 Evaluate: "testExceptionString" (exception: true)
     17Evaluate: undefined (exception: {"isException":true,"value":"testExceptionString"})
    1718RUNNING TEST: extension_testEvalUndefined
    1819Evaluate: undefined (exception: undefined)
  • trunk/LayoutTests/inspector/extensions/extensions-eval.html

    r140114 r142486  
    5252}
    5353
    54 function extension_onEval(value, isException)
     54function extension_onEval(value, status)
    5555{
    56     output("Evaluate: " + JSON.stringify(value) + " (exception: " + isException + ")");
     56    var exceptionString = typeof status === "undefined" ? "undefined" : JSON.stringify(status);
     57    output("Evaluate: " + JSON.stringify(value) + " (exception: " + exceptionString + ")");
    5758}
    5859
  • trunk/LayoutTests/inspector/extensions/extensions-sidebar-expected.txt

    r127147 r142486  
    77Got onShown(), frame not defined
    88RUNNING TEST: extension_testSidebarSetExpression
     9log: Extension server error: Inspector protocol error: Object has too long reference chain(must not be longer than 1000)
    910Sidebar content: titlef0: "expression"f1: undefinedf2: nullf3: Objectf4: Array[0]f5: Array[3]f6: Objectf7: 42f8: Locationf9: HTMLCollection[2]f10: function () {}f11: "foo"__proto__: Object
    1011RUNNING TEST: extension_testSidebarSetObject
  • trunk/Source/WebCore/ChangeLog

    r142485 r142486  
     12013-02-01  Andrey Kosyakov  <caseq@chromium.org>
     2
     3        Web Inspector: [Extension API] adjust inspectedWindow.eval() callback parameters to expose non-exceptional error
     4        https://bugs.webkit.org/show_bug.cgi?id=108640
     5
     6        Reviewed by Vsevolod Vlasov.
     7
     8        - only set first parameter to eval() callback iff expression successfully evaluates;
     9        - use object, not bool as second parameter;
     10        - pass exceptions and extension errors as second parameter if evaluate failed;
     11        - minor drive-by changes in ExtensionAPI utilities.
     12
     13        * inspector/front-end/ExtensionAPI.js:
     14        (injectedExtensionAPI.ExtensionSidebarPaneImpl.prototype.setExpression):
     15        (injectedExtensionAPI.InspectedWindow.prototype.):
     16        (injectedExtensionAPI.InspectedWindow.prototype.eval):
     17        (injectedExtensionAPI.extractCallbackArgument):
     18        * inspector/front-end/ExtensionServer.js:
     19        (WebInspector.ExtensionServer.prototype.):
     20        (WebInspector.ExtensionServer.prototype._onEvaluateOnInspectedPage):
     21        (WebInspector.ExtensionStatus):
     22
    1232013-02-11  Andrey Kosyakov  <caseq@chromium.org>
    224
  • trunk/Source/WebCore/inspector/front-end/ExtensionAPI.js

    r142485 r142486  
    450450    setExpression: function(expression, rootTitle, evaluateOptions)
    451451    {
    452         var callback = extractCallbackArgument(arguments);
    453452        var request = {
    454453            command: commands.SetSidebarContent,
     
    460459        if (typeof evaluateOptions === "object")
    461460            request.evaluateOptions = evaluateOptions;
    462         extensionServer.sendRequest(request, callback);
     461        extensionServer.sendRequest(request, extractCallbackArgument(arguments));
    463462    },
    464463
     
    658657        function callbackWrapper(result)
    659658        {
    660             callback(result.value, result.isException);
     659            if (result.isError || result.isException)
     660                callback(undefined, result);
     661            else
     662                callback(result.value);
    661663        }
    662664        var request = {
  • trunk/Source/WebCore/inspector/front-end/ExtensionServer.js

    r142283 r142486  
    330330        function callback(error, resultPayload, wasThrown)
    331331        {
    332             var result = {};
    333             if (error) {
    334                 result.isException = true;
    335                 result.value = error.toString();
    336             }  else if (wasThrown) {
    337                 result.isException = true;
    338                 result.value = resultPayload.description;
    339             } else {
    340                 result.value = resultPayload.value;
    341             }
     332            if (error)
     333                result = this._status.E_PROTOCOLERROR(error.toString());
     334            else if (wasThrown)
     335                result = { isException: true, value: resultPayload.description };
     336            else
     337                result = { value: resultPayload.value };
    342338     
    343339            this._dispatchCallback(message.requestId, port, result);
     
    820816    this.E_NOTFOUND = makeStatus.bind(null, "E_NOTFOUND", "Object not found: %s");
    821817    this.E_NOTSUPPORTED = makeStatus.bind(null, "E_NOTSUPPORTED", "Object does not support requested operation: %s");
     818    this.E_PROTOCOLERROR = makeStatus.bind(null, "E_PROTOCOLERROR", "Inspector protocol error: %s");
    822819    this.E_FAILED = makeStatus.bind(null, "E_FAILED", "Operation failed: %s");
    823820}
Note: See TracChangeset for help on using the changeset viewer.