Commit a1571c29 authored by Bill Budge's avatar Bill Budge Committed by Chromium LUCI CQ

[sharedarraybuffer][wasm] Fix SAB restriction at process start

- Simplify the code to improve readability.
- Correctly enables SABs at render process start in case we have
  the COI bit.

Bug: chromium:923807
Change-Id: I4f52ec30f76864200f8a92f109603b59eb11c8da
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2582358Reviewed-by: default avatarCamille Lamy <clamy@chromium.org>
Reviewed-by: default avatarArthur Sonzogni <arthursonzogni@chromium.org>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Commit-Queue: Bill Budge <bbudge@chromium.org>
Cr-Commit-Position: refs/heads/master@{#837083}
parent 7a0778c5
...@@ -147,34 +147,32 @@ RenderProcessImpl::RenderProcessImpl() ...@@ -147,34 +147,32 @@ RenderProcessImpl::RenderProcessImpl()
constexpr char kAtomicsFlag[] = "--harmony-atomics"; constexpr char kAtomicsFlag[] = "--harmony-atomics";
v8::V8::SetFlagsFromString(kAtomicsFlag, sizeof(kAtomicsFlag)); v8::V8::SetFlagsFromString(kAtomicsFlag, sizeof(kAtomicsFlag));
// SharedArrayBuffers require the feature flag, or site isolation. On Android, // SharedArrayBuffers require the feature flag, or the WebAssembly threads
// the feature is disabled by default, so site isolation is required. On // feature, or site isolation. On Android, SABs are disabled by default, so
// desktop, site isolation is optional while we migrate existing apps to use // site isolation is required. On desktop, site isolation is optional while we
// COOP+COEP. // migrate existing web pages to require site isolation.
bool enableSharedArrayBuffer = false; bool enable_wasm_threads =
bool enableWebAssemblyThreads = false; base::FeatureList::IsEnabled(features::kWebAssemblyThreads);
if (base::FeatureList::IsEnabled(features::kWebAssemblyThreads)) { bool restrict_shared_array_buffers =
enableWebAssemblyThreads = true; base::FeatureList::IsEnabled(features::kRestrictSharedArrayBuffer);
enableSharedArrayBuffer = true; bool cross_origin_isolated =
} else { base::FeatureList::IsEnabled(network::features::kCrossOriginIsolated) &&
bool processIscrossOriginIsolated = blink::IsCrossOriginIsolated();
base::FeatureList::IsEnabled(network::features::kCrossOriginIsolated) &&
blink::IsCrossOriginIsolated(); bool enable_shared_array_buffer = false;
enableSharedArrayBuffer = if (cross_origin_isolated) {
base::FeatureList::IsEnabled(features::kSharedArrayBuffer) || enable_shared_array_buffer = true;
processIscrossOriginIsolated; } else if (!restrict_shared_array_buffers) {
enable_shared_array_buffer =
enable_wasm_threads ||
base::FeatureList::IsEnabled(features::kSharedArrayBuffer);
} }
if (base::FeatureList::IsEnabled(features::kRestrictSharedArrayBuffer)) { if (enable_wasm_threads) {
// Both SABs and Wasm threads should be disabled for developer testing.
enableWebAssemblyThreads = false;
enableSharedArrayBuffer = false;
}
if (enableWebAssemblyThreads) {
constexpr char kWasmThreadsFlag[] = "--experimental-wasm-threads"; constexpr char kWasmThreadsFlag[] = "--experimental-wasm-threads";
v8::V8::SetFlagsFromString(kWasmThreadsFlag, sizeof(kWasmThreadsFlag)); v8::V8::SetFlagsFromString(kWasmThreadsFlag, sizeof(kWasmThreadsFlag));
} }
if (enableSharedArrayBuffer) { if (enable_shared_array_buffer) {
constexpr char kSABFlag[] = "--harmony-sharedarraybuffer"; constexpr char kSABFlag[] = "--harmony-sharedarraybuffer";
v8::V8::SetFlagsFromString(kSABFlag, sizeof(kSABFlag)); v8::V8::SetFlagsFromString(kSABFlag, sizeof(kSABFlag));
} else { } else {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment