Source/JavaScriptCore/ChangeLog

 12018-04-24 Oleksandr Skachkov <gskachkov@gmail.com>
 2
 3 WebAssembly: add support for stream APIs - JavaScript API
 4 https://bugs.webkit.org/show_bug.cgi?id=183442
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 Add WebAssembly stream API. Current patch only add functions
 9 WebAssembly.compileStreaming and WebAssembly.instantiateStreaming but,
 10 does not add streaming way of the implementation. So in current version it
 11 only wait for load whole module, than start to parse.
 12
 13 * JavaScriptCore.xcodeproj/project.pbxproj:
 14 * jsc.cpp:
 15 * runtime/JSGlobalObject.cpp:
 16 * runtime/JSGlobalObject.h:
 17 * wasm/js/WebAssemblyPrototype.cpp:
 18 (JSC::WebAssemblyPrototype::webAssemblyModuleValidateAsyncInternal):
 19 (JSC::webAssemblyCompileFunc):
 20 (JSC::WebAssemblyPrototype::webAssemblyModuleValidateAsync):
 21 (JSC::WebAssemblyPrototype::webAssemblyModuleInstantinateAsync):
 22 (JSC::WebAssemblyPrototype::webAssemblyModuleInstantinateAsyncInternal):
 23 (JSC::webAssemblyCompileStreamingFunc):
 24 (JSC::webAssemblyInstantiateStreamingFunc):
 25 * wasm/js/WebAssemblyPrototype.h:
 26
 27 * DerivedSources.make:
 28 * JavaScriptCore.xcodeproj/project.pbxproj:
 29 * builtins/BuiltinNames.h:
 30 * builtins/WebAssemblyPrototype.js: Copied from Source/JavaScriptCore/wasm/js/WebAssemblyPrototype.h.
 31 (compileStreaming):
 32 (instantiateStreaming):
 33 * jsc.cpp:
 34 * runtime/JSGlobalObject.cpp:
 35 (JSC::JSGlobalObject::init):
 36 * runtime/JSGlobalObject.h:
 37 * runtime/Options.h:
 38 * wasm/js/WebAssemblyPrototype.cpp:
 39 (JSC::webAssemblyModuleValidateAsyncInternal):
 40 (JSC::webAssemblyCompileFunc):
 41 (JSC::WebAssemblyPrototype::webAssemblyModuleValidateAsync):
 42 (JSC::webAssemblyModuleInstantinateAsyncInternal):
 43 (JSC::WebAssemblyPrototype::webAssemblyModuleInstantinateAsync):
 44 (JSC::webAssemblyCompileStreamingInternal):
 45 (JSC::webAssemblyInstantiateStreamingInternal):
 46 (JSC::WebAssemblyPrototype::create):
 47 (JSC::WebAssemblyPrototype::finishCreation):
 48 * wasm/js/WebAssemblyPrototype.h:
 49
 50 * CMakeLists.txt:
 51 * Configurations/FeatureDefines.xcconfig:
 52 * DerivedSources.make:
 53 * JavaScriptCore.xcodeproj/project.pbxproj:
 54 * builtins/BuiltinNames.h:
 55 * builtins/WebAssemblyPrototype.js: Copied from Source/JavaScriptCore/wasm/js/WebAssemblyPrototype.h.
 56 (compileStreaming):
 57 (instantiateStreaming):
 58 * jsc.cpp:
 59 * runtime/JSGlobalObject.cpp:
 60 (JSC::JSGlobalObject::init):
 61 * runtime/JSGlobalObject.h:
 62 * runtime/Options.h:
 63 * wasm/js/WebAssemblyPrototype.cpp:
 64 (JSC::webAssemblyModuleValidateAsyncInternal):
 65 (JSC::webAssemblyCompileFunc):
 66 (JSC::WebAssemblyPrototype::webAssemblyModuleValidateAsync):
 67 (JSC::webAssemblyModuleInstantinateAsyncInternal):
 68 (JSC::WebAssemblyPrototype::webAssemblyModuleInstantinateAsync):
 69 (JSC::webAssemblyCompileStreamingInternal):
 70 (JSC::webAssemblyInstantiateStreamingInternal):
 71 (JSC::WebAssemblyPrototype::create):
 72 (JSC::WebAssemblyPrototype::finishCreation):
 73 * wasm/js/WebAssemblyPrototype.h:
 74
1752018-04-24 Filip Pizlo <fpizlo@apple.com>
276
377 DFG CSE should know how to decay a MultiGetByOffset

Source/WebCore/ChangeLog

 12018-04-24 Oleksandr Skachkov <gskachkov@gmail.com>
 2
 3 WebAssembly: add support for stream APIs - JavaScript API
 4 https://bugs.webkit.org/show_bug.cgi?id=183442
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 Add WebAssembly streaming API to WebCore.
 9
 10 * Configurations/FeatureDefines.xcconfig:
 11 * bindings/js/JSDOMWindowBase.cpp:
 12 (WebCore::tryAllocate):
 13 (WebCore::isResponseCorrect):
 14 (WebCore::JSDOMWindowBase::compileStreaming):
 15 (WebCore::JSDOMWindowBase::instantiateStreaming):
 16 (WebCore::JSDOMWindowBase::handleStreamingAction):
 17 (WebCore::JSDOMWindowBase::handleResponseOnStreamingAction):
 18 * bindings/js/JSDOMWindowBase.h:
 19 * bindings/js/JSRemoteDOMWindowBase.cpp:
 20 * bindings/js/JSWorkerGlobalScopeBase.cpp:
 21
1222018-04-24 Tadeu Zagallo <tzagallo@apple.com>
223
324 REGRESSION(r221839): Fix requests with FormData containing empty files

Source/WebCore/PAL/ChangeLog

 12018-04-24 Oleksandr Skachkov <gskachkov@gmail.com>
 2
 3 WebAssembly: add support for stream APIs - JavaScript API
 4 https://bugs.webkit.org/show_bug.cgi?id=183442
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 Add WEBASSEMBLY_STREAMING_API feature flag
 9
 10 * Configurations/FeatureDefines.xcconfig:
 11
1122018-04-24 Jer Noble <jer.noble@apple.com>
213
314 Don't add system framework paths to FRAMEWORK_SEARCH_PATHS

Source/WebKit/ChangeLog

 12018-04-24 Oleksandr Skachkov <gskachkov@gmail.com>
 2
 3 WebAssembly: add support for stream APIs - JavaScript API
 4 https://bugs.webkit.org/show_bug.cgi?id=183442
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 Add WEBASSEMBLY_STREAMING_API feature flag
 9
 10 * Configurations/FeatureDefines.xcconfig:
 11
1122018-04-24 Jer Noble <jer.noble@apple.com>
213
314 Don't add system framework paths to FRAMEWORK_SEARCH_PATHS

Source/WebKitLegacy/mac/ChangeLog

 12018-04-24 Oleksandr Skachkov <gskachkov@gmail.com>
 2
 3 WebAssembly: add support for stream APIs - JavaScript API
 4 https://bugs.webkit.org/show_bug.cgi?id=183442
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 Add WEBASSEMBLY_STREAMINNG_API feature flag
 9
 10 * Configurations/FeatureDefines.xcconfig:
 11
1122018-04-24 Jer Noble <jer.noble@apple.com>
213
314 Don't add system framework paths to FRAMEWORK_SEARCH_PATHS

Source/JavaScriptCore/CMakeLists.txt

@@set(JavaScriptCore_BUILTINS_SOURCES
11191119 ${JAVASCRIPTCORE_DIR}/builtins/StringPrototype.js
11201120 ${JAVASCRIPTCORE_DIR}/builtins/TypedArrayConstructor.js
11211121 ${JAVASCRIPTCORE_DIR}/builtins/TypedArrayPrototype.js
 1122 $(JAVASCRIPTCORE_DIR)/builtins/WebAssemblyPrototype.js
11221123)
11231124
11241125add_custom_command(

Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig

@@ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN_macosx = ENABLE_VIDEO_USES_ELEMENT_FULLSCRE
354354
355355ENABLE_WEBASSEMBLY = ;
356356
 357ENABLE_WEBASSEMBLY_STREAMING_API = ENABLE_WEBASSEMBLY_STREAMING_API;
 358
357359ENABLE_WEBGL = ENABLE_WEBGL;
358360
359361ENABLE_WEBGL2 = ENABLE_WEBGL2;

@@ENABLE_WIRELESS_PLAYBACK_TARGET = ENABLE_WIRELESS_PLAYBACK_TARGET;
380382
381383ENABLE_XSLT = ENABLE_XSLT;
382384
383 FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXTRA_ZOOM_MODE) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_JS_ASYNC_ITERATION) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MINIMAL_SIMULATOR) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT);
 385FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXTRA_ZOOM_MODE) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_JS_ASYNC_ITERATION) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MINIMAL_SIMULATOR) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT);

