Chromium Code Reviews| Index: chrome/test/data/push_messaging/test.html |
| diff --git a/chrome/test/data/push_messaging/test.html b/chrome/test/data/push_messaging/test.html |
| index dd4315029c577a9b2d66afe66913b219c17f6cfd..7328271eb5e93155fc319717207abcfcbaa3fa32 100644 |
| --- a/chrome/test/data/push_messaging/test.html |
| +++ b/chrome/test/data/push_messaging/test.html |
| @@ -4,8 +4,13 @@ |
| <title>Push API Test</title> |
| <link rel="manifest" href="manifest.json"> |
| <script> |
| + var pushData = new FutureData(); |
| + |
| + // Sends data back to the test. This must be in response to an earlier |
| + // request, but it's ok to respond asynchronously. The request blocks until |
| + // the response is sent. |
| function sendResultToTest(result) { |
| - console.log(result); |
| + console.log('sendResultToTest: ' + result); |
| if (window.domAutomationController) { |
| domAutomationController.send('' + result); |
| } |
| @@ -15,11 +20,39 @@ |
| sendResultToTest(error.name + ' - ' + error.message); |
| } |
| + // A container for a single piece of data. The data does not have to be |
| + // available yet when the getter is called, as all responses to the test are |
| + // asynchronous. |
| + function FutureData() { |
| + this.data = null; |
| + this.waiting = false; |
| + } |
| + |
| + // Sends the data to the test if it is available. Otherwise sets the |
| + // |waiting| flag. |
| + FutureData.prototype.get = function() { |
| + if (this.data) { |
|
Peter Beverloo
2014/10/27 15:20:49
Maybe strict check on === null? Also, isn't the pu
Michael van Ouwerkerk
2014/10/27 15:27:18
Something for a later patch, perhaps? For its curr
|
| + sendResultToTest(this.data); |
| + } else { |
| + this.waiting = true; |
| + } |
| + }; |
| + |
| + // Sets a new data value. If the |waiting| flag is on, it is turned off and |
| + // the data is sent to the test. |
| + FutureData.prototype.set = function(data) { |
| + this.data = data; |
| + if (this.waiting) { |
| + sendResultToTest(data); |
| + this.waiting = false; |
| + } |
| + }; |
| + |
| function registerServiceWorker() { |
| - navigator.serviceWorker.register('service_worker.js', {scope: './'}).then(function(swRegistration) { |
| - console.log(swRegistration); |
| - sendResultToTest('ok'); |
| - }, sendErrorToTest); |
| + navigator.serviceWorker.register('service_worker.js', {scope: './'}).then( |
| + function(swRegistration) { |
| + sendResultToTest('ok - service worker registered'); |
| + }, sendErrorToTest); |
| } |
| function registerPush() { |
| @@ -29,7 +62,24 @@ |
| }, sendErrorToTest); |
| }, sendErrorToTest); |
| } |
| + |
| + function isControlled() { |
|
Peter Beverloo
2014/10/27 15:20:49
This is not being used.
Michael van Ouwerkerk
2014/10/27 15:27:18
It is, see push_messaging_browsertest.cc
|
| + if (navigator.serviceWorker.controller) { |
| + sendResultToTest('true - is controlled'); |
| + } else { |
| + sendResultToTest('false - is not controlled'); |
| + } |
| + } |
| + |
| + addEventListener('message', function(event) { |
| + var message = JSON.parse(event.data); |
| + if (message.type == 'push') { |
| + pushData.set(message.data); |
| + } |
| + }, false); |
| </script> |
| </head> |
| - <body>Push API Test</body> |
| + <body> |
| + <h1>Push API Test</h1> |
| + </body> |
| </html> |