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

Unified Diff: chrome/test/data/extensions/api_test/service_worker/web_accessible_resources/fetch/page.js

Issue 1532633003: Extension SW: Add tests that serve web_accessible_resources from a SW. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove unused var Created 4 years, 12 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 side-by-side diff with in-line comments
Download patch
Index: chrome/test/data/extensions/api_test/service_worker/web_accessible_resources/fetch/page.js
diff --git a/chrome/test/data/extensions/api_test/service_worker/web_accessible_resources/fetch/page.js b/chrome/test/data/extensions/api_test/service_worker/web_accessible_resources/fetch/page.js
new file mode 100644
index 0000000000000000000000000000000000000000..34c3da22bfc3caea996cb24b0427199eb9c88301
--- /dev/null
+++ b/chrome/test/data/extensions/api_test/service_worker/web_accessible_resources/fetch/page.js
@@ -0,0 +1,69 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+var getTestURL = function() {
+ return chrome.runtime.getURL('./data_for_extension');
+};
+
+var workerRegisterAndClaimPromise = function() {
+ return new Promise(function(resolve, reject) {
+ // Register a ServiceWorker and expect it to control subsequent requests.
+ navigator.serviceWorker.register('sw.js').then(function(registration) {
+ return navigator.serviceWorker.ready;
+ }).then(function(registration) {
+ var channel = new MessageChannel();
+ // Wait for ServiceWorker to claim itself.
+ channel.port1.onmessage = function(e) {
+ if (e.data == 'clients claimed') {
+ resolve(registration);
+ } else {
+ reject('Claim failure: ' + e.data);
+ }
+ };
+ registration.active.postMessage('claim', [channel.port2]);
+ }).catch(function(err) {
+ reject(err);
+ });
+ });
+};
+
+var workerControlsPagePromise = function() {
+ return new Promise(function(resolve, reject) {
+ fetch(getTestURL()).then(function(response) {
+ return response.text();
+ }).then(function(text) {
+ if (text != 'SW served data') {
+ reject('Fetch() result error[2]: ' + text);
+ }
+ resolve();
+ }).catch(function(err) {
+ reject(err);
+ });
+ });
+};
+
+var test = function() {
+ var serviceWorkerRegistration;
+ // First request would not be controlled by ServiceWorker as the worker
+ // doesn't exist yet.
+ fetch(getTestURL()).then(function(response) {
+ return response.text();
+ }).then(function(text) {
+ if (text != 'original data\n') {
+ throw 'Fetch() result error[1]: ' + text;
+ }
+ return workerRegisterAndClaimPromise();
+ }).then(function(registration) {
+ serviceWorkerRegistration = registration;
+ return workerControlsPagePromise();
+ }).then(function() {
+ return serviceWorkerRegistration.unregister();
+ }).then(function() {
+ chrome.test.succeed();
+ }).catch(function(err) {
+ chrome.test.fail(err);
+ });
+};
+
+chrome.test.runTests([test]);

Powered by Google App Engine
This is Rietveld 408576698