summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMoonchild <moonchild@palemoon.org>2020-10-31 20:27:19 +0000
committerMoonchild <moonchild@palemoon.org>2020-10-31 20:27:19 +0000
commitdff20616b75bfbf580aef36ea5ac4fce317de52a (patch)
tree11336aa6a322754d1129d6a98d1312a1490a29da
parentbc8b279e5fd7e4b3e311b0d8826c46132dea106e (diff)
downloaduxp-dff20616b75bfbf580aef36ea5ac4fce317de52a.tar.gz
Issue #1442 - Part 3: Add a run-time preference for toggling the streams API.
This was entirely way too complicated to toggle a feature.
-rw-r--r--dom/workers/RuntimeService.cpp1
-rw-r--r--js/src/jsapi.h11
-rw-r--r--js/src/shell/js.cpp9
-rw-r--r--js/xpconnect/src/XPCJSContext.cpp5
-rw-r--r--modules/libpref/init/all.js3
5 files changed, 26 insertions, 3 deletions
diff --git a/dom/workers/RuntimeService.cpp b/dom/workers/RuntimeService.cpp
index 239207efc9..6138a3c6de 100644
--- a/dom/workers/RuntimeService.cpp
+++ b/dom/workers/RuntimeService.cpp
@@ -299,6 +299,7 @@ LoadContextOptions(const char* aPrefName, void* /* aClosure */)
.setNativeRegExp(GetWorkerPref<bool>(NS_LITERAL_CSTRING("native_regexp")))
.setAsyncStack(GetWorkerPref<bool>(NS_LITERAL_CSTRING("asyncstack")))
.setWerror(GetWorkerPref<bool>(NS_LITERAL_CSTRING("werror")))
+ .setStreams(GetWorkerPref<bool>(NS_LITERAL_CSTRING("streams")))
.setExtraWarnings(GetWorkerPref<bool>(NS_LITERAL_CSTRING("strict")))
.setArrayProtoValues(GetWorkerPref<bool>(
NS_LITERAL_CSTRING("array_prototype_values")));
diff --git a/js/src/jsapi.h b/js/src/jsapi.h
index f8203ee1fd..52c05d573a 100644
--- a/js/src/jsapi.h
+++ b/js/src/jsapi.h
@@ -1169,6 +1169,16 @@ class JS_PUBLIC_API(ContextOptions) {
return *this;
}
+ bool streams() const { return streams_; }
+ ContextOptions& setStreams(bool flag) {
+ streams_ = flag;
+ return *this;
+ }
+ ContextOptions& toggleStreams() {
+ streams_ = !streams_;
+ return *this;
+ }
+
bool nativeRegExp() const { return nativeRegExp_; }
ContextOptions& setNativeRegExp(bool flag) {
nativeRegExp_ = flag;
@@ -1251,6 +1261,7 @@ class JS_PUBLIC_API(ContextOptions) {
bool strictMode_ : 1;
bool extraWarnings_ : 1;
bool arrayProtoValues_ : 1;
+ bool streams_ : 1;
};
JS_PUBLIC_API(ContextOptions&)
diff --git a/js/src/shell/js.cpp b/js/src/shell/js.cpp
index 6e155d3ff6..408a7ffd44 100644
--- a/js/src/shell/js.cpp
+++ b/js/src/shell/js.cpp
@@ -321,6 +321,7 @@ static bool enableUnboxedArrays = false;
static bool enableSharedMemory = SHARED_MEMORY_DEFAULT;
static bool enableWasmAlwaysBaseline = false;
static bool enableArrayProtoValues = true;
+static bool enableStreams = false;
static bool printTiming = false;
static const char* jsCacheDir = nullptr;
static const char* jsCacheAsmJSPath = nullptr;
@@ -7288,6 +7289,7 @@ SetContextOptions(JSContext* cx, const OptionParser& op)
enableUnboxedArrays = op.getBoolOption("unboxed-arrays");
enableWasmAlwaysBaseline = op.getBoolOption("wasm-always-baseline");
enableArrayProtoValues = !op.getBoolOption("no-array-proto-values");
+ enableStreams = op.getBoolOption("enable-streams");
JS::ContextOptionsRef(cx).setBaseline(enableBaseline)
.setIon(enableIon)
@@ -7296,7 +7298,8 @@ SetContextOptions(JSContext* cx, const OptionParser& op)
.setWasmAlwaysBaseline(enableWasmAlwaysBaseline)
.setNativeRegExp(enableNativeRegExp)
.setUnboxedArrays(enableUnboxedArrays)
- .setArrayProtoValues(enableArrayProtoValues);
+ .setArrayProtoValues(enableArrayProtoValues)
+ .setStreams(enableStreams);
if (op.getBoolOption("wasm-check-bce"))
jit::JitOptions.wasmAlwaysCheckBounds = true;
@@ -7568,7 +7571,8 @@ SetWorkerContextOptions(JSContext* cx)
.setWasmAlwaysBaseline(enableWasmAlwaysBaseline)
.setNativeRegExp(enableNativeRegExp)
.setUnboxedArrays(enableUnboxedArrays)
- .setArrayProtoValues(enableArrayProtoValues);
+ .setArrayProtoValues(enableArrayProtoValues)
+ .setStreams(enableStreams);
cx->setOffthreadIonCompilationEnabled(offthreadCompilation);
cx->profilingScripts = enableCodeCoverage || enableDisassemblyDumps;
@@ -7742,6 +7746,7 @@ main(int argc, char** argv, char** envp)
|| !op.addBoolOption('\0', "wasm-always-baseline", "Enable wasm baseline compiler when possible")
|| !op.addBoolOption('\0', "wasm-check-bce", "Always generate wasm bounds check, even redundant ones.")
|| !op.addBoolOption('\0', "no-array-proto-values", "Remove Array.prototype.values")
+ || !op.addBoolOption('\0', "enable-streams", "Enable WHATWG Streams")
#ifdef ENABLE_SHARED_ARRAY_BUFFER
|| !op.addStringOption('\0', "shared-memory", "on/off",
"SharedArrayBuffer and Atomics "
diff --git a/js/xpconnect/src/XPCJSContext.cpp b/js/xpconnect/src/XPCJSContext.cpp
index 5dcc71e82e..d5f913ff02 100644
--- a/js/xpconnect/src/XPCJSContext.cpp
+++ b/js/xpconnect/src/XPCJSContext.cpp
@@ -1425,6 +1425,8 @@ ReloadPrefsCallback(const char* pref, void* data)
bool werror = Preferences::GetBool(JS_OPTIONS_DOT_STR "werror");
bool extraWarnings = Preferences::GetBool(JS_OPTIONS_DOT_STR "strict");
+
+ bool streams = Preferences::GetBool(JS_OPTIONS_DOT_STR "streams");
bool unboxedObjects = Preferences::GetBool(JS_OPTIONS_DOT_STR "unboxed_objects");
@@ -1448,7 +1450,8 @@ ReloadPrefsCallback(const char* pref, void* data)
.setDumpStackOnDebuggeeWouldRun(dumpStackOnDebuggeeWouldRun)
.setWerror(werror)
.setExtraWarnings(extraWarnings)
- .setArrayProtoValues(arrayProtoValues);
+ .setArrayProtoValues(arrayProtoValues)
+ .setStreams(streams);
JS_SetParallelParsingEnabled(cx, parallelParsing);
JS_SetOffthreadIonCompilationEnabled(cx, offthreadIonCompilation);
diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js
index e7b7e60879..dbaf1dfd6e 100644
--- a/modules/libpref/init/all.js
+++ b/modules/libpref/init/all.js
@@ -1333,6 +1333,9 @@ pref("javascript.options.shared_memory", true);
pref("javascript.options.throw_on_debuggee_would_run", false);
pref("javascript.options.dump_stack_on_debuggee_would_run", false);
+// Streams API
+pref("javascript.options.streams", false);
+
// advanced prefs
pref("advanced.mailftp", false);
pref("image.animation_mode", "normal");