Re-sync service-workers/service-worker/interfaces-sw.https.html from upstream
[WebKit-https.git] / LayoutTests / imported / w3c / web-platform-tests / service-workers / service-worker / resources / interfaces-worker.sub.js
1 'use strict';
2
3 importScripts('interfaces-idls.js');
4 importScripts('worker-testharness.js');
5 importScripts('/resources/WebIDLParser.js');
6 importScripts('/resources/idlharness.js');
7
8 var idlArray = new IdlArray();
9 idlArray.add_untested_idls(idls.untested);
10 idlArray.add_idls(idls.tested);
11 idlArray.add_objects({
12     ServiceWorkerGlobalScope: ['self'],
13     Clients: ['self.clients'],
14     ServiceWorkerRegistration: ['self.registration'],
15     CacheStorage: ['self.caches']
16     // TODO: Test instances of Client and WindowClient, e.g.
17     // Client: ['self.clientInstance'],
18     // WindowClient: ['self.windowClientInstance']
19   });
20
21 promise_test(function(t) {
22     return create_temporary_cache(t)
23       .then(function(cache) {
24           self.cacheInstance = cache;
25
26           idlArray.add_objects({ Cache: ['self.cacheInstance'] });
27           idlArray.test();
28         });
29   }, 'test setup (cache creation)');
30
31 test(function() {
32     var req = new Request('http://{{host}}/',
33                           {method: 'POST',
34                            headers: [['Content-Type', 'Text/Html']]});
35     assert_equals(
36       new ExtendableEvent('ExtendableEvent').type,
37       'ExtendableEvent', 'Type of ExtendableEvent should be ExtendableEvent');
38     assert_throws(new TypeError, function() {
39         new FetchEvent('FetchEvent');
40     }, 'FetchEvent constructor with one argument throws');
41     assert_throws(new TypeError, function() {
42         new FetchEvent('FetchEvent', {});
43     }, 'FetchEvent constructor with empty init dict throws');
44     assert_throws(new TypeError, function() {
45         new FetchEvent('FetchEvent', {request: null});
46     }, 'FetchEvent constructor with null request member throws');
47     assert_equals(
48       new FetchEvent('FetchEvent', {request: req}).type,
49       'FetchEvent', 'Type of FetchEvent should be FetchEvent');
50     assert_equals(
51       new FetchEvent('FetchEvent', {request: req}).cancelable,
52       false, 'Default FetchEvent.cancelable should be false');
53     assert_equals(
54       new FetchEvent('FetchEvent', {request: req}).bubbles,
55       false, 'Default FetchEvent.bubbles should be false');
56     assert_equals(
57       new FetchEvent('FetchEvent', {request: req}).clientId,
58       '', 'Default FetchEvent.clientId should be the empty string');
59     assert_equals(
60       new FetchEvent('FetchEvent', {request: req, cancelable: false}).cancelable,
61       false, 'FetchEvent.cancelable should be false');
62     assert_equals(
63       new FetchEvent('FetchEvent', {request: req, clientId : 'test-client-id'}).clientId, 'test-client-id',
64       'FetchEvent.clientId with option {clientId : "test-client-id"} should be "test-client-id"');
65     assert_equals(
66       new FetchEvent('FetchEvent', {request : req}).request.url,
67       'http://{{host}}/',
68       'FetchEvent.request.url should return the value it was initialized to');
69     assert_equals(
70       new FetchEvent('FetchEvent', {request : req}).isReload,
71       undefined,
72       'FetchEvent.isReload should not exist');
73
74   }, 'Event constructors');
75
76 test(() => {
77     assert_false('XMLHttpRequest' in self);
78   }, 'xhr is not exposed');