Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(51)

Side by Side Diff: chrome/test/data/push_messaging/push_test.js

Issue 894973003: ServiceWorker: Make "ready" fetches registration from browser process(2/3). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: #30 Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 'use strict'; 5 'use strict';
6 6
7 var resultQueue = new ResultQueue(); 7 var resultQueue = new ResultQueue();
8 var pushRegistration = null; 8 var pushRegistration = null;
9 9
10 // Sends data back to the test. This must be in response to an earlier 10 // Sends data back to the test. This must be in response to an earlier
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 function removeManifest() { 85 function removeManifest() {
86 var element = document.querySelector('link[rel="manifest"]'); 86 var element = document.querySelector('link[rel="manifest"]');
87 if (element) { 87 if (element) {
88 element.parentNode.removeChild(element); 88 element.parentNode.removeChild(element);
89 sendResultToTest('manifest removed'); 89 sendResultToTest('manifest removed');
90 } else { 90 } else {
91 sendResultToTest('unable to find manifest element'); 91 sendResultToTest('unable to find manifest element');
92 } 92 }
93 } 93 }
94 94
95 // TODO(xiang): Remove this function after "ready" CL landed.
96 function getReadyRegistration() {
97 return navigator.serviceWorker.getRegistration().then(function(r) {
98 if (r.active)
99 return r;
100 var worker = r.waiting ? r.waiting : r.installing;
101 return new Promise(function(resolve) {
102 worker.onstatechange = function() {
103 if (worker.state === 'activating')
104 resolve(r);
105 };
106 });
107 });
108 }
109
95 function registerPush() { 110 function registerPush() {
96 navigator.serviceWorker.ready.then(function(swRegistration) { 111 getReadyRegistration().then(function(swRegistration) {
97 var registerMethodName = 112 var registerMethodName =
98 swRegistration.pushManager.register ? 'register' : 'subscribe'; 113 swRegistration.pushManager.register ? 'register' : 'subscribe';
99 return swRegistration.pushManager[registerMethodName]() 114 return swRegistration.pushManager[registerMethodName]()
100 .then(function(registration) { 115 .then(function(registration) {
101 pushRegistration = registration; 116 pushRegistration = registration;
102 sendResultToTest(registration.endpoint + ' - ' + 117 sendResultToTest(registration.endpoint + ' - ' +
103 (registration.registrationId || registration.subscriptionId)); 118 (registration.registrationId || registration.subscriptionId));
104 }); 119 });
105 }).catch(sendErrorToTest); 120 }).catch(sendErrorToTest);
106 } 121 }
107 122
108 function hasPermission() { 123 function hasPermission() {
109 navigator.serviceWorker.ready.then(function(swRegistration) { 124 getReadyRegistration().then(function(swRegistration) {
110 return swRegistration.pushManager.hasPermission() 125 return swRegistration.pushManager.hasPermission()
111 .then(function(permission) { 126 .then(function(permission) {
112 sendResultToTest('permission status - ' + permission); 127 sendResultToTest('permission status - ' + permission);
113 }); 128 });
114 }).catch(sendErrorToTest); 129 }).catch(sendErrorToTest);
115 } 130 }
116 131
117 function isControlled() { 132 function isControlled() {
118 if (navigator.serviceWorker.controller) { 133 if (navigator.serviceWorker.controller) {
119 sendResultToTest('true - is controlled'); 134 sendResultToTest('true - is controlled');
(...skipping 11 matching lines...) Expand all
131 var unregisterMethodName = 146 var unregisterMethodName =
132 pushRegistration.unregister ? 'unregister' : 'unsubscribe'; 147 pushRegistration.unregister ? 'unregister' : 'unsubscribe';
133 pushRegistration[unregisterMethodName]().then(function(result) { 148 pushRegistration[unregisterMethodName]().then(function(result) {
134 sendResultToTest('unregister result: ' + result); 149 sendResultToTest('unregister result: ' + result);
135 }, function(error) { 150 }, function(error) {
136 sendResultToTest('unregister error: ' + error.name + ': ' + error.message); 151 sendResultToTest('unregister error: ' + error.name + ': ' + error.message);
137 }); 152 });
138 } 153 }
139 154
140 function hasRegistration() { 155 function hasRegistration() {
141 navigator.serviceWorker.ready.then(function(swRegistration) { 156 getReadyRegistration().then(function(swRegistration) {
142 return swRegistration.pushManager.getSubscription(); 157 return swRegistration.pushManager.getSubscription();
143 }).then(function(subscription) { 158 }).then(function(subscription) {
144 sendResultToTest(subscription ? 'true - registered' 159 sendResultToTest(subscription ? 'true - registered'
145 : 'false - not registered'); 160 : 'false - not registered');
146 }).catch(sendErrorToTest); 161 }).catch(sendErrorToTest);
147 } 162 }
148 163
149 addEventListener('message', function(event) { 164 addEventListener('message', function(event) {
150 var message = JSON.parse(event.data); 165 var message = JSON.parse(event.data);
151 if (message.type == 'push') 166 if (message.type == 'push')
152 resultQueue.push(message.data); 167 resultQueue.push(message.data);
153 }, false); 168 }, false);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698