blob: 7b0eaf7b942ab36f73b42850aaa6f2fdc7c47d14 [file] [log] [blame]
// This helper will setup a small test framework that will use TESTS and run
// them sequentially and call self.postMessage('quit') when done.
// This helper also exposes |client|, |postMessage()|, |runNextTestOrQuit()|,
// |synthesizeNotificationClick()| and |initialize()|.
importScripts('sw-test-helpers.js');
importScripts('../../../resources/get-host-info.js');
var TESTS = [
function testWithNoNotificationClick() {
clients.openWindow('/').catch(function(e) {
self.postMessage('openWindow() can\'t open a window without a user interaction');
self.postMessage('openWindow() error is ' + e.name);
}).then(runNextTestOrQuit);
},
function testOpenCrossOriginWindow() {
synthesizeNotificationClick().then(function(e) {
var cross_origin_url =
get_host_info()['HTTP_REMOTE_ORIGIN'] +
'/serviceworker/resources/blank.html';
clients.openWindow(cross_origin_url).then(function(c) {
self.postMessage('openWindow() can open cross origin windows');
self.postMessage('openWindow() result: ' + c);
}).then(runNextTestOrQuit);
});
},
function testOpenNotControlledWindow() {
synthesizeNotificationClick().then(function(e) {
clients.openWindow('/').then(function(c) {
self.postMessage('openWindow() can open not controlled windows');
self.postMessage('openWindow() result: ' + c);
}).then(runNextTestOrQuit);
});
},
function testOpenControlledWindow() {
synthesizeNotificationClick().then(function(e) {
clients.openWindow('blank.html').then(function(c) {
self.postMessage('openWindow() can open controlled windows');
self.postMessage('openWindow() result: ' + c);
self.postMessage(' url: ' + c.url);
self.postMessage(' visibilityState: ' + c.visibilityState);
self.postMessage(' focused: ' + c.focused);
self.postMessage(' frameType: ' + c.frameType);
}).then(runNextTestOrQuit);
});
},
function testOpenAboutBlank() {
synthesizeNotificationClick().then(function(e) {
clients.openWindow('about:blank').then(function(c) {
self.postMessage('openWindow() can open about:blank');
self.postMessage('openWindow() result: ' + c);
}).then(runNextTestOrQuit);
});
},
function testOpenAboutCrash() {
synthesizeNotificationClick().then(function(e) {
clients.openWindow('about:crash').then(function(c) {
self.postMessage('openWindow() can open about:crash');
self.postMessage('openWindow() result: ' + c);
}).then(runNextTestOrQuit);
});
},
function testOpenInvalidURL() {
synthesizeNotificationClick().then(function(e) {
clients.openWindow('http://[test].com').catch(function(error) {
self.postMessage('openWindow() can not open an invalid url');
self.postMessage('openWindow() error is: ' + error.name);
}).then(runNextTestOrQuit);
});
},
function testOpenViewSource() {
synthesizeNotificationClick().then(function(e) {
clients.openWindow('view-source://http://test.com').catch(function(error) {
self.postMessage('openWindow() can not open view-source scheme');
self.postMessage('openWindow() error is: ' + error.name);
}).then(runNextTestOrQuit);
});
},
function testOpenFileScheme() {
synthesizeNotificationClick().then(function(e) {
clients.openWindow('file:///').catch(function(error) {
self.postMessage('openWindow() can not open file scheme');
self.postMessage('openWindow() error is: ' + error.name);
}).then(runNextTestOrQuit);
});
},
];
self.onmessage = function(e) {
if (e.data == 'start') {
e.waitUntil(initialize().then(runNextTestOrQuit));
} else {
e.waitUntil(initialize().then(function() {
self.postMessage('received unexpected message');
self.postMessage('quit');
}));
}
};