Chromium Code Reviews| Index: LayoutTests/http/tests/notifications/serviceworker-notificationclick-event-data-reflection.html |
| diff --git a/LayoutTests/http/tests/notifications/serviceworker-notificationclick-event-reflection.html b/LayoutTests/http/tests/notifications/serviceworker-notificationclick-event-data-reflection.html |
| similarity index 59% |
| copy from LayoutTests/http/tests/notifications/serviceworker-notificationclick-event-reflection.html |
| copy to LayoutTests/http/tests/notifications/serviceworker-notificationclick-event-data-reflection.html |
| index 577c4c5eacffbc6a52e53e91c626e9b24c06eb87..b168099f2036b37305a28cfdf889c752f8646b04 100644 |
| --- a/LayoutTests/http/tests/notifications/serviceworker-notificationclick-event-reflection.html |
| +++ b/LayoutTests/http/tests/notifications/serviceworker-notificationclick-event-data-reflection.html |
| @@ -1,7 +1,7 @@ |
| <!doctype html> |
| <html> |
| <head> |
| - <title>Notifications: Property reflection in the "notificationclick" event.</title> |
| + <title>Notifications: data property reflection in the "notificationclick" event.</title> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| <script src="../serviceworker/resources/test-helpers.js"></script> |
| @@ -10,40 +10,38 @@ |
| <body> |
| <script> |
| // Tests that the notification available in the "notificationclick" event in the |
| - // Service Worker accurately reflects the attributes with which the notification |
| - // was created (for this test --) in the document. |
| + // Service Worker accurately reflects the data attributes of several type |
| + // with which the notification was created (for this test --) in the document. |
| async_test(function(test) { |
| var scope = 'resources/scope/' + location.pathname, |
| script = 'resources/instrumentation-service-worker.js'; |
| - var options = { |
| - title: scope, |
| - dir: 'rtl', |
| - lang: 'nl-NL', |
| - body: 'Hello, world!', |
| - tag: 'tag', |
| - // FIXME: Relative URLs for the icon attribute currently get reflected as |
| - // an absolute URL, which should probably be the given relative URL. |
| - icon: 'https://example/icon.png', |
| - silent: true, |
| - data: [ |
| - { property: 'foobar', |
| - string: '\uDFFF\u0000\uDBFF', |
| - scalar: true }, |
| - 12.15 |
| - ] |
| - }; |
| + // Set notification's data of several type to a structured clone of options's data. |
| + var notificationDataList = new Array( |
| + true, // Check Boolean type |
| + 1024, // Check Number type |
| + Number.NaN, // Check Number.NaN type |
| + 'any data', // Check String type |
| + new Array('Saab', 'Volve', 'BMW'), // Check Array type |
| + { first: 'first', second: 'second' } // Check object |
| + ); |
| testRunner.setPermission('notifications', 'granted', location.origin, location.origin); |
| getActiveServiceWorkerWithMessagePort(test, script, scope).then(function(workerInfo) { |
| // (1) Tell the Service Worker to display a Web Notification. |
| - workerInfo.port.postMessage({ |
| - command: 'show', |
| + var assertNotificationDataReflects = function(pos) { |
| + workerInfo.port.postMessage({ |
| + command: 'show', |
| - title: scope, |
| - options: options |
| - }); |
| + title: scope, |
| + options: { |
| + title: scope, |
| + tag: pos, |
| + data: notificationDataList[pos] |
| + } |
| + }); |
| + }; |
| workerInfo.port.addEventListener('message', function(event) { |
| if (typeof event.data != 'object' || !event.data.command) { |
| @@ -64,17 +62,17 @@ |
| // set on the Notification object are as expected. |
| assert_equals(event.data.command, 'click', 'The notification was expected to be clicked.'); |
| - Object.keys(options).forEach(function(key) { |
| - if (key == 'data') |
| - return; // Check "data" separately to avoid stringifying it. |
| + var pos = event.data.notification.tag; |
| - assert_equals(event.data.notification[key], options[key], 'The ' + key + ' field must be the same.'); |
| - }); |
| + assert_object_equals(event.data.notification.data, notificationDataList[pos], 'The data field must be the same.'); |
| - assert_object_equals(event.data.notification.data, options.data, 'The data field must be the same.'); |
| - |
| - test.done(); |
| + if (pos < notificationDataList.length) |
| + assertNotificationDataReflects(++pos); |
| + else |
| + test.done(); |
| }); |
| + |
| + assertNotificationDataReflects(0); |
|
Peter Beverloo
2015/05/14 16:13:36
How long does it take to run this test?
I'm a bit
Sanghyun Park
2015/05/15 08:52:34
Results of the tests done, it takes less than one
|
| }).catch(unreached_rejection(test)); |
| }, 'Clicking on a notification displayed by a Service Worker the notificationclick event.'); |