| importScripts('interfaces.js'); |
| importScripts('worker-testharness.js'); |
| importScripts('../resources/testharness-helpers.js'); |
| |
| var EVENT_HANDLER = 'object'; |
| |
| test(function() { |
| verify_interface('ServiceWorkerGlobalScope', |
| self, |
| { |
| clients: 'object', |
| registration: 'object', |
| skipWaiting: 'function', |
| |
| onactivate: EVENT_HANDLER, |
| onfetch: EVENT_HANDLER, |
| oninstall: EVENT_HANDLER, |
| onmessage: EVENT_HANDLER, |
| onmessageerror: EVENT_HANDLER |
| }); |
| }, 'ServiceWorkerGlobalScope'); |
| |
| test(function() { |
| verify_interface('Clients', |
| self.clients, |
| { |
| claim: 'function', |
| matchAll: 'function' |
| }); |
| }, 'Clients'); |
| |
| test(function() { |
| verify_interface('Client'); |
| // FIXME: Get an instance and test it, or ensure property exists on |
| // prototype. |
| }, 'Client'); |
| |
| test(function() { |
| verify_interface('WindowClient'); |
| // FIXME: Get an instance and test it, or ensure property exists on |
| // prototype. |
| }, 'WindowClient'); |
| |
| test(function() { |
| verify_interface('CacheStorage', |
| self.caches, |
| { |
| match: 'function', |
| has: 'function', |
| open: 'function', |
| delete: 'function', |
| keys: 'function' |
| }); |
| }, 'CacheStorage'); |
| |
| promise_test(function(t) { |
| return create_temporary_cache(t) |
| .then(function(cache) { |
| verify_interface('Cache', |
| cache, |
| { |
| match: 'function', |
| matchAll: 'function', |
| add: 'function', |
| addAll: 'function', |
| put: 'function', |
| delete: 'function', |
| keys: 'function' |
| }); |
| }); |
| }, 'Cache'); |
| |
| test(function() { |
| var req = new Request('http://{{host}}/', |
| {method: 'POST', |
| headers: [['Content-Type', 'Text/Html']]}); |
| assert_equals( |
| new ExtendableEvent('ExtendableEvent').type, |
| 'ExtendableEvent', 'Type of ExtendableEvent should be ExtendableEvent'); |
| assert_throws(new TypeError, function() { |
| new FetchEvent('FetchEvent'); |
| }, 'FetchEvent constructor with one argument throws'); |
| assert_throws(new TypeError, function() { |
| new FetchEvent('FetchEvent', {}); |
| }, 'FetchEvent constructor with empty init dict throws'); |
| assert_throws(new TypeError, function() { |
| new FetchEvent('FetchEvent', {request: null}); |
| }, 'FetchEvent constructor with null request member throws'); |
| assert_equals( |
| new FetchEvent('FetchEvent', {request: req}).type, |
| 'FetchEvent', 'Type of FetchEvent should be FetchEvent'); |
| assert_equals( |
| new FetchEvent('FetchEvent', {request: req}).cancelable, |
| false, 'Default FetchEvent.cancelable should be false'); |
| assert_equals( |
| new FetchEvent('FetchEvent', {request: req}).bubbles, |
| false, 'Default FetchEvent.bubbles should be false'); |
| assert_equals( |
| new FetchEvent('FetchEvent', {request: req}).clientId, |
| null, 'Default FetchEvent.clientId should be null'); |
| assert_equals( |
| new FetchEvent('FetchEvent', {request: req}).isReload, |
| false, 'Default FetchEvent.isReload should be false'); |
| assert_equals( |
| new FetchEvent('FetchEvent', {request: req, cancelable: false}).cancelable, |
| false, 'FetchEvent.cancelable should be false'); |
| assert_equals( |
| new FetchEvent('FetchEvent', {request: req, clientId : 'test-client-id'}).clientId, 'test-client-id', |
| 'FetchEvent.clientId with option {clientId : "test-client-id"} should be "test-client-id"'); |
| assert_equals( |
| new FetchEvent('FetchEvent', {request: req, isReload : true}).isReload, true, |
| 'FetchEvent.isReload with option {isReload : true} should be true'); |
| assert_equals( |
| new FetchEvent('FetchEvent', {request : req, isReload : true}).request.url, |
| 'http://{{host}}/', |
| 'FetchEvent.request.url should return the value it was initialized to'); |
| }, 'Event constructors'); |