| Differences between
and this patch
- a/Source/JavaScriptCore/ChangeLog +12 lines
Lines 1-3 a/Source/JavaScriptCore/ChangeLog_sec1
1
2021-01-22  Yusuke Suzuki  <ysuzuki@apple.com>
2
3
        Should SharedArrayBuffer/WebAssembly.Memory really throw?
4
        https://bugs.webkit.org/show_bug.cgi?id=220364
5
6
        Reviewed by NOBODY (OOPS!).
7
8
        Not accessing "shared" field if Options::useSharedArrayBuffer() is false.
9
10
        * wasm/js/WebAssemblyMemoryConstructor.cpp:
11
        (JSC::JSC_DEFINE_HOST_FUNCTION):
12
1
2021-01-22  Keith Miller  <keith_miller@apple.com>
13
2021-01-22  Keith Miller  <keith_miller@apple.com>
2
14
3
        Obj-C API should do correct type checks when using a 32-bit address space
15
        Obj-C API should do correct type checks when using a 32-bit address space
- a/Source/JavaScriptCore/wasm/js/WebAssemblyMemoryConstructor.cpp -10 / +10 lines
Lines 117-132 JSC_DEFINE_HOST_FUNCTION(constructJSWebAssemblyMemory, (JSGlobalObject* globalOb a/Source/JavaScriptCore/wasm/js/WebAssemblyMemoryConstructor.cpp_sec1
117
    }
117
    }
118
118
119
    Wasm::MemorySharingMode sharingMode = Wasm::MemorySharingMode::Default;
119
    Wasm::MemorySharingMode sharingMode = Wasm::MemorySharingMode::Default;
120
    JSValue sharedValue = memoryDescriptor->get(globalObject, Identifier::fromString(vm, "shared"));
120
    if (Options::useSharedArrayBuffer()) {
121
    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
121
        JSValue sharedValue = memoryDescriptor->get(globalObject, Identifier::fromString(vm, "shared"));
122
    bool shared = sharedValue.toBoolean(globalObject);
122
        RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
123
    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
123
        bool shared = sharedValue.toBoolean(globalObject);
124
    if (shared) {
124
        RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
125
        if (!maximumPageCount)
125
        if (shared) {
126
            return throwVMTypeError(globalObject, throwScope, "'maximum' page count must be defined if 'shared' is true"_s);
126
            if (!maximumPageCount)
127
        if (!Options::useSharedArrayBuffer())
127
                return throwVMTypeError(globalObject, throwScope, "'maximum' page count must be defined if 'shared' is true"_s);
128
            return throwVMTypeError(globalObject, throwScope, "Shared WebAssembly.Memory and SharedArrayBuffer are not enabled"_s);
128
            sharingMode = Wasm::MemorySharingMode::Shared;
129
        sharingMode = Wasm::MemorySharingMode::Shared;
129
        }
130
    }
130
    }
131
131
132
    auto* jsMemory = JSWebAssemblyMemory::tryCreate(globalObject, vm, webAssemblyMemoryStructure);
132
    auto* jsMemory = JSWebAssemblyMemory::tryCreate(globalObject, vm, webAssemblyMemoryStructure);
- a/LayoutTests/imported/w3c/ChangeLog +158 lines
Lines 1-3 a/LayoutTests/imported/w3c/ChangeLog_sec1
1
2021-01-22  Yusuke Suzuki  <ysuzuki@apple.com>
2
3
        Should SharedArrayBuffer/WebAssembly.Memory really throw?
4
        https://bugs.webkit.org/show_bug.cgi?id=220364
5
6
        Reviewed by NOBODY (OOPS!).
7
8
        To update wasm/ and common/sab.js, import wasm and common updates.
9
10
        * resources/import-expectations.json:
11
        * web-platform-tests/common/__init__.py: Added.
12
        * web-platform-tests/common/echo.py:
13
        (main):
14
        * web-platform-tests/common/get-host-info.sub.js:
15
        (get_host_info):
16
        * web-platform-tests/common/redirect-opt-in.py:
17
        (main):
18
        * web-platform-tests/common/sab.js:
19
        (const.createBuffer):
20
        * web-platform-tests/common/security-features/README.md:
21
        * web-platform-tests/common/security-features/__init__.py: Added.
22
        * web-platform-tests/common/security-features/scope/__init__.py: Added.
23
        * web-platform-tests/common/security-features/scope/document.py:
24
        (main):
25
        * web-platform-tests/common/security-features/scope/util.py:
26
        (get_template):
27
        (__noop):
28
        (respond):
29
        * web-platform-tests/common/security-features/scope/w3c-import.log:
30
        * web-platform-tests/common/security-features/scope/worker.py:
31
        (main):
32
        * web-platform-tests/common/security-features/subresource/audio.py:
33
        (generate_payload):
34
        (main):
35
        * web-platform-tests/common/security-features/subresource/document.py:
36
        (generate_payload):
37
        * web-platform-tests/common/security-features/subresource/empty.py:
38
        (generate_payload):
39
        (main):
40
        * web-platform-tests/common/security-features/subresource/font.py:
41
        (decodebytes):
42
        (generate_payload):
43
        (generate_report_headers_payload):
44
        (main):
45
        * web-platform-tests/common/security-features/subresource/image.py:
46
        (Image.save):
47
        (encode_string_as_bmp_image):
48
        (generate_payload):
49
        (generate_report_headers_payload):
50
        (main):
51
        * web-platform-tests/common/security-features/subresource/referrer.py:
52
        (main):
53
        * web-platform-tests/common/security-features/subresource/script.py:
54
        (generate_payload):
55
        (main):
56
        * web-platform-tests/common/security-features/subresource/shared-worker.py:
57
        (generate_payload):
58
        (main):
59
        * web-platform-tests/common/security-features/subresource/static-import.py:
60
        (generate_payload):
61
        (main):
62
        * web-platform-tests/common/security-features/subresource/stylesheet.py:
63
        (generate_payload):
64
        (generate_import_rule):
65
        (generate_report_headers_payload):
66
        (main):
67
        * web-platform-tests/common/security-features/subresource/subresource.py:
68
        (get_template):
69
        (redirect):
70
        (__get_swapped_origin_netloc):
71
        (create_url):
72
        (preprocess_redirection):
73
        (preprocess_stash_action):
74
        (__noop):
75
        (respond):
76
        * web-platform-tests/common/security-features/subresource/svg.py:
77
        (generate_payload):
78
        (generate_payload_embedded):
79
        (generate_report_headers_payload):
80
        (main):
81
        * web-platform-tests/common/security-features/subresource/video.py:
82
        (generate_payload):
83
        (main):
84
        * web-platform-tests/common/security-features/subresource/worker.py:
85
        (generate_payload):
86
        (main):
87
        * web-platform-tests/common/security-features/subresource/xhr.py:
88
        (generate_payload):
89
        (main):
90
        * web-platform-tests/common/security-features/w3c-import.log:
91
        * web-platform-tests/common/slow.py:
92
        (main):
93
        * web-platform-tests/common/square.png: Added.
94
        * web-platform-tests/common/stringifiers.js:
95
        * web-platform-tests/common/w3c-import.log:
96
        * web-platform-tests/wasm/jsapi/META.yml: Added.
97
        * web-platform-tests/wasm/jsapi/constructor/instantiate.any-expected.txt:
98
        * web-platform-tests/wasm/jsapi/constructor/instantiate.any.worker-expected.txt:
99
        * web-platform-tests/wasm/jsapi/global/type.tentative.any-expected.txt: Added.
100
        * web-platform-tests/wasm/jsapi/global/type.tentative.any.html: Added.
101
        * web-platform-tests/wasm/jsapi/global/type.tentative.any.js: Added.
102
        (assert_type):
103
        (test):
104
        (string_appeared_here.test):
105
        * web-platform-tests/wasm/jsapi/global/type.tentative.any.worker-expected.txt: Added.
106
        * web-platform-tests/wasm/jsapi/global/type.tentative.any.worker.html: Added.
107
        * web-platform-tests/wasm/jsapi/global/w3c-import.log:
108
        * web-platform-tests/wasm/jsapi/instance/constructor.any-expected.txt:
109
        * web-platform-tests/wasm/jsapi/instance/constructor.any.worker-expected.txt:
110
        * web-platform-tests/wasm/jsapi/instanceTestFactory.js:
111
        (const.imports.string_appeared_here.string_appeared_here):
112
        (return.verify):
113
        * web-platform-tests/wasm/jsapi/memory/type.tentative.any-expected.txt: Added.
114
        * web-platform-tests/wasm/jsapi/memory/type.tentative.any.html: Added.
115
        * web-platform-tests/wasm/jsapi/memory/type.tentative.any.js: Added.
116
        (assert_type):
117
        (test):
118
        * web-platform-tests/wasm/jsapi/memory/type.tentative.any.worker-expected.txt: Added.
119
        * web-platform-tests/wasm/jsapi/memory/type.tentative.any.worker.html: Added.
120
        * web-platform-tests/wasm/jsapi/memory/w3c-import.log:
121
        * web-platform-tests/wasm/jsapi/module/exports.any-expected.txt:
122
        * web-platform-tests/wasm/jsapi/module/exports.any.js:
123
        (test):
124
        * web-platform-tests/wasm/jsapi/module/exports.any.worker-expected.txt:
125
        * web-platform-tests/wasm/jsapi/module/imports.any-expected.txt:
126
        * web-platform-tests/wasm/jsapi/module/imports.any.js:
127
        (test):
128
        * web-platform-tests/wasm/jsapi/module/imports.any.worker-expected.txt:
129
        * web-platform-tests/wasm/jsapi/table/constructor-reftypes.tentative.any-expected.txt: Added.
130
        * web-platform-tests/wasm/jsapi/table/constructor-reftypes.tentative.any.html: Added.
131
        * web-platform-tests/wasm/jsapi/table/constructor-reftypes.tentative.any.js: Added.
132
        (test):
133
        * web-platform-tests/wasm/jsapi/table/constructor-reftypes.tentative.any.worker-expected.txt: Added.
134
        * web-platform-tests/wasm/jsapi/table/constructor-reftypes.tentative.any.worker.html: Added.
135
        * web-platform-tests/wasm/jsapi/table/set-reftypes.tentative.any-expected.txt: Added.
136
        * web-platform-tests/wasm/jsapi/table/set-reftypes.tentative.any.html: Added.
137
        * web-platform-tests/wasm/jsapi/table/set-reftypes.tentative.any.js: Added.
138
        (test):
139
        * web-platform-tests/wasm/jsapi/table/set-reftypes.tentative.any.worker-expected.txt: Added.
140
        * web-platform-tests/wasm/jsapi/table/set-reftypes.tentative.any.worker.html: Added.
141
        * web-platform-tests/wasm/jsapi/table/w3c-import.log:
142
        * web-platform-tests/wasm/jsapi/w3c-import.log:
143
        * web-platform-tests/wasm/webapi/META.yml: Added.
144
        * web-platform-tests/wasm/webapi/instantiateStreaming.any-expected.txt:
145
        * web-platform-tests/wasm/webapi/instantiateStreaming.any.worker-expected.txt:
146
        * web-platform-tests/wasm/webapi/invalid-code.any-expected.txt:
147
        * web-platform-tests/wasm/webapi/invalid-code.any.js:
148
        (string_appeared_here.Invalid.code):
149
        * web-platform-tests/wasm/webapi/invalid-code.any.worker-expected.txt:
150
        * web-platform-tests/wasm/webapi/modified-contenttype.any-expected.txt: Added.
151
        * web-platform-tests/wasm/webapi/modified-contenttype.any.html: Added.
152
        * web-platform-tests/wasm/webapi/modified-contenttype.any.js: Added.
153
        (string_appeared_here.forEach.method.promise_test.async t):
154
        (string_appeared_here.forEach.method.with.Content.Type.set late):
155
        * web-platform-tests/wasm/webapi/modified-contenttype.any.worker-expected.txt: Added.
156
        * web-platform-tests/wasm/webapi/modified-contenttype.any.worker.html: Added.
157
        * web-platform-tests/wasm/webapi/w3c-import.log:
158
1
2021-01-22  Devin Rousso  <drousso@apple.com>
159
2021-01-22  Devin Rousso  <drousso@apple.com>
2
160
3
        [WPT] [Payment Request] slight adjustment to payment-request/payment-request-constructor-thcrash.https.html
161
        [WPT] [Payment Request] slight adjustment to payment-request/payment-request-constructor-thcrash.https.html
