forked from mirrors/gecko-dev
Backed out 3 changesets (bug 1850755) for causing SM bustages complaing about xulRuntime.shell. CLOSED TREE
Backed out changeset 6c632ec74ee0 (bug 1850755) Backed out changeset cd202b5a63ea (bug 1850755) Backed out changeset a2d5b721e236 (bug 1850755)
This commit is contained in:
parent
13854844cf
commit
104bd0f208
23 changed files with 61 additions and 27 deletions
|
|
@ -204,6 +204,13 @@ class JS_PUBLIC_API RealmCreationOptions {
|
|||
return *this;
|
||||
}
|
||||
|
||||
#ifdef NIGHTLY_BUILD
|
||||
bool getArrayGroupingEnabled() const { return arrayGrouping_; }
|
||||
RealmCreationOptions& setArrayGroupingEnabled(bool flag) {
|
||||
arrayGrouping_ = flag;
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool getWellFormedUnicodeStringsEnabled() const {
|
||||
return wellFormedUnicodeStrings_;
|
||||
}
|
||||
|
|
@ -212,13 +219,6 @@ class JS_PUBLIC_API RealmCreationOptions {
|
|||
return *this;
|
||||
}
|
||||
|
||||
#ifdef NIGHTLY_BUILD
|
||||
bool getArrayGroupingEnabled() const { return arrayGrouping_; }
|
||||
RealmCreationOptions& setArrayGroupingEnabled(bool flag) {
|
||||
arrayGrouping_ = flag;
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool getNewSetMethodsEnabled() const { return newSetMethods_; }
|
||||
RealmCreationOptions& setNewSetMethodsEnabled(bool flag) {
|
||||
newSetMethods_ = flag;
|
||||
|
|
@ -292,10 +292,10 @@ class JS_PUBLIC_API RealmCreationOptions {
|
|||
bool propertyErrorMessageFix_ = false;
|
||||
bool iteratorHelpers_ = false;
|
||||
bool shadowRealms_ = false;
|
||||
// Pref for String.prototype.{is,to}WellFormed() methods.
|
||||
bool wellFormedUnicodeStrings_ = true;
|
||||
#ifdef NIGHTLY_BUILD
|
||||
bool arrayGrouping_ = false;
|
||||
// Pref for String.prototype.{is,to}WellFormed() methods.
|
||||
bool wellFormedUnicodeStrings_ = false;
|
||||
// Pref for new Set.prototype methods.
|
||||
bool newSetMethods_ = false;
|
||||
// Pref for ArrayBuffer.prototype.transfer{,ToFixedLength}() methods.
|
||||
|
|
|
|||
|
|
@ -1562,6 +1562,7 @@ static bool str_normalize(JSContext* cx, unsigned argc, Value* vp) {
|
|||
|
||||
#endif // JS_HAS_INTL_API
|
||||
|
||||
#ifdef NIGHTLY_BUILD
|
||||
/**
|
||||
* IsStringWellFormedUnicode ( string )
|
||||
* https://tc39.es/ecma262/#sec-isstringwellformedunicode
|
||||
|
|
@ -1692,6 +1693,8 @@ static const JSFunctionSpec wellFormed_functions[] = {
|
|||
JS_FN("isWellFormed", str_isWellFormed, 0, 0),
|
||||
JS_FN("toWellFormed", str_toWellFormed, 0, 0), JS_FS_END};
|
||||
|
||||
#endif // NIGHTLY_BUILD
|
||||
|
||||
static bool str_charAt(JSContext* cx, unsigned argc, Value* vp) {
|
||||
AutoJSMethodProfilerEntry pseudoFrame(cx, "String.prototype", "charAt");
|
||||
CallArgs args = CallArgsFromVp(argc, vp);
|
||||
|
|
@ -4037,11 +4040,13 @@ static bool StringClassFinish(JSContext* cx, HandleObject ctor,
|
|||
return false;
|
||||
}
|
||||
|
||||
#ifdef NIGHTLY_BUILD
|
||||
// Define isWellFormed/toWellFormed functions.
|
||||
if (cx->realm()->creationOptions().getWellFormedUnicodeStringsEnabled() &&
|
||||
!JS_DefineFunctions(cx, nativeProto, wellFormed_functions)) {
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -741,10 +741,10 @@ bool shell::enableToSource = false;
|
|||
bool shell::enablePropertyErrorMessageFix = false;
|
||||
bool shell::enableIteratorHelpers = false;
|
||||
bool shell::enableShadowRealms = false;
|
||||
// Pref for String.prototype.{is,to}WellFormed() methods.
|
||||
bool shell::enableWellFormedUnicodeStrings = true;
|
||||
#ifdef NIGHTLY_BUILD
|
||||
bool shell::enableArrayGrouping = false;
|
||||
// Pref for String.prototype.{is,to}WellFormed() methods.
|
||||
bool shell::enableWellFormedUnicodeStrings = false;
|
||||
// Pref for new Set.prototype methods.
|
||||
bool shell::enableNewSetMethods = false;
|
||||
// Pref for ArrayBuffer.prototype.transfer{,ToFixedLength}() methods.
|
||||
|
|
@ -4135,9 +4135,9 @@ static void SetStandardRealmOptions(JS::RealmOptions& options) {
|
|||
.setPropertyErrorMessageFixEnabled(enablePropertyErrorMessageFix)
|
||||
.setIteratorHelpersEnabled(enableIteratorHelpers)
|
||||
.setShadowRealmsEnabled(enableShadowRealms)
|
||||
.setWellFormedUnicodeStringsEnabled(enableWellFormedUnicodeStrings)
|
||||
#ifdef NIGHTLY_BUILD
|
||||
.setArrayGroupingEnabled(enableArrayGrouping)
|
||||
.setWellFormedUnicodeStringsEnabled(enableWellFormedUnicodeStrings)
|
||||
.setNewSetMethodsEnabled(enableNewSetMethods)
|
||||
.setArrayBufferTransferEnabled(enableArrayBufferTransfer)
|
||||
#endif
|
||||
|
|
@ -11640,9 +11640,9 @@ bool InitOptionParser(OptionParser& op) {
|
|||
!op.addBoolOption('\0', "enable-shadow-realms", "Enable ShadowRealms") ||
|
||||
!op.addBoolOption('\0', "enable-array-grouping",
|
||||
"Enable Array.grouping") ||
|
||||
!op.addBoolOption('\0', "disable-well-formed-unicode-strings",
|
||||
"Disable String.prototype.{is,to}WellFormed() methods"
|
||||
"(Well-Formed Unicode Strings) (default: Enabled)") ||
|
||||
!op.addBoolOption('\0', "enable-well-formed-unicode-strings",
|
||||
"Enable String.prototype.{is,to}WellFormed() methods"
|
||||
"(Well-Formed Unicode Strings)") ||
|
||||
!op.addBoolOption('\0', "enable-new-set-methods",
|
||||
"Enable New Set methods") ||
|
||||
!op.addBoolOption('\0', "enable-arraybuffer-transfer",
|
||||
|
|
@ -12152,10 +12152,10 @@ bool SetContextOptions(JSContext* cx, const OptionParser& op) {
|
|||
!op.getBoolOption("disable-property-error-message-fix");
|
||||
enableIteratorHelpers = op.getBoolOption("enable-iterator-helpers");
|
||||
enableShadowRealms = op.getBoolOption("enable-shadow-realms");
|
||||
enableWellFormedUnicodeStrings =
|
||||
!op.getBoolOption("disable-well-formed-unicode-strings");
|
||||
#ifdef NIGHTLY_BUILD
|
||||
enableArrayGrouping = op.getBoolOption("enable-array-grouping");
|
||||
enableWellFormedUnicodeStrings =
|
||||
op.getBoolOption("enable-well-formed-unicode-strings");
|
||||
enableNewSetMethods = op.getBoolOption("enable-new-set-methods");
|
||||
enableArrayBufferTransfer = op.getBoolOption("enable-arraybuffer-transfer");
|
||||
#endif
|
||||
|
|
|
|||
9
js/src/tests/non262/String/wellFormed.js
Normal file
9
js/src/tests/non262/String/wellFormed.js
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
// Calling String.prototype.isWellFormed() or toWellFormed() should throw a
|
||||
// TypeError when the pref "enable-well-formed-unicode-strings" is off.
|
||||
//
|
||||
// This test should be removed once the pref is turned on by default.
|
||||
assertThrowsInstanceOf(() => "abc".isWellFormed(), TypeError)
|
||||
assertThrowsInstanceOf(() => "abc".toWellFormed(), TypeError)
|
||||
|
||||
if (typeof reportCompare === "function")
|
||||
reportCompare(0, 0);
|
||||
|
|
@ -39,6 +39,8 @@ FEATURE_CHECK_NEEDED = {
|
|||
"WeakRef": "!this.hasOwnProperty('WeakRef')",
|
||||
"array-grouping": "!Object.groupBy", # Bug 1792650
|
||||
"decorators": "!(this.hasOwnProperty('getBuildConfiguration')&&getBuildConfiguration()['decorators'])", # Bug 1435869
|
||||
"String.prototype.isWellFormed": "!String.prototype.isWellFormed",
|
||||
"String.prototype.toWellFormed": "!String.prototype.toWellFormed",
|
||||
"iterator-helpers": "!this.hasOwnProperty('Iterator')", # Bug 1568906
|
||||
"arraybuffer-transfer": "!ArrayBuffer.prototype.transfer", # Bug 1519163
|
||||
}
|
||||
|
|
@ -47,6 +49,8 @@ SHELL_OPTIONS = {
|
|||
"import-assertions": "--enable-import-assertions",
|
||||
"ShadowRealm": "--enable-shadow-realms",
|
||||
"array-grouping": "--enable-array-grouping",
|
||||
"String.prototype.isWellFormed": "--enable-well-formed-unicode-strings",
|
||||
"String.prototype.toWellFormed": "--enable-well-formed-unicode-strings",
|
||||
"iterator-helpers": "--enable-iterator-helpers",
|
||||
"arraybuffer-transfer": "--enable-arraybuffer-transfer",
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
// |reftest| shell-option(--enable-well-formed-unicode-strings) skip-if(!String.prototype.isWellFormed||!xulRuntime.shell) -- String.prototype.isWellFormed is not enabled unconditionally, requires shell-options
|
||||
// Copyright (C) 2022 Jordan Harband. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
// |reftest| shell-option(--enable-well-formed-unicode-strings) skip-if(!String.prototype.isWellFormed||!xulRuntime.shell) -- String.prototype.isWellFormed is not enabled unconditionally, requires shell-options
|
||||
// Copyright (C) 2022 Jordan Harband. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
// |reftest| shell-option(--enable-well-formed-unicode-strings) skip-if(!String.prototype.isWellFormed||!xulRuntime.shell) -- String.prototype.isWellFormed is not enabled unconditionally, requires shell-options
|
||||
// Copyright (C) 2022 Jordan Harband. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
// |reftest| shell-option(--enable-well-formed-unicode-strings) skip-if(!String.prototype.isWellFormed||!xulRuntime.shell) -- String.prototype.isWellFormed is not enabled unconditionally, requires shell-options
|
||||
// Copyright (C) 2022 Jordan Harband. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
// |reftest| shell-option(--enable-well-formed-unicode-strings) skip-if(!String.prototype.isWellFormed||!xulRuntime.shell) -- String.prototype.isWellFormed is not enabled unconditionally, requires shell-options
|
||||
// Copyright (C) 2022 Jordan Harband. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
// |reftest| shell-option(--enable-well-formed-unicode-strings) skip-if(!String.prototype.isWellFormed||!xulRuntime.shell) -- String.prototype.isWellFormed is not enabled unconditionally, requires shell-options
|
||||
// Copyright (C) 2022 Jordan Harband. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
// |reftest| shell-option(--enable-well-formed-unicode-strings) skip-if(!String.prototype.isWellFormed||!xulRuntime.shell) -- String.prototype.isWellFormed is not enabled unconditionally, requires shell-options
|
||||
// Copyright (C) 2022 Igalia, S.L. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
// |reftest| shell-option(--enable-well-formed-unicode-strings) skip-if(!String.prototype.isWellFormed||!xulRuntime.shell) -- String.prototype.isWellFormed is not enabled unconditionally, requires shell-options
|
||||
// Copyright (C) 2022 Jordan Harband. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
// |reftest| shell-option(--enable-well-formed-unicode-strings) skip-if(!String.prototype.toWellFormed||!xulRuntime.shell) -- String.prototype.toWellFormed is not enabled unconditionally, requires shell-options
|
||||
// Copyright (C) 2022 Jordan Harband. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
// |reftest| shell-option(--enable-well-formed-unicode-strings) skip-if(!String.prototype.toWellFormed||!xulRuntime.shell) -- String.prototype.toWellFormed is not enabled unconditionally, requires shell-options
|
||||
// Copyright (C) 2022 Jordan Harband. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
// |reftest| shell-option(--enable-well-formed-unicode-strings) skip-if(!String.prototype.toWellFormed||!xulRuntime.shell) -- String.prototype.toWellFormed is not enabled unconditionally, requires shell-options
|
||||
// Copyright (C) 2022 Jordan Harband. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
// |reftest| shell-option(--enable-well-formed-unicode-strings) skip-if(!String.prototype.toWellFormed||!xulRuntime.shell) -- String.prototype.toWellFormed is not enabled unconditionally, requires shell-options
|
||||
// Copyright (C) 2022 Jordan Harband. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
// |reftest| shell-option(--enable-well-formed-unicode-strings) skip-if(!String.prototype.toWellFormed||!xulRuntime.shell) -- String.prototype.toWellFormed is not enabled unconditionally, requires shell-options
|
||||
// Copyright (C) 2022 Jordan Harband. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
// |reftest| shell-option(--enable-well-formed-unicode-strings) skip-if(!String.prototype.toWellFormed||!xulRuntime.shell) -- String.prototype.toWellFormed is not enabled unconditionally, requires shell-options
|
||||
// Copyright (C) 2022 Jordan Harband. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
// |reftest| shell-option(--enable-well-formed-unicode-strings) skip-if(!String.prototype.toWellFormed||!xulRuntime.shell) -- String.prototype.toWellFormed is not enabled unconditionally, requires shell-options
|
||||
// Copyright (C) 2022 Igalia, S.L. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
// |reftest| shell-option(--enable-well-formed-unicode-strings) skip-if(!String.prototype.toWellFormed||!xulRuntime.shell) -- String.prototype.toWellFormed is not enabled unconditionally, requires shell-options
|
||||
// Copyright (C) 2022 Jordan Harband. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
|
|
|
|||
|
|
@ -777,9 +777,9 @@ static mozilla::Atomic<bool> sWeakRefsEnabled(false);
|
|||
static mozilla::Atomic<bool> sWeakRefsExposeCleanupSome(false);
|
||||
static mozilla::Atomic<bool> sIteratorHelpersEnabled(false);
|
||||
static mozilla::Atomic<bool> sShadowRealmsEnabled(false);
|
||||
static mozilla::Atomic<bool> sWellFormedUnicodeStringsEnabled(true);
|
||||
#ifdef NIGHTLY_BUILD
|
||||
static mozilla::Atomic<bool> sArrayGroupingEnabled(false);
|
||||
static mozilla::Atomic<bool> sWellFormedUnicodeStringsEnabled(false);
|
||||
static mozilla::Atomic<bool> sNewSetMethodsEnabled(false);
|
||||
static mozilla::Atomic<bool> sArrayBufferTransferEnabled(false);
|
||||
#endif
|
||||
|
|
@ -806,9 +806,9 @@ void xpc::SetPrefableRealmOptions(JS::RealmOptions& options) {
|
|||
.setWeakRefsEnabled(GetWeakRefsEnabled())
|
||||
.setIteratorHelpersEnabled(sIteratorHelpersEnabled)
|
||||
.setShadowRealmsEnabled(sShadowRealmsEnabled)
|
||||
.setWellFormedUnicodeStringsEnabled(sWellFormedUnicodeStringsEnabled)
|
||||
#ifdef NIGHTLY_BUILD
|
||||
.setArrayGroupingEnabled(sArrayGroupingEnabled)
|
||||
.setWellFormedUnicodeStringsEnabled(sWellFormedUnicodeStringsEnabled)
|
||||
.setNewSetMethodsEnabled(sNewSetMethodsEnabled)
|
||||
.setArrayBufferTransferEnabled(sArrayBufferTransferEnabled)
|
||||
#endif
|
||||
|
|
@ -1007,13 +1007,13 @@ static void ReloadPrefsCallback(const char* pref, void* aXpccx) {
|
|||
JS_OPTIONS_DOT_STR "experimental.weakrefs.expose_cleanupSome");
|
||||
sShadowRealmsEnabled =
|
||||
Preferences::GetBool(JS_OPTIONS_DOT_STR "experimental.shadow_realms");
|
||||
sWellFormedUnicodeStringsEnabled =
|
||||
Preferences::GetBool(JS_OPTIONS_DOT_STR "well_formed_unicode_strings");
|
||||
#ifdef NIGHTLY_BUILD
|
||||
sIteratorHelpersEnabled =
|
||||
Preferences::GetBool(JS_OPTIONS_DOT_STR "experimental.iterator_helpers");
|
||||
sArrayGroupingEnabled =
|
||||
Preferences::GetBool(JS_OPTIONS_DOT_STR "experimental.array_grouping");
|
||||
sWellFormedUnicodeStringsEnabled = Preferences::GetBool(
|
||||
JS_OPTIONS_DOT_STR "experimental.well_formed_unicode_strings");
|
||||
sNewSetMethodsEnabled =
|
||||
Preferences::GetBool(JS_OPTIONS_DOT_STR "experimental.new_set_methods");
|
||||
sArrayBufferTransferEnabled = Preferences::GetBool(
|
||||
|
|
|
|||
|
|
@ -7456,12 +7456,6 @@
|
|||
value: false
|
||||
mirror: always
|
||||
|
||||
# Support for String.prototype.{is,to}WellFormed in JavaScript.
|
||||
- name: javascript.options.well_formed_unicode_strings
|
||||
type: bool
|
||||
value: true
|
||||
mirror: always
|
||||
|
||||
#ifdef NIGHTLY_BUILD
|
||||
# Experimental support for Iterator Helpers in JavaScript.
|
||||
- name: javascript.options.experimental.iterator_helpers
|
||||
|
|
@ -7475,6 +7469,12 @@
|
|||
value: false
|
||||
mirror: always
|
||||
|
||||
# Experimental support for String.prototype.{is,to}WellFormed in JavaScript.
|
||||
- name: javascript.options.experimental.well_formed_unicode_strings
|
||||
type: bool
|
||||
value: false
|
||||
mirror: always
|
||||
|
||||
# Experimental support for New Set methods
|
||||
- name: javascript.options.experimental.new_set_methods
|
||||
type: bool
|
||||
|
|
|
|||
Loading…
Reference in a new issue