Source/JavaScriptCore/DerivedSources.make

@@JavaScriptCore_BUILTINS_SOURCES = \
124124 $(JavaScriptCore)/builtins/StringPrototype.js \
125125 $(JavaScriptCore)/builtins/TypedArrayConstructor.js \
126126 $(JavaScriptCore)/builtins/TypedArrayPrototype.js \
 127 $(JavaScriptCore)/builtins/WebAssemblyPrototype.js \
127128#
128129
129130# The combined output file depends on the contents of builtins and generator scripts, so

Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj

15001500 AD2FCC1F1DB59CB200B3E736 /* WebAssemblyRuntimeErrorPrototype.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = AD2FCC131DB59C5900B3E736 /* WebAssemblyRuntimeErrorPrototype.lut.h */; };
15011501 AD2FCC201DB59CB200B3E736 /* WebAssemblyTableConstructor.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = AD2FCC141DB59C5900B3E736 /* WebAssemblyTableConstructor.lut.h */; };
15021502 AD2FCC211DB59CB200B3E736 /* WebAssemblyTablePrototype.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = AD2FCC151DB59C5900B3E736 /* WebAssemblyTablePrototype.lut.h */; };
1503  AD2FCC2D1DB838FD00B3E736 /* WebAssemblyPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = AD2FCC271DB838C400B3E736 /* WebAssemblyPrototype.h */; };
 1503 AD2FCC2D1DB838FD00B3E736 /* WebAssemblyPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = AD2FCC271DB838C400B3E736 /* WebAssemblyPrototype.h */; settings = {ATTRIBUTES = (Private, ); }; };
15041504 AD412B341E7B2E9E008AF157 /* WasmContext.h in Headers */ = {isa = PBXBuildFile; fileRef = AD412B321E7B2E8A008AF157 /* WasmContext.h */; settings = {ATTRIBUTES = (Private, ); }; };
15051505 AD4252511E5D0E14009D2A97 /* FullCodeOrigin.h in Headers */ = {isa = PBXBuildFile; fileRef = AD4252501E5D0DEB009D2A97 /* FullCodeOrigin.h */; };
15061506 AD4937C41DDBE6140077C807 /* AbstractModuleRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = AD4937C21DDBE60A0077C807 /* AbstractModuleRecord.h */; settings = {ATTRIBUTES = (Private, ); }; };

37933793 8B3BF5E31E3D365A0076A87A /* AsyncGeneratorPrototype.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AsyncGeneratorPrototype.lut.h; sourceTree = "<group>"; };
37943794 8B6016F31F3E3CC000F9DE6A /* AsyncFromSyncIteratorPrototype.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AsyncFromSyncIteratorPrototype.cpp; sourceTree = "<group>"; };
37953795 8B6016F41F3E3CC000F9DE6A /* AsyncFromSyncIteratorPrototype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AsyncFromSyncIteratorPrototype.h; sourceTree = "<group>"; };
 3796 8B89612C20868584005DD39B /* WebAssemblyPrototype.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = WebAssemblyPrototype.js; sourceTree = "<group>"; };
37963797 8B9F6D551D5912FA001C739F /* IterationKind.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IterationKind.h; sourceTree = "<group>"; };
37973798 8BC064821E180B4A00B2B8CA /* AsyncGeneratorPrototype.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = AsyncGeneratorPrototype.js; sourceTree = "<group>"; };
37983799 8BC064831E1A4FD000B2B8CA /* AsyncGeneratorFunctionConstructor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AsyncGeneratorFunctionConstructor.cpp; sourceTree = "<group>"; };

79427943 A1E0451B1C25B4B100BB663C /* StringPrototype.js */,
79437944 534C457A1BC703DC007476A7 /* TypedArrayConstructor.js */,
79447945 53917E831B791CB8000EBD33 /* TypedArrayPrototype.js */,
 7946 8B89612C20868584005DD39B /* WebAssemblyPrototype.js */,
79457947 );
79467948 path = builtins;
79477949 sourceTree = "<group>";

Source/JavaScriptCore/builtins/BuiltinNames.h