- a/LayoutTests/imported/w3c/resources/import-expectations.json -443 / +443 lines
Lines 1-446 a/LayoutTests/imported/w3c/resources/import-expectations.json_sec1
1
{
1
{
2
    "LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio": "import",
2
    "LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio": "import", 
3
    "LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/": "import",
3
    "LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/": "import", 
4
    "apng": "import",
4
    "apng": "import", 
5
    "css/css-animations": "import",
5
    "css/css-animations": "import", 
6
    "css/css-box": "import",
6
    "css/css-box": "import", 
7
    "css/css-color": "import",
7
    "css/css-color": "import", 
8
    "css/css-flexbox": "import",
8
    "css/css-flexbox": "import", 
9
    "css/css-masking/clip-path/": "import",
9
    "css/css-masking/clip-path/": "import", 
10
    "css/css-masking/clip-path/clip-path-with-zoo": "import",
10
    "css/css-masking/clip-path/clip-path-with-zoo": "import", 
11
    "css/css-masking/clip-path/clip-path-with-zoom*": "import",
11
    "css/css-masking/clip-path/clip-path-with-zoom*": "import", 
12
    "css/css-masking/clip-path/clip-path-with-zoom-*": "import",
12
    "css/css-masking/clip-path/clip-path-with-zoom-*": "import", 
13
    "css/css-multicol": "import",
13
    "css/css-multicol": "import", 
14
    "css/css-position": "import",
14
    "css/css-position": "import", 
15
    "css/css-shapes": "import",
15
    "css/css-shapes": "import", 
16
    "css/css-sizing": "import",
16
    "css/css-sizing": "import", 
17
    "css/css-syntax": "import",
17
    "css/css-syntax": "import", 
18
    "css/css-text-decor": "import",
18
    "css/css-text-decor": "import", 
19
    "css/css-values": "import",
19
    "css/css-values": "import", 
20
    "css/geometry": "import",
20
    "css/geometry": "import", 
21
    "css/selectors": "import",
21
    "css/selectors": "import", 
22
    "css/support": "import",
22
    "css/support": "import", 
23
    "custom-elements": "import",
23
    "custom-elements": "import", 
24
    "density-size-correction": "import",
24
    "density-size-correction": "import", 
25
    "encrypted-media": "import",
25
    "encrypted-media": "import", 
26
    "imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio": "import",
26
    "imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio": "import", 
27
    "paint-timing/": "import",
27
    "paint-timing/": "import", 
28
    "paint-timing/fcp-only": "import",
28
    "paint-timing/fcp-only": "import", 
29
    "paint-timing/resources": "import",
29
    "paint-timing/resources": "import", 
30
    "paint-timing/resources/": "import",
30
    "paint-timing/resources/": "import", 
31
    "resources/testharness.js": "import",
31
    "resources/testharness.js": "import", 
32
    "shadow-dom": "import",
32
    "shadow-dom": "import", 
33
    "streams": "import",
33
    "streams": "import", 
34
    "tools": "import",
34
    "tools": "import", 
35
    "web-animations": "import",
35
    "web-animations": "import", 
36
    "web-platform-tests/DOM-parsing": "skip",
36
    "web-platform-tests/DOM-parsing": "skip", 
37
    "web-platform-tests/DOMEvents": "skip",
37
    "web-platform-tests/DOMEvents": "skip", 
38
    "web-platform-tests/FileAPI": "import",
38
    "web-platform-tests/FileAPI": "import", 
39
    "web-platform-tests/IndexedDB": "import",
39
    "web-platform-tests/IndexedDB": "import", 
40
    "web-platform-tests/WebCryptoAPI": "import",
40
    "web-platform-tests/WebCryptoAPI": "import", 
41
    "web-platform-tests/WebIDL": "import",
41
    "web-platform-tests/WebIDL": "import", 
42
    "web-platform-tests/WebIDL/invalid": "skip",
42
    "web-platform-tests/WebIDL/invalid": "skip", 
43
    "web-platform-tests/WebIDL/valid": "skip",
43
    "web-platform-tests/WebIDL/valid": "skip", 
44
    "web-platform-tests/XMLHttpRequest": "import",
44
    "web-platform-tests/XMLHttpRequest": "import", 
45
    "web-platform-tests/XMLHttpRequest/abort-after-stop.htm": "skip",
45
    "web-platform-tests/XMLHttpRequest/abort-after-stop.htm": "skip", 
46
    "web-platform-tests/XMLHttpRequest/event-error-order.sub.html": "skip",
46
    "web-platform-tests/XMLHttpRequest/event-error-order.sub.html": "skip", 
47
    "web-platform-tests/XMLHttpRequest/event-timeout-order.htm": "skip",
47
    "web-platform-tests/XMLHttpRequest/event-timeout-order.htm": "skip", 
48
    "web-platform-tests/XMLHttpRequest/preserve-ua-header-on-redirect.htm": "skip",
48
    "web-platform-tests/XMLHttpRequest/preserve-ua-header-on-redirect.htm": "skip", 
49
    "web-platform-tests/XMLHttpRequest/send-after-setting-document-domain.htm": "skip",
49
    "web-platform-tests/XMLHttpRequest/send-after-setting-document-domain.htm": "skip", 
50
    "web-platform-tests/XMLHttpRequest/send-authentication-basic-cors-not-enabled.htm": "skip",
50
    "web-platform-tests/XMLHttpRequest/send-authentication-basic-cors-not-enabled.htm": "skip", 
51
    "web-platform-tests/XMLHttpRequest/send-authentication-basic-setrequestheader-existing-session.htm": "skip",
51
    "web-platform-tests/XMLHttpRequest/send-authentication-basic-setrequestheader-existing-session.htm": "skip", 
52
    "web-platform-tests/accelerometer": "skip",
52
    "web-platform-tests/accelerometer": "skip", 
53
    "web-platform-tests/ambient-light": "skip",
53
    "web-platform-tests/ambient-light": "skip", 
54
    "web-platform-tests/animation-timing": "skip",
54
    "web-platform-tests/animation-timing": "skip", 
55
    "web-platform-tests/annotation-model": "skip",
55
    "web-platform-tests/annotation-model": "skip", 
56
    "web-platform-tests/annotation-protocol": "skip",
56
    "web-platform-tests/annotation-protocol": "skip", 
57
    "web-platform-tests/annotation-vocab": "skip",
57
    "web-platform-tests/annotation-vocab": "skip", 
58
    "web-platform-tests/apng": "skip",
58
    "web-platform-tests/apng": "skip", 
59
    "web-platform-tests/app-uri": "skip",
59
    "web-platform-tests/app-uri": "skip", 
60
    "web-platform-tests/assumptions": "skip",
60
    "web-platform-tests/assumptions": "skip", 
61
    "web-platform-tests/audio-output": "import",
61
    "web-platform-tests/audio-output": "import", 
62
    "web-platform-tests/auxclick": "skip",
62
    "web-platform-tests/auxclick": "skip", 
63
    "web-platform-tests/background-fetch": "import",
63
    "web-platform-tests/background-fetch": "import", 
64
    "web-platform-tests/battery-status": "skip",
64
    "web-platform-tests/battery-status": "skip", 
65
    "web-platform-tests/beacon": "import",
65
    "web-platform-tests/beacon": "import", 
66
    "web-platform-tests/bluetooth": "skip",
66
    "web-platform-tests/bluetooth": "skip", 
67
    "web-platform-tests/browser-payment-api": "skip",
67
    "web-platform-tests/browser-payment-api": "skip", 
68
    "web-platform-tests/clear-site-data": "skip",
68
    "web-platform-tests/clear-site-data": "skip", 
69
    "web-platform-tests/clipboard": "skip",
69
    "web-platform-tests/clipboard": "skip", 
70
    "web-platform-tests/clipboard-apis": "import",
70
    "web-platform-tests/clipboard-apis": "import", 
71
    "web-platform-tests/common": "import",
71
    "web-platform-tests/common": "import", 
72
    "web-platform-tests/compat": "import",
72
    "web-platform-tests/compat": "import", 
73
    "web-platform-tests/console": "import",
73
    "web-platform-tests/console": "import", 
74
    "web-platform-tests/content-security-policy": "import",
74
    "web-platform-tests/content-security-policy": "import", 
75
    "web-platform-tests/cookies": "skip",
75
    "web-platform-tests/cookies": "skip", 
76
    "web-platform-tests/cookies/resources": "import",
76
    "web-platform-tests/cookies/resources": "import", 
77
    "web-platform-tests/cookies/secure": "import",
77
    "web-platform-tests/cookies/secure": "import", 
78
    "web-platform-tests/core-aam": "skip",
78
    "web-platform-tests/core-aam": "skip", 
79
    "web-platform-tests/cors": "import",
79
    "web-platform-tests/cors": "import", 
80
    "web-platform-tests/credential-management": "import",
80
    "web-platform-tests/credential-management": "import", 
81
    "web-platform-tests/css": "skip",
81
    "web-platform-tests/css": "skip", 
82
    "web-platform-tests/css-backgrounds": "skip",
82
    "web-platform-tests/css-backgrounds": "skip", 
83
    "web-platform-tests/css-font-display": "skip",
83
    "web-platform-tests/css-font-display": "skip", 
84
    "web-platform-tests/css-font-loading": "skip",
84
    "web-platform-tests/css-font-loading": "skip", 
85
    "web-platform-tests/css-fonts": "skip",
85
    "web-platform-tests/css-fonts": "skip", 
86
    "web-platform-tests/css-paint-api": "skip",
86
    "web-platform-tests/css-paint-api": "skip", 
87
    "web-platform-tests/css-scoping": "skip",
87
    "web-platform-tests/css-scoping": "skip", 
88
    "web-platform-tests/css-scroll-anchoring": "skip",
88
    "web-platform-tests/css-scroll-anchoring": "skip", 
89
    "web-platform-tests/css-timing": "skip",
89
    "web-platform-tests/css-timing": "skip", 
90
    "web-platform-tests/css-typed-om": "skip",
90
    "web-platform-tests/css-typed-om": "skip", 
91
    "web-platform-tests/css-values": "skip",
91
    "web-platform-tests/css-values": "skip", 
92
    "web-platform-tests/css/WOFF2": "import",
92
    "web-platform-tests/css/WOFF2": "import", 
93
    "web-platform-tests/css/css-align": "import",
93
    "web-platform-tests/css/css-align": "import", 
94
    "web-platform-tests/css/css-animations": "import",
94
    "web-platform-tests/css/css-animations": "import", 
95
    "web-platform-tests/css/css-animations/": "import",
95
    "web-platform-tests/css/css-animations/": "import", 
96
    "web-platform-tests/css/css-backgrounds": "import",
96
    "web-platform-tests/css/css-backgrounds": "import", 
97
    "web-platform-tests/css/css-cascade": "import",
97
    "web-platform-tests/css/css-cascade": "import", 
98
    "web-platform-tests/css/css-color": "import",
98
    "web-platform-tests/css/css-color": "import", 
99
    "web-platform-tests/css/css-content": "import",
99
    "web-platform-tests/css/css-content": "import", 
100
    "web-platform-tests/css/css-display": "import",
100
    "web-platform-tests/css/css-display": "import", 
101
    "web-platform-tests/css/css-easing": "import",
101
    "web-platform-tests/css/css-easing": "import", 
102
    "web-platform-tests/css/css-flexbox": "import",
102
    "web-platform-tests/css/css-flexbox": "import", 
103
    "web-platform-tests/css/css-font-loading": "import",
103
    "web-platform-tests/css/css-font-loading": "import", 
104
    "web-platform-tests/css/css-fonts": "import",
104
    "web-platform-tests/css/css-fonts": "import", 
105
    "web-platform-tests/css/css-fonts/math-script-level-and-math-style/": "import",
105
    "web-platform-tests/css/css-fonts/math-script-level-and-math-style/": "import", 
106
    "web-platform-tests/css/css-grid": "import",
106
    "web-platform-tests/css/css-grid": "import", 
107
    "web-platform-tests/css/css-grid/abspos": "import",
107
    "web-platform-tests/css/css-grid/abspos": "import", 
108
    "web-platform-tests/css/css-grid/alignment/": "import",
108
    "web-platform-tests/css/css-grid/alignment/": "import", 
109
    "web-platform-tests/css/css-grid/grid-definition/": "import",
109
    "web-platform-tests/css/css-grid/grid-definition/": "import", 
110
    "web-platform-tests/css/css-grid/grid-items/": "import",
110
    "web-platform-tests/css/css-grid/grid-items/": "import", 
111
    "web-platform-tests/css/css-grid/layout-algorithm": "import",
111
    "web-platform-tests/css/css-grid/layout-algorithm": "import", 
112
    "web-platform-tests/css/css-grid/layout-algorithm/": "import",
112
    "web-platform-tests/css/css-grid/layout-algorithm/": "import", 
113
    "web-platform-tests/css/css-grid/parsing/": "import",
113
    "web-platform-tests/css/css-grid/parsing/": "import", 
114
    "web-platform-tests/css/css-images": "import",
114
    "web-platform-tests/css/css-images": "import", 
115
    "web-platform-tests/css/css-lists": "import",
115
    "web-platform-tests/css/css-lists": "import", 
116
    "web-platform-tests/css/css-lists/parsing": "import",
116
    "web-platform-tests/css/css-lists/parsing": "import", 
117
    "web-platform-tests/css/css-logical": "import",
117
    "web-platform-tests/css/css-logical": "import", 
118
    "web-platform-tests/css/css-multicol": "import",
118
    "web-platform-tests/css/css-multicol": "import", 
119
    "web-platform-tests/css/css-overflow": "import",
119
    "web-platform-tests/css/css-overflow": "import", 
120
    "web-platform-tests/css/css-overscroll-behavior": "import",
120
    "web-platform-tests/css/css-overscroll-behavior": "import", 
121
    "web-platform-tests/css/css-properties-values-api": "import",
121
    "web-platform-tests/css/css-properties-values-api": "import", 
122
    "web-platform-tests/css/css-pseudo": "import",
122
    "web-platform-tests/css/css-pseudo": "import", 
123
    "web-platform-tests/css/css-scoping": "import",
123
    "web-platform-tests/css/css-scoping": "import", 
124
    "web-platform-tests/css/css-scroll-snap": "import",
124
    "web-platform-tests/css/css-scroll-snap": "import", 
125
    "web-platform-tests/css/css-shadow-parts": "import",
125
    "web-platform-tests/css/css-shadow-parts": "import", 
126
    "web-platform-tests/css/css-shapes": "import",
126
    "web-platform-tests/css/css-shapes": "import", 
127
    "web-platform-tests/css/css-shapes/test-plan/index.html": "skip",
127
    "web-platform-tests/css/css-shapes/test-plan/index.html": "skip", 
128
    "web-platform-tests/css/css-sizing/aspect-ratio": "import",
128
    "web-platform-tests/css/css-sizing/aspect-ratio": "import", 
129
    "web-platform-tests/css/css-text": "import",
129
    "web-platform-tests/css/css-text": "import", 
130
    "web-platform-tests/css/css-transitions": "import",
130
    "web-platform-tests/css/css-transitions": "import", 
131
    "web-platform-tests/css/css-ui": "import",
131
    "web-platform-tests/css/css-ui": "import", 
132
    "web-platform-tests/css/css-variables": "import",
132
    "web-platform-tests/css/css-variables": "import", 
133
    "web-platform-tests/css/css-writing-modes": "import",
133
    "web-platform-tests/css/css-writing-modes": "import", 
134
    "web-platform-tests/css/cssom": "import",
134
    "web-platform-tests/css/cssom": "import", 
135
    "web-platform-tests/css/cssom-view/": "import",
135
    "web-platform-tests/css/cssom-view/": "import", 
136
    "web-platform-tests/css/geometry/": "import",
136
    "web-platform-tests/css/geometry/": "import", 
137
    "web-platform-tests/css/mediaqueries": "import",
137
    "web-platform-tests/css/mediaqueries": "import", 
138
    "web-platform-tests/css/reference": "import",
138
    "web-platform-tests/css/reference": "import", 
139
    "web-platform-tests/css/resources": "import",
139
    "web-platform-tests/css/resources": "import", 
140
    "web-platform-tests/css/selectors": "import",
140
    "web-platform-tests/css/selectors": "import", 
141
    "web-platform-tests/css/support": "import",
141
    "web-platform-tests/css/support": "import", 
142
    "web-platform-tests/custom-elements": "import",
142
    "web-platform-tests/custom-elements": "import", 
143
    "web-platform-tests/custom-elements/v0": "skip",
143
    "web-platform-tests/custom-elements/v0": "skip", 
144
    "web-platform-tests/docs": "import",
144
    "web-platform-tests/docs": "import", 
145
    "web-platform-tests/dom": "import",
145
    "web-platform-tests/dom": "import", 
146
    "web-platform-tests/dom/events": "import",
146
    "web-platform-tests/dom/events": "import", 
147
    "web-platform-tests/dom/events/scrolling": "import",
147
    "web-platform-tests/dom/events/scrolling": "import", 
148
    "web-platform-tests/dom/nodes/Document-createElement-namespace-tests/empty.html": "skip",
148
    "web-platform-tests/dom/nodes/Document-createElement-namespace-tests/empty.html": "skip", 
149
    "web-platform-tests/dom/nodes/Document-createElement-namespace-tests/empty.svg": "skip",
149
    "web-platform-tests/dom/nodes/Document-createElement-namespace-tests/empty.svg": "skip", 
150
    "web-platform-tests/dom/nodes/Document-createElement-namespace-tests/empty.xhtml": "skip",
150
    "web-platform-tests/dom/nodes/Document-createElement-namespace-tests/empty.xhtml": "skip", 
151
    "web-platform-tests/dom/nodes/Document-createElement-namespace-tests/empty.xml": "skip",
151
    "web-platform-tests/dom/nodes/Document-createElement-namespace-tests/empty.xml": "skip", 
152
    "web-platform-tests/dom/nodes/Document-createProcessingInstruction.xhtml": "skip",
152
    "web-platform-tests/dom/nodes/Document-createProcessingInstruction.xhtml": "skip", 
153
    "web-platform-tests/dom/nodes/Document-getElementsByTagName.xhtml": "skip",
153
    "web-platform-tests/dom/nodes/Document-getElementsByTagName.xhtml": "skip", 
154
    "web-platform-tests/dom/nodes/Element-childElement-null-svg.svg": "skip",
154
    "web-platform-tests/dom/nodes/Element-childElement-null-svg.svg": "skip", 
155
    "web-platform-tests/dom/nodes/Element-childElement-null.svg": "skip",
155
    "web-platform-tests/dom/nodes/Element-childElement-null.svg": "skip", 
156
    "web-platform-tests/dom/nodes/Element-childElement-null.xhtml": "skip",
156
    "web-platform-tests/dom/nodes/Element-childElement-null.xhtml": "skip", 
157
    "web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add-svg.svg": "skip",
157
    "web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add-svg.svg": "skip", 
158
    "web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add.svg": "skip",
158
    "web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add.svg": "skip", 
159
    "web-platform-tests/dom/nodes/Element-childElementCount-dynamic-remove-svg.svg": "skip",
159
    "web-platform-tests/dom/nodes/Element-childElementCount-dynamic-remove-svg.svg": "skip", 
160
    "web-platform-tests/dom/nodes/Element-childElementCount-dynamic-remove.svg": "skip",
160
    "web-platform-tests/dom/nodes/Element-childElementCount-dynamic-remove.svg": "skip", 
161
    "web-platform-tests/dom/nodes/Element-childElementCount-dynamic-remove.xhtml": "skip",
161
    "web-platform-tests/dom/nodes/Element-childElementCount-dynamic-remove.xhtml": "skip", 
162
    "web-platform-tests/dom/nodes/Element-childElementCount-nochild-svg.svg": "skip",
162
    "web-platform-tests/dom/nodes/Element-childElementCount-nochild-svg.svg": "skip", 
163
    "web-platform-tests/dom/nodes/Element-childElementCount-nochild.svg": "skip",
163
    "web-platform-tests/dom/nodes/Element-childElementCount-nochild.svg": "skip", 
164
    "web-platform-tests/dom/nodes/Element-childElementCount-svg.svg": "skip",
164
    "web-platform-tests/dom/nodes/Element-childElementCount-svg.svg": "skip", 
165
    "web-platform-tests/dom/nodes/Element-childElementCount.svg": "skip",
165
    "web-platform-tests/dom/nodes/Element-childElementCount.svg": "skip", 
166
    "web-platform-tests/dom/nodes/Element-childElementCount.xhtml": "skip",
166
    "web-platform-tests/dom/nodes/Element-childElementCount.xhtml": "skip", 
167
    "web-platform-tests/dom/nodes/Element-firstElementChild-entity.svg": "skip",
167
    "web-platform-tests/dom/nodes/Element-firstElementChild-entity.svg": "skip", 
168
    "web-platform-tests/dom/nodes/Element-firstElementChild-entity.xhtml": "skip",
168
    "web-platform-tests/dom/nodes/Element-firstElementChild-entity.xhtml": "skip", 
169
    "web-platform-tests/dom/nodes/Element-firstElementChild-namespace-svg.svg": "skip",
169
    "web-platform-tests/dom/nodes/Element-firstElementChild-namespace-svg.svg": "skip", 
170
    "web-platform-tests/dom/nodes/Element-firstElementChild-namespace.svg": "skip",
170
    "web-platform-tests/dom/nodes/Element-firstElementChild-namespace.svg": "skip", 
171
    "web-platform-tests/dom/nodes/Element-firstElementChild-namespace.xhtml": "skip",
171
    "web-platform-tests/dom/nodes/Element-firstElementChild-namespace.xhtml": "skip", 
172
    "web-platform-tests/dom/nodes/Element-firstElementChild-svg.svg": "skip",
172
    "web-platform-tests/dom/nodes/Element-firstElementChild-svg.svg": "skip", 
173
    "web-platform-tests/dom/nodes/Element-firstElementChild.svg": "skip",
173
    "web-platform-tests/dom/nodes/Element-firstElementChild.svg": "skip", 
174
    "web-platform-tests/dom/nodes/Element-lastElementChild-svg.svg": "skip",
174
    "web-platform-tests/dom/nodes/Element-lastElementChild-svg.svg": "skip", 
175
    "web-platform-tests/dom/nodes/Element-lastElementChild.svg": "skip",
175
    "web-platform-tests/dom/nodes/Element-lastElementChild.svg": "skip", 
176
    "web-platform-tests/dom/nodes/Element-lastElementChild.xhtml": "skip",
176
    "web-platform-tests/dom/nodes/Element-lastElementChild.xhtml": "skip", 
177
    "web-platform-tests/dom/nodes/Element-nextElementSibling-svg.svg": "skip",
177
    "web-platform-tests/dom/nodes/Element-nextElementSibling-svg.svg": "skip", 
178
    "web-platform-tests/dom/nodes/Element-nextElementSibling.svg": "skip",
178
    "web-platform-tests/dom/nodes/Element-nextElementSibling.svg": "skip", 
179
    "web-platform-tests/dom/nodes/Element-previousElementSibling-svg.svg": "skip",
179
    "web-platform-tests/dom/nodes/Element-previousElementSibling-svg.svg": "skip", 
180
    "web-platform-tests/dom/nodes/Element-previousElementSibling.svg": "skip",
180
    "web-platform-tests/dom/nodes/Element-previousElementSibling.svg": "skip", 
181
    "web-platform-tests/dom/nodes/Element-siblingElement-null-svg.svg": "skip",
181
    "web-platform-tests/dom/nodes/Element-siblingElement-null-svg.svg": "skip", 
182
    "web-platform-tests/dom/nodes/Element-siblingElement-null.svg": "skip",
182
    "web-platform-tests/dom/nodes/Element-siblingElement-null.svg": "skip", 
183
    "web-platform-tests/dom/nodes/Element-siblingElement-null.xhtml": "skip",
183
    "web-platform-tests/dom/nodes/Element-siblingElement-null.xhtml": "skip", 
184
    "web-platform-tests/dom/nodes/Node-nodeName.xhtml": "skip",
184
    "web-platform-tests/dom/nodes/Node-nodeName.xhtml": "skip", 
185
    "web-platform-tests/dom/nodes/ParentNode-querySelector-All.xht": "skip",
185
    "web-platform-tests/dom/nodes/ParentNode-querySelector-All.xht": "skip", 
186
    "web-platform-tests/dom/traversal": "import",
186
    "web-platform-tests/dom/traversal": "import", 
187
    "web-platform-tests/dom/traversal/unfinished": "skip",
187
    "web-platform-tests/dom/traversal/unfinished": "skip", 
188
    "web-platform-tests/domparsing": "import",
188
    "web-platform-tests/domparsing": "import", 
189
    "web-platform-tests/domxpath": "import",
189
    "web-platform-tests/domxpath": "import", 
190
    "web-platform-tests/domxpath/xml_xpath_runner.html": "skip",
190
    "web-platform-tests/domxpath/xml_xpath_runner.html": "skip", 
191
    "web-platform-tests/domxpath/xml_xpath_tests.xml": "skip",
191
    "web-platform-tests/domxpath/xml_xpath_tests.xml": "skip", 
192
    "web-platform-tests/dpub-aam": "skip",
192
    "web-platform-tests/dpub-aam": "skip", 
193
    "web-platform-tests/dpub-aria": "skip",
193
    "web-platform-tests/dpub-aria": "skip", 
194
    "web-platform-tests/editing": "skip",
194
    "web-platform-tests/editing": "skip", 
195
    "web-platform-tests/encoding": "import",
195
    "web-platform-tests/encoding": "import", 
196
    "web-platform-tests/encrypted-media": "import",
196
    "web-platform-tests/encrypted-media": "import", 
197
    "web-platform-tests/encrypted-media/Google": "skip",
197
    "web-platform-tests/encrypted-media/Google": "skip", 
198
    "web-platform-tests/entries-api": "import",
198
    "web-platform-tests/entries-api": "import", 
199
    "web-platform-tests/eventsource": "import",
199
    "web-platform-tests/eventsource": "import", 
200
    "web-platform-tests/ext-xhtml-pubid": "skip",
200
    "web-platform-tests/ext-xhtml-pubid": "skip", 
201
    "web-platform-tests/feature-policy": "skip",
201
    "web-platform-tests/feature-policy": "skip", 
202
    "web-platform-tests/feature-policy/resources": "import",
202
    "web-platform-tests/feature-policy/resources": "import", 
203
    "web-platform-tests/feature-policy/resources/": "import",
203
    "web-platform-tests/feature-policy/resources/": "import", 
204
    "web-platform-tests/fetch": "import",
204
    "web-platform-tests/fetch": "import", 
205
    "web-platform-tests/fetch/api": "import",
205
    "web-platform-tests/fetch/api": "import", 
206
    "web-platform-tests/fetch/api/cors": "import",
206
    "web-platform-tests/fetch/api/cors": "import", 
207
    "web-platform-tests/fetch/api/redirect": "import",
207
    "web-platform-tests/fetch/api/redirect": "import", 
208
    "web-platform-tests/fetch/api/resources": "import",
208
    "web-platform-tests/fetch/api/resources": "import", 
209
    "web-platform-tests/fetch/origin": "import",
209
    "web-platform-tests/fetch/origin": "import", 
210
    "web-platform-tests/fetch/range": "import",
210
    "web-platform-tests/fetch/range": "import", 
211
    "web-platform-tests/fetch/stale-while-revalidate": "import",
211
    "web-platform-tests/fetch/stale-while-revalidate": "import", 
212
    "web-platform-tests/fullscreen": "skip",
212
    "web-platform-tests/fullscreen": "skip", 
213
    "web-platform-tests/gamepad": "skip",
213
    "web-platform-tests/gamepad": "skip", 
214
    "web-platform-tests/generic-sensor": "skip",
214
    "web-platform-tests/generic-sensor": "skip", 
215
    "web-platform-tests/geolocation-API": "import",
215
    "web-platform-tests/geolocation-API": "import", 
216
    "web-platform-tests/gyroscope": "skip",
216
    "web-platform-tests/gyroscope": "skip", 
217
    "web-platform-tests/hr-time": "import",
217
    "web-platform-tests/hr-time": "import", 
218
    "web-platform-tests/html": "import",
218
    "web-platform-tests/html": "import", 
219
    "web-platform-tests/html-imports": "skip",
219
    "web-platform-tests/html-imports": "skip", 
220
    "web-platform-tests/html-longdesc": "skip",
220
    "web-platform-tests/html-longdesc": "skip", 
221
    "web-platform-tests/html-media-capture": "skip",
221
    "web-platform-tests/html-media-capture": "skip", 
222
    "web-platform-tests/html/browsers": "import",
222
    "web-platform-tests/html/browsers": "import", 
223
    "web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name.html": "skip",
223
    "web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name.html": "skip", 
224
    "web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin_2.html": "skip",
224
    "web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin_2.html": "skip", 
225
    "web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin_3.html": "skip",
225
    "web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin_3.html": "skip", 
226
    "web-platform-tests/html/browsers/history/joint-session-history": "skip",
226
    "web-platform-tests/html/browsers/history/joint-session-history": "skip", 
227
    "web-platform-tests/html/browsers/history/the-history-interface/001.html": "skip",
227
    "web-platform-tests/html/browsers/history/the-history-interface/001.html": "skip", 
228
    "web-platform-tests/html/browsers/history/the-history-interface/002.html": "skip",
228
    "web-platform-tests/html/browsers/history/the-history-interface/002.html": "skip", 
229
    "web-platform-tests/html/browsers/history/the-history-interface/combination_history_002.html": "skip",
229
    "web-platform-tests/html/browsers/history/the-history-interface/combination_history_002.html": "skip", 
230
    "web-platform-tests/html/browsers/history/the-history-interface/combination_history_003.html": "skip",
230
    "web-platform-tests/html/browsers/history/the-history-interface/combination_history_003.html": "skip", 
231
    "web-platform-tests/html/browsers/history/the-history-interface/traverse_the_history_3.html": "skip",
231
    "web-platform-tests/html/browsers/history/the-history-interface/traverse_the_history_3.html": "skip", 
232
    "web-platform-tests/html/browsers/history/the-location-interface/assign_after_load.html": "skip",
232
    "web-platform-tests/html/browsers/history/the-location-interface/assign_after_load.html": "skip", 
233
    "web-platform-tests/html/browsers/history/the-location-interface/assign_before_load.html": "skip",
233
    "web-platform-tests/html/browsers/history/the-location-interface/assign_before_load.html": "skip", 
234
    "web-platform-tests/html/browsers/history/the-location-interface/location_assign.html": "skip",
234
    "web-platform-tests/html/browsers/history/the-location-interface/location_assign.html": "skip", 
235
    "web-platform-tests/html/browsers/offline/application-cache-api": "skip",
235
    "web-platform-tests/html/browsers/offline/application-cache-api": "skip", 
236
    "web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.sub.html": "skip",
236
    "web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.sub.html": "skip", 
237
    "web-platform-tests/html/browsers/sandboxing": "skip",
237
    "web-platform-tests/html/browsers/sandboxing": "skip", 
238
    "web-platform-tests/html/browsers/the-window-object": "import",
238
    "web-platform-tests/html/browsers/the-window-object": "import", 
239
    "web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/": "import",
239
    "web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/": "import", 
240
    "web-platform-tests/html/browsers/windows/browsing-context-first-created.xhtml": "skip",
240
    "web-platform-tests/html/browsers/windows/browsing-context-first-created.xhtml": "skip", 
241
    "web-platform-tests/html/browsers/windows/browsing-context-names": "import",
241
    "web-platform-tests/html/browsers/windows/browsing-context-names": "import", 
242
    "web-platform-tests/html/browsers/windows/nested-browsing-contexts/frameElement.html": "skip",
242
    "web-platform-tests/html/browsers/windows/nested-browsing-contexts/frameElement.html": "skip", 
243
    "web-platform-tests/html/browsers/windows/targeting-cross-origin-nested-browsing-contexts.html": "skip",
243
    "web-platform-tests/html/browsers/windows/targeting-cross-origin-nested-browsing-contexts.html": "skip", 
244
    "web-platform-tests/html/canvas": "import",
244
    "web-platform-tests/html/canvas": "import", 
245
    "web-platform-tests/html/canvas/element": "import",
245
    "web-platform-tests/html/canvas/element": "import", 
246
    "web-platform-tests/html/canvas/offscreen": "import",
246
    "web-platform-tests/html/canvas/offscreen": "import", 
247
    "web-platform-tests/html/canvas/resources": "import",
247
    "web-platform-tests/html/canvas/resources": "import", 
248
    "web-platform-tests/html/canvas/tools": "import",
248
    "web-platform-tests/html/canvas/tools": "import", 
249
    "web-platform-tests/html/dom": "import",
249
    "web-platform-tests/html/dom": "import", 
250
    "web-platform-tests/html/dom/documents/dom-tree-accessors/Document.currentScript.sub.html": "skip",
250
    "web-platform-tests/html/dom/documents/dom-tree-accessors/Document.currentScript.sub.html": "skip", 
251
    "web-platform-tests/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters": "skip",
251
    "web-platform-tests/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters": "skip", 
252
    "web-platform-tests/html/dom/reflection-original.html": "skip",
252
    "web-platform-tests/html/dom/reflection-original.html": "skip", 
253
    "web-platform-tests/html/editing": "import",
253
    "web-platform-tests/html/editing": "import", 
254
    "web-platform-tests/html/iana": "import",
254
    "web-platform-tests/html/iana": "import", 
255
    "web-platform-tests/html/infrastructure": "import",
255
    "web-platform-tests/html/infrastructure": "import", 
256
    "web-platform-tests/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers": "skip",
256
    "web-platform-tests/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers": "skip", 
257
    "web-platform-tests/html/interaction": "import",
257
    "web-platform-tests/html/interaction": "import", 
258
    "web-platform-tests/html/interaction/focus/the-autofocus-attribute": "import",
258
    "web-platform-tests/html/interaction/focus/the-autofocus-attribute": "import", 
259
    "web-platform-tests/html/obsolete": "skip",
259
    "web-platform-tests/html/obsolete": "skip", 
260
    "web-platform-tests/html/rendering": "skip",
260
    "web-platform-tests/html/rendering": "skip", 
261
    "web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/": "import",
261
    "web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/": "import", 
262
    "web-platform-tests/html/resources": "import",
262
    "web-platform-tests/html/resources": "import", 
263
    "web-platform-tests/html/semantics": "import",
263
    "web-platform-tests/html/semantics": "import", 
264
    "web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives": "skip",
264
    "web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives": "skip", 
265
    "web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh": "import",
265
    "web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh": "import", 
266
    "web-platform-tests/html/semantics/embedded-content": "import",
266
    "web-platform-tests/html/semantics/embedded-content": "import", 
267
    "web-platform-tests/html/semantics/embedded-content-0": "skip",
267
    "web-platform-tests/html/semantics/embedded-content-0": "skip", 
268
    "web-platform-tests/html/semantics/embedded-content/image-maps/image-map-processing-model": "skip",
268
    "web-platform-tests/html/semantics/embedded-content/image-maps/image-map-processing-model": "skip", 
269
    "web-platform-tests/html/semantics/embedded-content/media-elements/audio_loop_base.html": "skip",
269
    "web-platform-tests/html/semantics/embedded-content/media-elements/audio_loop_base.html": "skip", 
270
    "web-platform-tests/html/semantics/embedded-content/media-elements/error-codes": "skip",
270
    "web-platform-tests/html/semantics/embedded-content/media-elements/error-codes": "skip", 
271
    "web-platform-tests/html/semantics/embedded-content/media-elements/loading-the-media-resource": "skip",
271
    "web-platform-tests/html/semantics/embedded-content/media-elements/loading-the-media-resource": "skip", 
272
    "web-platform-tests/html/semantics/embedded-content/media-elements/location-of-the-media-resource/currentSrc.html": "skip",
272
    "web-platform-tests/html/semantics/embedded-content/media-elements/location-of-the-media-resource/currentSrc.html": "skip", 
273
    "web-platform-tests/html/semantics/embedded-content/media-elements/networkState_during_progress.html": "skip",
273
    "web-platform-tests/html/semantics/embedded-content/media-elements/networkState_during_progress.html": "skip", 
274
    "web-platform-tests/html/semantics/embedded-content/media-elements/offsets-into-the-media-resource/currentTime.html": "skip",
274
    "web-platform-tests/html/semantics/embedded-content/media-elements/offsets-into-the-media-resource/currentTime.html": "skip", 
275
    "web-platform-tests/html/semantics/embedded-content/media-elements/playing-the-media-resource/pause-remove-from-document-networkState.html": "skip",
275
    "web-platform-tests/html/semantics/embedded-content/media-elements/playing-the-media-resource/pause-remove-from-document-networkState.html": "skip", 
276
    "web-platform-tests/html/semantics/embedded-content/media-elements/playing-the-media-resource/play-in-detached-document.html": "skip",
276
    "web-platform-tests/html/semantics/embedded-content/media-elements/playing-the-media-resource/play-in-detached-document.html": "skip", 
277
    "web-platform-tests/html/semantics/embedded-content/media-elements/ready-states/autoplay.html": "skip",
277
    "web-platform-tests/html/semantics/embedded-content/media-elements/ready-states/autoplay.html": "skip", 
278
    "web-platform-tests/html/semantics/embedded-content/media-elements/seeking/seek-to-currentTime.html": "skip",
278
    "web-platform-tests/html/semantics/embedded-content/media-elements/seeking/seek-to-currentTime.html": "skip", 
279
    "web-platform-tests/html/semantics/embedded-content/media-elements/seeking/seek-to-max-value.htm": "skip",
279
    "web-platform-tests/html/semantics/embedded-content/media-elements/seeking/seek-to-max-value.htm": "skip", 
280
    "web-platform-tests/html/semantics/embedded-content/media-elements/seeking/seek-to-negative-time.htm": "skip",
280
    "web-platform-tests/html/semantics/embedded-content/media-elements/seeking/seek-to-negative-time.htm": "skip", 
281
    "web-platform-tests/html/semantics/embedded-content/media-elements/synchronising-multiple-media-elements/media-controllers/task-source.html": "skip",
281
    "web-platform-tests/html/semantics/embedded-content/media-elements/synchronising-multiple-media-elements/media-controllers/task-source.html": "skip", 
282
    "web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element": "import",
282
    "web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element": "import", 
283
    "web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/cors": "skip",
283
    "web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/cors": "skip", 
284
    "web-platform-tests/html/semantics/embedded-content/media-elements/video_loop_base.html": "skip",
284
    "web-platform-tests/html/semantics/embedded-content/media-elements/video_loop_base.html": "skip", 
285
    "web-platform-tests/html/semantics/embedded-content/the-area-element/area_nohref.xhtml": "skip",
285
    "web-platform-tests/html/semantics/embedded-content/the-area-element/area_nohref.xhtml": "skip", 
286
    "web-platform-tests/html/semantics/embedded-content/the-area-element/test-area.xhtml": "skip",
286
    "web-platform-tests/html/semantics/embedded-content/the-area-element/test-area.xhtml": "skip", 
287
    "web-platform-tests/html/semantics/embedded-content/the-canvas-element": "import",
287
    "web-platform-tests/html/semantics/embedded-content/the-canvas-element": "import", 
288
    "web-platform-tests/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.whitespace.html": "skip",
288
    "web-platform-tests/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.whitespace.html": "skip", 
289
    "web-platform-tests/html/semantics/embedded-content/the-embed-element/embed-represent-nothing-04.html": "skip",
289
    "web-platform-tests/html/semantics/embedded-content/the-embed-element/embed-represent-nothing-04.html": "skip", 
290
    "web-platform-tests/html/semantics/embedded-content/the-iframe-element": "import",
290
    "web-platform-tests/html/semantics/embedded-content/the-iframe-element": "import", 
291
    "web-platform-tests/html/semantics/embedded-content/the-img-element/": "import",
291
    "web-platform-tests/html/semantics/embedded-content/the-img-element/": "import", 
292
    "web-platform-tests/html/semantics/embedded-content/the-img-element/decode": "skip",
292
    "web-platform-tests/html/semantics/embedded-content/the-img-element/decode": "skip", 
293
    "web-platform-tests/html/semantics/embedded-content/the-img-element/relevant-mutations.html": "skip",
293
    "web-platform-tests/html/semantics/embedded-content/the-img-element/relevant-mutations.html": "skip", 
294
    "web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-image-data": "skip",
294
    "web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-image-data": "skip", 
295
    "web-platform-tests/html/semantics/embedded-content/the-object-element/object-events.html": "skip",
295
    "web-platform-tests/html/semantics/embedded-content/the-object-element/object-events.html": "skip", 
296
    "web-platform-tests/html/semantics/forms/textfieldselection/select-event.html": "skip",
296
    "web-platform-tests/html/semantics/forms/textfieldselection/select-event.html": "skip", 
297
    "web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setRangeText.html": "skip",
297
    "web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setRangeText.html": "skip", 
298
    "web-platform-tests/html/semantics/forms/the-textarea-element": "import",
298
    "web-platform-tests/html/semantics/forms/the-textarea-element": "import", 
299
    "web-platform-tests/html/semantics/interactive-elements/the-details-element/toggleEvent.html": "skip",
299
    "web-platform-tests/html/semantics/interactive-elements/the-details-element/toggleEvent.html": "skip", 
300
    "web-platform-tests/html/semantics/interactive-elements/the-summary-element": "skip",
300
    "web-platform-tests/html/semantics/interactive-elements/the-summary-element": "skip", 
301
    "web-platform-tests/html/semantics/links/downloading-resources": "import",
301
    "web-platform-tests/html/semantics/links/downloading-resources": "import", 
302
    "web-platform-tests/html/semantics/links/following-hyperlinks": "skip",
302
    "web-platform-tests/html/semantics/links/following-hyperlinks": "skip", 
303
    "web-platform-tests/html/semantics/links/links-created-by-a-and-area-elements": "skip",
303
    "web-platform-tests/html/semantics/links/links-created-by-a-and-area-elements": "skip", 
304
    "web-platform-tests/html/semantics/scripting-1/the-script-element/execution-timing": "skip",
304
    "web-platform-tests/html/semantics/scripting-1/the-script-element/execution-timing": "skip", 
305
    "web-platform-tests/html/semantics/scripting-1/the-script-element/module": "import",
305
    "web-platform-tests/html/semantics/scripting-1/the-script-element/module": "import", 
306
    "web-platform-tests/html/semantics/scripting-1/the-script-element/script-for-event.xhtml": "skip",
306
    "web-platform-tests/html/semantics/scripting-1/the-script-element/script-for-event.xhtml": "skip", 
307
    "web-platform-tests/html/semantics/scripting-1/the-script-element/script-text.xhtml": "skip",
307
    "web-platform-tests/html/semantics/scripting-1/the-script-element/script-text.xhtml": "skip", 
308
    "web-platform-tests/html/semantics/tabular-data": "import",
308
    "web-platform-tests/html/semantics/tabular-data": "import", 
309
    "web-platform-tests/html/semantics/tabular-data/processing-model-1": "import",
309
    "web-platform-tests/html/semantics/tabular-data/processing-model-1": "import", 
310
    "web-platform-tests/html/semantics/text-level-semantics/the-data-element": "skip",
310
    "web-platform-tests/html/semantics/text-level-semantics/the-data-element": "skip", 
311
    "web-platform-tests/html/syntax": "import",
311
    "web-platform-tests/html/syntax": "import", 
312
    "web-platform-tests/html/the-xhtml-syntax": "import",
312
    "web-platform-tests/html/the-xhtml-syntax": "import", 
313
    "web-platform-tests/html/the-xhtml-syntax/parsing-xhtml-documents": "import",
313
    "web-platform-tests/html/the-xhtml-syntax/parsing-xhtml-documents": "import", 
314
    "web-platform-tests/html/tools": "import",
314
    "web-platform-tests/html/tools": "import", 
315
    "web-platform-tests/html/user-activation": "import",
315
    "web-platform-tests/html/user-activation": "import", 
316
    "web-platform-tests/html/webappapis": "import",
316
    "web-platform-tests/html/webappapis": "import", 
317
    "web-platform-tests/html/webappapis/dynamic-insertion": "import",
317
    "web-platform-tests/html/webappapis/dynamic-insertion": "import", 
318
    "web-platform-tests/html/webappapis/dynamic-markup-insertion": "import",
318
    "web-platform-tests/html/webappapis/dynamic-markup-insertion": "import", 
319
    "web-platform-tests/html/webappapis/idle-callbacks": "skip",
319
    "web-platform-tests/html/webappapis/idle-callbacks": "skip", 
320
    "web-platform-tests/html/webappapis/scripting/event-loops/microtask_after_raf.html": "skip",
320
    "web-platform-tests/html/webappapis/scripting/event-loops/microtask_after_raf.html": "skip", 
321
    "web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections": "skip",
321
    "web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections": "skip", 
322
    "web-platform-tests/html/webappapis/the-windoworworkerglobalscope-mixin": "import",
322
    "web-platform-tests/html/webappapis/the-windoworworkerglobalscope-mixin": "import", 
323
    "web-platform-tests/http": "skip",
323
    "web-platform-tests/http": "skip", 
324
    "web-platform-tests/image-decodes": "skip",
324
    "web-platform-tests/image-decodes": "skip", 
325
    "web-platform-tests/imagebitmap-renderingcontext": "import",
325
    "web-platform-tests/imagebitmap-renderingcontext": "import", 
326
    "web-platform-tests/images": "import",
326
    "web-platform-tests/images": "import", 
327
    "web-platform-tests/infrastructure": "import",
327
    "web-platform-tests/infrastructure": "import", 
328
    "web-platform-tests/innerText": "import",
328
    "web-platform-tests/innerText": "import", 
329
    "web-platform-tests/input-events": "skip",
329
    "web-platform-tests/input-events": "skip", 
330
    "web-platform-tests/interfaces": "import",
330
    "web-platform-tests/interfaces": "import", 
331
    "web-platform-tests/intersection-observer": "import",
331
    "web-platform-tests/intersection-observer": "import", 
332
    "web-platform-tests/js": "skip",
332
    "web-platform-tests/js": "skip", 
333
    "web-platform-tests/keyboard-lock": "skip",
333
    "web-platform-tests/keyboard-lock": "skip", 
334
    "web-platform-tests/loading/lazyload": "import",
334
    "web-platform-tests/loading/lazyload": "import", 
335
    "web-platform-tests/longtask-timing": "skip",
335
    "web-platform-tests/longtask-timing": "skip", 
336
    "web-platform-tests/magnetometer": "skip",
336
    "web-platform-tests/magnetometer": "skip", 
337
    "web-platform-tests/mathml": "import",
337
    "web-platform-tests/mathml": "import", 
338
    "web-platform-tests/media-capabilities": "skip",
338
    "web-platform-tests/media-capabilities": "skip", 
339
    "web-platform-tests/media-source": "import",
339
    "web-platform-tests/media-source": "import", 
340
    "web-platform-tests/media/": "import",
340
    "web-platform-tests/media/": "import", 
341
    "web-platform-tests/mediacapture-image": "skip",
341
    "web-platform-tests/mediacapture-image": "skip", 
342
    "web-platform-tests/mediacapture-record": "import",
342
    "web-platform-tests/mediacapture-record": "import", 
343
    "web-platform-tests/mediacapture-streams": "import",
343
    "web-platform-tests/mediacapture-streams": "import", 
344
    "web-platform-tests/mediacapture-streams/": "import",
344
    "web-platform-tests/mediacapture-streams/": "import", 
345
    "web-platform-tests/mediasession": "import",
345
    "web-platform-tests/mediasession": "import", 
346
    "web-platform-tests/microdata": "skip",
346
    "web-platform-tests/microdata": "skip", 
347
    "web-platform-tests/mimesniff": "import",
347
    "web-platform-tests/mimesniff": "import", 
348
    "web-platform-tests/mixed-content": "skip",
348
    "web-platform-tests/mixed-content": "skip", 
349
    "web-platform-tests/mst-content-hint": "import",
349
    "web-platform-tests/mst-content-hint": "import", 
350
    "web-platform-tests/navigation-timing": "skip",
350
    "web-platform-tests/navigation-timing": "skip", 
351
    "web-platform-tests/netinfo": "skip",
351
    "web-platform-tests/netinfo": "skip", 
352
    "web-platform-tests/notifications": "import",
352
    "web-platform-tests/notifications": "import", 
353
    "web-platform-tests/old-tests": "skip",
353
    "web-platform-tests/old-tests": "skip", 
354
    "web-platform-tests/orientation-event": "skip",
354
    "web-platform-tests/orientation-event": "skip", 
355
    "web-platform-tests/orientation-sensor": "skip",
355
    "web-platform-tests/orientation-sensor": "skip", 
356
    "web-platform-tests/page-visibility": "import",
356
    "web-platform-tests/page-visibility": "import", 
357
    "web-platform-tests/paint-timing": "skip",
357
    "web-platform-tests/paint-timing": "skip", 
358
    "web-platform-tests/payment-handler": "skip",
358
    "web-platform-tests/payment-handler": "skip", 
359
    "web-platform-tests/payment-method-basic-card": "skip",
359
    "web-platform-tests/payment-method-basic-card": "skip", 
360
    "web-platform-tests/payment-method-id": "skip",
360
    "web-platform-tests/payment-method-id": "skip", 
361
    "web-platform-tests/payment-request": "import",
361
    "web-platform-tests/payment-request": "import", 
362
    "web-platform-tests/performance-timeline": "skip",
362
    "web-platform-tests/performance-timeline": "skip", 
363
    "web-platform-tests/picture-in-picture": "import",
363
    "web-platform-tests/picture-in-picture": "import", 
364
    "web-platform-tests/pointerevents": "import",
364
    "web-platform-tests/pointerevents": "import", 
365
    "web-platform-tests/pointerlock": "skip",
365
    "web-platform-tests/pointerlock": "skip", 
366
    "web-platform-tests/preload": "skip",
366
    "web-platform-tests/preload": "skip", 
367
    "web-platform-tests/presentation-api": "skip",
367
    "web-platform-tests/presentation-api": "skip", 
368
    "web-platform-tests/progress-events": "skip",
368
    "web-platform-tests/progress-events": "skip", 
369
    "web-platform-tests/proximity": "skip",
369
    "web-platform-tests/proximity": "skip", 
370
    "web-platform-tests/quirks-mode": "skip",
370
    "web-platform-tests/quirks-mode": "skip", 
371
    "web-platform-tests/quirks/unitless-length": "import",
371
    "web-platform-tests/quirks/unitless-length": "import", 
372
    "web-platform-tests/referrer-policy": "import",
372
    "web-platform-tests/referrer-policy": "import", 
373
    "web-platform-tests/remote-playback": "import",
373
    "web-platform-tests/remote-playback": "import", 
374
    "web-platform-tests/requestidlecallback": "import",
374
    "web-platform-tests/requestidlecallback": "import", 
375
    "web-platform-tests/resize-observer": "import",
375
    "web-platform-tests/resize-observer": "import", 
376
    "web-platform-tests/resize-observer/": "import",
376
    "web-platform-tests/resize-observer/": "import", 
377
    "web-platform-tests/resource-timing": "import",
377
    "web-platform-tests/resource-timing": "import", 
378
    "web-platform-tests/resources": "import",
378
    "web-platform-tests/resources": "import", 
379
    "web-platform-tests/resources/chromium": "skip",
379
    "web-platform-tests/resources/chromium": "skip", 
380
    "web-platform-tests/resources/test": "skip",
380
    "web-platform-tests/resources/test": "skip", 
381
    "web-platform-tests/screen-orientation": "skip",
381
    "web-platform-tests/screen-orientation": "skip", 
382
    "web-platform-tests/scroll-anchoring": "skip",
382
    "web-platform-tests/scroll-anchoring": "skip", 
383
    "web-platform-tests/scroll-into-view": "skip",
383
    "web-platform-tests/scroll-into-view": "skip", 
384
    "web-platform-tests/secure-contexts": "import",
384
    "web-platform-tests/secure-contexts": "import", 
385
    "web-platform-tests/selection": "skip",
385
    "web-platform-tests/selection": "skip", 
386
    "web-platform-tests/selectors": "skip",
386
    "web-platform-tests/selectors": "skip", 
387
    "web-platform-tests/selectors-api": "skip",
387
    "web-platform-tests/selectors-api": "skip", 
388
    "web-platform-tests/server-timing": "import",
388
    "web-platform-tests/server-timing": "import", 
389
    "web-platform-tests/service-workers": "import",
389
    "web-platform-tests/service-workers": "import", 
390
    "web-platform-tests/shadow-dom": "import",
390
    "web-platform-tests/shadow-dom": "import", 
391
    "web-platform-tests/shadow-dom/untriaged": "skip",
391
    "web-platform-tests/shadow-dom/untriaged": "skip", 
392
    "web-platform-tests/speech-api": "import",
392
    "web-platform-tests/speech-api": "import", 
393
    "web-platform-tests/staticrange": "skip",
393
    "web-platform-tests/staticrange": "skip", 
394
    "web-platform-tests/storage": "skip",
394
    "web-platform-tests/storage": "skip", 
395
    "web-platform-tests/streams": "import",
395
    "web-platform-tests/streams": "import", 
396
    "web-platform-tests/streams/writable-streams": "skip",
396
    "web-platform-tests/streams/writable-streams": "skip", 
397
    "web-platform-tests/subresource-integrity": "import",
397
    "web-platform-tests/subresource-integrity": "import", 
398
    "web-platform-tests/svg": "import",
398
    "web-platform-tests/svg": "import", 
399
    "web-platform-tests/svg-aam": "skip",
399
    "web-platform-tests/svg-aam": "skip", 
400
    "web-platform-tests/test/html/infrastructure": "import",
400
    "web-platform-tests/test/html/infrastructure": "import", 
401
    "web-platform-tests/testharness_runner.html": "skip",
401
    "web-platform-tests/testharness_runner.html": "skip", 
402
    "web-platform-tests/tools": "import",
402
    "web-platform-tests/tools": "import", 
403
    "web-platform-tests/tools/__init__.py": "import",
403
    "web-platform-tests/tools/__init__.py": "import", 
404
    "web-platform-tests/tools/html5lib": "import",
404
    "web-platform-tests/tools/html5lib": "import", 
405
    "web-platform-tests/tools/localpaths.py": "import",
405
    "web-platform-tests/tools/localpaths.py": "import", 
406
    "web-platform-tests/tools/manifest": "import",
406
    "web-platform-tests/tools/manifest": "import", 
407
    "web-platform-tests/tools/pywebsocket": "import",
407
    "web-platform-tests/tools/pywebsocket": "import", 
408
    "web-platform-tests/tools/serve": "import",
408
    "web-platform-tests/tools/serve": "import", 
409
    "web-platform-tests/tools/six": "import",
409
    "web-platform-tests/tools/six": "import", 
410
    "web-platform-tests/tools/sslutils": "import",
410
    "web-platform-tests/tools/sslutils": "import", 
411
    "web-platform-tests/tools/wptserve": "import",
411
    "web-platform-tests/tools/wptserve": "import", 
412
    "web-platform-tests/touch-events": "import",
412
    "web-platform-tests/touch-events": "import", 
413
    "web-platform-tests/trusted-types": "skip",
413
    "web-platform-tests/trusted-types": "skip", 
414
    "web-platform-tests/typedarrays": "skip",
414
    "web-platform-tests/typedarrays": "skip", 
415
    "web-platform-tests/uievents": "import",
415
    "web-platform-tests/uievents": "import", 
416
    "web-platform-tests/upgrade-insecure-requests": "skip",
416
    "web-platform-tests/upgrade-insecure-requests": "skip", 
417
    "web-platform-tests/url": "import",
417
    "web-platform-tests/url": "import", 
418
    "web-platform-tests/user-timing": "import",
418
    "web-platform-tests/user-timing": "import", 
419
    "web-platform-tests/vibration": "skip",
419
    "web-platform-tests/vibration": "skip", 
420
    "web-platform-tests/visual-viewport": "import",
420
    "web-platform-tests/visual-viewport": "import", 
421
    "web-platform-tests/wai-aria": "skip",
421
    "web-platform-tests/wai-aria": "skip", 
422
    "web-platform-tests/wasm": "import",
422
    "web-platform-tests/wasm": "import", 
423
    "web-platform-tests/wasm/jsapi": "import",
423
    "web-platform-tests/wasm/jsapi": "import", 
424
    "web-platform-tests/web-animations": "import",
424
    "web-platform-tests/web-animations": "import", 
425
    "web-platform-tests/web-nfc": "skip",
425
    "web-platform-tests/web-nfc": "skip", 
426
    "web-platform-tests/web-share": "import",
426
    "web-platform-tests/web-share": "import", 
427
    "web-platform-tests/webaudio": "import",
427
    "web-platform-tests/webaudio": "import", 
428
    "web-platform-tests/webauthn": "skip",
428
    "web-platform-tests/webauthn": "skip", 
429
    "web-platform-tests/webdriver": "skip",
429
    "web-platform-tests/webdriver": "skip", 
430
    "web-platform-tests/webgl": "skip",
430
    "web-platform-tests/webgl": "skip", 
431
    "web-platform-tests/webmessaging": "import",
431
    "web-platform-tests/webmessaging": "import", 
432
    "web-platform-tests/webmessaging/": "import",
432
    "web-platform-tests/webmessaging/": "import", 
433
    "web-platform-tests/webrtc": "import",
433
    "web-platform-tests/webrtc": "import", 
434
    "web-platform-tests/webrtc/legacy": "skip",
434
    "web-platform-tests/webrtc/legacy": "skip", 
435
    "web-platform-tests/websockets": "import",
435
    "web-platform-tests/websockets": "import", 
436
    "web-platform-tests/webstorage": "skip",
436
    "web-platform-tests/webstorage": "skip", 
437
    "web-platform-tests/webusb": "skip",
437
    "web-platform-tests/webusb": "skip", 
438
    "web-platform-tests/webvr": "skip",
438
    "web-platform-tests/webvr": "skip", 
439
    "web-platform-tests/webvtt": "skip",
439
    "web-platform-tests/webvtt": "skip", 
440
    "web-platform-tests/webxr": "import",
440
    "web-platform-tests/webxr": "import", 
441
    "web-platform-tests/workers": "import",
441
    "web-platform-tests/workers": "import", 
442
    "web-platform-tests/worklets": "import",
442
    "web-platform-tests/worklets": "import", 
443
    "web-platform-tests/x-frame-options": "skip",
443
    "web-platform-tests/x-frame-options": "skip", 
444
    "web-platform-tests/xhr": "import",
444
    "web-platform-tests/xhr": "import", 
445
    "web-platform/test/html/infrastructure": "import"
445
    "web-platform/test/html/infrastructure": "import"
446
}
446
}
- a/LayoutTests/imported/w3c/web-platform-tests/common/__init__.py +1 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/common/__init__.py_sec1
1
# This file is required for Python to search this directory for modules.
- a/LayoutTests/imported/w3c/web-platform-tests/common/echo.py -3 / +3 lines
Lines 1-6 a/LayoutTests/imported/w3c/web-platform-tests/common/echo.py_sec1
1
def main(request, response):
1
def main(request, response):
2
    # Without X-XSS-Protection to disable non-standard XSS protection the functionality this
