gecko-dev/testing/web-platform/tests/payment-handler/payment-request-event-constructor.https.serviceworker.js
Jinho Bang 5878d2f49d Bug 1464182 [wpt PR 11146] - PaymentHandler: Fix a crash when creating event object with empty data, a=testonly
Automatic update from web-platform-testsPaymentHandler: Fix a crash when creating event object with empty data

The following codes cause crashes in current implementation.
  - new CanMakePaymentEvent("canmakepaymentevent", {});
  - new PaymentRequestEvent("paymentrequestevent", {});

This patch fixes the problem and fixes/adds WPT tests.

Bug: none
Change-Id: I95375f1148d69a17075d393990e3726ad2bf1cf3
Reviewed-on: https://chromium-review.googlesource.com/1070957
Commit-Queue: Jinho Bang <jinho.bang@samsung.com>
Reviewed-by: Ganggui Tang <gogerald@chromium.org>
Cr-Commit-Position: refs/heads/master@{#563903}

--

wpt-commits: 1dc612f2ed6a6bec861a90ad9bfa9a4336165dcd
wpt-pr: 11146
2018-06-25 21:22:21 +00:00

45 lines
1.5 KiB
JavaScript

importScripts('/resources/testharness.js');
test(() => {
try {
new PaymentRequestEvent('test', undefined);
new PaymentRequestEvent('test', null);
new PaymentRequestEvent('test', {});
} catch (err) {
assert_unreached(`Unexpected exception: ${err.message}`);
}
}, 'PaymentRequestEvent can be constucted in service worker.');
test(() => {
const ev = new PaymentRequestEvent('test', {
bubbles: true,
cancelable: true,
composed: true,
});
assert_false(ev.isTrusted, 'constructed in script, so not be trusted');
assert_true(ev.bubbles, 'set by EventInitDict');
assert_true(ev.cancelable, 'set by EventInitDict');
assert_true(ev.composed, 'set by EventInitDict');
assert_equals(ev.target, null, 'initially null');
assert_equals(ev.type, 'test');
}, 'PaymentRequestEvent can be constructed with an EventInitDict, even if not trusted');
test(() => {
const ev = new PaymentRequestEvent('test', {
topOrigin: 'https://foo.com',
paymentRequestOrigin: 'https://bar.com',
methodData: [],
modifiers: [],
});
assert_false(ev.isTrusted, 'constructed in script, so not be trusted');
assert_equals(ev.topOrigin, 'https://foo.com');
assert_equals(ev.paymentRequestOrigin, 'https://bar.com');
}, 'PaymentRequestEvent can be constructed with a PaymentRequestEventInit, even if not trusted');
test(() => {
const ev = new PaymentRequestEvent('test', {});
self.addEventListener('test', evt => {
assert_equals(ev, evt);
});
self.dispatchEvent(ev);
}, 'PaymentRequestEvent can be dispatched, even if not trusted');