@@namespace JSC {
189189 macro(LinkError) \
190190 macro(RuntimeError) \
191191 macro(meta) \
 192 macro(webAssemblyCompileStreamingInternal) \
 193 macro(webAssemblyInstantiateStreamingInternal) \
192194
193195namespace Symbols {
194196#define DECLARE_BUILTIN_STATIC_SYMBOLS(name) extern SymbolImpl::StaticSymbolImpl name##Symbol;

Source/JavaScriptCore/builtins/WebAssemblyPrototype.js

 1/*
 2 * Copyright (C) 2018 Oleksandr Skachkov <gskachkov@gmail.com>.
 3 *
 4 * Redistribution and use in source and binary forms, with or without
 5 * modification, are permitted provided that the following conditions
 6 * are met:
 7 * 1. Redistributions of source code must retain the above copyright
 8 * notice, this list of conditions and the following disclaimer.
 9 * 2. Redistributions in binary form must reproduce the above copyright
 10 * notice, this list of conditions and the following disclaimer in the
 11 * documentation and/or other materials provided with the distribution.
 12 *
 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 24 */
 25
 26function compileStreaming(argument) {
 27 return @Promise.@resolve(argument).@then(@webAssemblyCompileStreamingInternal);
 28}
 29
 30function instantiateStreaming(argument) {
 31 return @Promise.@resolve(argument).@then(@webAssemblyInstantiateStreamingInternal);
 32}
 33

Source/JavaScriptCore/jsc.cpp

@@const GlobalObjectMethodTable GlobalObject::s_globalObjectMethodTable = {
642642 nullptr, // moduleLoaderEvaluate
643643 nullptr, // promiseRejectionTracker
644644 nullptr, // defaultLanguage
 645 nullptr, // compileStreaming
 646 nullptr, // instantinateStreaming
645647};
646648
647649GlobalObject::GlobalObject(VM& vm, Structure* structure)

Source/JavaScriptCore/runtime/JSGlobalObject.cpp

169169#include "WeakMapPrototype.h"
170170#include "WeakSetConstructor.h"
171171#include "WeakSetPrototype.h"
 172#include "WebAssemblyPrototype.h"
172173#include "WebAssemblyToJSCallee.h"
173174#include <wtf/RandomNumber.h>
174175

@@const GlobalObjectMethodTable JSGlobalObject::s_globalObjectMethodTable = {
286287 nullptr, // moduleLoaderEvaluate
287288 nullptr, // promiseRejectionTracker
288289 nullptr, // defaultLanguage
 290 nullptr, // compileStreaming
 291 nullptr, // instantiateStreaming
289292};
290293
291294/* Source for JSGlobalObject.lut.h

@@putDirectWithoutTransition(vm, vm.propertyNames-> jsName, lowerName ## Construct
941944#if !ASSERT_DISABLED
942945 GlobalPropertyInfo(vm.propertyNames->builtinNames().assertPrivateName(), JSFunction::create(vm, this, 1, String(), assertCall), PropertyAttribute::DontEnum | PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly),
943946#endif
 947 GlobalPropertyInfo(vm.propertyNames->builtinNames().webAssemblyCompileStreamingInternalPrivateName(), JSFunction::create(vm, this, 1, String(), webAssemblyCompileStreamingInternal, NoIntrinsic), PropertyAttribute::DontEnum | PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly),
 948 GlobalPropertyInfo(vm.propertyNames->builtinNames().webAssemblyInstantiateStreamingInternalPrivateName(), JSFunction::create(vm, this, 1, String(), webAssemblyInstantiateStreamingInternal, NoIntrinsic), PropertyAttribute::DontEnum | PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly),
944949 };
945950 addStaticGlobals(staticGlobals, WTF_ARRAY_LENGTH(staticGlobals));
946951

Source/JavaScriptCore/runtime/JSGlobalObject.h

3232#include "JSCPoison.h"
3333#include "JSClassRef.h"
3434#include "JSGlobalLexicalEnvironment.h"
 35#include "JSPromiseDeferred.h"
3536#include "JSSegmentedVariableObject.h"
3637#include "JSWeakObjectMapRefInternal.h"
3738#include "LazyProperty.h"

@@struct GlobalObjectMethodTable {
217218
218219 typedef String (*DefaultLanguageFunctionPtr)();
219220 DefaultLanguageFunctionPtr defaultLanguage;
 221
 222 typedef void (*CompileStreamingPtr)(JSGlobalObject*, ExecState*, JSPromiseDeferred*, JSValue);
 223 CompileStreamingPtr compileStreaming;
 224
 225 typedef void (*InstantiateStreamingPtr)(JSGlobalObject*, ExecState*, JSPromiseDeferred*, JSValue, JSObject*);
 226 InstantiateStreamingPtr instantiateStreaming;
220227};
221228
222229class JSGlobalObject : public JSSegmentedVariableObject {

Source/JavaScriptCore/runtime/Options.h

@@constexpr bool enableAsyncIteration = true;
112112constexpr bool enableAsyncIteration = false;
113113#endif
114114
 115#if ENABLE(WEBASSEMBLY_STREAMING_API)
 116constexpr bool enableWebAssemblyStreamingApi = true;
 117#else
 118constexpr bool enableWebAssemblyStreamingApi = false;
 119#endif
 120
115121#define JSC_OPTIONS(v) \
116122 v(bool, validateOptions, false, Normal, "crashes if mis-typed JSC options were passed to the VM") \
117123 v(unsigned, dumpOptions, 0, Normal, "dumps JSC options (0 = None, 1 = Overridden only, 2 = All, 3 = Verbose)") \

@@constexpr bool enableAsyncIteration = false;
484490 v(bool, crashIfWebAssemblyCantFastMemory, false, Normal, "If true, we will crash if we can't obtain fast memory for wasm.") \
485491 v(unsigned, maxNumWebAssemblyFastMemories, 4, Normal, nullptr) \
486492 v(bool, useFastTLSForWasmContext, true, Normal, "If true, we will store context in fast TLS. If false, we will pin it to a register.") \
 493 v(bool, useWebAssemblyStreamingApi, true, Normal, "Allow to run WebAssembly's Streaming API") \
487494 v(bool, useCallICsForWebAssemblyToJSCalls, true, Normal, "If true, we will use CallLinkInfo to inline cache Wasm to JS calls.") \
488495 v(bool, useEagerWebAssemblyModuleHashing, false, Normal, "Unnamed WebAssembly modules are identified in backtraces through their hash, if available.") \
489496 v(bool, useObjectRestSpread, true, Normal, "If true, we will enable Object Rest/Spread feature.") \

@@enum OptionEquivalence {
530537 v(enableDollarVM, useDollarVM, SameOption) \
531538 v(enableWebAssembly, useWebAssembly, SameOption) \
532539 v(enableAsyncIterator, useAsyncIterator, SameOption) \
 540 v(enableWebAssemblyStreamingApi, useWebAssemblyStreamingApi, SameOption) \
533541 v(verboseDFGByteCodeParsing, verboseDFGBytecodeParsing, SameOption) \
534542
535543

Source/JavaScriptCore/wasm/js/WebAssemblyPrototype.cpp

3131#include "CatchScope.h"
3232#include "Exception.h"
3333#include "FunctionPrototype.h"
 34#include "JSCBuiltins.h"
3435#include "JSCInlines.h"
3536#include "JSModuleNamespaceObject.h"
3637#include "JSPromiseDeferred.h"

3940#include "JSWebAssemblyInstance.h"
4041#include "JSWebAssemblyModule.h"
4142#include "ObjectConstructor.h"
 43#include "Options.h"
4244#include "PromiseDeferredTimer.h"
4345#include "StrongInlines.h"
4446#include "ThrowScope.h"

@@static void reject(ExecState* exec, CatchScope& catchScope, JSPromiseDeferred* p
8082 CLEAR_AND_RETURN_IF_EXCEPTION(catchScope, void());
8183}
8284
 85static void webAssemblyModuleValidateAsyncInternal(ExecState* exec, JSPromiseDeferred* promise, Vector<uint8_t>&& source)
 86{
 87 VM& vm = exec->vm();
 88 auto* globalObject = exec->lexicalGlobalObject();
 89
 90 Vector<Strong<JSCell>> dependencies;
 91 dependencies.append(Strong<JSCell>(vm, globalObject));
 92
 93 vm.promiseDeferredTimer->addPendingPromise(promise, WTFMove(dependencies));
 94
 95 Wasm::Module::validateAsync(&vm.wasmContext, WTFMove(source), createSharedTask<Wasm::Module::CallbackType>([promise, globalObject, &vm] (Wasm::Module::ValidationResult&& result) mutable {
 96 vm.promiseDeferredTimer->scheduleWorkSoon(promise, [promise, globalObject, result = WTFMove(result), &vm] () mutable {
 97 auto scope = DECLARE_CATCH_SCOPE(vm);
 98 ExecState* exec = globalObject->globalExec();
 99 JSValue module = JSWebAssemblyModule::createStub(vm, exec, globalObject->WebAssemblyModuleStructure(), WTFMove(result));
 100 if (UNLIKELY(scope.exception())) {
 101 reject(exec, scope, promise);
 102 return;
 103 }
 104
 105 promise->resolve(exec, module);
 106 CLEAR_AND_RETURN_IF_EXCEPTION(scope, void());
 107 });
 108 }));
 109}
 110
83111static EncodedJSValue JSC_HOST_CALL webAssemblyCompileFunc(ExecState* exec)
84112{
85113 VM& vm = exec->vm();

@@static EncodedJSValue JSC_HOST_CALL webAssemblyCompileFunc(ExecState* exec)
91119
92120 {
93121 auto catchScope = DECLARE_CATCH_SCOPE(vm);
94 
95  Vector<Strong<JSCell>> dependencies;
96  dependencies.append(Strong<JSCell>(vm, globalObject));
97  vm.promiseDeferredTimer->addPendingPromise(promise, WTFMove(dependencies));
98 
99122 Vector<uint8_t> source = createSourceBufferFromValue(vm, exec, exec->argument(0));
100123
101124 if (UNLIKELY(catchScope.exception()))
102125 reject(exec, catchScope, promise);
103  else {
104  Wasm::Module::validateAsync(&vm.wasmContext, WTFMove(source), createSharedTask<Wasm::Module::CallbackType>([promise, globalObject, &vm] (Wasm::Module::ValidationResult&& result) mutable {
105  vm.promiseDeferredTimer->scheduleWorkSoon(promise, [promise, globalObject, result = WTFMove(result), &vm] () mutable {
106  auto scope = DECLARE_CATCH_SCOPE(vm);
107  ExecState* exec = globalObject->globalExec();
108  JSValue module = JSWebAssemblyModule::createStub(vm, exec, globalObject->WebAssemblyModuleStructure(), WTFMove(result));
109  if (UNLIKELY(scope.exception())) {
110  reject(exec, scope, promise);
111  return;
112  }
113 
114  promise->resolve(exec, module);
115  CLEAR_AND_RETURN_IF_EXCEPTION(scope, void());
116  });
117  }));
118  }
 126 else
 127 webAssemblyModuleValidateAsyncInternal(exec, promise, WTFMove(source));
119128
120129 return JSValue::encode(promise->promise());
121130 }

@@static void resolve(VM& vm, ExecState* exec, JSPromiseDeferred* promise, JSWebAs
144153 CLEAR_AND_RETURN_IF_EXCEPTION(scope, void());
145154}
146155
 156void WebAssemblyPrototype::webAssemblyModuleValidateAsync(ExecState* exec, JSPromiseDeferred* promise, Vector<uint8_t>&& source)
 157{
 158 VM& vm = exec->vm();
 159 auto catchScope = DECLARE_CATCH_SCOPE(vm);
 160 webAssemblyModuleValidateAsyncInternal(exec, promise, WTFMove(source));
 161 CLEAR_AND_RETURN_IF_EXCEPTION(catchScope, void());
 162}
 163
147164static void instantiate(VM& vm, ExecState* exec, JSPromiseDeferred* promise, JSWebAssemblyModule* module, JSObject* importObject, const Identifier& moduleKey, Resolve resolveKind, Wasm::CreationMode creationMode)
148165{
149166 auto scope = DECLARE_CATCH_SCOPE(vm);

@@JSValue WebAssemblyPrototype::instantiate(ExecState* exec, JSPromiseDeferred* pr
205222 return promise->promise();
206223}
207224
 225static void webAssemblyModuleInstantinateAsyncInternal(ExecState* exec, JSPromiseDeferred* promise, Vector<uint8_t>&& source, JSObject* importObject)
 226{
 227 auto* globalObject = exec->lexicalGlobalObject();
 228 VM& vm = exec->vm();
 229
 230 Vector<Strong<JSCell>> dependencies;
 231 dependencies.append(Strong<JSCell>(vm, importObject));
 232 vm.promiseDeferredTimer->addPendingPromise(promise, WTFMove(dependencies));
 233
 234 Wasm::Module::validateAsync(&vm.wasmContext, WTFMove(source), createSharedTask<Wasm::Module::CallbackType>([promise, importObject, globalObject, &vm] (Wasm::Module::ValidationResult&& result) mutable {
 235 vm.promiseDeferredTimer->scheduleWorkSoon(promise, [promise, importObject, globalObject, result = WTFMove(result), &vm] () mutable {
 236 auto scope = DECLARE_CATCH_SCOPE(vm);
 237 ExecState* exec = globalObject->globalExec();
 238 JSWebAssemblyModule* module = JSWebAssemblyModule::createStub(vm, exec, globalObject->WebAssemblyModuleStructure(), WTFMove(result));
 239 if (UNLIKELY(scope.exception()))
 240 return reject(exec, scope, promise);
 241
 242 instantiate(vm, exec, promise, module, importObject, JSWebAssemblyInstance::createPrivateModuleKey(), Resolve::WithModuleAndInstance, Wasm::CreationMode::FromJS);
 243 CLEAR_AND_RETURN_IF_EXCEPTION(scope, reject(exec, scope, promise));
 244 });
 245 }));
 246}
 247
 248void WebAssemblyPrototype::webAssemblyModuleInstantinateAsync(ExecState* exec, JSPromiseDeferred* promise, Vector<uint8_t>&& source, JSObject* importedObject)
 249{
 250 VM& vm = exec->vm();
 251 auto catchScope = DECLARE_CATCH_SCOPE(vm);
 252 webAssemblyModuleInstantinateAsyncInternal(exec, promise, WTFMove(source), importedObject);
 253 CLEAR_AND_RETURN_IF_EXCEPTION(catchScope, void());
 254}
 255
208256static EncodedJSValue JSC_HOST_CALL webAssemblyInstantiateFunc(ExecState* exec)
209257{
210258 VM& vm = exec->vm();

@@static EncodedJSValue JSC_HOST_CALL webAssemblyValidateFunc(ExecState* exec)
250298 return JSValue::encode(jsBoolean(plan.parseAndValidateModule()));
251299}
252300
253 WebAssemblyPrototype* WebAssemblyPrototype::create(VM& vm, JSGlobalObject*, Structure* structure)
 301EncodedJSValue JSC_HOST_CALL webAssemblyCompileStreamingInternal(ExecState* exec)
 302{
 303 VM& vm = exec->vm();
 304 auto* globalObject = exec->lexicalGlobalObject();
 305 auto catchScope = DECLARE_CATCH_SCOPE(vm);
 306
 307 JSPromiseDeferred* promise = JSPromiseDeferred::create(exec, globalObject);
 308
 309 Vector<Strong<JSCell>> dependencies;
 310 dependencies.append(Strong<JSCell>(vm, globalObject));
 311 vm.promiseDeferredTimer->addPendingPromise(promise, WTFMove(dependencies));
 312
 313 if (globalObject->globalObjectMethodTable()->compileStreaming)
 314 globalObject->globalObjectMethodTable()->compileStreaming(globalObject, exec, promise, exec->argument(0));
 315 else {
 316 // CompileStreaming is not supported in jsc, only in browser environment
 317 ASSERT_NOT_REACHED();
 318 }
 319
 320 CLEAR_AND_RETURN_IF_EXCEPTION(catchScope, JSValue::encode(promise->promise()));
 321
 322 return JSValue::encode(promise->promise());
 323}
 324
 325EncodedJSValue JSC_HOST_CALL webAssemblyInstantiateStreamingInternal(ExecState* exec)
 326{
 327 VM& vm = exec->vm();
 328 auto throwScope = DECLARE_THROW_SCOPE(vm);
 329 auto* globalObject = exec->lexicalGlobalObject();
 330
 331 JSPromiseDeferred* promise = JSPromiseDeferred::create(exec, globalObject);
 332
 333 RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
 334 {
 335 auto catchScope = DECLARE_CATCH_SCOPE(vm);
 336
 337 JSValue importArgument = exec->argument(1);
 338 JSObject* importObject = importArgument.getObject();
 339 if (UNLIKELY(!importArgument.isUndefined() && !importObject)) {
 340 promise->reject(exec, createTypeError(exec,
 341 ASCIILiteral("second argument to WebAssembly.instantiateStreaming must be undefined or an Object"), defaultSourceAppender, runtimeTypeForValue(importArgument)));
 342 CLEAR_AND_RETURN_IF_EXCEPTION(catchScope, JSValue::encode(promise->promise()));
 343 } else {
 344 if (globalObject->globalObjectMethodTable()->instantiateStreaming) {
 345 Vector<Strong<JSCell>> dependencies;
 346 dependencies.append(Strong<JSCell>(vm, globalObject));
 347 dependencies.append(Strong<JSCell>(vm, importObject));
 348 vm.promiseDeferredTimer->addPendingPromise(promise, WTFMove(dependencies));
 349
 350 // FIXME: <http://webkit.org/b/184888> if there's an importObject and it contains a Memory, then we can compile the module with the right memory type (fast or not) by looking at the memory's type.
 351 globalObject->globalObjectMethodTable()->instantiateStreaming(globalObject, exec, promise, exec->argument(0), importObject);
 352 } else {
 353 // InstantiateStreaming is not supported in jsc, only in browser environment.
 354 ASSERT_NOT_REACHED();
 355 }
 356 }
 357 CLEAR_AND_RETURN_IF_EXCEPTION(catchScope, JSValue::encode(promise->promise()));
 358
 359 return JSValue::encode(promise->promise());
 360 }
 361}
 362
 363WebAssemblyPrototype* WebAssemblyPrototype::create(VM& vm, JSGlobalObject* globalObject, Structure* structure)
254364{
255365 auto* object = new (NotNull, allocateCell<WebAssemblyPrototype>(vm.heap)) WebAssemblyPrototype(vm, structure);
256  object->finishCreation(vm);
 366 object->finishCreation(vm, globalObject);
257367 return object;
258368}
259369

@@Structure* WebAssemblyPrototype::createStructure(VM& vm, JSGlobalObject* globalO
262372 return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), info());
263373}
264374
265 void WebAssemblyPrototype::finishCreation(VM& vm)
 375void WebAssemblyPrototype::finishCreation(VM& vm, JSGlobalObject* globalObject)
266376{
267377 Base::finishCreation(vm);
 378
 379 if (Options::useWebAssemblyStreamingApi()) {
 380 JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION("compileStreaming", webAssemblyPrototypeCompileStreamingCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
 381 JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION("instantiateStreaming", webAssemblyPrototypeInstantiateStreamingCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
 382 }
268383}
269384
270385WebAssemblyPrototype::WebAssemblyPrototype(VM& vm, Structure* structure)

Source/JavaScriptCore/wasm/js/WebAssemblyPrototype.h

@@public:
3939
4040 static WebAssemblyPrototype* create(VM&, JSGlobalObject*, Structure*);
4141 static Structure* createStructure(VM&, JSGlobalObject*, JSValue);
 42 JS_EXPORT_PRIVATE static void webAssemblyModuleValidateAsync(ExecState*, JSPromiseDeferred*, Vector<uint8_t>&&);
 43 JS_EXPORT_PRIVATE static void webAssemblyModuleInstantinateAsync(ExecState*, JSPromiseDeferred*, Vector<uint8_t>&&, JSObject*);
4244
4345 DECLARE_INFO;
4446
4547 static JSValue instantiate(ExecState*, JSPromiseDeferred*, const Identifier&, JSValue);
4648
4749protected:
48  void finishCreation(VM&);
 50 void finishCreation(VM&, JSGlobalObject*);
4951
5052private:
5153 WebAssemblyPrototype(VM&, Structure*);
5254};
5355
 56EncodedJSValue JSC_HOST_CALL webAssemblyCompileStreamingInternal(ExecState*);
 57EncodedJSValue JSC_HOST_CALL webAssemblyInstantiateStreamingInternal(ExecState*);
 58
5459} // namespace JSC
5560
5661#endif // ENABLE(WEBASSEMBLY)

Source/WebCore/Configurations/FeatureDefines.xcconfig

@@ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN_macosx = ENABLE_VIDEO_USES_ELEMENT_FULLSCRE
354354
355355ENABLE_WEBASSEMBLY = ;
356356
 357ENABLE_WEBASSEMBLY_STREAMING_API = ENABLE_WEBASSEMBLY_STREAMING_API;
 358
357359ENABLE_WEBGL = ENABLE_WEBGL;
358360
359361ENABLE_WEBGL2 = ENABLE_WEBGL2;

@@ENABLE_WIRELESS_PLAYBACK_TARGET = ENABLE_WIRELESS_PLAYBACK_TARGET;
380382
381383ENABLE_XSLT = ENABLE_XSLT;
382384
383 FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXTRA_ZOOM_MODE) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_JS_ASYNC_ITERATION) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MINIMAL_SIMULATOR) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT);
 385FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXTRA_ZOOM_MODE) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_JS_ASYNC_ITERATION) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MINIMAL_SIMULATOR) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT);

Source/WebCore/PAL/Configurations/FeatureDefines.xcconfig

@@ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN_macosx = ENABLE_VIDEO_USES_ELEMENT_FULLSCRE
354354
355355ENABLE_WEBASSEMBLY = ;
356356
 357ENABLE_WEBASSEMBLY_STREAMING_API = ENABLE_WEBASSEMBLY_STREAMING_API;
 358
357359ENABLE_WEBGL = ENABLE_WEBGL;
358360
359361ENABLE_WEBGL2 = ENABLE_WEBGL2;

@@ENABLE_WIRELESS_PLAYBACK_TARGET = ENABLE_WIRELESS_PLAYBACK_TARGET;
380382
381383ENABLE_XSLT = ENABLE_XSLT;
382384
383 FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXTRA_ZOOM_MODE) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_JS_ASYNC_ITERATION) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MINIMAL_SIMULATOR) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT);
 385FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXTRA_ZOOM_MODE) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_JS_ASYNC_ITERATION) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MINIMAL_SIMULATOR) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT);

Source/WebCore/bindings/js/JSDOMWindowBase.cpp

2929#include "CommonVM.h"
3030#include "DOMWindow.h"
3131#include "Document.h"
 32#include "FetchResponse.h"
3233#include "Frame.h"
3334#include "InspectorController.h"
3435#include "JSDOMBindingSecurity.h"
3536#include "JSDOMGlobalObjectTask.h"
3637#include "JSDOMWindowCustom.h"
 38#include "JSFetchResponse.h"
3739#include "JSMainThreadExecState.h"
3840#include "JSNode.h"
3941#include "Logging.h"

5052#include <JavaScriptCore/JSInternalPromiseDeferred.h>
5153#include <JavaScriptCore/Microtask.h>
5254#include <JavaScriptCore/StrongInlines.h>
 55#include <JavaScriptCore/WebAssemblyPrototype.h>
5356#include <wtf/Language.h>
5457#include <wtf/MainThread.h>
5558

@@const GlobalObjectMethodTable JSDOMWindowBase::s_globalObjectMethodTable = {
7578 &moduleLoaderCreateImportMetaProperties,
7679 &moduleLoaderEvaluate,
7780 &promiseRejectionTracker,
78  &defaultLanguage
 81 &defaultLanguage,
 82 &compileStreaming,
 83 &instantiateStreaming
7984};
8085
8186JSDOMWindowBase::JSDOMWindowBase(VM& vm, Structure* structure, RefPtr<DOMWindow>&& window, JSWindowProxy* proxy)

@@JSC::JSObject* JSDOMWindowBase::moduleLoaderCreateImportMetaProperties(JSC::JSGl
364369 return constructEmptyObject(exec, globalObject->nullPrototypeObjectStructure());
365370}
366371
 372static std::optional<Vector<uint8_t>> tryAllocate(JSC::ExecState* exec, JSC::JSPromiseDeferred* promise, const char* data, size_t byteSize)
 373{
 374 Vector<uint8_t> arrayBuffer;
 375 if (!arrayBuffer.tryReserveCapacity(byteSize)) {
 376 promise->reject(exec, createOutOfMemoryError(exec));
 377 return std::nullopt;
 378 }
 379
 380 arrayBuffer.grow(byteSize);
 381 memcpy(arrayBuffer.data(), data, byteSize);
 382
 383 return arrayBuffer;
 384}
 385
 386static bool isResponseCorrect(JSC::ExecState* exec, FetchResponse* inputResponse, JSC::JSPromiseDeferred* promise)
 387{
 388 bool isResponseCorsSameOrigin = inputResponse->type() == ResourceResponse::Type::Basic || inputResponse->type() == ResourceResponse::Type::Cors || inputResponse->type() == ResourceResponse::Type::Default;
 389
 390 if (!isResponseCorsSameOrigin) {
 391 promise->reject(exec, createTypeError(exec, ASCIILiteral("Response is not CORS-same-origin")));
 392 return false;
 393 }
 394
 395 if (!inputResponse->ok()) {
 396 promise->reject(exec, createTypeError(exec, ASCIILiteral("Response has not returned OK status")));
 397 return false;
 398 }
 399
 400 auto contentType = inputResponse->headers().fastGet(HTTPHeaderName::ContentType);
 401 if (!equalLettersIgnoringASCIICase(contentType, "application/wasm")) {
 402 promise->reject(exec, createTypeError(exec, ASCIILiteral("Unexpected response MIME type. Expected 'application/wasm'")));
 403 return false;
 404 }
 405
 406 return true;
 407}
 408
 409void JSDOMWindowBase::compileStreaming(JSC::JSGlobalObject* globalObject, JSC::ExecState* exec, JSC::JSPromiseDeferred* promise, JSC::JSValue source)
 410{
 411 handleStreamingAction(globalObject, exec, promise, source, [promise] (JSC::ExecState* exec, const char* data, size_t byteSize) mutable {
 412 if (auto arrayBuffer = tryAllocate(exec, promise, data, byteSize))
 413 JSC::WebAssemblyPrototype::webAssemblyModuleValidateAsync(exec, promise, WTFMove(*arrayBuffer));
 414 });
 415}
 416
 417void JSDOMWindowBase::instantiateStreaming(JSC::JSGlobalObject* globalObject, JSC::ExecState* exec, JSC::JSPromiseDeferred* promise, JSC::JSValue source, JSC::JSObject* importedObject)
 418{
 419 handleStreamingAction(globalObject, exec, promise, source, [promise, importedObject] (JSC::ExecState* exec, const char* data, size_t byteSize) mutable {
 420 if (auto arrayBuffer = tryAllocate(exec, promise, data, byteSize))
 421 JSC::WebAssemblyPrototype::webAssemblyModuleInstantinateAsync(exec, promise, WTFMove(*arrayBuffer), importedObject);
 422 });
 423}
 424
 425void JSDOMWindowBase::handleStreamingAction(JSC::JSGlobalObject* globalObject, JSC::ExecState* exec, JSC::JSPromiseDeferred* promise, JSC::JSValue source, std::function<void(JSC::ExecState* exec, const char* data, size_t byteSize)>&& callback)
 426{
 427 ASSERT(source);
 428 VM& vm = exec->vm();
 429 if (auto inputResponse = JSFetchResponse::toWrapped(vm, source))
 430 handleResponseOnStreamingAction(globalObject, exec, inputResponse, promise, WTFMove(callback));
 431 else
 432 promise->reject(exec, createTypeError(exec, ASCIILiteral("first argument must be an Response or Promise for Response")));
 433}
 434
 435void JSDOMWindowBase::handleResponseOnStreamingAction(JSC::JSGlobalObject* globalObject, JSC::ExecState* exec, FetchResponse* inputResponse, JSC::JSPromiseDeferred* promise, std::function<void(JSC::ExecState* exec, const char* data, size_t byteSize)>&& actionCallback)
 436{
 437 if (!isResponseCorrect(exec, inputResponse, promise))
 438 return;
 439
 440 if (inputResponse->isBodyReceivedByChunk()) {
 441 inputResponse->consumeBodyReceivedByChunk([promise, callback = WTFMove(actionCallback), globalObject, data = SharedBuffer::create()] (auto&& result) mutable {
 442 ExecState* exec = globalObject->globalExec();
 443 if (result.hasException()) {
 444 promise->reject(exec, createTypeError(exec, result.exception().message()));
 445 return;
 446 }
 447
 448 if (auto chunk = result.returnValue())
 449 data->append(reinterpret_cast<const char*>(chunk->data), chunk->size);
 450 else {
 451 VM& vm = exec->vm();
 452 JSLockHolder lock(vm);
 453
 454 callback(exec, data->data(), data->size());
 455 }
 456 });
 457 return;
 458 }
 459
 460 auto body = inputResponse->consumeBody();
 461 WTF::switchOn(body, [&] (Ref<FormData>& formData) {
 462 if (auto buffer = formData->asSharedBuffer()) {
 463 VM& vm = exec->vm();
 464 JSLockHolder lock(vm);
 465
 466 auto callback = WTFMove(actionCallback);
 467 callback(exec, buffer->data(), buffer->size());
 468 return;
 469 }
 470 // FIXME: http://webkit.org/b/184886> Implement loading for the Blob type
 471 promise->reject(exec, createTypeError(exec, ASCIILiteral("Unexpected Response's Content-type")));
 472 }, [&] (Ref<SharedBuffer>& buffer) {
 473 VM& vm = exec->vm();
 474 JSLockHolder lock(vm);
 475
 476 auto callback = WTFMove(actionCallback);
 477 callback(exec, buffer->data(), buffer->size());
 478 }, [&] (std::nullptr_t&) {
 479 promise->reject(exec, createTypeError(exec, ASCIILiteral("Unexpected Response's Content-type")));
 480 });
 481}
 482
367483void JSDOMWindowBase::promiseRejectionTracker(JSGlobalObject* jsGlobalObject, ExecState* exec, JSPromise* promise, JSPromiseRejectionOperation operation)
368484{
369485 // https://html.spec.whatwg.org/multipage/webappapis.html#the-hostpromiserejectiontracker-implementation

Source/WebCore/bindings/js/JSDOMWindowBase.h

@@namespace WebCore {
4242
4343class DOMWrapperWorld;
4444class Frame;
 45class FetchResponse;
4546class JSDOMWindow;
4647class JSDOMWindowBasePrivate;
4748class JSWindowProxy;

@@protected:
8889 JSC::WatchpointSet m_windowCloseWatchpoints;
8990
9091private:
 92 using ResponseCallback = WTF::Function<void(const char*, size_t)>;
 93
9194 static JSC::Identifier moduleLoaderResolve(JSC::JSGlobalObject*, JSC::ExecState*, JSC::JSModuleLoader*, JSC::JSValue, JSC::JSValue, JSC::JSValue);
9295 static JSC::JSInternalPromise* moduleLoaderFetch(JSC::JSGlobalObject*, JSC::ExecState*, JSC::JSModuleLoader*, JSC::JSValue, JSC::JSValue, JSC::JSValue);
9396 static JSC::JSValue moduleLoaderEvaluate(JSC::JSGlobalObject*, JSC::ExecState*, JSC::JSModuleLoader*, JSC::JSValue, JSC::JSValue, JSC::JSValue);
9497 static JSC::JSInternalPromise* moduleLoaderImportModule(JSC::JSGlobalObject*, JSC::ExecState*, JSC::JSModuleLoader*, JSC::JSString*, JSC::JSValue, const JSC::SourceOrigin&);
9598 static JSC::JSObject* moduleLoaderCreateImportMetaProperties(JSC::JSGlobalObject*, JSC::ExecState*, JSC::JSModuleLoader*, JSC::JSValue, JSC::JSModuleRecord*, JSC::JSValue);
9699
 100 static void compileStreaming(JSC::JSGlobalObject*, JSC::ExecState*, JSC::JSPromiseDeferred*, JSC::JSValue);
 101 static void instantiateStreaming(JSC::JSGlobalObject*, JSC::ExecState*, JSC::JSPromiseDeferred*, JSC::JSValue, JSC::JSObject*);
 102
 103 static void handleStreamingAction(JSC::JSGlobalObject*, JSC::ExecState*, JSC::JSPromiseDeferred*, JSC::JSValue, std::function<void(JSC::ExecState*, const char*, size_t)>&& callback);
 104 static void handleResponseOnStreamingAction(JSC::JSGlobalObject*, JSC::ExecState*, FetchResponse*, JSC::JSPromiseDeferred*, std::function<void(JSC::ExecState*, const char*, size_t)>&& callback);
 105
97106 static void promiseRejectionTracker(JSC::JSGlobalObject*, JSC::ExecState*, JSC::JSPromise*, JSC::JSPromiseRejectionOperation);
98107
99108 RefPtr<DOMWindow> m_wrapped;

Source/WebCore/bindings/js/JSRemoteDOMWindowBase.cpp

@@const GlobalObjectMethodTable JSRemoteDOMWindowBase::s_globalObjectMethodTable =
4848 nullptr, // moduleLoaderEvaluate
4949 nullptr, // promiseRejectionTracker
5050 nullptr, // defaultLanguage
 51 nullptr, // compileStreaming
 52 nullptr, // instantiateStreaming
5153};
5254
5355JSRemoteDOMWindowBase::JSRemoteDOMWindowBase(VM& vm, Structure* structure, RefPtr<RemoteDOMWindow>&& window, JSWindowProxy* proxy)

Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp

@@const GlobalObjectMethodTable JSWorkerGlobalScopeBase::s_globalObjectMethodTable
6161 nullptr, // moduleLoaderCreateImportMetaProperties
6262 nullptr, // moduleLoaderEvaluate
6363 nullptr, // promiseRejectionTracker
64  &defaultLanguage
 64 &defaultLanguage,
 65 nullptr, // compileStreaming
 66 nullptr, // instantiateStreaming
6567};
6668
6769JSWorkerGlobalScopeBase::JSWorkerGlobalScopeBase(JSC::VM& vm, JSC::Structure* structure, RefPtr<WorkerGlobalScope>&& impl)

Source/WebKit/Configurations/FeatureDefines.xcconfig

@@ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN_macosx = ENABLE_VIDEO_USES_ELEMENT_FULLSCRE
354354
355355ENABLE_WEBASSEMBLY = ;
356356
 357ENABLE_WEBASSEMBLY_STREAMING_API = ENABLE_WEBASSEMBLY_STREAMING_API;
 358
357359ENABLE_WEBGL = ENABLE_WEBGL;
358360
359361ENABLE_WEBGL2 = ENABLE_WEBGL2;

@@ENABLE_WIRELESS_PLAYBACK_TARGET = ENABLE_WIRELESS_PLAYBACK_TARGET;
380382
381383ENABLE_XSLT = ENABLE_XSLT;
382384
383 FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXTRA_ZOOM_MODE) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_JS_ASYNC_ITERATION) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MINIMAL_SIMULATOR) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT);
 385FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXTRA_ZOOM_MODE) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_JS_ASYNC_ITERATION) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MINIMAL_SIMULATOR) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT);

Source/WebKitLegacy/mac/Configurations/FeatureDefines.xcconfig

@@ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN_macosx = ENABLE_VIDEO_USES_ELEMENT_FULLSCRE
354354
355355ENABLE_WEBASSEMBLY = ;
356356
 357ENABLE_WEBASSEMBLY_STREAMING_API = ENABLE_WEBASSEMBLY_STREAMING_API;
 358
357359ENABLE_WEBGL = ENABLE_WEBGL;
358360
359361ENABLE_WEBGL2 = ENABLE_WEBGL2;

@@ENABLE_WIRELESS_PLAYBACK_TARGET = ENABLE_WIRELESS_PLAYBACK_TARGET;
380382
381383ENABLE_XSLT = ENABLE_XSLT;
382384
383 FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXTRA_ZOOM_MODE) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_JS_ASYNC_ITERATION) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MINIMAL_SIMULATOR) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT);
 385FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXTRA_ZOOM_MODE) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_JS_ASYNC_ITERATION) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MINIMAL_SIMULATOR) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT);

Source/cmake/WebKitFeatures.cmake

@@macro(WEBKIT_OPTION_BEGIN)
174174 WEBKIT_OPTION_DEFINE(ENABLE_VIDEO_TRACK "Toggle Track support for HTML5 video" PRIVATE ON)
175175 WEBKIT_OPTION_DEFINE(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN "Toggle video element fullscreen support" PRIVATE ON)
176176 WEBKIT_OPTION_DEFINE(ENABLE_WEBASSEMBLY "Toggle WebAssembly support" PRIVATE ${ENABLE_FTL_DEFAULT})
 177 WEBKIT_OPTION_DEFINE(ENABLE_WEBASSEMBLY_STREAMING_API "Toggle WebAssembly streaming api support." PRIVATE ON)
177178 WEBKIT_OPTION_DEFINE(ENABLE_WEBDRIVER "Whether to enable the WebDriver service process" PRIVATE OFF)
178179 WEBKIT_OPTION_DEFINE(ENABLE_WEBGL "Toggle WebGL support" PRIVATE ON)
179180 WEBKIT_OPTION_DEFINE(ENABLE_WEBGL2 "Toggle WebGL 2.0 support" PRIVATE OFF)

Tools/ChangeLog

 12018-04-24 Oleksandr Skachkov <gskachkov@gmail.com>
 2
 3 WebAssembly: add support for stream APIs - JavaScript API
 4 https://bugs.webkit.org/show_bug.cgi?id=183442
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 * TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
 9
1102018-04-24 Carlos Garcia Campos <cgarcia@igalia.com>
211
312 Unreviewed. Update W3C WebDriver imported tests.

Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig

@@ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN_macosx = ENABLE_VIDEO_USES_ELEMENT_FULLSCRE
354354
355355ENABLE_WEBASSEMBLY = ;
356356
 357ENABLE_WEBASSEMBLY_STREAMING_API = ENABLE_WEBASSEMBLY_STREAMING_API;
 358
357359ENABLE_WEBGL = ENABLE_WEBGL;
358360
359361ENABLE_WEBGL2 = ENABLE_WEBGL2;

@@ENABLE_WIRELESS_PLAYBACK_TARGET = ENABLE_WIRELESS_PLAYBACK_TARGET;
380382
381383ENABLE_XSLT = ENABLE_XSLT;
382384
383 FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXTRA_ZOOM_MODE) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_JS_ASYNC_ITERATION) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MINIMAL_SIMULATOR) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT);
 385FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXTRA_ZOOM_MODE) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_JS_ASYNC_ITERATION) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MINIMAL_SIMULATOR) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT);

LayoutTests/imported/w3c/ChangeLog

 12018-04-24 Oleksandr Skachkov <gskachkov@gmail.com>
 2
 3 WebAssembly: add support for stream APIs - JavaScript API
 4 https://bugs.webkit.org/show_bug.cgi?id=183442
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 * web-platform-tests/wasm/resources/incrementer.no_mime_type.wasm: Added.
 9 * web-platform-tests/wasm/resources/incrementer.wasm: Added.
 10 * web-platform-tests/wasm/resources/incrementer.wasm.headers: Added.
 11 * web-platform-tests/wasm/resources/incrementer.wrong_mime_type.wasm: Added.
 12 * web-platform-tests/wasm/resources/incrementer.wrong_mime_type.wasm.headers: Added.
 13 * web-platform-tests/wasm/wasm_stream_compile_test-expected.txt: Added.
 14 * web-platform-tests/wasm/wasm_stream_compile_test.html: Added.
 15 * web-platform-tests/wasm/wasm_stream_instantinate_test-expected.txt: Added.
 16 * web-platform-tests/wasm/wasm_stream_instantinate_test.html: Added.
 17
1182018-04-23 Ms2ger <Ms2ger@igalia.com>
219
320 Avoid uninitialized memory read.

LayoutTests/imported/w3c/web-platform-tests/wasm/resources/incrementer.no_mime_type.wasm

Binary file, nothing to see here

LayoutTests/imported/w3c/web-platform-tests/wasm/resources/incrementer.wasm

Binary file, nothing to see here

LayoutTests/imported/w3c/web-platform-tests/wasm/resources/incrementer.wasm.headers

 1Content-Type: application/wasm
 2Cache-Control: max-age=3600

LayoutTests/imported/w3c/web-platform-tests/wasm/resources/incrementer.wrong_mime_type.wasm

Binary file, nothing to see here

LayoutTests/imported/w3c/web-platform-tests/wasm/resources/incrementer.wrong_mime_type.wasm.headers

 1Content-Type: text/css
 2Cache-Control: max-age=3600

LayoutTests/imported/w3c/web-platform-tests/wasm/wasm_stream_compile_test-expected.txt

 1
 2PASS compileStreaming using resolved response
 3PASS compileStreaming using resolved response and check instantiate
 4PASS compileStreaming using promise response from fetch and check instantiate
 5PASS compileStreaming raise error if wrong mime type
 6PASS compileStreaming raise error if no mime type
 7PASS compileStreaming raise error if 404 status
 8PASS compileStreaming check CORS
 9PASS compileStreaming raise error if no-cors
 10PASS compileStreaming receive promise with response created from ArrayBuffer
 11PASS compileStreaming receive response that deliver data by chunks as bufferArray
 12

LayoutTests/imported/w3c/web-platform-tests/wasm/wasm_stream_compile_test.html

 1<!DOCTYPE html>
 2<script src="/resources/testharness.js"></script>
 3<script src="/resources/testharnessreport.js"></script>
 4<script src="/common/get-host-info.sub.js"></script>
 5<script>
 6
 7 promise_test(async function() {
 8 var response = await fetch('resources/incrementer.wasm');
 9 const module = await WebAssembly.compileStreaming(response);
 10 assert_true(module instanceof WebAssembly.Module);
 11 }, "compileStreaming using resolved response");
 12
 13 promise_test(async function() {
 14 var response = await fetch('resources/incrementer.wasm');
 15 const module = await WebAssembly.compileStreaming(response);
 16 const instance = new WebAssembly.Instance(module);
 17 assert_true(instance instanceof WebAssembly.Instance);
 18 }, "compileStreaming using resolved response and check instantiate");
 19
 20 promise_test(async function() {
 21 var result = fetch('resources/incrementer.wasm');
 22 const module = await WebAssembly.compileStreaming(result);
 23 const instance = new WebAssembly.Instance(module);
 24 assert_true(instance instanceof WebAssembly.Instance);
 25 }, "compileStreaming using promise response from fetch and check instantiate");
 26
 27 promise_test(async function() {
 28 try {
 29 var result = fetch('resources/incrementer.wrong_mime_type.wasm');
 30 const module = await WebAssembly.compileStreaming(result);
 31 assert_true(false);
 32 } catch (e) {
 33 assert_true(e.message.includes('MIME type'));
 34 assert_true(e instanceof Error);
 35 }
 36 }, "compileStreaming raise error if wrong mime type");
 37
 38 promise_test(async function() {
 39 try {
 40 var result = fetch('resources/incrementer.no_mime_type.wasm');
 41 const module = await WebAssembly.compileStreaming(result);
 42 assert_true(false);
 43 } catch (e) {
 44 assert_true(e.message.includes('MIME type'));
 45 assert_true(e instanceof Error);
 46 }
 47 }, "compileStreaming raise error if no mime type");
 48
 49 promise_test(async function() {
 50 try {
 51 var result = fetch('resources/incrementer1.wasm');
 52 const module = await WebAssembly.compileStreaming(result);
 53 assert_true(false);
 54 } catch (e) {
 55 assert_equals(e.message, "Response has not returned OK status");
 56 assert_true(e instanceof Error);
 57 }
 58 }, "compileStreaming raise error if 404 status");
 59
 60 const getWasmUrl = fileName => {
 61 var host_info = get_host_info();
 62 var url = host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT + '/wasm/';
 63 return url + fileName + "?pipe=header(Access-Control-Allow-Origin,*)";
 64 };
 65
 66 promise_test(async function() {
 67 var result = fetch(getWasmUrl('resources/incrementer.wasm'), {"mode": "cors"} );
 68 const module = await WebAssembly.compileStreaming(result);
 69 assert_true(module instanceof WebAssembly.Module);
 70 }, "compileStreaming check CORS");
 71
 72 promise_test(async function() {
 73 try {
 74 var result = fetch(getWasmUrl('resources/incrementer.wasm'), {"mode": "no-cors"} );
 75 const module = await WebAssembly.compileStreaming(result);
 76 assert_true(false);
 77 } catch (e) {
 78 assert_equals(e.message, "Response is not CORS-same-origin");
 79 assert_true(e instanceof Error);
 80 }
 81 }, "compileStreaming raise error if no-cors");
 82
 83 promise_test(async function() {
 84 const module = await fetch('resources/incrementer.wasm')
 85 .then(v => v.arrayBuffer())
 86 .then(v => WebAssembly.compileStreaming(new Response(v, { headers: { "Content-Type" : "application/wasm" }})));
 87 assert_true(module instanceof WebAssembly.Module);
 88 }, "compileStreaming receive promise with response created from ArrayBuffer");
 89
 90 promise_test(async function() {
 91 const module = await fetch('resources/incrementer.wasm')
 92 .then(v => v.arrayBuffer())
 93 .then(buffer => {
 94 const stream = new ReadableStream({
 95 start(controller) {
 96 (async () => {
 97 await Promise.resolve().then(() => controller.enqueue(buffer.slice(0, 20)));
 98 await Promise.resolve().then(() => controller.enqueue(buffer.slice(20, buffer.byteLength)));
 99 await Promise.resolve().then(() => controller.close());
 100 })();
 101 }
 102 });
 103 return stream;
 104 })
 105 .then(stream => WebAssembly.compileStreaming(new Response(stream, { headers: { "Content-Type" : "application/wasm" }})));
 106 assert_true(module instanceof WebAssembly.Module);
 107 }, "compileStreaming receive response that deliver data by chunks as bufferArray");
 108</script>
 109

LayoutTests/imported/w3c/web-platform-tests/wasm/wasm_stream_instantinate_test-expected.txt

 1
 2PASS instantiateStreaming using resolved response
 3PASS instantiateStreaming using resolved response and check instantiate
 4PASS instantiateStreaming using promise response from fetch and check instantiate
 5PASS instantiateStreaming raise error if wrong mime type
 6PASS instantiateStreaming raise error if no mime type
 7PASS instantiateStreaming raise error if 404 status
 8PASS instantiateStreaming check CORS
 9PASS instantiateStreaming raise error if no-cors
 10PASS instantiateStreaming receive promise with response created from ArrayBuffer
 11PASS instantiateStreaming receive response that deliver data by chunks as bufferArray
 12

LayoutTests/imported/w3c/web-platform-tests/wasm/wasm_stream_instantinate_test.html

 1<!DOCTYPE html>
 2<script src="/resources/testharness.js"></script>
 3<script src="/resources/testharnessreport.js"></script>
 4<script src="/common/get-host-info.sub.js"></script>
 5<script>
 6 promise_test(async function() {
 7 var response = await fetch('resources/incrementer.wasm');
 8 const { instance, module } = await WebAssembly.instantiateStreaming(response);
 9 assert_true(instance instanceof WebAssembly.Instance);
 10 assert_true(module instanceof WebAssembly.Module);
 11 }, "instantiateStreaming using resolved response");
 12
 13 promise_test(async function() {
 14 var response = await fetch('resources/incrementer.wasm');
 15 const { instance } = await WebAssembly.instantiateStreaming(response);
 16 assert_true(instance instanceof WebAssembly.Instance);
 17 }, "instantiateStreaming using resolved response and check instantiate");
 18
 19 promise_test(async function() {
 20 var result = fetch('resources/incrementer.wasm');
 21 const { instance } = await WebAssembly.instantiateStreaming(result);
 22 assert_true(instance instanceof WebAssembly.Instance);
 23 }, "instantiateStreaming using promise response from fetch and check instantiate");
 24
 25 promise_test(async function() {
 26 try {
 27 var result = fetch('resources/incrementer.wrong_mime_type.wasm');
 28 const { instance } = await WebAssembly.instantiateStreaming(result);
 29 assert_true(false);
 30 } catch (e) {
 31 assert_true(e.message.includes('MIME type'));
 32 assert_true(e instanceof Error);
 33 }
 34 }, "instantiateStreaming raise error if wrong mime type");
 35
 36 promise_test(async function() {
 37 try {
 38 var result = fetch('resources/incrementer.no_mime_type.wasm');
 39 const { instance } = await WebAssembly.instantiateStreaming(result);
 40 assert_true(false);
 41 } catch (e) {
 42 assert_true(e.message.includes('MIME type'));
 43 assert_true(e instanceof Error);
 44 }
 45 }, "instantiateStreaming raise error if no mime type");
 46
 47 promise_test(async function() {
 48 try {
 49 var result = fetch('resources/incrementer1.wasm');
 50 const { instance } = await WebAssembly.instantiateStreaming(result);
 51 assert_true(false);
 52 } catch (e) {
 53 assert_equals(e.message, "Response has not returned OK status");
 54 assert_true(e instanceof Error);
 55 }
 56 }, "instantiateStreaming raise error if 404 status");
 57
 58 const getWasmUrl = fileName => {
 59 var host_info = get_host_info();
 60 var url = host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT + '/wasm/';
 61 return url + fileName + "?pipe=header(Access-Control-Allow-Origin,*)";
 62 };
 63
 64 promise_test(async function() {
 65 var result = fetch(getWasmUrl('resources/incrementer.wasm'), {"mode": "cors"} );
 66 const { instance } = await WebAssembly.instantiateStreaming(result);
 67 assert_true(instance instanceof WebAssembly.Instance);
 68 }, "instantiateStreaming check CORS");
 69
 70 promise_test(async function() {
 71 try {
 72 var result = fetch(getWasmUrl('resources/incrementer.wasm'), {"mode": "no-cors"} );
 73 const { instance } = await WebAssembly.instantiateStreaming(result);
 74 assert_true(false);
 75 } catch (e) {
 76 assert_equals(e.message, "Response is not CORS-same-origin");
 77 assert_true(e instanceof Error);
 78 }
 79 }, "instantiateStreaming raise error if no-cors");
 80
 81 promise_test(async function() {
 82 const { instance } = await fetch('resources/incrementer.wasm')
 83 .then(v => v.arrayBuffer())
 84 .then(v => WebAssembly.instantiateStreaming(new Response(v, { headers: { "Content-Type" : "application/wasm" }})));
 85 assert_true(instance instanceof WebAssembly.Instance);
 86 }, "instantiateStreaming receive promise with response created from ArrayBuffer");
 87
 88 promise_test(async function() {
 89 const { instance } = a = await fetch('resources/incrementer.wasm')
 90 .then(v => v.arrayBuffer())
 91 .then(buffer => {
 92 const stream = new ReadableStream({
 93 start(controller) {
 94 (async () => {
 95 await Promise.resolve().then(() => controller.enqueue(buffer.slice(0, 20)));
 96 await Promise.resolve().then(() => controller.enqueue(buffer.slice(20, buffer.byteLength)));
 97 await Promise.resolve().then(() => controller.close());
 98 })();
 99 }
 100 });
 101 return stream;
 102 })
 103 .then(stream => WebAssembly.instantiateStreaming(new Response(stream, { headers: { "Content-Type" : "application/wasm" }})));
 104 assert_true(instance instanceof WebAssembly.Instance);
 105 }, "instantiateStreaming receive response that deliver data by chunks as bufferArray");
 106</script>

ChangeLog

 12018-04-24 Oleksandr Skachkov <gskachkov@gmail.com>
 2
 3 WebAssembly: add support for stream APIs - JavaScript API
 4 https://bugs.webkit.org/show_bug.cgi?id=183442
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 Add WEBASSEMBLY_STREAMING_API feature flag
 9
 10 * Source/cmake/WebKitFeatures.cmake:
 11
1122018-04-24 Zan Dobersek <zdobersek@igalia.com>
213
314 [WPE] Remove libgbm dependency