Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / LayoutTests / http / tests / serviceworker / chromium / notificationclick-can-focus.html
blob7816ef746021b02831e0b3d83d35ecde68d6109e
1 <!DOCTYPE html>
2 <title>Service Worker: notificationclick can focus WindowClient</title>
3 <script src="../../resources/testharness.js"></script>
4 <script src="../../resources/testharnessreport.js"></script>
5 <script src="../resources/test-helpers.js"></script>
6 <script>
7 if (window.testRunner)
8 testRunner.setPermission('notifications', 'granted', location.origin, location.origin);
10 var t = async_test('notificationclick can focus WindowClient');
11 t.step(function() {
12 var scope = 'resources/blank.html'
13 service_worker_unregister_and_register(
14 t, 'resources/notificationclick-can-focus.js', scope)
15 .then(function(registration) {
16 return wait_for_state(t, registration.installing, 'activated');
18 .then(function() { return with_iframe(scope); })
19 .then(function(frame) {
20 var w = frame.contentWindow;
21 w.navigator.serviceWorker.onmessage = t.step_func(onMessage);
22 w.navigator.serviceWorker.controller.postMessage('start');
24 .catch(unreached_rejection(t));
26 var result = [];
27 var expected = ['focus() outside of a notificationclick event failed',
28 'focus() in notificationclick outside of waitUntil but in stack succeeded',
29 'focus() in notificationclick outside of waitUntil not in stack failed',
30 'focus() in notificationclick\'s waitUntil suceeded',
31 'focus() called twice failed',
32 'focus() failed after timeout',
33 'focus() failed because a window was opened before'];
35 function onMessage(e) {
36 var message = e.data;
38 if (typeof(message) === 'object') {
39 if (message.type !== 'click')
40 return;
41 if (window.testRunner)
42 testRunner.simulateWebNotificationClick(message.title);
43 return;
46 if (message === 'quit') {
47 assert_array_equals(result, expected,
48 'Worker should post back expected messages.');
49 service_worker_unregister_and_done(t, scope);
50 } else {
51 result.push(message);
54 });
55 </script>