File: shared-worker-options-mismatch.html

package info (click to toggle)
thunderbird 1%3A140.4.0esr-1
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 4,609,432 kB
  • sloc: cpp: 7,672,442; javascript: 5,901,613; ansic: 3,898,954; python: 1,413,343; xml: 653,997; asm: 462,286; java: 180,927; sh: 113,489; makefile: 20,460; perl: 14,288; objc: 13,059; yacc: 4,583; pascal: 3,352; lex: 1,720; ruby: 1,222; exp: 762; sql: 715; awk: 580; php: 436; lisp: 430; sed: 70; csh: 10
file content (67 lines) | stat: -rw-r--r-- 2,805 bytes parent folder | download | duplicates (12)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<!DOCTYPE html>
<title>SharedWorker: type or credentials mismatch failure</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>

const mismatch_test = (testName, firstOptions, secondOptions) => {
  promise_test(async () => {
    firstOptions.name = testName;
    secondOptions.name = testName;
    const scriptURL = 'support/SharedWorker-common.js';
    const firstWorker = new SharedWorker(scriptURL, firstOptions);
    const secondWorker = new SharedWorker(scriptURL, secondOptions);
    const result = new Promise((resolve, reject) => {
      secondWorker.onerror = resolve;
      secondWorker.port.onmessage = () => reject("Worker loaded succesfully");
    });
    secondWorker.port.postMessage("ping");
    await result;
    firstWorker.port.postMessage("close");
    secondWorker.port.postMessage("close");
    return result;
  }, 'Connecting to shared worker with different options should be blocked: '
  + testName);
};

// Tests different type.
mismatch_test('default to module', {}, { type: 'module' });
mismatch_test('module to default', { type: 'module' }, {});
mismatch_test('classic to module', { type: 'classic' }, { type: 'module' });
mismatch_test('module to classic', { type: 'module' }, { type: 'classic' });

// Tests different credentials in classic and module.
['classic', 'module'].forEach(type => {
  mismatch_test('default to omit in ' + type,
                { type },
                { type, credentials: 'omit' });
  mismatch_test('default to include in ' + type,
                { type },
                { type, credentials: 'include' });
  mismatch_test('omit to default in ' + type,
                { type, credentials: 'omit' },
                { type });
  mismatch_test('omit to same-origin in ' + type,
                { type, credentials: 'omit' },
                { type, credentials: 'same-origin' });
  mismatch_test('omit to include in ' + type,
                { type, credentials: 'omit' },
                { type, credentials: 'include' });
  mismatch_test('same-origin to omit in ' + type,
                { type, credentials: 'same-origin'},
                { type, credentials: 'omit' });
  mismatch_test('same-origin to include in ' + type,
                { type, credentials: 'same-origin'},
                { type, credentials: 'include' });
  mismatch_test('include to default in ' + type,
                { type, credentials: 'include' },
                { type });
  mismatch_test('include to omit in ' + type,
                { type, credentials: 'include' },
                { type, credentials: 'omit' });
  mismatch_test('include to same-origin in ' + type,
                { type, credentials: 'include' },
                { type, credentials: 'same-origin' });
});

</script>