⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 94061 in webkit


Ignore:
Timestamp:
Aug 30, 2011, 2:28:09 AM (15 years ago)
Author:
yurys@chromium.org
Message:

Return value of window.onerror has inverted semantics
https://bugs.webkit.org/show_bug.cgi?id=67119

Source/WebCore:

Error is now treated as handled only when window.onerror function returns true.

Reviewed by Darin Adler.

Test: fast/events/window-onerror13.html

  • bindings/js/JSErrorHandler.cpp:

(WebCore::JSErrorHandler::handleEvent):

  • bindings/v8/V8WindowErrorHandler.cpp:

(WebCore::V8WindowErrorHandler::callListenerFunction):

  • bindings/v8/V8WorkerContextErrorHandler.cpp:

(WebCore::V8WorkerContextErrorHandler::callListenerFunction):

LayoutTests:

Reviewed by Darin Adler.

  • fast/events/window-onerror1.html:
  • fast/events/window-onerror11.html:
  • fast/events/window-onerror12.html:
  • fast/events/window-onerror13-expected.txt: Added.
  • fast/events/window-onerror13.html: Copied from LayoutTests/fast/events/window-onerror11.html.
  • fast/events/window-onerror2.html:
  • fast/events/window-onerror3.html:
  • fast/events/window-onerror4.html:
  • fast/events/window-onerror5.html:
  • fast/events/window-onerror6.html:
  • fast/events/window-onerror8.html:
  • fast/events/window-onerror9.html:
  • fast/workers/resources/worker-script-error-bubbled.js:

(onerror):

  • fast/workers/resources/worker-script-error-handled.js:

(onerror):

  • http/tests/security/window-onerror-exception-in-iframe.html:
Location:
trunk
Files:
1 added
18 edited
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r94057 r94061  
     12011-08-29  Yury Semikhatsky  <yurys@chromium.org>
     2
     3        Return value of window.onerror has inverted semantics
     4        https://bugs.webkit.org/show_bug.cgi?id=67119
     5
     6        Reviewed by Darin Adler.
     7
     8        * fast/events/window-onerror1.html:
     9        * fast/events/window-onerror11.html:
     10        * fast/events/window-onerror12.html:
     11        * fast/events/window-onerror13-expected.txt: Added.
     12        * fast/events/window-onerror13.html: Copied from LayoutTests/fast/events/window-onerror11.html.
     13        * fast/events/window-onerror2.html:
     14        * fast/events/window-onerror3.html:
     15        * fast/events/window-onerror4.html:
     16        * fast/events/window-onerror5.html:
     17        * fast/events/window-onerror6.html:
     18        * fast/events/window-onerror8.html:
     19        * fast/events/window-onerror9.html:
     20        * fast/workers/resources/worker-script-error-bubbled.js:
     21        (onerror):
     22        * fast/workers/resources/worker-script-error-handled.js:
     23        (onerror):
     24        * http/tests/security/window-onerror-exception-in-iframe.html:
     25
    1262011-08-30  Takashi Toyoshima  <toyoshim@chromium.org>
    227
  • trunk/LayoutTests/fast/events/window-onerror1.html

    r76216 r94061  
    2121        url = url ? url.match( /[^\/]+\/?$/ )[0] : url;
    2222        print("PASS: caught global error: " + error + " at " + url + ":" + line, "green");
    23         return false;
     23        return true;
    2424    };
    2525    hahaha_good_luck_finding_me(); // caught by window.onerror
  • trunk/LayoutTests/fast/events/window-onerror11.html

    r76216 r94061  
    1919    url = url ? url.match( /[^\/]+\/?$/ )[0] : url;
    2020    log("Main frame window.onerror: " + msg + " at " + url + ":" + line);
    21     return false;
     21    return true;
    2222}
    2323
  • trunk/LayoutTests/fast/events/window-onerror12.html

    r76216 r94061  
    2121    log("url: " + url);
    2222    log("line: " + line);
    23     return false;
     23    return true;
    2424}
    2525
  • trunk/LayoutTests/fast/events/window-onerror13.html

    r94060 r94061  
    55</head>
    66<body>
    7 <p>Test that window.onerror is called on window object. <a href="https://bugs.webkit.org/show_bug.cgi?id=8519">Bug 8519</a>.</p>
     7<p>Test that error is treated as not handled when window.onerror return
     8value is not 'true'. <a href="https://bugs.webkit.org/show_bug.cgi?id=67119">Bug 67119</a>.</p>
    89<div id="console"></div>
    910<script>
     
    1718window.onerror = function(msg, url, line)
    1819{
    19     url = url ? url.match( /[^\/]+\/?$/ )[0] : url;
    20     log("Main frame window.onerror: " + msg + " at " + url + ":" + line);
    21     return false;
     20  log("Uncaught error should be printed in console when window.onerror returns not true.");
     21  log("DONE.");
    2222}
    2323
    24 throwException();
    25 
     24throw "An Error";
    2625</script>
    2726</body>
  • trunk/LayoutTests/fast/events/window-onerror2.html

    r76244 r94061  
    2222        layoutTestController.notifyDone();
    2323
    24     return false;
     24    return true;
    2525}
    2626
  • trunk/LayoutTests/fast/events/window-onerror3.html

    r76216 r94061  
    1212        url = url ? url.match( /[^\/]+\/?$/ )[0] : url;
    1313        log("Error caught successfully: " + error + "\nFile: " + url + "\nLine: " + line)
    14         return false;
     14        return true;
    1515    };
    1616    unknownObject.unknownProperty++;
  • trunk/LayoutTests/fast/events/window-onerror4.html

    r76216 r94061  
    1212        url = url ? url.match( /[^\/]+\/?$/ )[0] : url;
    1313        log("Error caught successfully: " + error + "\nFile: " + url + "\nLine: " + line)
    14         return false;
     14        return true;
    1515    };
    1616    eval("1=2");
  • trunk/LayoutTests/fast/events/window-onerror5.html

    r76216 r94061  
    1212        url = url ? url.match( /[^\/]+\/?$/ )[0] : url;
    1313        log("Error caught successfully: " + error + "\nFile: " + url + "\nLine: " + line)
    14         return false;
     14        return true;
    1515    };
    1616    eval("a(");
  • trunk/LayoutTests/fast/events/window-onerror6.html

    r76216 r94061  
    1515    url = url ? url.match( /[^\/]+\/?$/ )[0] : url;
    1616    log("Main frame window.onerror: " + msg + " at " + url + ":" + line);
    17     return false;
     17    return true;
    1818}
    1919</script>
  • trunk/LayoutTests/fast/events/window-onerror8.html

    r76216 r94061  
    1919    else
    2020        log("FAILED: this === window");
    21     return false;
     21    return true;
    2222}
    2323
  • trunk/LayoutTests/fast/events/window-onerror9.html

    r76216 r94061  
    2626    if (window.layoutTestController)
    2727        layoutTestController.notifyDone();
    28     return false;
     28    return true;
    2929}
    3030
  • trunk/LayoutTests/fast/workers/resources/worker-script-error-bubbled.js

    r89291 r94061  
    55    splitUrl = url.split('/');
    66    postMessage("PASS: onerror in worker context invoked for a script that has script error '" + message + "' at line " + lineno + " in " + splitUrl[splitUrl.length - 1]);
    7     return true;
     7    return false;
    88}
    99
  • trunk/LayoutTests/fast/workers/resources/worker-script-error-handled.js

    r46419 r94061  
    22{
    33    postMessage("onerror invoked for a script that has script error '" + message + "' at line " + lineno);
    4     return false;
     4    return true;
    55}
    66
  • trunk/LayoutTests/http/tests/security/window-onerror-exception-in-iframe.html

    r76216 r94061  
    1818    url = url ? url.match( /[^\/]+\/?$/ )[0] : url;
    1919    log("Main frame window.onerror: " + msg + " at " + url + ":" + line);
    20     return false;
     20    return true;
    2121}
    2222
  • trunk/Source/WebCore/ChangeLog

    r94053 r94061  
     12011-08-29  Yury Semikhatsky  <yurys@chromium.org>
     2
     3        Return value of window.onerror has inverted semantics
     4        https://bugs.webkit.org/show_bug.cgi?id=67119
     5
     6        Error is now treated as handled only when window.onerror function returns true.
     7
     8        Reviewed by Darin Adler.
     9
     10        Test: fast/events/window-onerror13.html
     11
     12        * bindings/js/JSErrorHandler.cpp:
     13        (WebCore::JSErrorHandler::handleEvent):
     14        * bindings/v8/V8WindowErrorHandler.cpp:
     15        (WebCore::V8WindowErrorHandler::callListenerFunction):
     16        * bindings/v8/V8WorkerContextErrorHandler.cpp:
     17        (WebCore::V8WorkerContextErrorHandler::callListenerFunction):
     18
    1192011-08-29  Ryosuke Niwa  <rniwa@webkit.org>
    220
  • trunk/Source/WebCore/bindings/js/JSErrorHandler.cpp

    r81904 r94061  
    103103        else {
    104104            bool retvalbool;
    105             if (returnValue.getBoolean(retvalbool) && !retvalbool)
     105            if (returnValue.getBoolean(retvalbool) && retvalbool)
    106106                event->preventDefault();
    107107        }
  • trunk/Source/WebCore/bindings/v8/V8WindowErrorHandler.cpp

    r77613 r94061  
    5858        tryCatch.SetVerbose(true);
    5959        returnValue = callFunction->Call(thisValue, 3, parameters);
    60         if (!tryCatch.HasCaught() && !returnValue.IsEmpty() && returnValue->IsBoolean() && !returnValue->BooleanValue())
     60        if (!tryCatch.HasCaught() && !returnValue.IsEmpty() && returnValue->IsBoolean() && returnValue->BooleanValue())
    6161            event->preventDefault();
    6262    }
  • trunk/Source/WebCore/bindings/v8/V8WorkerContextErrorHandler.cpp

    r57134 r94061  
    5656        v8::Handle<v8::Value> parameters[3] = { v8String(errorEvent->message()), v8String(errorEvent->filename()), v8::Integer::New(errorEvent->lineno()) };
    5757        returnValue = callFunction->Call(thisValue, 3, parameters);
    58         if (!returnValue.IsEmpty() && returnValue->IsBoolean() && !returnValue->BooleanValue())
     58        if (!returnValue.IsEmpty() && returnValue->IsBoolean() && returnValue->BooleanValue())
    5959            event->preventDefault();
    6060    }
Note: See TracChangeset for help on using the changeset viewer.