2
    # Without X-XSS-Protection to disable non-standard XSS protection the functionality this
3
    # resource offers is useless
3
    # resource offers is useless
4
    response.headers.set("X-XSS-Protection", "0")
4
    response.headers.set(b"X-XSS-Protection", b"0")
5
    response.headers.set("Content-Type", "text/html")
5
    response.headers.set(b"Content-Type", b"text/html")
6
    response.content = request.GET.first("content")
6
    response.content = request.GET.first(b"content")
- a/LayoutTests/imported/w3c/web-platform-tests/common/get-host-info.sub.js +2 lines
Lines 7-12 function get_host_info() { a/LayoutTests/imported/w3c/web-platform-tests/common/get-host-info.sub.js_sec1
7
  var HTTP_PORT = '{{ports[http][0]}}';
7
  var HTTP_PORT = '{{ports[http][0]}}';
8
  var HTTP_PORT2 = '{{ports[http][1]}}';
8
  var HTTP_PORT2 = '{{ports[http][1]}}';
9
  var HTTPS_PORT = '{{ports[https][0]}}';
9
  var HTTPS_PORT = '{{ports[https][0]}}';
10
  var HTTPS_PORT2 = '{{ports[https][1]}}';
10
  var PROTOCOL = self.location.protocol;
11
  var PROTOCOL = self.location.protocol;
11
  var IS_HTTPS = (PROTOCOL == "https:");
12
  var IS_HTTPS = (PROTOCOL == "https:");
12
  var HTTP_PORT_ELIDED = HTTP_PORT == "80" ? "" : (":" + HTTP_PORT);
13
  var HTTP_PORT_ELIDED = HTTP_PORT == "80" ? "" : (":" + HTTP_PORT);
Lines 22-27 function get_host_info() { a/LayoutTests/imported/w3c/web-platform-tests/common/get-host-info.sub.js_sec2
22
    HTTP_PORT: HTTP_PORT,
23
    HTTP_PORT: HTTP_PORT,
23
    HTTP_PORT2: HTTP_PORT2,
24
    HTTP_PORT2: HTTP_PORT2,
24
    HTTPS_PORT: HTTPS_PORT,
25
    HTTPS_PORT: HTTPS_PORT,
26
    HTTPS_PORT2: HTTPS_PORT2,
25
    ORIGINAL_HOST: ORIGINAL_HOST,
27
    ORIGINAL_HOST: ORIGINAL_HOST,
26
    REMOTE_HOST: REMOTE_HOST,
28
    REMOTE_HOST: REMOTE_HOST,
27
29
- a/LayoutTests/imported/w3c/web-platform-tests/common/redirect-opt-in.py -5 / +5 lines
Lines 6-20 def main(request, response): a/LayoutTests/imported/w3c/web-platform-tests/common/redirect-opt-in.py_sec1
6
    location - The resource to redirect to.
6
    location - The resource to redirect to.
7
    """
7
    """
8
    status = 302
8
    status = 302
9
    if "status" in request.GET:
9
    if b"status" in request.GET:
10
        try:
10
        try:
11
            status = int(request.GET.first("status"))
11
            status = int(request.GET.first(b"status"))
12
        except ValueError:
12
        except ValueError:
13
            pass
13
            pass
14
14
15
    response.status = status
15
    response.status = status
16
16
17
    location = request.GET.first("location")
17
    location = request.GET.first(b"location")
18
18
19
    response.headers.set("Location", location)
19
    response.headers.set(b"Location", location)
20
    response.headers.set("Timing-Allow-Origin", "*")
20
    response.headers.set(b"Timing-Allow-Origin", b"*")
- a/LayoutTests/imported/w3c/web-platform-tests/common/sab.js +3 lines
Lines 5-10 a/LayoutTests/imported/w3c/web-platform-tests/common/sab.js_sec1
5
    if (type === "ArrayBuffer") {
5
    if (type === "ArrayBuffer") {
6
      return new ArrayBuffer(length);
6
      return new ArrayBuffer(length);
7
    } else if (type === "SharedArrayBuffer") {
7
    } else if (type === "SharedArrayBuffer") {
8
      if (sabConstructor.name !== "SharedArrayBuffer") {
9
        throw new Error("WebAssembly.Memory does not support shared:true");
10
      }
8
      return new sabConstructor(length);
11
      return new sabConstructor(length);
9
    } else {
12
    } else {
10
      throw new Error("type has to be ArrayBuffer or SharedArrayBuffer");
13
      throw new Error("type has to be ArrayBuffer or SharedArrayBuffer");
- a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/README.md -2 / +2 lines
Lines 278-286 The ```excluded_tests``` section have objects with the same format as [Test Expa a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/README.md_sec1
278
278
279
Taking the spec JSON, the generator follows this algorithm:
279
Taking the spec JSON, the generator follows this algorithm:
280
280
281
* Expand all ```excluded_tests``` to create a blacklist of selections
281
* Expand all ```excluded_tests``` to create a denylist of selections
282
282
283
* For each `specification` entries: Expand the ```test_expansion``` pattern into selections and check each against the blacklist, if not marked as suppresed, generate the test resources for the selection
283
* For each `specification` entries: Expand the ```test_expansion``` pattern into selections and check each against the denylist, if not marked as suppresed, generate the test resources for the selection
284
284
285
###  SourceContext Resolution
285
###  SourceContext Resolution
286
286
- a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/__init__.py +1 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/__init__.py_sec1
1
# This file is required for Python to search this directory for modules.
- a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/scope/__init__.py +1 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/scope/__init__.py_sec1
1
# This file is required for Python to search this directory for modules.
- a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/scope/document.py -18 / +19 lines
Lines 1-35 a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/scope/document.py_sec1
1
import os, sys, json
1
import os, sys, json
2
2
3
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
3
from wptserve.utils import isomorphic_decode, isomorphic_encode
4
import util
5
4
5
import importlib
6
util = importlib.import_module("common.security-features.scope.util")
6
7
7
def main(request, response):
8
def main(request, response):
8
  policyDeliveries = json.loads(request.GET.first("policyDeliveries", "[]"))
9
  policyDeliveries = json.loads(request.GET.first(b"policyDeliveries", b"[]"))
9
  maybe_additional_headers = {}
10
  maybe_additional_headers = {}
10
  meta = ''
11
  meta = u''
11
  error = ''
12
  error = u''
12
  for delivery in policyDeliveries:
13
  for delivery in policyDeliveries:
13
    if delivery['deliveryType'] == 'meta':
14
    if delivery[u'deliveryType'] == u'meta':
14
      if delivery['key'] == 'referrerPolicy':
15
      if delivery[u'key'] == u'referrerPolicy':
15
        meta += '<meta name="referrer" content="%s">' % delivery['value']
16
        meta += u'<meta name="referrer" content="%s">' % delivery[u'value']
16
      else:
17
      else:
17
        error = 'invalid delivery key'
18
        error = u'invalid delivery key'
18
    elif delivery['deliveryType'] == 'http-rp':
19
    elif delivery[u'deliveryType'] == u'http-rp':
19
      if delivery['key'] == 'referrerPolicy':
20
      if delivery[u'key'] == u'referrerPolicy':
20
        maybe_additional_headers['Referrer-Policy'] = delivery['value']
21
        maybe_additional_headers[b'Referrer-Policy'] = isomorphic_encode(delivery[u'value'])
21
      else:
22
      else:
22
        error = 'invalid delivery key'
23
        error = u'invalid delivery key'
23
    else:
24
    else:
24
      error = 'invalid deliveryType'
25
      error = u'invalid deliveryType'
25
26
26
  handler = lambda: util.get_template("document.html.template") % ({
27
  handler = lambda: util.get_template(u"document.html.template") % ({
27
      "meta": meta,
28
      u"meta": meta,
28
      "error": error
29
      u"error": error
29
  })
30
  })
30
  util.respond(
31
  util.respond(
31
      request,
32
      request,
32
      response,
33
      response,
33
      payload_generator=handler,
34
      payload_generator=handler,
34
      content_type="text/html",
35
      content_type=b"text/html",
35
      maybe_additional_headers=maybe_additional_headers)
36
      maybe_additional_headers=maybe_additional_headers)
- a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/scope/util.py -9 / +10 lines
Lines 1-10 a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/scope/util.py_sec1
1
import os
1
import os
2
2
3
from wptserve.utils import isomorphic_decode
3
4
4
def get_template(template_basename):
5
def get_template(template_basename):
5
  script_directory = os.path.dirname(os.path.abspath(__file__))
6
  script_directory = os.path.dirname(os.path.abspath(isomorphic_decode(__file__)))
6
  template_directory = os.path.abspath(
7
  template_directory = os.path.abspath(
7
      os.path.join(script_directory, "template"))
8
      os.path.join(script_directory, u"template"))
8
  template_filename = os.path.join(template_directory, template_basename)
9
  template_filename = os.path.join(template_directory, template_basename)
9
10
10
  with open(template_filename, "r") as f:
11
  with open(template_filename, "r") as f:
Lines 12-36 def get_template(template_basename): a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/scope/util.py_sec2
12
13
13
14
14
def __noop(request, response):
15
def __noop(request, response):
15
  return ""
16
  return u""
16
17
17
18
18
def respond(request,
19
def respond(request,
19
            response,
20
            response,
20
            status_code=200,
21
            status_code=200,
21
            content_type="text/html",
22
            content_type=b"text/html",
22
            payload_generator=__noop,
23
            payload_generator=__noop,
23
            cache_control="no-cache; must-revalidate",
24
            cache_control=b"no-cache; must-revalidate",
24
            access_control_allow_origin="*",
25
            access_control_allow_origin=b"*",
25
            maybe_additional_headers=None):
26
            maybe_additional_headers=None):
26
  response.add_required_headers = False
27
  response.add_required_headers = False
27
  response.writer.write_status(status_code)
28
  response.writer.write_status(status_code)
28
29
29
  if access_control_allow_origin != None:
30
  if access_control_allow_origin != None:
30
    response.writer.write_header("access-control-allow-origin",
31
    response.writer.write_header(b"access-control-allow-origin",
31
                                 access_control_allow_origin)
32
                                 access_control_allow_origin)
32
  response.writer.write_header("content-type", content_type)
33
  response.writer.write_header(b"content-type", content_type)
33
  response.writer.write_header("cache-control", cache_control)
34
  response.writer.write_header(b"cache-control", cache_control)
34
35
35
  additional_headers = maybe_additional_headers or {}
36
  additional_headers = maybe_additional_headers or {}
36
  for header, value in additional_headers.items():
37
  for header, value in additional_headers.items():
- a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/scope/w3c-import.log +1 lines
Lines 14-19 Property values requiring vendor prefixes: a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/scope/w3c-import.log_sec1
14
None
14
None
15
------------------------------------------------------------------------
15
------------------------------------------------------------------------
16
List of files:
16
List of files:
17
/LayoutTests/imported/w3c/web-platform-tests/common/security-features/scope/__init__.py
17
/LayoutTests/imported/w3c/web-platform-tests/common/security-features/scope/document.py
18
/LayoutTests/imported/w3c/web-platform-tests/common/security-features/scope/document.py
18
/LayoutTests/imported/w3c/web-platform-tests/common/security-features/scope/util.py
19
/LayoutTests/imported/w3c/web-platform-tests/common/security-features/scope/util.py
19
/LayoutTests/imported/w3c/web-platform-tests/common/security-features/scope/worker.py
20
/LayoutTests/imported/w3c/web-platform-tests/common/security-features/scope/worker.py
- a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/scope/worker.py -25 / +25 lines
Lines 1-44 a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/scope/worker.py_sec1
1
import os, sys, json
1
import os, sys, json
2
2
3
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
3
from wptserve.utils import isomorphic_decode, isomorphic_encode
4
import util
4
import importlib
5
5
util = importlib.import_module("common.security-features.scope.util")
6
6
7
def main(request, response):
7
def main(request, response):
8
  policyDeliveries = json.loads(request.GET.first('policyDeliveries', '[]'))
8
  policyDeliveries = json.loads(request.GET.first(b'policyDeliveries', b'[]'))
9
  worker_type = request.GET.first('type', 'classic')
9
  worker_type = request.GET.first(b'type', b'classic')
10
  commonjs_url = '%s://%s:%s/common/security-features/resources/common.sub.js' % (
10
  commonjs_url = u'%s://%s:%s/common/security-features/resources/common.sub.js' % (
11
      request.url_parts.scheme, request.url_parts.hostname,
11
      request.url_parts.scheme, request.url_parts.hostname,
12
      request.url_parts.port)
12
      request.url_parts.port)
13
  if worker_type == 'classic':
13
  if worker_type == b'classic':
14
    import_line = 'importScripts("%s");' % commonjs_url
14
    import_line = u'importScripts("%s");' % commonjs_url
15
  else:
15
  else:
16
    import_line = 'import "%s";' % commonjs_url
16
    import_line = u'import "%s";' % commonjs_url
17
17
18
  maybe_additional_headers = {}
18
  maybe_additional_headers = {}
19
  error = ''
19
  error = u''
20
  for delivery in policyDeliveries:
20
  for delivery in policyDeliveries:
21
    if delivery['deliveryType'] == 'meta':
21
    if delivery[u'deliveryType'] == u'meta':
22
      error = '<meta> cannot be used in WorkerGlobalScope'
22
      error = u'<meta> cannot be used in WorkerGlobalScope'
23
    elif delivery['deliveryType'] == 'http-rp':
23
    elif delivery[u'deliveryType'] == u'http-rp':
24
      if delivery['key'] == 'referrerPolicy':
24
      if delivery[u'key'] == u'referrerPolicy':
25
        maybe_additional_headers['Referrer-Policy'] = delivery['value']
25
        maybe_additional_headers[b'Referrer-Policy'] = isomorphic_encode(delivery[u'value'])
26
      elif delivery['key'] == 'mixedContent' and delivery['value'] == 'opt-in':
26
      elif delivery[u'key'] == u'mixedContent' and delivery[u'value'] == u'opt-in':
27
        maybe_additional_headers['Content-Security-Policy'] = 'block-all-mixed-content'
27
        maybe_additional_headers[b'Content-Security-Policy'] = b'block-all-mixed-content'
28
      elif delivery['key'] == 'upgradeInsecureRequests' and delivery['value'] == 'upgrade':
28
      elif delivery[u'key'] == u'upgradeInsecureRequests' and delivery[u'value'] == u'upgrade':
29
        maybe_additional_headers['Content-Security-Policy'] = 'upgrade-insecure-requests'
29
        maybe_additional_headers[b'Content-Security-Policy'] = b'upgrade-insecure-requests'
30
      else:
30
      else:
31
        error = 'invalid delivery key for http-rp: %s' % delivery['key']
31
        error = u'invalid delivery key for http-rp: %s' % delivery[u'key']
32
    else:
32
    else:
33
      error = 'invalid deliveryType: %s' % delivery['deliveryType']
33
      error = u'invalid deliveryType: %s' % delivery[u'deliveryType']
34
34
35
  handler = lambda: util.get_template('worker.js.template') % ({
35
  handler = lambda: util.get_template(u'worker.js.template') % ({
36
      'import': import_line,
36
      u'import': import_line,
37
      'error': error
37
      u'error': error
38
  })
38
  })
39
  util.respond(
39
  util.respond(
40
      request,
40
      request,
41
      response,
41
      response,
42
      payload_generator=handler,
42
      payload_generator=handler,
43
      content_type='text/javascript',
43
      content_type=b'text/javascript',
44
      maybe_additional_headers=maybe_additional_headers)
44
      maybe_additional_headers=maybe_additional_headers)
- a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/audio.py -7 / +7 lines
Lines 1-10 a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/audio.py_sec1
1
import os, sys
1
import os, sys
2
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
2
from wptserve.utils import isomorphic_decode
3
import subresource
3
import importlib
4
subresource = importlib.import_module("common.security-features.subresource.subresource")
4
5
5
def generate_payload(request, server_data):
6
def generate_payload(request, server_data):
6
    file = os.path.join(request.doc_root, "webaudio", "resources",
7
    file = os.path.join(request.doc_root, u"webaudio", u"resources",
7
                        "sin_440Hz_-6dBFS_1s.wav")
8
                        u"sin_440Hz_-6dBFS_1s.wav")
8
    return open(file, "rb").read()
9
    return open(file, "rb").read()
9
10
10
11
Lines 13-18 def main(request, response): a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/audio.py_sec2
13
    subresource.respond(request,
14
    subresource.respond(request,
14
                        response,
15
                        response,
15
                        payload_generator = handler,
16
                        payload_generator = handler,
16
                        access_control_allow_origin = "*",
17
                        access_control_allow_origin = b"*",
17
                        content_type = "audio/wav")
18
                        content_type = b"audio/wav")
18
- a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/document.py -3 / +4 lines
Lines 1-9 a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/document.py_sec1
1
import os, sys
1
import os, sys
2
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
2
from wptserve.utils import isomorphic_decode
3
import subresource
3
import importlib
4
subresource = importlib.import_module("common.security-features.subresource.subresource")
4
5
5
def generate_payload(server_data):
6
def generate_payload(server_data):
6
    return subresource.get_template("document.html.template") % server_data
7
    return subresource.get_template(u"document.html.template") % server_data
7
8
8
def main(request, response):
9
def main(request, response):
9
    subresource.respond(request,
10
    subresource.respond(request,
- a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/empty.py -6 / +6 lines
Lines 1-14 a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/empty.py_sec1
1
import os, sys
1
import os, sys
2
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
2
from wptserve.utils import isomorphic_decode
3
import subresource
3
import importlib
4
subresource = importlib.import_module("common.security-features.subresource.subresource")
4
5
5
def generate_payload(server_data):
6
def generate_payload(server_data):
6
    return ''
7
    return u''
7
8
8
def main(request, response):
9
def main(request, response):
9
    subresource.respond(request,
10
    subresource.respond(request,
10
                        response,
11
                        response,
11
                        payload_generator = generate_payload,
12
                        payload_generator = generate_payload,
12
                        access_control_allow_origin = "*",
13
                        access_control_allow_origin = b"*",
13
                        content_type = "text/plain")
14
                        content_type = b"text/plain")
14
- a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/font.py -55 / +64 lines
Lines 1-72 a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/font.py_sec1
1
import os, sys, base64
1
import os, sys, base64
2
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
2
import six
3
import subresource
3
4
from wptserve.utils import isomorphic_decode
5
import importlib
6
subresource = importlib.import_module("common.security-features.subresource.subresource")
7
8
9
def decodebytes(s):
10
    if six.PY3:
11
        return base64.decodebytes(six.ensure_binary(s))
12
    return base64.decodestring(s)
4
13
5
def generate_payload(request, server_data):
14
def generate_payload(request, server_data):
6
    data = ('{"headers": %(headers)s}') % server_data
15
    data = (u'{"headers": %(headers)s}') % server_data
7
    if "id" in request.GET:
16
    if b"id" in request.GET:
8
        request.server.stash.put(request.GET["id"], data)
17
        request.server.stash.put(request.GET[b"id"], data)
9
    # Simple base64 encoded .tff font
18
    # Simple base64 encoded .tff font
10
    return base64.decodestring("AAEAAAANAIAAAwBQRkZUTU6u6MkAAAXcAAAAHE9TLzJWYW"
19
    return decodebytes(b"AAEAAAANAIAAAwBQRkZUTU6u6MkAAAXcAAAAHE9TLzJWYW"
11
                               "QKAAABWAAAAFZjbWFwAA8D7wAAAcAAAAFCY3Z0IAAhAnkA"
20
                       b"QKAAABWAAAAFZjbWFwAA8D7wAAAcAAAAFCY3Z0IAAhAnkA"
12
                               "AAMEAAAABGdhc3D//wADAAAF1AAAAAhnbHlmCC6aTwAAAx"
21
                       b"AAMEAAAABGdhc3D//wADAAAF1AAAAAhnbHlmCC6aTwAAAx"
13
                               "QAAACMaGVhZO8ooBcAAADcAAAANmhoZWEIkAV9AAABFAAA"
22
                       b"QAAACMaGVhZO8ooBcAAADcAAAANmhoZWEIkAV9AAABFAAA"
14
                               "ACRobXR4EZQAhQAAAbAAAAAQbG9jYQBwAFQAAAMIAAAACm"
23
                       b"ACRobXR4EZQAhQAAAbAAAAAQbG9jYQBwAFQAAAMIAAAACm"
15
                               "1heHAASQA9AAABOAAAACBuYW1lehAVOgAAA6AAAAIHcG9z"
24
                       b"1heHAASQA9AAABOAAAACBuYW1lehAVOgAAA6AAAAIHcG9z"
16
                               "dP+uADUAAAWoAAAAKgABAAAAAQAAMhPyuV8PPPUACwPoAA"
25
                       b"dP+uADUAAAWoAAAAKgABAAAAAQAAMhPyuV8PPPUACwPoAA"
17
                               "AAAMU4Lm0AAAAAxTgubQAh/5wFeAK8AAAACAACAAAAAAAA"
26
                       b"AAAMU4Lm0AAAAAxTgubQAh/5wFeAK8AAAACAACAAAAAAAA"
18
                               "AAEAAAK8/5wAWgXcAAAAAAV4AAEAAAAAAAAAAAAAAAAAAA"
27
                       b"AAEAAAK8/5wAWgXcAAAAAAV4AAEAAAAAAAAAAAAAAAAAAA"
19
                               "AEAAEAAAAEAAwAAwAAAAAAAgAAAAEAAQAAAEAALgAAAAAA"
28
                       b"AEAAEAAAAEAAwAAwAAAAAAAgAAAAEAAQAAAEAALgAAAAAA"
20
                               "AQXcAfQABQAAAooCvAAAAIwCigK8AAAB4AAxAQIAAAIABg"
29
                       b"AQXcAfQABQAAAooCvAAAAIwCigK8AAAB4AAxAQIAAAIABg"
21
                               "kAAAAAAAAAAAABAAAAAAAAAAAAAAAAUGZFZABAAEEAQQMg"
30
                       b"kAAAAAAAAAAAABAAAAAAAAAAAAAAAAUGZFZABAAEEAQQMg"
22
                               "/zgAWgK8AGQAAAABAAAAAAAABdwAIQAAAAAF3AAABdwAZA"
31
                       b"/zgAWgK8AGQAAAABAAAAAAAABdwAIQAAAAAF3AAABdwAZA"
23
                               "AAAAMAAAADAAAAHAABAAAAAAA8AAMAAQAAABwABAAgAAAA"
32
                       b"AAAAMAAAADAAAAHAABAAAAAAA8AAMAAQAAABwABAAgAAAA"
24
                               "BAAEAAEAAABB//8AAABB////wgABAAAAAAAAAQYAAAEAAA"
33
                       b"BAAEAAEAAABB//8AAABB////wgABAAAAAAAAAQYAAAEAAA"
25
                               "AAAAAAAQIAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAA"
34
                       b"AAAAAAAQIAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAA"
26
                               "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAA"
35
                       b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAA"
27
                               "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
36
                       b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
28
                               "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
37
                       b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
29
                               "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
38
                       b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
30
                               "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
39
                       b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
31
                               "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
40
                       b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
32
                               "AAAAAAAAAAAAAAAAAAAhAnkAAAAqACoAKgBGAAAAAgAhAA"
41
                       b"AAAAAAAAAAAAAAAAAAAhAnkAAAAqACoAKgBGAAAAAgAhAA"
33
                               "ABKgKaAAMABwAusQEALzyyBwQA7TKxBgXcPLIDAgDtMgCx"
42
                       b"ABKgKaAAMABwAusQEALzyyBwQA7TKxBgXcPLIDAgDtMgCx"
34
                               "AwAvPLIFBADtMrIHBgH8PLIBAgDtMjMRIREnMxEjIQEJ6M"
43
                       b"AwAvPLIFBADtMrIHBgH8PLIBAgDtMjMRIREnMxEjIQEJ6M"
35
                               "fHApr9ZiECWAAAAwBk/5wFeAK8AAMABwALAAABNSEVATUh"
44
                       b"fHApr9ZiECWAAAAwBk/5wFeAK8AAMABwALAAABNSEVATUh"
36
                               "FQE1IRUB9AH0/UQDhPu0BRQB9MjI/tTIyP7UyMgAAAAAAA"
45
                       b"FQE1IRUB9AH0/UQDhPu0BRQB9MjI/tTIyP7UyMgAAAAAAA"
37
                               "4ArgABAAAAAAAAACYATgABAAAAAAABAAUAgQABAAAAAAAC"
46
                       b"4ArgABAAAAAAAAACYATgABAAAAAAABAAUAgQABAAAAAAAC"
38
                               "AAYAlQABAAAAAAADACEA4AABAAAAAAAEAAUBDgABAAAAAA"
47
                       b"AAYAlQABAAAAAAADACEA4AABAAAAAAAEAAUBDgABAAAAAA"
39
                               "AFABABNgABAAAAAAAGAAUBUwADAAEECQAAAEwAAAADAAEE"
48
                       b"AFABABNgABAAAAAAAGAAUBUwADAAEECQAAAEwAAAADAAEE"
40
                               "CQABAAoAdQADAAEECQACAAwAhwADAAEECQADAEIAnAADAA"
49
                       b"CQABAAoAdQADAAEECQACAAwAhwADAAEECQADAEIAnAADAA"
41
                               "EECQAEAAoBAgADAAEECQAFACABFAADAAEECQAGAAoBRwBD"
50
                       b"EECQAEAAoBAgADAAEECQAFACABFAADAAEECQAGAAoBRwBD"
42
                               "AG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADAAOA"
51
                       b"AG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADAAOA"
43
                               "AgAE0AbwB6AGkAbABsAGEAIABDAG8AcgBwAG8AcgBhAHQA"
52
                       b"AgAE0AbwB6AGkAbABsAGEAIABDAG8AcgBwAG8AcgBhAHQA"
44
                               "aQBvAG4AAENvcHlyaWdodCAoYykgMjAwOCBNb3ppbGxhIE"
53
                       b"aQBvAG4AAENvcHlyaWdodCAoYykgMjAwOCBNb3ppbGxhIE"
45
                               "NvcnBvcmF0aW9uAABNAGEAcgBrAEEAAE1hcmtBAABNAGUA"
54
                       b"NvcnBvcmF0aW9uAABNAGEAcgBrAEEAAE1hcmtBAABNAGUA"
46
                               "ZABpAHUAbQAATWVkaXVtAABGAG8AbgB0AEYAbwByAGcAZQ"
55
                       b"ZABpAHUAbQAATWVkaXVtAABGAG8AbgB0AEYAbwByAGcAZQ"
47
                               "AgADIALgAwACAAOgAgAE0AYQByAGsAQQAgADoAIAA1AC0A"
56
                       b"AgADIALgAwACAAOgAgAE0AYQByAGsAQQAgADoAIAA1AC0A"
48
                               "MQAxAC0AMgAwADAAOAAARm9udEZvcmdlIDIuMCA6IE1hcm"
57
                       b"MQAxAC0AMgAwADAAOAAARm9udEZvcmdlIDIuMCA6IE1hcm"
49
                               "tBIDogNS0xMS0yMDA4AABNAGEAcgBrAEEAAE1hcmtBAABW"
58
                       b"tBIDogNS0xMS0yMDA4AABNAGEAcgBrAEEAAE1hcmtBAABW"
50
                               "AGUAcgBzAGkAbwBuACAAMAAwADEALgAwADAAMAAgAABWZX"
59
                       b"AGUAcgBzAGkAbwBuACAAMAAwADEALgAwADAAMAAgAABWZX"
51
                               "JzaW9uIDAwMS4wMDAgAABNAGEAcgBrAEEAAE1hcmtBAAAA"
60
                       b"JzaW9uIDAwMS4wMDAgAABNAGEAcgBrAEEAAE1hcmtBAAAA"
52
                               "AgAAAAAAAP+DADIAAAABAAAAAAAAAAAAAAAAAAAAAAAEAA"
61
                       b"AgAAAAAAAP+DADIAAAABAAAAAAAAAAAAAAAAAAAAAAAEAA"
53
                               "AAAQACACQAAAAAAAH//wACAAAAAQAAAADEPovuAAAAAMU4"
62
                       b"AAAQACACQAAAAAAAH//wACAAAAAQAAAADEPovuAAAAAMU4"
54
                               "Lm0AAAAAxTgubQ==");
63
                       b"Lm0AAAAAxTgubQ==")
55
64
56
def generate_report_headers_payload(request, server_data):
65
def generate_report_headers_payload(request, server_data):
57
    stashed_data = request.server.stash.take(request.GET["id"])
66
    stashed_data = request.server.stash.take(request.GET[b"id"])
58
    return stashed_data
67
    return stashed_data
59
68
60
def main(request, response):
69
def main(request, response):
61
    handler = lambda data: generate_payload(request, data)
70
    handler = lambda data: generate_payload(request, data)
62
    content_type = 'application/x-font-truetype'
71
    content_type = b'application/x-font-truetype'
63
72
64
    if "report-headers" in request.GET:
73
    if b"report-headers" in request.GET:
65
        handler = lambda data: generate_report_headers_payload(request, data)
74
        handler = lambda data: generate_report_headers_payload(request, data)
66
        content_type = 'application/json'
75
        content_type = b'application/json'
67
76
68
    subresource.respond(request,
77
    subresource.respond(request,
69
                        response,
78
                        response,
70
                        payload_generator = handler,
79
                        payload_generator = handler,
71
                        content_type = content_type,
80
                        content_type = content_type,
72
                        access_control_allow_origin = "*")
81
                        access_control_allow_origin = b"*")
- a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/image.py -16 / +21 lines
Lines 1-6 a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/image.py_sec1
1
import os, sys, array, math, StringIO
1
import os, sys, array, math
2
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
2
3
import subresource
3
from six import BytesIO
4
5
from wptserve.utils import isomorphic_decode
6
7
import importlib
8
subresource = importlib.import_module("common.security-features.subresource.subresource")
4
9
5
class Image:
10
class Image:
6
    """This class partially implements the interface of the PIL.Image.Image.
11
    """This class partially implements the interface of the PIL.Image.Image.
Lines 36-44 def putdata(self, color_data): a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/image.py_sec2
36
    def save(self, f, type):
41
    def save(self, f, type):
37
        assert type == "BMP"
42
        assert type == "BMP"
38
        # 54 bytes of preambule + image color data.
43
        # 54 bytes of preambule + image color data.
39
        filesize = 54 + 3 * self.width * self.height;
44
        filesize = 54 + 3 * self.width * self.height
40
        # 14 bytes of header.
45
        # 14 bytes of header.
41
        bmpfileheader = bytearray(['B', 'M'] + self._int_to_bytes(filesize) +
46
        bmpfileheader = bytearray([ord('B'), ord('M')] + self._int_to_bytes(filesize) +
42
                                  [0, 0, 0, 0, 54, 0, 0, 0])
47
                                  [0, 0, 0, 0, 54, 0, 0, 0])
43
        # 40 bytes of info.
48
        # 40 bytes of info.
44
        bmpinfoheader = bytearray([40, 0, 0, 0] +
49
        bmpinfoheader = bytearray([40, 0, 0, 0] +
Lines 47-53 def save(self, f, type): a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/image.py_sec3
47
                                  [1, 0, 24] + (25 * [0]))
52
                                  [1, 0, 24] + (25 * [0]))
48
53
49
        padlength = (4 - (self.width * 3) % 4) % 4
54
        padlength = (4 - (self.width * 3) % 4) % 4
50
        bmppad = bytearray([0, 0, 0]);
55
        bmppad = bytearray([0, 0, 0])
51
        padding = bmppad[0 : padlength]
56
        padding = bmppad[0 : padlength]
52
57
53
        f.write(bmpfileheader)
58
        f.write(bmpfileheader)
Lines 59-65 def save(self, f, type): a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/image.py_sec4
59
            f.write(padding)
64
            f.write(padding)
60
65
61
def encode_string_as_bmp_image(string_data):
66
def encode_string_as_bmp_image(string_data):
62
    data_bytes = array.array("B", string_data)
67
    data_bytes = array.array("B", string_data.encode("utf-8"))
63
68
64
    num_bytes = len(data_bytes)
69
    num_bytes = len(data_bytes)
65
70
Lines 79-111 def encode_string_as_bmp_image(string_data): a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/image.py_sec5
79
    img.putdata(color_data)
84
    img.putdata(color_data)
80
85
81
    # Flush image to string.
86
    # Flush image to string.
82
    f = StringIO.StringIO()
87
    f = BytesIO()
83
    img.save(f, "BMP")
88
    img.save(f, "BMP")
84
    f.seek(0)
89
    f.seek(0)
85
90
86
    return f.read()
91
    return f.read()
87
92
88
def generate_payload(request, server_data):
93
def generate_payload(request, server_data):
89
    data = ('{"headers": %(headers)s}') % server_data
94
    data = (u'{"headers": %(headers)s}') % server_data
90
    if "id" in request.GET:
95
    if b"id" in request.GET:
91
        request.server.stash.put(request.GET["id"], data)
96
        request.server.stash.put(request.GET[b"id"], data)
92
    data = encode_string_as_bmp_image(data)
97
    data = encode_string_as_bmp_image(data)
93
    return data
98
    return data
94
99
95
def generate_report_headers_payload(request, server_data):
100
def generate_report_headers_payload(request, server_data):
96
    stashed_data = request.server.stash.take(request.GET["id"])
101
    stashed_data = request.server.stash.take(request.GET[b"id"])
97
    return stashed_data
102
    return stashed_data
98
103
99
def main(request, response):
104
def main(request, response):
100
    handler = lambda data: generate_payload(request, data)
105
    handler = lambda data: generate_payload(request, data)
101
    content_type = 'image/bmp'
106
    content_type = b'image/bmp'
102
107
103
    if "report-headers" in request.GET:
108
    if b"report-headers" in request.GET:
104
        handler = lambda data: generate_report_headers_payload(request, data)
109
        handler = lambda data: generate_report_headers_payload(request, data)
105
        content_type = 'application/json'
110
        content_type = b'application/json'
106
111
107
    subresource.respond(request,
112
    subresource.respond(request,
108
                        response,
113
                        response,
109
                        payload_generator = handler,
114
                        payload_generator = handler,
110
                        content_type = content_type,
115
                        content_type = content_type,
111
                        access_control_allow_origin = "*")
116
                        access_control_allow_origin = b"*")
- a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/referrer.py -3 / +3 lines
Lines 1-4 a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/referrer.py_sec1
1
def main(request, response):
1
def main(request, response):
2
    referrer = request.headers.get("referer", "")
2
    referrer = request.headers.get(b"referer", b"")
3
    response_headers = [("Content-Type", "text/javascript")];
3
    response_headers = [(b"Content-Type", b"text/javascript")]
4
    return (200, response_headers, "window.referrer = '" + referrer + "'")
4
    return (200, response_headers, b"window.referrer = '" + referrer + b"'")
- a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/script.py -5 / +6 lines
Lines 1-13 a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/script.py_sec1
1
import os, sys
1
import os, sys
2
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
2
from wptserve.utils import isomorphic_decode
3
import subresource
3
4
import importlib
5
subresource = importlib.import_module("common.security-features.subresource.subresource")
4
6
5
def generate_payload(server_data):
7
def generate_payload(server_data):
6
    return subresource.get_template("script.js.template") % server_data
8
    return subresource.get_template(u"script.js.template") % server_data
7
9
8
def main(request, response):
10
def main(request, response):
9
    subresource.respond(request,
11
    subresource.respond(request,
10
                        response,
12
                        response,
11
                        payload_generator = generate_payload,
13
                        payload_generator = generate_payload,
12
                        content_type = "application/javascript")
14
                        content_type = b"application/javascript")
13
- a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/shared-worker.py -4 / +5 lines
Lines 1-12 a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/shared-worker.py_sec1
1
import os, sys
1
import os, sys
2
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
2
from wptserve.utils import isomorphic_decode
3
import subresource
3
import importlib
4
subresource = importlib.import_module("common.security-features.subresource.subresource")
4
5
5
def generate_payload(server_data):
6
def generate_payload(server_data):
6
    return subresource.get_template("shared-worker.js.template") % server_data
7
    return subresource.get_template(u"shared-worker.js.template") % server_data
7
8
8
def main(request, response):
9
def main(request, response):
9
    subresource.respond(request,
10
    subresource.respond(request,
10
                        response,
11
                        response,
11
                        payload_generator = generate_payload,
12
                        payload_generator = generate_payload,
12
                        content_type = "application/javascript")
13
                        content_type = b"application/javascript")
- a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/static-import.py -7 / +10 lines
Lines 1-11 a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/static-import.py_sec1
1
import os, sys, urllib
1
import os, sys
2
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
2
from six.moves.urllib.parse import unquote
3
import subresource
3
4
from wptserve.utils import isomorphic_decode
5
import importlib
6
subresource = importlib.import_module("common.security-features.subresource.subresource")
4
7
5
def generate_payload(request):
8
def generate_payload(request):
6
    import_url = urllib.unquote(request.GET['import_url'])
9
    import_url = unquote(isomorphic_decode(request.GET[b'import_url']))
7
    return subresource.get_template("static-import.js.template") % {
10
    return subresource.get_template(u"static-import.js.template") % {
8
        "import_url": import_url
11
        u"import_url": import_url
9
    }
12
    }
10
13
11
def main(request, response):
14
def main(request, response):
Lines 13-16 def main(request, response): a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/static-import.py_sec2
13
    subresource.respond(request,
16
    subresource.respond(request,
14
                        response,
17
                        response,
15
                        payload_generator = payload_generator,
18
                        payload_generator = payload_generator,
16
                        content_type = "application/javascript")
19
                        content_type = b"application/javascript")
- a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/stylesheet.py -28 / +29 lines
Lines 1-54 a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/stylesheet.py_sec1
1
import os, sys
1
import os, sys
2
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
2
from wptserve.utils import isomorphic_decode
3
import subresource
3
import importlib
4
subresource = importlib.import_module("common.security-features.subresource.subresource")
4
5
5
def generate_payload(request, server_data):
6
def generate_payload(request, server_data):
6
    data = ('{"headers": %(headers)s}') % server_data
7
    data = (u'{"headers": %(headers)s}') % server_data
7
    type = 'image'
8
    type = b'image'
8
    if "type" in request.GET:
9
    if b"type" in request.GET:
9
        type = request.GET["type"]
10
        type = request.GET[b"type"]
10
11
11
    if "id" in request.GET:
12
    if b"id" in request.GET:
12
        request.server.stash.put(request.GET["id"], data)
13
        request.server.stash.put(request.GET[b"id"], data)
13
14
14
    if type == 'image':
15
    if type == b'image':
15
        return subresource.get_template("image.css.template") % {"id": request.GET["id"]}
16
        return subresource.get_template(u"image.css.template") % {u"id": isomorphic_decode(request.GET[b"id"])}
16
17
17
    elif type == 'font':
18
    elif type == b'font':
18
        return subresource.get_template("font.css.template") % {"id": request.GET["id"]}
19
        return subresource.get_template(u"font.css.template") % {u"id": isomorphic_decode(request.GET[b"id"])}
19
20
20
    elif type == 'svg':
21
    elif type == b'svg':
21
        return subresource.get_template("svg.css.template") % {
22
        return subresource.get_template(u"svg.css.template") % {
22
            "id": request.GET["id"],
23
            u"id": isomorphic_decode(request.GET[b"id"]),
23
            "property": request.GET["property"]}
24
            u"property": isomorphic_decode(request.GET[b"property"])}
24
25
25
def generate_import_rule(request, server_data):
26
def generate_import_rule(request, server_data):
26
    return "@import url('%(url)s');" % {
27
    return u"@import url('%(url)s');" % {
27
        "url": subresource.create_url(request, swap_origin=True,
28
        u"url": subresource.create_url(request, swap_origin=True,
28
                                      query_parameter_to_remove="import-rule")
29
                                       query_parameter_to_remove=u"import-rule")
29
    }
30
    }
30
31
31
def generate_report_headers_payload(request, server_data):
32
def generate_report_headers_payload(request, server_data):
32
    stashed_data = request.server.stash.take(request.GET["id"])
33
    stashed_data = request.server.stash.take(request.GET[b"id"])
33
    return stashed_data
34
    return stashed_data
34
35
35
def main(request, response):
36
def main(request, response):
36
    payload_generator = lambda data: generate_payload(request, data)
37
    payload_generator = lambda data: generate_payload(request, data)
37
    content_type = "text/css"
38
    content_type = b"text/css"
38
    referrer_policy = "unsafe-url"
39
    referrer_policy = b"unsafe-url"
39
    if "import-rule" in request.GET:
40
    if b"import-rule" in request.GET:
40
        payload_generator = lambda data: generate_import_rule(request, data)
41
        payload_generator = lambda data: generate_import_rule(request, data)
41
42
42
    if "report-headers" in request.GET:
43
    if b"report-headers" in request.GET:
43
        payload_generator = lambda data: generate_report_headers_payload(request, data)
44
        payload_generator = lambda data: generate_report_headers_payload(request, data)
44
        content_type = 'application/json'
45
        content_type = b'application/json'
45
46
46
    if "referrer-policy" in request.GET:
47
    if b"referrer-policy" in request.GET:
47
        referrer_policy = request.GET["referrer-policy"]
48
        referrer_policy = request.GET[b"referrer-policy"]
48
49
49
    subresource.respond(
50
    subresource.respond(
50
        request,
51
        request,
51
        response,
52
        response,
52
        payload_generator = payload_generator,
53
        payload_generator = payload_generator,
53
        content_type = content_type,
54
        content_type = content_type,
54
        maybe_additional_headers = { "Referrer-Policy": referrer_policy })
55
        maybe_additional_headers = { b"Referrer-Policy": referrer_policy })
- a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/subresource.py -60 / +70 lines
Lines 1-10 a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/subresource.py_sec1
1
import os, json, urllib, urlparse
1
import os, json
2
from six.moves.urllib.parse import parse_qsl, SplitResult, urlencode, urlsplit, urlunsplit
3
4
from wptserve.utils import isomorphic_decode, isomorphic_encode
2
5
3
def get_template(template_basename):
6
def get_template(template_basename):
4
    script_directory = os.path.dirname(os.path.abspath(__file__))
7
    script_directory = os.path.dirname(os.path.abspath(isomorphic_decode(__file__)))
5
    template_directory = os.path.abspath(os.path.join(script_directory,
8
    template_directory = os.path.abspath(os.path.join(script_directory,
6
                                                      "template"))
9
                                                      u"template"))
7
    template_filename = os.path.join(template_directory, template_basename);
10
    template_filename = os.path.join(template_directory, template_basename)
8
11
9
    with open(template_filename, "r") as f:
12
    with open(template_filename, "r") as f:
10
        return f.read()
13
        return f.read()
Lines 13-27 def get_template(template_basename): a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/subresource.py_sec2
13
def redirect(url, response):
16
def redirect(url, response):
14
    response.add_required_headers = False
17
    response.add_required_headers = False
15
    response.writer.write_status(301)
18
    response.writer.write_status(301)
16
    response.writer.write_header("access-control-allow-origin", "*")
19
    response.writer.write_header(b"access-control-allow-origin", b"*")
17
    response.writer.write_header("location", url)
20
    response.writer.write_header(b"location", isomorphic_encode(url))
18
    response.writer.end_headers()
21
    response.writer.end_headers()
19
    response.writer.write("")
22
    response.writer.write(u"")
20
23
21
24
22
# TODO(kristijanburnik): subdomain_prefix is a hardcoded value aligned with
25
# TODO(kristijanburnik): subdomain_prefix is a hardcoded value aligned with
23
# referrer-policy-test-case.js. The prefix should be configured in one place.
26
# referrer-policy-test-case.js. The prefix should be configured in one place.
24
def __get_swapped_origin_netloc(netloc, subdomain_prefix = "www1."):
27
def __get_swapped_origin_netloc(netloc, subdomain_prefix = u"www1."):
25
    if netloc.startswith(subdomain_prefix):
28
    if netloc.startswith(subdomain_prefix):
26
        return netloc[len(subdomain_prefix):]
29
        return netloc[len(subdomain_prefix):]
27
    else:
30
    else:
Lines 40-55 def create_url(request, a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/subresource.py_sec3
40
               swap_scheme=False,
43
               swap_scheme=False,
41
               swap_origin=False,
44
               swap_origin=False,
42
               downgrade=False,
45
               downgrade=False,
43
               query_parameter_to_remove="redirection"):
46
               query_parameter_to_remove=u"redirection"):
44
    parsed = urlparse.urlsplit(request.url)
47
    parsed = urlsplit(request.url)
45
    destination_netloc = parsed.netloc
48
    destination_netloc = parsed.netloc
46
49
47
    scheme = parsed.scheme
50
    scheme = parsed.scheme
48
    if swap_scheme:
51
    if swap_scheme:
49
        scheme = "http" if parsed.scheme == "https" else "https"
52
        scheme = u"http" if parsed.scheme == u"https" else u"https"
50
        hostname = parsed.netloc.split(':')[0]
53
        hostname = parsed.netloc.split(u':')[0]
51
        port = request.server.config["ports"][scheme][0]
54
        port = request.server.config[u"ports"][scheme][0]
52
        destination_netloc = ":".join([hostname, str(port)])
55
        destination_netloc = u":".join([hostname, str(port)])
53
56
54
    if downgrade:
57
    if downgrade:
55
        # These rely on some unintuitive cleverness due to WPT's test setup:
58
        # These rely on some unintuitive cleverness due to WPT's test setup:
Lines 58-164 def create_url(request, a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/subresource.py_sec4
58
        # which will be upgraded to `https://[domain]:[https-port]`.
61
        # which will be upgraded to `https://[domain]:[https-port]`.
59
        # If the upgrade fails, the load will fail, as we don't serve HTTP over
62
        # If the upgrade fails, the load will fail, as we don't serve HTTP over
60
        # the secure port.
63
        # the secure port.
61
        if parsed.scheme == "https":
64
        if parsed.scheme == u"https":
62
            scheme = "http"
65
            scheme = u"http"
63
        elif parsed.scheme == "wss":
66
        elif parsed.scheme == u"wss":
64
            scheme = "ws"
67
            scheme = u"ws"
65
        else:
68
        else:
66
            raise ValueError("Downgrade redirection: Invalid scheme '%s'" %
69
            raise ValueError(u"Downgrade redirection: Invalid scheme '%s'" %
67
                             parsed.scheme)
70
                             parsed.scheme)
68
        hostname = parsed.netloc.split(':')[0]
71
        hostname = parsed.netloc.split(u':')[0]
69
        port = request.server.config["ports"][parsed.scheme][0]
72
        port = request.server.config[u"ports"][parsed.scheme][0]
70
        destination_netloc = ":".join([hostname, str(port)])
73
        destination_netloc = u":".join([hostname, str(port)])
71
74
72
    if swap_origin:
75
    if swap_origin:
73
        destination_netloc = __get_swapped_origin_netloc(destination_netloc)
76
        destination_netloc = __get_swapped_origin_netloc(destination_netloc)
74
77
75
    parsed_query = urlparse.parse_qsl(parsed.query, keep_blank_values=True)
78
    parsed_query = parse_qsl(parsed.query, keep_blank_values=True)
76
    parsed_query = filter(lambda x: x[0] != query_parameter_to_remove,
79
    parsed_query = [x for x in parsed_query if x[0] != query_parameter_to_remove]
77
                          parsed_query)
78
80
79
    destination_url = urlparse.urlunsplit(urlparse.SplitResult(
81
    destination_url = urlunsplit(SplitResult(
80
        scheme = scheme,
82
        scheme = scheme,
81
        netloc = destination_netloc,
83
        netloc = destination_netloc,
82
        path = parsed.path,
84
        path = parsed.path,
83
        query = urllib.urlencode(parsed_query),
85
        query = urlencode(parsed_query),
84
        fragment = None))
86
        fragment = None))
85
87
86
    return destination_url
88
    return destination_url
87
89
88
90
89
def preprocess_redirection(request, response):
91
def preprocess_redirection(request, response):
90
    if "redirection" not in request.GET:
92
    if b"redirection" not in request.GET:
91
        return False
93
        return False
92
94
93
    redirection = request.GET["redirection"]
95
    redirection = request.GET[b"redirection"]
94
96
95
    if redirection == "no-redirect":
97
    if redirection == b"no-redirect":
96
        return False
98
        return False
97
    elif redirection == "keep-scheme":
99
    elif redirection == b"keep-scheme":
98
        redirect_url = create_url(request, swap_scheme=False)
100
        redirect_url = create_url(request, swap_scheme=False)
99
    elif redirection == "swap-scheme":
101
    elif redirection == b"swap-scheme":
100
        redirect_url = create_url(request, swap_scheme=True)
102
        redirect_url = create_url(request, swap_scheme=True)
101
    elif redirection == "downgrade":
103
    elif redirection == b"downgrade":
102
        redirect_url = create_url(request, downgrade=True)
104
        redirect_url = create_url(request, downgrade=True)
103
    elif redirection == "keep-origin":
105
    elif redirection == b"keep-origin":
104
        redirect_url = create_url(request, swap_origin=False)
106
        redirect_url = create_url(request, swap_origin=False)
105
    elif redirection == "swap-origin":
107
    elif redirection == b"swap-origin":
106
        redirect_url = create_url(request, swap_origin=True)
108
        redirect_url = create_url(request, swap_origin=True)
107
    else:
109
    else:
108
        raise ValueError("Invalid redirection type '%s'" % redirection)
110
        raise ValueError(u"Invalid redirection type '%s'" % isomorphic_decode(redirection))
109
111
110
    redirect(redirect_url, response)
112
    redirect(redirect_url, response)
111
    return True
113
    return True
112
114
113
115
114
def preprocess_stash_action(request, response):
116
def preprocess_stash_action(request, response):
115
    if "action" not in request.GET:
117
    if b"action" not in request.GET:
116
        return False
118
        return False
117
119
118
    action = request.GET["action"]
120
    action = request.GET[b"action"]
119
121
120
    key = request.GET["key"]
122
    key = request.GET[b"key"]
121
    stash = request.server.stash
123
    stash = request.server.stash
122
    path = request.GET.get("path", request.url.split('?'))[0]
124
    path = request.GET[b"path"] if b"path" in request.GET \
125
           else isomorphic_encode(request.url.split(u'?')[0])
123
126
124
    if action == "put":
127
    if action == b"put":
125
        value = request.GET["value"]
128
        value = isomorphic_decode(request.GET[b"value"])
126
        stash.take(key=key, path=path)
129
        stash.take(key=key, path=path)
127
        stash.put(key=key, value=value, path=path)
130
        stash.put(key=key, value=value, path=path)
128
        response_data = json.dumps({"status": "success", "result": key})
131
        response_data = json.dumps({u"status": u"success", u"result": isomorphic_decode(key)})
129
    elif action == "purge":
132
    elif action == b"purge":
130
        value = stash.take(key=key, path=path)
133
        value = stash.take(key=key, path=path)
131
        return False
134
        return False
132
    elif action == "take":
135
    elif action == b"take":
133
        value = stash.take(key=key, path=path)
136
        value = stash.take(key=key, path=path)
134
        if value is None:
137
        if value is None:
135
            status = "allowed"
138
            status = u"allowed"
136
        else:
139
        else:
137
            status = "blocked"
140
            status = u"blocked"
138
        response_data = json.dumps({"status": status, "result": value})
141
        response_data = json.dumps({u"status": status, u"result": value})
139
    else:
142
    else:
140
        return False
143
        return False
141
144
142
    response.add_required_headers = False
145
    response.add_required_headers = False
143
    response.writer.write_status(200)
146
    response.writer.write_status(200)
144
    response.writer.write_header("content-type", "text/javascript")
147
    response.writer.write_header(b"content-type", b"text/javascript")
145
    response.writer.write_header("cache-control", "no-cache; must-revalidate")
148
    response.writer.write_header(b"cache-control", b"no-cache; must-revalidate")
146
    response.writer.end_headers()
149
    response.writer.end_headers()
147
    response.writer.write(response_data)
150
    response.writer.write(response_data)
148
    return True
151
    return True
149
152
150
153
151
def __noop(request, response):
154
def __noop(request, response):
152
    return ""
155
    return u""
153
156
154
157
155
def respond(request,
158
def respond(request,
156
            response,
159
            response,
157
            status_code = 200,
160
            status_code = 200,
158
            content_type = "text/html",
161
            content_type = b"text/html",
159
            payload_generator = __noop,
162
            payload_generator = __noop,
160
            cache_control = "no-cache; must-revalidate",
163
            cache_control = b"no-cache; must-revalidate",
161
            access_control_allow_origin = "*",
164
            access_control_allow_origin = b"*",
162
            maybe_additional_headers = None):
165
            maybe_additional_headers = None):
163
    if preprocess_redirection(request, response):
166
    if preprocess_redirection(request, response):
164
        return
167
        return
Lines 170-179 def respond(request, a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/subresource.py_sec5
170
    response.writer.write_status(status_code)
173
    response.writer.write_status(status_code)
171
174
172
    if access_control_allow_origin != None:
175
    if access_control_allow_origin != None:
173
        response.writer.write_header("access-control-allow-origin",
176
        response.writer.write_header(b"access-control-allow-origin",
174
                                     access_control_allow_origin)
177
                                     access_control_allow_origin)
175
    response.writer.write_header("content-type", content_type)
178
    response.writer.write_header(b"content-type", content_type)
176
    response.writer.write_header("cache-control", cache_control)
179
    response.writer.write_header(b"cache-control", cache_control)
177
180
178
    additional_headers = maybe_additional_headers or {}
181
    additional_headers = maybe_additional_headers or {}
179
    for header, value in additional_headers.items():
182
    for header, value in additional_headers.items():
Lines 181-189 def respond(request, a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/subresource.py_sec6
181
184
182
    response.writer.end_headers()
185
    response.writer.end_headers()
183
186
184
    server_data = {"headers": json.dumps(request.headers, indent = 4)}
187
    new_headers = {}
188
    new_val = []
189
    for key, val in request.headers.items():
190
        if len(val) == 1:
191
            new_val = isomorphic_decode(val[0])
192
        else:
193
            new_val = [isomorphic_decode(x) for x in val]
194
        new_headers[isomorphic_decode(key)] = new_val
195
196
    server_data = {u"headers": json.dumps(new_headers, indent = 4)}
185
197
186
    payload = payload_generator(server_data)
198
    payload = payload_generator(server_data)
187
    response.writer.write(payload)
199
    response.writer.write(payload)
188
189
- a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/svg.py -15 / +16 lines
Lines 1-34 a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/svg.py_sec1
1
import os, sys
1
import os, sys
2
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
2
from wptserve.utils import isomorphic_decode
3
import subresource
3
import importlib
4
subresource = importlib.import_module("common.security-features.subresource.subresource")
4
5
5
def generate_payload(request, server_data):
6
def generate_payload(request, server_data):
6
    data = ('{"headers": %(headers)s}') % server_data
7
    data = (u'{"headers": %(headers)s}') % server_data
7
    if "id" in request.GET:
8
    if b"id" in request.GET:
8
        with request.server.stash.lock:
9
        with request.server.stash.lock:
9
            request.server.stash.take(request.GET["id"])
10
            request.server.stash.take(request.GET[b"id"])
10
            request.server.stash.put(request.GET["id"], data)
11
            request.server.stash.put(request.GET[b"id"], data)
11
    return "<svg xmlns='http://www.w3.org/2000/svg'></svg>";
12
    return u"<svg xmlns='http://www.w3.org/2000/svg'></svg>"
12
13
13
def generate_payload_embedded(request, server_data):
14
def generate_payload_embedded(request, server_data):
14
    return subresource.get_template("svg.embedded.template") % {
15
    return subresource.get_template(u"svg.embedded.template") % {
15
        "id": request.GET["id"],
16
        u"id": isomorphic_decode(request.GET[b"id"]),
16
        "property": request.GET["property"]};
17
        u"property": isomorphic_decode(request.GET[b"property"])}
17
18
18
def generate_report_headers_payload(request, server_data):
19
def generate_report_headers_payload(request, server_data):
19
    stashed_data = request.server.stash.take(request.GET["id"])
20
    stashed_data = request.server.stash.take(request.GET[b"id"])
20
    return stashed_data
21
    return stashed_data
21
22
22
def main(request, response):
23
def main(request, response):
23
    handler = lambda data: generate_payload(request, data)
24
    handler = lambda data: generate_payload(request, data)
24
    content_type = 'image/svg+xml'
25
    content_type = b'image/svg+xml'
25
26
26
    if "embedded-svg" in request.GET:
27
    if b"embedded-svg" in request.GET:
27
        handler = lambda data: generate_payload_embedded(request, data)
28
        handler = lambda data: generate_payload_embedded(request, data)
28
29
29
    if "report-headers" in request.GET:
30
    if b"report-headers" in request.GET:
30
        handler = lambda data: generate_report_headers_payload(request, data)
31
        handler = lambda data: generate_report_headers_payload(request, data)
31
        content_type = 'application/json'
32
        content_type = b'application/json'
32
33
33
    subresource.respond(request,
34
    subresource.respond(request,
34
                        response,
35
                        response,
- a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/video.py -6 / +6 lines
Lines 1-9 a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/video.py_sec1
1
import os, sys
1
import os, sys
2
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
2
from wptserve.utils import isomorphic_decode
3
import subresource
3
import importlib
4
subresource = importlib.import_module("common.security-features.subresource.subresource")
4
5
5
def generate_payload(request, server_data):
6
def generate_payload(request, server_data):
6
    file = os.path.join(request.doc_root, "media", "movie_5.ogv")
7
    file = os.path.join(request.doc_root, u"media", u"movie_5.ogv")
7
    return open(file, "rb").read()
8
    return open(file, "rb").read()
8
9
9
10
Lines 12-17 def main(request, response): a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/video.py_sec2
12
    subresource.respond(request,
13
    subresource.respond(request,
13
                        response,
14
                        response,
14
                        payload_generator = handler,
15
                        payload_generator = handler,
15
                        access_control_allow_origin = "*",
16
                        access_control_allow_origin = b"*",
16
                        content_type = "video/ogg")
17
                        content_type = b"video/ogg")
17
- a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/worker.py -4 / +5 lines
Lines 1-12 a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/worker.py_sec1
1
import os, sys
1
import os, sys
2
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
2
from wptserve.utils import isomorphic_decode
3
import subresource
3
import importlib
4
subresource = importlib.import_module("common.security-features.subresource.subresource")
4
5
5
def generate_payload(server_data):
6
def generate_payload(server_data):
6
    return subresource.get_template("worker.js.template") % server_data
7
    return subresource.get_template(u"worker.js.template") % server_data
7
8
8
def main(request, response):
9
def main(request, response):
9
    subresource.respond(request,
10
    subresource.respond(request,
10
                        response,
11
                        response,
11
                        payload_generator = generate_payload,
12
                        payload_generator = generate_payload,
12
                        content_type = "application/javascript")
13
                        content_type = b"application/javascript")
- a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/xhr.py -6 / +7 lines
Lines 1-15 a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/subresource/xhr.py_sec1
1
import os, sys
1
import os, sys
2
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
2
from wptserve.utils import isomorphic_decode
3
import subresource
3
import importlib
4
subresource = importlib.import_module("common.security-features.subresource.subresource")
4
5
5
def generate_payload(server_data):
6
def generate_payload(server_data):
6
    data = ('{"headers": %(headers)s}') % server_data
7
    data = (u'{"headers": %(headers)s}') % server_data
7
    return data
8
    return data
8
9
9
def main(request, response):
10
def main(request, response):
10
    subresource.respond(request,
11
    subresource.respond(request,
11
                        response,
12
                        response,
12
                        payload_generator = generate_payload,
13
                        payload_generator = generate_payload,
13
                        access_control_allow_origin = "*",
14
                        access_control_allow_origin = b"*",
14
                        content_type = "application/json")
15
                        content_type = b"application/json",
15
16
                        cache_control = b"no-store")
- a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/w3c-import.log +1 lines
Lines 15-18 None a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/w3c-import.log_sec1
15
------------------------------------------------------------------------
15
------------------------------------------------------------------------
16
List of files:
16
List of files:
17
/LayoutTests/imported/w3c/web-platform-tests/common/security-features/README.md
17
/LayoutTests/imported/w3c/web-platform-tests/common/security-features/README.md
18
/LayoutTests/imported/w3c/web-platform-tests/common/security-features/__init__.py
18
/LayoutTests/imported/w3c/web-platform-tests/common/security-features/types.md
19
/LayoutTests/imported/w3c/web-platform-tests/common/security-features/types.md
- a/LayoutTests/imported/w3c/web-platform-tests/common/slow.py -1 / +1 lines
Lines 2-5 a/LayoutTests/imported/w3c/web-platform-tests/common/slow.py_sec1
2
2
3
def main(request, response):
3
def main(request, response):
4
    time.sleep(2)
4
    time.sleep(2)
5
    return 200, [], ''
5
    return 200, [], b''
- a/LayoutTests/imported/w3c/web-platform-tests/common/stringifiers.js -1 / +1 lines
Lines 2-8 a/LayoutTests/imported/w3c/web-platform-tests/common/stringifiers.js_sec1
2
 * Runs tests for <http://heycam.github.io/webidl/#es-stringifier>.
2
 * Runs tests for <http://heycam.github.io/webidl/#es-stringifier>.
3
 * @param {Object} aObject - object to test
3
 * @param {Object} aObject - object to test
4
 * @param {string} aAttribute - IDL attribute name that is annotated with `stringifier`
4
 * @param {string} aAttribute - IDL attribute name that is annotated with `stringifier`
5
 * @param {boolean} aIsUnforgeable - whether the IDL attribute is `[Unforgeable]`
5
 * @param {boolean} aIsUnforgeable - whether the IDL attribute is `[LegacyUnforgeable]`
6
 */
6
 */
7
function test_stringifier_attribute(aObject, aAttribute, aIsUnforgeable) {
7
function test_stringifier_attribute(aObject, aAttribute, aIsUnforgeable) {
8
  // Step 1.
8
  // Step 1.
- a/LayoutTests/imported/w3c/web-platform-tests/common/w3c-import.log +2 lines
Lines 20-25 List of files: a/LayoutTests/imported/w3c/web-platform-tests/common/w3c-import.log_sec1
20
/LayoutTests/imported/w3c/web-platform-tests/common/PrefixedPostMessage.js
20
/LayoutTests/imported/w3c/web-platform-tests/common/PrefixedPostMessage.js
21
/LayoutTests/imported/w3c/web-platform-tests/common/PrefixedPostMessage.js.headers
21
/LayoutTests/imported/w3c/web-platform-tests/common/PrefixedPostMessage.js.headers
22
/LayoutTests/imported/w3c/web-platform-tests/common/README.md
22
/LayoutTests/imported/w3c/web-platform-tests/common/README.md
23
/LayoutTests/imported/w3c/web-platform-tests/common/__init__.py
23
/LayoutTests/imported/w3c/web-platform-tests/common/arrays.js
24
/LayoutTests/imported/w3c/web-platform-tests/common/arrays.js
24
/LayoutTests/imported/w3c/web-platform-tests/common/blank.html
25
/LayoutTests/imported/w3c/web-platform-tests/common/blank.html
25
/LayoutTests/imported/w3c/web-platform-tests/common/domain-setter.sub.html
26
/LayoutTests/imported/w3c/web-platform-tests/common/domain-setter.sub.html
Lines 41-46 List of files: a/LayoutTests/imported/w3c/web-platform-tests/common/w3c-import.log_sec2
41
/LayoutTests/imported/w3c/web-platform-tests/common/rendering-utils.js
42
/LayoutTests/imported/w3c/web-platform-tests/common/rendering-utils.js
42
/LayoutTests/imported/w3c/web-platform-tests/common/sab.js
43
/LayoutTests/imported/w3c/web-platform-tests/common/sab.js
43
/LayoutTests/imported/w3c/web-platform-tests/common/slow.py
44
/LayoutTests/imported/w3c/web-platform-tests/common/slow.py
45
/LayoutTests/imported/w3c/web-platform-tests/common/square.png
44
/LayoutTests/imported/w3c/web-platform-tests/common/stringifiers.js
46
/LayoutTests/imported/w3c/web-platform-tests/common/stringifiers.js
45
/LayoutTests/imported/w3c/web-platform-tests/common/stringifiers.js.headers
47
/LayoutTests/imported/w3c/web-platform-tests/common/stringifiers.js.headers
46
/LayoutTests/imported/w3c/web-platform-tests/common/subset-tests-by-key.js
48
/LayoutTests/imported/w3c/web-platform-tests/common/subset-tests-by-key.js
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/META.yml +1 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/META.yml_sec1
1
spec: https://webassembly.github.io/spec/js-api/
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate.any-expected.txt +10 lines
Lines 13-18 FAIL getter order for imports object: BufferSource argument assert_array_equals: a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate.any-expected.txt_sec1
13
FAIL getter order for imports object: Module argument assert_array_equals: expected property 1 to be "global1 getter" but got "memory getter" (expected array ["module getter", "global1 getter", "module2 getter", "global3 getter", "module getter", "memory getter", "module getter", "global2 getter"] got ["module getter", "memory getter", "module getter", "global1 getter", "module2 getter", "global3 getter", "module getter", "global2 getter"])
13
FAIL getter order for imports object: Module argument assert_array_equals: expected property 1 to be "global1 getter" but got "memory getter" (expected array ["module getter", "global1 getter", "module2 getter", "global3 getter", "module getter", "memory getter", "module getter", "global2 getter"] got ["module getter", "memory getter", "module getter", "global1 getter", "module2 getter", "global3 getter", "module getter", "global2 getter"])
14
PASS imports: BufferSource argument
14
PASS imports: BufferSource argument
15
PASS imports: Module argument
15
PASS imports: Module argument
16
PASS imports with empty module names: BufferSource argument
17
PASS imports with empty module names: Module argument
18
PASS imports with empty names: BufferSource argument
19
PASS imports with empty names: Module argument
20
PASS exports with empty name: function: BufferSource argument
21
PASS exports with empty name: function: Module argument
22
PASS exports with empty name: table: BufferSource argument
23
PASS exports with empty name: table: Module argument
24
PASS exports with empty name: global: BufferSource argument
25
PASS exports with empty name: global: Module argument
16
PASS No imports: BufferSource argument
26
PASS No imports: BufferSource argument
17
PASS No imports: Module argument
27
PASS No imports: Module argument
18
PASS exports and imports: BufferSource argument
28
PASS exports and imports: BufferSource argument
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate.any.worker-expected.txt +10 lines
Lines 13-18 FAIL getter order for imports object: BufferSource argument assert_array_equals: a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate.any.worker-expected.txt_sec1
13
FAIL getter order for imports object: Module argument assert_array_equals: expected property 1 to be "global1 getter" but got "memory getter" (expected array ["module getter", "global1 getter", "module2 getter", "global3 getter", "module getter", "memory getter", "module getter", "global2 getter"] got ["module getter", "memory getter", "module getter", "global1 getter", "module2 getter", "global3 getter", "module getter", "global2 getter"])
13
FAIL getter order for imports object: Module argument assert_array_equals: expected property 1 to be "global1 getter" but got "memory getter" (expected array ["module getter", "global1 getter", "module2 getter", "global3 getter", "module getter", "memory getter", "module getter", "global2 getter"] got ["module getter", "memory getter", "module getter", "global1 getter", "module2 getter", "global3 getter", "module getter", "global2 getter"])
14
PASS imports: BufferSource argument
14
PASS imports: BufferSource argument
15
PASS imports: Module argument
15
PASS imports: Module argument
16
PASS imports with empty module names: BufferSource argument
17
PASS imports with empty module names: Module argument
18
PASS imports with empty names: BufferSource argument
19
PASS imports with empty names: Module argument
20
PASS exports with empty name: function: BufferSource argument
21
PASS exports with empty name: function: Module argument
22
PASS exports with empty name: table: BufferSource argument
23
PASS exports with empty name: table: Module argument
24
PASS exports with empty name: global: BufferSource argument
25
PASS exports with empty name: global: Module argument
16
PASS No imports: BufferSource argument
26
PASS No imports: BufferSource argument
17
PASS No imports: Module argument
27
PASS No imports: Module argument
18
PASS exports and imports: BufferSource argument
28
PASS exports and imports: BufferSource argument
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/type.tentative.any-expected.txt +15 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/type.tentative.any-expected.txt_sec1
1
2
FAIL i32, mutable undefined is not an object (evaluating 'myglobal.type.value')
3
FAIL i32, immutable undefined is not an object (evaluating 'myglobal.type.value')
4
FAIL i64, mutable undefined is not an object (evaluating 'myglobal.type.value')
5
FAIL i64, immutable undefined is not an object (evaluating 'myglobal.type.value')
6
FAIL f32, mutable undefined is not an object (evaluating 'myglobal.type.value')
7
FAIL f32, immutable undefined is not an object (evaluating 'myglobal.type.value')
8
FAIL f64, mutable undefined is not an object (evaluating 'myglobal.type.value')
9
FAIL f64, immutable undefined is not an object (evaluating 'myglobal.type.value')
10
FAIL anyref, mutable WebAssembly.Global expects its 'value' field to be the string 'i32', 'i64', 'f32', or 'f64'
11
FAIL anyref, immutable WebAssembly.Global expects its 'value' field to be the string 'i32', 'i64', 'f32', or 'f64'
12
FAIL funcref, mutable WebAssembly.Global expects its 'value' field to be the string 'i32', 'i64', 'f32', or 'f64'
13
FAIL funcref, immutable WebAssembly.Global expects its 'value' field to be the string 'i32', 'i64', 'f32', or 'f64'
14
FAIL key ordering undefined is not an object (evaluating 'Object.getOwnPropertyNames(myglobal.type)')
15
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/type.tentative.any.html +1 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/type.tentative.any.html_sec1
1
<!-- This file is required for WebKit test infrastructure to run the templated test -->
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/type.tentative.any.js +64 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/type.tentative.any.js_sec1
1
// META: global=window,dedicatedworker,jsshell
2
// META: script=/wasm/jsapi/assertions.js
3
4
function assert_type(argument) {
5
    const myglobal = new WebAssembly.Global(argument);
6
7
    assert_equals(myglobal.type.value, argument.value);
8
    assert_equals(myglobal.type.mutable, argument.mutable);
9
}
10
11
test(() => {
12
    assert_type({ "value": "i32", "mutable": true});
13
}, "i32, mutable");
14
15
test(() => {
16
    assert_type({ "value": "i32", "mutable": false});
17
}, "i32, immutable");
18
19
test(() => {
20
    assert_type({ "value": "i64", "mutable": true});
21
}, "i64, mutable");
22
23
test(() => {
24
    assert_type({ "value": "i64", "mutable": false});
25
}, "i64, immutable");
26
27
test(() => {
28
    assert_type({ "value": "f32", "mutable": true});
29
}, "f32, mutable");
30
31
test(() => {
32
    assert_type({ "value": "f32", "mutable": false});
33
}, "f32, immutable");
34
35
test(() => {
36
    assert_type({ "value": "f64", "mutable": true});
37
}, "f64, mutable");
38
39
test(() => {
40
    assert_type({ "value": "f64", "mutable": false});
41
}, "f64, immutable");
42
43
test(() => {
44
    assert_type({"value": "externref", "mutable": true})
45
}, "anyref, mutable")
46
47
test(() => {
48
    assert_type({"value": "externref", "mutable": false})
49
}, "anyref, immutable")
50
51
test(() => {
52
    assert_type({"value": "funcref", "mutable": true})
53
}, "funcref, mutable")
54
55
test(() => {
56
    assert_type({"value": "funcref", "mutable": false})
57
}, "funcref, immutable")
58
59
test(() => {
60
    const myglobal = new WebAssembly.Global({"value": "i32", "mutable": true});
61
    const propertyNames = Object.getOwnPropertyNames(myglobal.type);
62
    assert_equals(propertyNames[0], "mutable");
63
    assert_equals(propertyNames[1], "value");
64
}, "key ordering");
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/type.tentative.any.worker-expected.txt +15 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/type.tentative.any.worker-expected.txt_sec1
1
2
FAIL i32, mutable undefined is not an object (evaluating 'myglobal.type.value')
3
FAIL i32, immutable undefined is not an object (evaluating 'myglobal.type.value')
4
FAIL i64, mutable undefined is not an object (evaluating 'myglobal.type.value')
5
FAIL i64, immutable undefined is not an object (evaluating 'myglobal.type.value')
6
FAIL f32, mutable undefined is not an object (evaluating 'myglobal.type.value')
7
FAIL f32, immutable undefined is not an object (evaluating 'myglobal.type.value')
8
FAIL f64, mutable undefined is not an object (evaluating 'myglobal.type.value')
9
FAIL f64, immutable undefined is not an object (evaluating 'myglobal.type.value')
10
FAIL anyref, mutable WebAssembly.Global expects its 'value' field to be the string 'i32', 'i64', 'f32', or 'f64'
11
FAIL anyref, immutable WebAssembly.Global expects its 'value' field to be the string 'i32', 'i64', 'f32', or 'f64'
12
FAIL funcref, mutable WebAssembly.Global expects its 'value' field to be the string 'i32', 'i64', 'f32', or 'f64'
13
FAIL funcref, immutable WebAssembly.Global expects its 'value' field to be the string 'i32', 'i64', 'f32', or 'f64'
14
FAIL key ordering undefined is not an object (evaluating 'Object.getOwnPropertyNames(myglobal.type)')
15
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/type.tentative.any.worker.html +1 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/type.tentative.any.worker.html_sec1
1
<!-- This file is required for WebKit test infrastructure to run the templated test -->
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/w3c-import.log +1 lines
Lines 16-20 None a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/w3c-import.log_sec1
16
List of files:
16
List of files:
17
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/constructor.any.js
17
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/constructor.any.js
18
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/toString.any.js
18
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/toString.any.js
19
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/type.tentative.any.js
19
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/value-get-set.any.js
20
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/value-get-set.any.js
20
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/valueOf.any.js
21
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/valueOf.any.js
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor.any-expected.txt +5 lines
Lines 9-14 PASS Empty module with undefined imports argument a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor.any-expected.txt_sec1
9
PASS Empty module with empty imports argument
9
PASS Empty module with empty imports argument
10
FAIL getter order for imports object assert_array_equals: expected property 1 to be "global1 getter" but got "memory getter" (expected array ["module getter", "global1 getter", "module2 getter", "global3 getter", "module getter", "memory getter", "module getter", "global2 getter"] got ["module getter", "memory getter", "module getter", "global1 getter", "module2 getter", "global3 getter", "module getter", "global2 getter"])
10
FAIL getter order for imports object assert_array_equals: expected property 1 to be "global1 getter" but got "memory getter" (expected array ["module getter", "global1 getter", "module2 getter", "global3 getter", "module getter", "memory getter", "module getter", "global2 getter"] got ["module getter", "memory getter", "module getter", "global1 getter", "module2 getter", "global3 getter", "module getter", "global2 getter"])
11
PASS imports
11
PASS imports
12
PASS imports with empty module names
13
PASS imports with empty names
14
PASS exports with empty name: function
15
PASS exports with empty name: table
16
PASS exports with empty name: global
12
PASS No imports
17
PASS No imports
13
PASS exports and imports
18
PASS exports and imports
14
PASS i64 exports and imports
19
PASS i64 exports and imports
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor.any.worker-expected.txt +5 lines
Lines 9-14 PASS Empty module with undefined imports argument a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor.any.worker-expected.txt_sec1
9
PASS Empty module with empty imports argument
9
PASS Empty module with empty imports argument
10
FAIL getter order for imports object assert_array_equals: expected property 1 to be "global1 getter" but got "memory getter" (expected array ["module getter", "global1 getter", "module2 getter", "global3 getter", "module getter", "memory getter", "module getter", "global2 getter"] got ["module getter", "memory getter", "module getter", "global1 getter", "module2 getter", "global3 getter", "module getter", "global2 getter"])
10
FAIL getter order for imports object assert_array_equals: expected property 1 to be "global1 getter" but got "memory getter" (expected array ["module getter", "global1 getter", "module2 getter", "global3 getter", "module getter", "memory getter", "module getter", "global2 getter"] got ["module getter", "memory getter", "module getter", "global1 getter", "module2 getter", "global3 getter", "module getter", "global2 getter"])
11
PASS imports
11
PASS imports
12
PASS imports with empty module names
13
PASS imports with empty names
14
PASS exports with empty name: function
15
PASS exports with empty name: table
16
PASS exports with empty name: global
12
PASS No imports
17
PASS No imports
13
PASS exports and imports
18
PASS exports and imports
14
PASS i64 exports and imports
19
PASS i64 exports and imports
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instanceTestFactory.js +128 lines
Lines 126-131 get global3() { a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instanceTestFactory.js_sec1
126
    }
126
    }
127
  ],
127
  ],
128
128
129
  [
130
    "imports with empty module names",
131
    function() {
132
      const builder = new WasmModuleBuilder();
133
134
      builder.addImport("", "fn", kSig_v_v);
135
      builder.addImportedGlobal("", "global", kWasmI32);
136
      builder.addImportedMemory("", "memory", 0, 128);
137
      builder.addImportedTable("", "table", 0, 128);
138
139
      const buffer = builder.toBuffer();
140
      const imports = {
141
        "": {
142
          "fn": function() {},
143
          "global": 0,
144
          "memory": new WebAssembly.Memory({ "initial": 64, maximum: 128 }),
145
          "table": new WebAssembly.Table({ "element": "anyfunc", "initial": 64, maximum: 128 }),
146
        },
147
      };
148
149
      return {
150
        buffer,
151
        args: [imports],
152
        exports: {},
153
        verify: () => {},
154
      };
155
    }
156
  ],
157
158
  [
159
    "imports with empty names",
160
    function() {
161
      const builder = new WasmModuleBuilder();
162
163
      builder.addImport("a", "", kSig_v_v);
164
      builder.addImportedGlobal("b", "", kWasmI32);
165
      builder.addImportedMemory("c", "", 0, 128);
166
      builder.addImportedTable("d", "", 0, 128);
167
168
      const buffer = builder.toBuffer();
169
      const imports = {
170
        "a": { "": function() {} },
171
        "b": { "": 0 },
172
        "c": { "": new WebAssembly.Memory({ "initial": 64, maximum: 128 }) },
173
        "d": { "": new WebAssembly.Table({ "element": "anyfunc", "initial": 64, maximum: 128 }) },
174
      };
175
176
      return {
177
        buffer,
178
        args: [imports],
179
        exports: {},
180
        verify: () => {},
181
      };
182
    }
183
  ],
184
185
  [
186
    "exports with empty name: function",
187
    function() {
188
      const builder = new WasmModuleBuilder();
189
190
      builder
191
        .addFunction("", kSig_v_d)
192
        .addBody([])
193
        .exportFunc();
194
195
      const buffer = builder.toBuffer();
196
197
      const exports = {
198
        "": { "kind": "function", "name": "0", "length": 1 },
199
      };
200
201
      return {
202
        buffer,
203
        args: [],
204
        exports,
205
        verify: () => {},
206
      };
207
    }
208
  ],
209
210
  [
211
    "exports with empty name: table",
212
    function() {
213
      const builder = new WasmModuleBuilder();
214
215
      builder.setTableBounds(1);
216
      builder.addExportOfKind("", kExternalTable, 0);
217
218
      const buffer = builder.toBuffer();
219
220
      const exports = {
221
        "": { "kind": "table", "length": 1 },
222
      };
223
224
      return {
225
        buffer,
226
        args: [],
227
        exports,
228
        verify: () => {},
229
      };
230
    }
231
  ],
232
233
  [
234
    "exports with empty name: global",
235
    function() {
236
      const builder = new WasmModuleBuilder();
237
238
      builder.addGlobal(kWasmI32, true)
239
        .exportAs("")
240
        .init = 7;
241
242
      const buffer = builder.toBuffer();
243
244
      const exports = {
245
        "": { "kind": "global", "value": 7 },
246
      };
247
248
      return {
249
        buffer,
250
        args: [],
251
        exports,
252
        verify: () => {},
253
      };
254
    }
255
  ],
256
129
  [
257
  [
130
    "No imports",
258
    "No imports",
131
    function() {
259
    function() {
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/type.tentative.any-expected.txt +8 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/type.tentative.any-expected.txt_sec1
1
2
FAIL Zero initial, no maximum undefined is not an object (evaluating 'memory.type.minimum')
3
FAIL Non-zero initial, no maximum undefined is not an object (evaluating 'memory.type.minimum')
4
FAIL Zero maximum undefined is not an object (evaluating 'memory.type.minimum')
5
FAIL None-zero maximum undefined is not an object (evaluating 'memory.type.minimum')
6
FAIL non-shared memory undefined is not an object (evaluating 'memory.type.minimum')
7
FAIL shared memory undefined is not an object (evaluating 'memory.type.minimum')
8
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/type.tentative.any.html +1 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/type.tentative.any.html_sec1
1
<!-- This file is required for WebKit test infrastructure to run the templated test -->
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/type.tentative.any.js +36 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/type.tentative.any.js_sec1
1
// META: global=window,dedicatedworker,jsshell
2
// META: script=/wasm/jsapi/assertions.js
3
4
function assert_type(argument) {
5
    const memory = new WebAssembly.Memory(argument);
6
7
    assert_equals(memory.type.minimum, argument.minimum);
8
    assert_equals(memory.type.maximum, argument.maximum);
9
    if (argument.shared !== undefined) {
10
        assert_equals(memory.type.shared, argument.shared);
11
    }
12
}
13
14
test(() => {
15
    assert_type({ "minimum": 0 });
16
}, "Zero initial, no maximum");
17
18
test(() => {
19
    assert_type({ "minimum": 5 });
20
}, "Non-zero initial, no maximum");
21
22
test(() => {
23
    assert_type({ "minimum": 0, "maximum": 0 });
24
}, "Zero maximum");
25
26
test(() => {
27
    assert_type({ "minimum": 0, "maximum": 5 });
28
}, "None-zero maximum");
29
30
test(() => {
31
    assert_type({ "minimum": 0, "maximum": 10,  "shared": false});
32
}, "non-shared memory");
33
34
test(() => {
35
    assert_type({ "minimum": 0, "maximum": 10, "shared": true});
36
}, "shared memory");
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/type.tentative.any.worker-expected.txt +8 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/type.tentative.any.worker-expected.txt_sec1
1
2
FAIL Zero initial, no maximum undefined is not an object (evaluating 'memory.type.minimum')
3
FAIL Non-zero initial, no maximum undefined is not an object (evaluating 'memory.type.minimum')
4
FAIL Zero maximum undefined is not an object (evaluating 'memory.type.minimum')
5
FAIL None-zero maximum undefined is not an object (evaluating 'memory.type.minimum')
6
FAIL non-shared memory undefined is not an object (evaluating 'memory.type.minimum')
7
FAIL shared memory undefined is not an object (evaluating 'memory.type.minimum')
8
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/type.tentative.any.worker.html +1 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/type.tentative.any.worker.html_sec1
1
<!-- This file is required for WebKit test infrastructure to run the templated test -->
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/w3c-import.log +1 lines
Lines 21-23 List of files: a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/w3c-import.log_sec1
21
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/constructor.any.js
21
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/constructor.any.js
22
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/grow.any.js
22
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/grow.any.js
23
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any.js
23
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any.js
24
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/type.tentative.any.js
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any-expected.txt +4 lines
Lines 2-9 a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any-expected.txt_sec1
2
PASS Missing arguments
2
PASS Missing arguments
3
PASS Non-Module arguments
3
PASS Non-Module arguments
4
PASS Branding
4
PASS Branding
5
PASS Return type
5
PASS Empty module
6
PASS Empty module
6
PASS Empty module: array caching
7
PASS Empty module: array caching
7
PASS exports
8
PASS exports
9
PASS exports with empty name: function
10
PASS exports with empty name: table
11
PASS exports with empty name: global
8
PASS Stray argument
12
PASS Stray argument
9
13
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any.js +54 lines
Lines 75-80 function assert_exports(exports, expected) { a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any.js_sec1
75
  }
75
  }
76
}, "Branding");
76
}, "Branding");
77
77
78
test(() => {
79
  const module = new WebAssembly.Module(emptyModuleBinary);
80
  const exports = WebAssembly.Module.exports(module);
81
  assert_true(Array.isArray(exports));
82
}, "Return type");
83
78
test(() => {
84
test(() => {
79
  const module = new WebAssembly.Module(emptyModuleBinary);
85
  const module = new WebAssembly.Module(emptyModuleBinary);
80
  const exports = WebAssembly.Module.exports(module);
86
  const exports = WebAssembly.Module.exports(module);
Lines 124-129 function assert_exports(exports, expected) { a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any.js_sec2
124
  assert_exports(exports, expected);
130
  assert_exports(exports, expected);
125
}, "exports");
131
}, "exports");
126
132
133
test(() => {
134
  const builder = new WasmModuleBuilder();
135
136
  builder
137
    .addFunction("", kSig_v_v)
138
    .addBody([])
139
    .exportFunc();
140
141
  const buffer = builder.toBuffer()
142
  const module = new WebAssembly.Module(buffer);
143
  const exports = WebAssembly.Module.exports(module);
144
  const expected = [
145
    { "kind": "function", "name": "" },
146
  ];
147
  assert_exports(exports, expected);
148
}, "exports with empty name: function");
149
150
test(() => {
151
  const builder = new WasmModuleBuilder();
152
153
  builder.setTableBounds(1);
154
  builder.addExportOfKind("", kExternalTable, 0);
155
156
  const buffer = builder.toBuffer()
157
  const module = new WebAssembly.Module(buffer);
158
  const exports = WebAssembly.Module.exports(module);
159
  const expected = [
160
    { "kind": "table", "name": "" },
161
  ];
162
  assert_exports(exports, expected);
163
}, "exports with empty name: table");
164
165
test(() => {
166
  const builder = new WasmModuleBuilder();
167
168
  builder.addGlobal(kWasmI32, true)
169
    .exportAs("")
170
    .init = 7;
171
172
  const buffer = builder.toBuffer()
173
  const module = new WebAssembly.Module(buffer);
174
  const exports = WebAssembly.Module.exports(module);
175
  const expected = [
176
    { "kind": "global", "name": "" },
177
  ];
178
  assert_exports(exports, expected);
179
}, "exports with empty name: global");
180
127
test(() => {
181
test(() => {
128
  const module = new WebAssembly.Module(emptyModuleBinary);
182
  const module = new WebAssembly.Module(emptyModuleBinary);
129
  const exports = WebAssembly.Module.exports(module, {});
183
  const exports = WebAssembly.Module.exports(module, {});
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any.worker-expected.txt +4 lines
Lines 2-9 a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any.worker-expected.txt_sec1
2
PASS Missing arguments
2
PASS Missing arguments
3
PASS Non-Module arguments
3
PASS Non-Module arguments
4
PASS Branding
4
PASS Branding
5
PASS Return type
5
PASS Empty module
6
PASS Empty module
6
PASS Empty module: array caching
7
PASS Empty module: array caching
7
PASS exports
8
PASS exports
9
PASS exports with empty name: function
10
PASS exports with empty name: table
11
PASS exports with empty name: global
8
PASS Stray argument
12
PASS Stray argument
9
13
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any-expected.txt +3 lines
Lines 6-10 PASS Return type a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any-expected.txt_sec1
6
PASS Empty module
6
PASS Empty module
7
PASS Empty module: array caching
7
PASS Empty module: array caching
8
PASS imports
8
PASS imports
9
PASS imports with empty module name
10
PASS imports with empty names
11
PASS imports with empty module names and names
9
PASS Stray argument
12
PASS Stray argument
10
13
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any.js +60 lines
Lines 118-123 function assert_imports(imports, expected) { a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any.js_sec1
118
  assert_imports(imports, expected);
118
  assert_imports(imports, expected);
119
}, "imports");
119
}, "imports");
120
120
121
test(() => {
122
  const builder = new WasmModuleBuilder();
123
124
  builder.addImport("", "fn", kSig_v_v);
125
  builder.addImportedGlobal("", "global", kWasmI32);
126
  builder.addImportedMemory("", "memory", 0, 128);
127
  builder.addImportedTable("", "table", 0, 128);
128
129
  const buffer = builder.toBuffer()
130
  const module = new WebAssembly.Module(buffer);
131
  const imports = WebAssembly.Module.imports(module);
132
  const expected = [
133
    { "module": "", "kind": "function", "name": "fn" },
134
    { "module": "", "kind": "global", "name": "global" },
135
    { "module": "", "kind": "memory", "name": "memory" },
136
    { "module": "", "kind": "table", "name": "table" },
137
  ];
138
  assert_imports(imports, expected);
139
}, "imports with empty module name");
140
141
test(() => {
142
  const builder = new WasmModuleBuilder();
143
144
  builder.addImport("a", "", kSig_v_v);
145
  builder.addImportedGlobal("b", "", kWasmI32);
146
  builder.addImportedMemory("c", "", 0, 128);
147
  builder.addImportedTable("d", "", 0, 128);
148
149
  const buffer = builder.toBuffer()
150
  const module = new WebAssembly.Module(buffer);
151
  const imports = WebAssembly.Module.imports(module);
152
  const expected = [
153
    { "module": "a", "kind": "function", "name": "" },
154
    { "module": "b", "kind": "global", "name": "" },
155
    { "module": "c", "kind": "memory", "name": "" },
156
    { "module": "d", "kind": "table", "name": "" },
157
  ];
158
  assert_imports(imports, expected);
159
}, "imports with empty names");
160
161
test(() => {
162
  const builder = new WasmModuleBuilder();
163
164
  builder.addImport("", "", kSig_v_v);
165
  builder.addImportedGlobal("", "", kWasmI32);
166
  builder.addImportedMemory("", "", 0, 128);
167
  builder.addImportedTable("", "", 0, 128);
168
169
  const buffer = builder.toBuffer()
170
  const module = new WebAssembly.Module(buffer);
171
  const imports = WebAssembly.Module.imports(module);
172
  const expected = [
173
    { "module": "", "kind": "function", "name": "" },
174
    { "module": "", "kind": "global", "name": "" },
175
    { "module": "", "kind": "memory", "name": "" },
176
    { "module": "", "kind": "table", "name": "" },
177
  ];
178
  assert_imports(imports, expected);
179
}, "imports with empty module names and names");
180
121
test(() => {
181
test(() => {
122
  const module = new WebAssembly.Module(emptyModuleBinary);
182
  const module = new WebAssembly.Module(emptyModuleBinary);
123
  const imports = WebAssembly.Module.imports(module, {});
183
  const imports = WebAssembly.Module.imports(module, {});
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any.worker-expected.txt +3 lines
Lines 6-10 PASS Return type a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any.worker-expected.txt_sec1
6
PASS Empty module
6
PASS Empty module
7
PASS Empty module: array caching
7
PASS Empty module: array caching
8
PASS imports
8
PASS imports
9
PASS imports with empty module name
10
PASS imports with empty names
11
PASS imports with empty module names and names
9
PASS Stray argument
12
PASS Stray argument
10
13
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor-reftypes.tentative.any-expected.txt +8 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor-reftypes.tentative.any-expected.txt_sec1
1
2
FAIL initialize externref table with default value assert_equals: expected object "[object Object]" but got null
3
PASS initialize table with a wrong element value
4
FAIL initialize anyfunc table with default value assert_equals: expected (function) function "function 0() {
5
    [native code]
6
}" but got (object) null
7
FAIL initialize anyfunc table with a bad default value assert_throws_js: function "() => new WebAssembly.Table(argument, {})" did not throw
8
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor-reftypes.tentative.any.html +1 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor-reftypes.tentative.any.html_sec1
1
<!-- This file is required for WebKit test infrastructure to run the templated test -->
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor-reftypes.tentative.any.js +49 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor-reftypes.tentative.any.js_sec1
1
// META: global=window,dedicatedworker,jsshell
2
// META: script=assertions.js
3
// META: script=/wasm/jsapi/wasm-constants.js
4
// META: script=/wasm/jsapi/wasm-module-builder.js
5
6
// Test cases for changes to the WebAssembly.Table constructor API that
7
// come in with the reftypes proposal: the API takes a default argument, which
8
// is used as an initializing value for the WebAssembly.Table.
9
//
10
// See:
11
//   https://webassembly.github.io/reference-types/js-api/index.html#tables
12
13
test(() => {
14
  const testObject = {};
15
  const argument = { "element": "externref", "initial": 3 };
16
  const table = new WebAssembly.Table(argument, testObject);
17
  assert_equals(table.length, 3);
18
  assert_equals(table.get(0), testObject);
19
  assert_equals(table.get(1), testObject);
20
  assert_equals(table.get(2), testObject);
21
}, "initialize externref table with default value");
22
23
test(() => {
24
  const argument = { "element": "i32", "initial": 3 };
25
  assert_throws_js(TypeError, () => new WebAssembly.Table(argument));
26
}, "initialize table with a wrong element value");
27
28
test(() => {
29
  const builder = new WasmModuleBuilder();
30
  builder
31
    .addFunction("fn", kSig_v_v)
32
    .addBody([])
33
    .exportFunc();
34
  const bin = builder.toBuffer();
35
  const fn = new WebAssembly.Instance(new WebAssembly.Module(bin)).exports.fn;
36
  const argument = { "element": "anyfunc", "initial": 3 };
37
  const table = new WebAssembly.Table(argument, fn);
38
  assert_equals(table.length, 3);
39
  assert_equals(table.get(0), fn);
40
  assert_equals(table.get(1), fn);
41
  assert_equals(table.get(2), fn);
42
}, "initialize anyfunc table with default value");
43
44
test(() => {
45
  const argument = { "element": "anyfunc", "initial": 3 };
46
  assert_throws_js(TypeError, () => new WebAssembly.Table(argument, {}));
47
  assert_throws_js(TypeError, () => new WebAssembly.Table(argument, "cannot be used as a wasm function"));
48
  assert_throws_js(TypeError, () => new WebAssembly.Table(argument, 37));
49
}, "initialize anyfunc table with a bad default value");
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor-reftypes.tentative.any.worker-expected.txt +5 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor-reftypes.tentative.any.worker-expected.txt_sec1
1
CONSOLE MESSAGE: NetworkError: Response is not 2xx
2
3
Harness Error (FAIL), message = NetworkError: Response is not 2xx
4
5
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor-reftypes.tentative.any.worker.html +1 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor-reftypes.tentative.any.worker.html_sec1
1
<!-- This file is required for WebKit test infrastructure to run the templated test -->
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/set-reftypes.tentative.any-expected.txt +6 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/set-reftypes.tentative.any-expected.txt_sec1
1
2
FAIL Arguments for anyfunc table set assert_equals: expected (function) function "function 0() {
3
    [native code]
4
}" but got (object) null
5
FAIL Arguments for externref table set assert_equals: expected object "[object Object]" but got null
6
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/set-reftypes.tentative.any.html +1 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/set-reftypes.tentative.any.html_sec1
1
<!-- This file is required for WebKit test infrastructure to run the templated test -->
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/set-reftypes.tentative.any.js +50 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/set-reftypes.tentative.any.js_sec1
1
// META: global=window,dedicatedworker,jsshell
2
// META: script=assertions.js
3
// META: script=/wasm/jsapi/wasm-constants.js
4
// META: script=/wasm/jsapi/wasm-module-builder.js
5
6
// Test cases for changes to the WebAssembly.Table.prototype.set() API that
7
// come in with the reftypes proposal: the API makes the second argument optional and
8
// if it is missing we should use DefaultValue of the table's element type.
9
//
10
// See:
11
//   https://webassembly.github.io/reference-types/js-api/index.html#tables
12
13
test(() => {
14
  const builder = new WasmModuleBuilder();
15
  builder
16
    .addFunction("fn", kSig_v_v)
17
    .addBody([])
18
    .exportFunc();
19
  const bin = builder.toBuffer();
20
  const fn = new WebAssembly.Instance(new WebAssembly.Module(bin)).exports.fn;
21
22
  const argument = { "element": "anyfunc", "initial": 1 };
23
  const table = new WebAssembly.Table(argument, fn);
24
25
  assert_equals(table.get(0), fn);
26
  table.set(0);
27
  assert_equals(table.get(0), null);
28
29
  table.set(0, fn);
30
  assert_equals(table.get(0), fn);
31
32
  assert_throws_js(TypeError, () => table.set(0, {}));
33
  assert_throws_js(TypeError, () => table.set(0, 37));
34
}, "Arguments for anyfunc table set");
35
36
test(() => {
37
  const testObject = {};
38
  const argument = { "element": "externref", "initial": 1 };
39
  const table = new WebAssembly.Table(argument, testObject);
40
41
  assert_equals(table.get(0), testObject);
42
  table.set(0);
43
  assert_equals(table.get(0), undefined);
44
45
  table.set(0, testObject);
46
  assert_equals(table.get(0), testObject);
47
48
  table.set(0, 37);
49
  assert_equals(table.get(0), 37);
50
}, "Arguments for externref table set");
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/set-reftypes.tentative.any.worker-expected.txt +5 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/set-reftypes.tentative.any.worker-expected.txt_sec1
1
CONSOLE MESSAGE: NetworkError: Response is not 2xx
2
3
Harness Error (FAIL), message = NetworkError: Response is not 2xx
4
5
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/set-reftypes.tentative.any.worker.html +1 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/set-reftypes.tentative.any.worker.html_sec1
1
<!-- This file is required for WebKit test infrastructure to run the templated test -->
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/w3c-import.log +2 lines
Lines 15-24 None a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/w3c-import.log_sec1
15
------------------------------------------------------------------------
15
------------------------------------------------------------------------
16
List of files:
16
List of files:
17
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/assertions.js
17
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/assertions.js
18
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor-reftypes.tentative.any.js
18
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor-types.tentative.any.js
19
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor-types.tentative.any.js
19
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.js
20
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.js
20
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/get-set.any.js
21
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/get-set.any.js
21
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/grow-reftypes.tentative.any.js
22
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/grow-reftypes.tentative.any.js
22
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/grow.any.js
23
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/grow.any.js
23
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/length.any.js
24
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/length.any.js
25
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/set-reftypes.tentative.any.js
24
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any.js
26
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any.js
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/w3c-import.log +1 lines
Lines 14-19 Property values requiring vendor prefixes: a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/w3c-import.log_sec1
14
None
14
None
15
------------------------------------------------------------------------
15
------------------------------------------------------------------------
16
List of files:
16
List of files:
17
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/META.yml
17
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/assertions.js
18
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/assertions.js
18
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/bad-imports.js
19
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/bad-imports.js
19
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/error-interfaces-no-symbol-tostringtag.js
20
/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/error-interfaces-no-symbol-tostringtag.js
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/META.yml +1 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/META.yml_sec1
1
spec: https://webassembly.github.io/spec/web-api/
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/instantiateStreaming.any-expected.txt +5 lines
Lines 4-9 FAIL Empty module with undefined imports argument promise_test: Unhandled reject a/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/instantiateStreaming.any-expected.txt_sec1
4
FAIL Empty module with empty imports argument promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
4
FAIL Empty module with empty imports argument promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
5
FAIL getter order for imports object promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
5
FAIL getter order for imports object promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
6
FAIL imports promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
6
FAIL imports promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
7
FAIL imports with empty module names promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
8
FAIL imports with empty names promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
9
FAIL exports with empty name: function promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
10
FAIL exports with empty name: table promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
11
FAIL exports with empty name: global promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
7
FAIL No imports promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
12
FAIL No imports promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
8
FAIL exports and imports promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
13
FAIL exports and imports promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
9
FAIL i64 exports and imports promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
14
FAIL i64 exports and imports promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/instantiateStreaming.any.worker-expected.txt +5 lines
Lines 4-9 FAIL Empty module with undefined imports argument promise_test: Unhandled reject a/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/instantiateStreaming.any.worker-expected.txt_sec1
4
FAIL Empty module with empty imports argument promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
4
FAIL Empty module with empty imports argument promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
5
FAIL getter order for imports object promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
5
FAIL getter order for imports object promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
6
FAIL imports promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
6
FAIL imports promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
7
FAIL imports with empty module names promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
8
FAIL imports with empty names promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
9
FAIL exports with empty name: function promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
10
FAIL exports with empty name: table promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
11
FAIL exports with empty name: global promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
7
FAIL No imports promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
12
FAIL No imports promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
8
FAIL exports and imports promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
13
FAIL exports and imports promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
9
FAIL i64 exports and imports promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
14
FAIL i64 exports and imports promise_test: Unhandled rejection with value: object "TypeError: WebAssembly.instantiateStreaming is not a function. (In 'WebAssembly.instantiateStreaming(response, ...args)', 'WebAssembly.instantiateStreaming' is undefined)"
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/invalid-code.any-expected.txt -2 / +4 lines
Lines 1-4 a/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/invalid-code.any-expected.txt_sec1
1
1
2
FAIL Invalid code: compileStreaming WebAssembly[method] is not a function. (In 'WebAssembly[method](response)', 'WebAssembly[method]' is undefined)
2
FAIL Invalid code (0x0000): compileStreaming WebAssembly[method] is not a function. (In 'WebAssembly[method](response)', 'WebAssembly[method]' is undefined)
3
FAIL Invalid code: instantiateStreaming WebAssembly[method] is not a function. (In 'WebAssembly[method](response)', 'WebAssembly[method]' is undefined)
3
FAIL Invalid code (0xCAFE): compileStreaming WebAssembly[method] is not a function. (In 'WebAssembly[method](response)', 'WebAssembly[method]' is undefined)
4
FAIL Invalid code (0x0000): instantiateStreaming WebAssembly[method] is not a function. (In 'WebAssembly[method](response)', 'WebAssembly[method]' is undefined)
5
FAIL Invalid code (0xCAFE): instantiateStreaming WebAssembly[method] is not a function. (In 'WebAssembly[method](response)', 'WebAssembly[method]' is undefined)
4
6
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/invalid-code.any.js -1 / +7 lines
Lines 7-15 a/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/invalid-code.any.js_sec1
7
});
7
});
8
8
9
for (const method of ["compileStreaming", "instantiateStreaming"]) {
9
for (const method of ["compileStreaming", "instantiateStreaming"]) {
10
  promise_test(t => {
11
    const buffer = new Uint8Array(Array.from(emptyModuleBinary).concat([0, 0]));
12
    const response = new Response(buffer, { headers: { "Content-Type": "application/wasm" } });
13
    return promise_rejects_js(t, WebAssembly.CompileError, WebAssembly[method](response));
14
  }, `Invalid code (0x0000): ${method}`);
15
10
  promise_test(t => {
16
  promise_test(t => {
11
    const buffer = new Uint8Array(Array.from(emptyModuleBinary).concat([0xCA, 0xFE]));
17
    const buffer = new Uint8Array(Array.from(emptyModuleBinary).concat([0xCA, 0xFE]));
12
    const response = new Response(buffer, { headers: { "Content-Type": "application/wasm" } });
18
    const response = new Response(buffer, { headers: { "Content-Type": "application/wasm" } });
13
    return promise_rejects_js(t, WebAssembly.CompileError, WebAssembly[method](response));
19
    return promise_rejects_js(t, WebAssembly.CompileError, WebAssembly[method](response));
14
  }, `Invalid code: ${method}`);
20
  }, `Invalid code (0xCAFE): ${method}`);
15
}
21
}
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/invalid-code.any.worker-expected.txt -2 / +4 lines
Lines 1-4 a/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/invalid-code.any.worker-expected.txt_sec1
1
1
2
FAIL Invalid code: compileStreaming WebAssembly[method] is not a function. (In 'WebAssembly[method](response)', 'WebAssembly[method]' is undefined)
2
FAIL Invalid code (0x0000): compileStreaming WebAssembly[method] is not a function. (In 'WebAssembly[method](response)', 'WebAssembly[method]' is undefined)
3
FAIL Invalid code: instantiateStreaming WebAssembly[method] is not a function. (In 'WebAssembly[method](response)', 'WebAssembly[method]' is undefined)
3
FAIL Invalid code (0xCAFE): compileStreaming WebAssembly[method] is not a function. (In 'WebAssembly[method](response)', 'WebAssembly[method]' is undefined)
4
FAIL Invalid code (0x0000): instantiateStreaming WebAssembly[method] is not a function. (In 'WebAssembly[method](response)', 'WebAssembly[method]' is undefined)
5
FAIL Invalid code (0xCAFE): instantiateStreaming WebAssembly[method] is not a function. (In 'WebAssembly[method](response)', 'WebAssembly[method]' is undefined)
4
6
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/modified-contenttype.any-expected.txt +6 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/modified-contenttype.any-expected.txt_sec1
1
2
FAIL compileStreaming with Content-Type set late promise_test: Unhandled rejection with value: object "TypeError: WebAssembly[method] is not a function. (In 'WebAssembly[method](argument)', 'WebAssembly[method]' is undefined)"
3
FAIL compileStreaming with Content-Type removed late promise_test: Unhandled rejection with value: object "TypeError: WebAssembly[method] is not a function. (In 'WebAssembly[method](argument)', 'WebAssembly[method]' is undefined)"
4
FAIL instantiateStreaming with Content-Type set late promise_test: Unhandled rejection with value: object "TypeError: WebAssembly[method] is not a function. (In 'WebAssembly[method](argument)', 'WebAssembly[method]' is undefined)"
5
FAIL instantiateStreaming with Content-Type removed late promise_test: Unhandled rejection with value: object "TypeError: WebAssembly[method] is not a function. (In 'WebAssembly[method](argument)', 'WebAssembly[method]' is undefined)"
6
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/modified-contenttype.any.html +1 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/modified-contenttype.any.html_sec1
1
<!-- This file is required for WebKit test infrastructure to run the templated test -->
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/modified-contenttype.any.js +24 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/modified-contenttype.any.js_sec1
1
// META: global=window,worker
2
// META: script=/wasm/jsapi/wasm-module-builder.js
3
4
["compileStreaming", "instantiateStreaming"].forEach(method => {
5
  promise_test(async t => {
6
    const buffer = new WasmModuleBuilder().toBuffer();
7
    const argument = new Response(buffer, { headers: { "Content-Type": "test/test" } });
8
    argument.headers.set("Content-Type", "application/wasm");
9
    // This should resolve successfully
10
    await WebAssembly[method](argument);
11
    // Ensure body can only be read once
12
    return promise_rejects_js(t, TypeError, argument.blob());
13
  }, `${method} with Content-Type set late`);
14
15
  promise_test(async t => {
16
    const buffer = new WasmModuleBuilder().toBuffer();
17
    const argument = new Response(buffer, { headers: { "Content-Type": "application/wasm" } });
18
    argument.headers.delete("Content-Type");
19
    // Ensure Wasm cannot be created
20
    await promise_rejects_js(t, TypeError, WebAssembly[method](argument));
21
    // This should resolve successfully
22
    await argument.arrayBuffer();
23
  }, `${method} with Content-Type removed late`);
24
});
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/modified-contenttype.any.worker-expected.txt +6 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/modified-contenttype.any.worker-expected.txt_sec1
1
2
FAIL compileStreaming with Content-Type set late promise_test: Unhandled rejection with value: object "TypeError: WebAssembly[method] is not a function. (In 'WebAssembly[method](argument)', 'WebAssembly[method]' is undefined)"
3
FAIL compileStreaming with Content-Type removed late promise_test: Unhandled rejection with value: object "TypeError: WebAssembly[method] is not a function. (In 'WebAssembly[method](argument)', 'WebAssembly[method]' is undefined)"
4
FAIL instantiateStreaming with Content-Type set late promise_test: Unhandled rejection with value: object "TypeError: WebAssembly[method] is not a function. (In 'WebAssembly[method](argument)', 'WebAssembly[method]' is undefined)"
5
FAIL instantiateStreaming with Content-Type removed late promise_test: Unhandled rejection with value: object "TypeError: WebAssembly[method] is not a function. (In 'WebAssembly[method](argument)', 'WebAssembly[method]' is undefined)"
6
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/modified-contenttype.any.worker.html +1 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/modified-contenttype.any.worker.html_sec1
1
<!-- This file is required for WebKit test infrastructure to run the templated test -->
- a/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/w3c-import.log +2 lines
Lines 14-19 Property values requiring vendor prefixes: a/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/w3c-import.log_sec1
14
None
14
None
15
------------------------------------------------------------------------
15
------------------------------------------------------------------------
16
List of files:
16
List of files:
17
/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/META.yml
17
/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/abort.any.js
18
/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/abort.any.js
18
/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/body.any.js
19
/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/body.any.js
19
/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/contenttype.any.js
20
/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/contenttype.any.js
Lines 24-29 List of files: a/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/w3c-import.log_sec2
24
/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/instantiateStreaming.any.js
25
/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/instantiateStreaming.any.js
25
/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/invalid-args.any.js
26
/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/invalid-args.any.js
26
/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/invalid-code.any.js
27
/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/invalid-code.any.js
28
/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/modified-contenttype.any.js
27
/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/origin.sub.any.js
29
/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/origin.sub.any.js
28
/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/rejected-arg.any.js
30
/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/rejected-arg.any.js
29
/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/status.any.js
31
/LayoutTests/imported/w3c/web-platform-tests/wasm/webapi/status.any.js

Return to Bug 220364