Changeset 250385 in webkit


Ignore:
Timestamp:
Sep 26, 2019 10:43:24 AM (5 years ago)
Author:
commit-queue@webkit.org
Message:

Non-callable "handleEvent" property is silently ignored
https://bugs.webkit.org/show_bug.cgi?id=200066

Patch by Alexey Shvayka <Alexey Shvayka> on 2019-09-26
Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/IndexedDB/fire-error-event-exception-expected.txt:
  • web-platform-tests/IndexedDB/fire-success-event-exception-expected.txt:
  • web-platform-tests/IndexedDB/fire-upgradeneeded-event-exception-expected.txt:
  • web-platform-tests/dom/events/EventListener-handleEvent-expected.txt:

Source/WebCore:

Tests: imported/w3c/web-platform-tests/IndexedDB/fire-error-event-exception.html

imported/w3c/web-platform-tests/IndexedDB/fire-success-event-exception.html
imported/w3c/web-platform-tests/IndexedDB/fire-upgradeneeded-event-exception.html
imported/w3c/web-platform-tests/dom/events/EventListener-handleEvent.html

  • bindings/js/JSEventListener.cpp:

(WebCore::JSEventListener::handleEvent): Report TypeError if "handleEvent" is not callable.

Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/imported/w3c/ChangeLog

    r250347 r250385  
     12019-09-26  Alexey Shvayka  <shvaikalesh@gmail.com>
     2
     3        Non-callable "handleEvent" property is silently ignored
     4        https://bugs.webkit.org/show_bug.cgi?id=200066
     5
     6        Reviewed by Darin Adler.
     7
     8        * web-platform-tests/IndexedDB/fire-error-event-exception-expected.txt:
     9        * web-platform-tests/IndexedDB/fire-success-event-exception-expected.txt:
     10        * web-platform-tests/IndexedDB/fire-upgradeneeded-event-exception-expected.txt:
     11        * web-platform-tests/dom/events/EventListener-handleEvent-expected.txt:
     12
    1132019-09-25  Alexey Shvayka  <shvaikalesh@gmail.com>
    214
  • trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/fire-error-event-exception-expected.txt

    r250347 r250385  
    44PASS Exception in error event listener on request
    55PASS Exception in error event listener ("handleEvent" lookup) on request
    6 FAIL Exception in error event listener (non-callable "handleEvent") on request assert_equals: expected "AbortError" but got "ConstraintError"
     6PASS Exception in error event listener (non-callable "handleEvent") on request
    77PASS Exception in second error event listener on request
    88PASS Exception in first error event listener on request, transaction active in second
  • trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/fire-success-event-exception-expected.txt

    r250347 r250385  
    33PASS Exception in success event listener on request
    44PASS Exception in success event listener ("handleEvent" lookup) on request
    5 FAIL Exception in success event listener (non-callable "handleEvent") on request assert_unreached: transaction should abort Reached unreachable code
     5PASS Exception in success event listener (non-callable "handleEvent") on request
    66PASS Exception in second success event listener on request
    77PASS Exception in first success event listener, tx active in second
  • trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/fire-upgradeneeded-event-exception-expected.txt

    r250347 r250385  
    22CONSOLE MESSAGE: line 37: Error
    33CONSOLE MESSAGE: line 44: Error
     4CONSOLE MESSAGE: TypeError: 'handleEvent' property of event listener should be callable
    45CONSOLE MESSAGE: line 62: Error
    56CONSOLE MESSAGE: line 70: Error
     
    89PASS Exception in upgradeneeded listener
    910PASS Exception in upgradeneeded "handleEvent" lookup
    10 FAIL Exception in upgradeneeded due to non-callable "handleEvent" assert_unreached: open should fail Reached unreachable code
     11PASS Exception in upgradeneeded due to non-callable "handleEvent"
    1112PASS Exception in second upgradeneeded listener
    1213PASS Exception in first upgradeneeded listener, tx active in second
  • trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListener-handleEvent-expected.txt

    r248647 r250385  
    11CONSOLE MESSAGE: line 46: [object Object]
     2CONSOLE MESSAGE: line 101: TypeError: 'handleEvent' property of event listener should be callable
     3CONSOLE MESSAGE: line 122: TypeError: 'handleEvent' property of event listener should be callable
    24
    35PASS calls `handleEvent` method of `EventListener`
     
    57PASS performs `Get` every time event is dispatched
    68PASS doesn't call `handleEvent` method on callable `EventListener`
    7 FAIL throws if `handleEvent` is falsy and not callable assert_true: expected true got false
    8 FAIL throws if `handleEvent` is thruthy and not callable assert_true: expected true got false
     9PASS throws if `handleEvent` is falsy and not callable
     10PASS throws if `handleEvent` is thruthy and not callable
    911
  • trunk/Source/WebCore/ChangeLog

    r250384 r250385  
     12019-09-26  Alexey Shvayka  <shvaikalesh@gmail.com>
     2
     3        Non-callable "handleEvent" property is silently ignored
     4        https://bugs.webkit.org/show_bug.cgi?id=200066
     5
     6        Reviewed by Darin Adler.
     7
     8        Tests: imported/w3c/web-platform-tests/IndexedDB/fire-error-event-exception.html
     9               imported/w3c/web-platform-tests/IndexedDB/fire-success-event-exception.html
     10               imported/w3c/web-platform-tests/IndexedDB/fire-upgradeneeded-event-exception.html
     11               imported/w3c/web-platform-tests/dom/events/EventListener-handleEvent.html
     12
     13        * bindings/js/JSEventListener.cpp:
     14        (WebCore::JSEventListener::handleEvent): Report TypeError if "handleEvent" is not callable.
     15
    1162019-09-26  Zalan Bujtas  <zalan@apple.com>
    217
  • trunk/Source/WebCore/bindings/js/JSEventListener.cpp

    r249175 r250385  
    149149        }
    150150        callType = getCallData(vm, handleEventFunction, callData);
    151     }
    152 
    153     if (callType == CallType::None)
    154         return;
     151        if (callType == CallType::None) {
     152            event.target()->uncaughtExceptionInEventHandler();
     153            reportException(exec, createTypeError(exec, "'handleEvent' property of event listener should be callable"_s));
     154            return;
     155        }
     156    }
    155157
    156158    Ref<JSEventListener> protectedThis(*this);
Note: See TracChangeset for help on using the changeset viewer.