WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-141859-20150224175707.patch (text/plain), 65.38 KB, created by
Yusuke Suzuki
on 2015-02-24 00:57:20 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Yusuke Suzuki
Created:
2015-02-24 00:57:20 PST
Size:
65.38 KB
patch
obsolete
>Subversion Revision: 180551 >diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog >index 2665386b4c9a559802d2fae92ec51488e6165694..85412c0eeb05f052fff9a8a82aa7a3f342cf7bdd 100644 >--- a/Source/JavaScriptCore/ChangeLog >+++ b/Source/JavaScriptCore/ChangeLog >@@ -1,3 +1,40 @@ >+2015-02-24 Yusuke Suzuki <utatane.tea@gmail.com> >+ >+ REGRESSION(r179429): Can't type comments in Facebook >+ https://bugs.webkit.org/show_bug.cgi?id=141859 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ When window.Symbol is exposed to user-space pages, >+ Facebook's JavaScript use it (maybe, for immutable-js and React.js's unique key). >+ However, to work with Symbols completely, it also requires >+ 1) Object.getOwnPropertySymbols (for mixin including Symbols) >+ 2) the latest ES6 Iterator interface that uses Iterator.next and it returns { done: boolean, value: value }. >+ Since they are not landed yet, comments in Facebook don't work. >+ >+ This patch introduces RuntimeFlags for JavaScriptCore. >+ Specifying SymbolEnabled flag under test runner and inspector to continue to work with Symbol. >+ And drop JavaScriptExperimentsEnabled flag >+ because it is no longer used and use case of this is duplicated to runtime flags. >+ >+ * JavaScriptCore.order: >+ * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: >+ * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters: >+ * JavaScriptCore.xcodeproj/project.pbxproj: >+ * jsc.cpp: >+ (GlobalObject::javaScriptRuntimeFlags): >+ (GlobalObject::javaScriptExperimentsEnabled): Deleted. >+ * runtime/JSGlobalObject.cpp: >+ (JSC::JSGlobalObject::JSGlobalObject): >+ (JSC::JSGlobalObject::init): >+ * runtime/JSGlobalObject.h: >+ (JSC::JSGlobalObject::finishCreation): >+ (JSC::JSGlobalObject::javaScriptRuntimeFlags): >+ (JSC::JSGlobalObject::javaScriptExperimentsEnabled): Deleted. >+ * runtime/RuntimeFlags.h: Added. >+ (JSC::RuntimeFlags::RuntimeFlags): >+ (JSC::RuntimeFlags::createAllEnabled): >+ > 2015-02-23 Commit Queue <commit-queue@webkit.org> > > Unreviewed, rolling out r180547 and r180550. >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 50cf7b8085f10905f5865f708187fe76c0b34985..fb15f4d336fe35fc95a8b1f39427ffd60187b4bd 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,29 @@ >+2015-02-24 Yusuke Suzuki <utatane.tea@gmail.com> >+ >+ REGRESSION(r179429): Can't type comments in Facebook >+ https://bugs.webkit.org/show_bug.cgi?id=141859 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Enable SymbolEnabled runtime flag in inspector context. >+ >+ * ForwardingHeaders/runtime/RuntimeFlags.h: Added. >+ * WebCore.order: >+ * WebCore.vcxproj/WebCore.vcxproj: >+ * WebCore.vcxproj/WebCore.vcxproj.filters: >+ * bindings/js/JSDOMWindowBase.cpp: >+ (WebCore::JSDOMWindowBase::javaScriptRuntimeFlags): >+ (WebCore::JSDOMWindowBase::javaScriptExperimentsEnabled): Deleted. >+ * bindings/js/JSDOMWindowBase.h: >+ * bindings/js/JSWorkerGlobalScopeBase.cpp: >+ (WebCore::JSWorkerGlobalScopeBase::javaScriptRuntimeFlags): >+ (WebCore::JSWorkerGlobalScopeBase::javaScriptExperimentsEnabled): Deleted. >+ * bindings/js/JSWorkerGlobalScopeBase.h: >+ * inspector/InspectorFrontendClientLocal.cpp: >+ (WebCore::InspectorFrontendClientLocal::InspectorFrontendClientLocal): >+ * page/Settings.h: >+ * page/Settings.in: >+ > 2015-02-23 Commit Queue <commit-queue@webkit.org> > > Unreviewed, rolling out r180547 and r180550. >diff --git a/Source/WebKit/mac/ChangeLog b/Source/WebKit/mac/ChangeLog >index 26e8632c78ea6f6f726f54d5e9d8b76137974965..f7149d3699c3545237bc6e77b0f755056197fde1 100644 >--- a/Source/WebKit/mac/ChangeLog >+++ b/Source/WebKit/mac/ChangeLog >@@ -1,3 +1,29 @@ >+2015-02-24 Yusuke Suzuki <utatane.tea@gmail.com> >+ >+ REGRESSION(r179429): Can't type comments in Facebook >+ https://bugs.webkit.org/show_bug.cgi?id=141859 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Introduce SymbolEnabled and drop javaScriptExperimentsEnabled. >+ Private API, javaScriptExperimentsEnabled is dropped. >+ >+ * Misc/WebNSDictionaryExtras.h: >+ * Misc/WebNSDictionaryExtras.m: >+ (-[NSMutableDictionary _webkit_setUnsignedInt:forKey:]): >+ * WebKit.order: >+ * WebView/WebPreferenceKeysPrivate.h: >+ * WebView/WebPreferences.mm: >+ (+[WebPreferences initialize]): >+ (-[WebPreferences _setUnsignedIntValue:forKey:]): >+ (-[WebPreferences javaScriptRuntimeFlags]): >+ (-[WebPreferences setJavaScriptRuntimeFlags:]): >+ (-[WebPreferences setJavaScriptExperimentsEnabled:]): Deleted. >+ (-[WebPreferences javaScriptExperimentsEnabled]): Deleted. >+ * WebView/WebPreferencesPrivate.h: >+ * WebView/WebView.mm: >+ (-[WebView _preferencesChanged:]): >+ > 2015-02-23 Commit Queue <commit-queue@webkit.org> > > Unreviewed, rolling out r180547 and r180550. >diff --git a/Source/WebKit/win/ChangeLog b/Source/WebKit/win/ChangeLog >index f47e257e34a4c42466a1c29ad2f3d328040741bb..c13fa92a50dfdf44862b6c6ec378bbd4023d98fa 100644 >--- a/Source/WebKit/win/ChangeLog >+++ b/Source/WebKit/win/ChangeLog >@@ -1,3 +1,24 @@ >+2015-02-24 Yusuke Suzuki <utatane.tea@gmail.com> >+ >+ REGRESSION(r179429): Can't type comments in Facebook >+ https://bugs.webkit.org/show_bug.cgi?id=141859 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Added Windows support. >+ >+ * Interfaces/IWebPreferences.idl: >+ * Interfaces/IWebPreferencesPrivate.idl: >+ * WebPreferenceKeysPrivate.h: >+ * WebPreferences.cpp: >+ (WebPreferences::initializeDefaultSettings): >+ (WebPreferences::javaScriptRuntimeFlags): >+ (WebPreferences::setJavaScriptRuntimeFlags): >+ (WebPreferences::isWebSecurityEnabled): >+ * WebPreferences.h: >+ * WebView.cpp: >+ (WebView::notifyPreferencesChanged): >+ > 2015-02-18 Chris Dumez <cdumez@apple.com> > > Access FontCache global instance via singleton() static member function >diff --git a/Source/WebKit2/ChangeLog b/Source/WebKit2/ChangeLog >index c27a0f132f5f24cbf12062ad737034d15c314b6c..de14762e4b2de0f3bcaf086da1849dca2b3edeeb 100644 >--- a/Source/WebKit2/ChangeLog >+++ b/Source/WebKit2/ChangeLog >@@ -1,3 +1,34 @@ >+2015-02-24 Yusuke Suzuki <utatane.tea@gmail.com> >+ >+ REGRESSION(r179429): Can't type comments in Facebook >+ https://bugs.webkit.org/show_bug.cgi?id=141859 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Enable SymbolEnabled in inspector context. >+ >+ * Shared/WebPreferencesDefinitions.h: >+ * UIProcess/API/C/WKPreferences.cpp: >+ (WKPreferencesSetJavaScriptRuntimeFlags): >+ (WKPreferencesGetJavaScriptRuntimeFlags): >+ (WKPreferencesSetJavaScriptExperimentsEnabled): Deleted. >+ (WKPreferencesGetJavaScriptExperimentsEnabled): Deleted. >+ * UIProcess/API/C/WKPreferencesRef.h: >+ * UIProcess/API/C/WKPreferencesRefPrivate.h: >+ * UIProcess/API/Cocoa/WKPreferences.mm: >+ (-[WKPreferences _javaScriptRuntimeFlags]): >+ (-[WKPreferences _setJavaScriptRuntimeFlags:]): >+ * UIProcess/API/Cocoa/WKPreferencesPrivate.h: >+ * UIProcess/efl/WebInspectorProxyEfl.cpp: >+ (WebKit::WebInspectorProxy::platformCreateInspectorPage): >+ * UIProcess/gtk/WebInspectorProxyGtk.cpp: >+ (WebKit::WebInspectorProxy::platformCreateInspectorPage): >+ * UIProcess/mac/WebInspectorProxyMac.mm: >+ (WebKit::WebInspectorProxy::platformCreateInspectorPage): >+ * WebProcess/WebPage/WebPage.cpp: >+ (WebKit::WebPage::updatePreferences): >+ * mac/WebKit2.order: >+ > 2015-02-23 Commit Queue <commit-queue@webkit.org> > > Unreviewed, rolling out r180547 and r180550. >diff --git a/Source/JavaScriptCore/JavaScriptCore.order b/Source/JavaScriptCore/JavaScriptCore.order >index 26be0ee276e0ee5c86e610999f2d476b0dd806de..71ed89f289db82cc1974ad4be9e68c1634e6ceab 100644 >--- a/Source/JavaScriptCore/JavaScriptCore.order >+++ b/Source/JavaScriptCore/JavaScriptCore.order >@@ -637,7 +637,6 @@ __ZN3JSC14MachineThreads29makeUsableFromMultipleThreadsEv > __ZN3JSC12GlobalJSLockD1Ev > _JSGlobalContextCreateInGroup > __ZN3JSC14JSGlobalObjectC1ERNS_2VMEPNS_9StructureEPKNS_23GlobalObjectMethodTableE >-__ZN3JSC14JSGlobalObject28javaScriptExperimentsEnabledEPKS0_ > _JSGlobalContextRetain > _JSStringCreateWithCFString > _JSEvaluateScript >diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj >index 41b2bd179d40bd04ab80b5ad7c03d7b56122951a..73e154734f9d4a97360fefdcf4b06711e84c8017 100644 >--- a/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj >+++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj >@@ -1611,6 +1611,7 @@ > <ClInclude Include="..\runtime\RegExpObject.h" /> > <ClInclude Include="..\runtime\RegExpPrototype.h" /> > <ClInclude Include="..\runtime\Reject.h" /> >+ <ClInclude Include="..\runtime\RuntimeFlags.h" /> > <ClInclude Include="..\runtime\SamplingCounter.h" /> > <ClInclude Include="..\runtime\SetConstructor.h" /> > <ClInclude Include="..\runtime\SetIteratorConstructor.h" /> >diff --git a/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters >index 8048abe4716aa70360f51328559974f13258e500..fff720c81d02644ced475f10dcfbc0d0cb26f993 100644 >--- a/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters >+++ b/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters >@@ -2862,6 +2862,9 @@ > <ClInclude Include="..\runtime\Reject.h"> > <Filter>runtime</Filter> > </ClInclude> >+ <ClInclude Include="..\runtime\RuntimeFlags.h"> >+ <Filter>runtime</Filter> >+ </ClInclude> > <ClInclude Include="..\runtime\SamplingCounter.h"> > <Filter>runtime</Filter> > </ClInclude> >diff --git a/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj b/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj >index 2c01d6f10250b55b3f9c653dc0402002d8eeb488..cad3333a1f7d46e2617d2fd8052a2debb71b6726 100644 >--- a/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj >+++ b/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj >@@ -949,6 +949,7 @@ > 705B41B01A6E501E00716757 /* SymbolObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 705B41A81A6E501E00716757 /* SymbolObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; > 705B41B11A6E501E00716757 /* SymbolPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 705B41A91A6E501E00716757 /* SymbolPrototype.cpp */; }; > 705B41B21A6E501E00716757 /* SymbolPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = 705B41AA1A6E501E00716757 /* SymbolPrototype.h */; settings = {ATTRIBUTES = (Private, ); }; }; >+ 70B0A9D11A9B66460001306A /* RuntimeFlags.h in Headers */ = {isa = PBXBuildFile; fileRef = 70B0A9D01A9B66200001306A /* RuntimeFlags.h */; settings = {ATTRIBUTES = (Private, ); }; }; > 7C008CD2186F8A9300955C24 /* JSPromiseFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C008CD0186F8A9300955C24 /* JSPromiseFunctions.cpp */; }; > 7C008CD3186F8A9300955C24 /* JSPromiseFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C008CD1186F8A9300955C24 /* JSPromiseFunctions.h */; settings = {ATTRIBUTES = (Private, ); }; }; > 7C008CDA187124BB00955C24 /* JSPromiseDeferred.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C008CD8187124BB00955C24 /* JSPromiseDeferred.cpp */; }; >@@ -2628,6 +2629,7 @@ > 705B41A81A6E501E00716757 /* SymbolObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SymbolObject.h; sourceTree = "<group>"; }; > 705B41A91A6E501E00716757 /* SymbolPrototype.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SymbolPrototype.cpp; sourceTree = "<group>"; }; > 705B41AA1A6E501E00716757 /* SymbolPrototype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SymbolPrototype.h; sourceTree = "<group>"; }; >+ 70B0A9D01A9B66200001306A /* RuntimeFlags.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RuntimeFlags.h; sourceTree = "<group>"; }; > 7C008CD0186F8A9300955C24 /* JSPromiseFunctions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = JSPromiseFunctions.cpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; }; > 7C008CD1186F8A9300955C24 /* JSPromiseFunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSPromiseFunctions.h; sourceTree = "<group>"; }; > 7C008CD8187124BB00955C24 /* JSPromiseDeferred.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSPromiseDeferred.cpp; sourceTree = "<group>"; }; >@@ -4536,6 +4538,7 @@ > BCD202C00E1706A7002C7E82 /* RegExpPrototype.h */, > 0F6B1CB81861244C00845D97 /* RegisterPreservationMode.h */, > 0FB7F39115ED8E3800F167B2 /* Reject.h */, >+ 70B0A9D01A9B66200001306A /* RuntimeFlags.h */, > 0F7700911402FF280078EB39 /* SamplingCounter.cpp */, > 0F77008E1402FDD60078EB39 /* SamplingCounter.h */, > A7299DA317D12858005F5FF9 /* SetConstructor.cpp */, >@@ -6275,6 +6278,7 @@ > 0FF42744158EBE91004CB9FF /* udis86_input.h in Headers */, > 0FF42748158EBE91004CB9FF /* udis86_syn.h in Headers */, > 0FF42749158EBE91004CB9FF /* udis86_types.h in Headers */, >+ 70B0A9D11A9B66460001306A /* RuntimeFlags.h in Headers */, > A7E5AB391799E4B200D2833D /* UDis86Disassembler.h in Headers */, > A7A8AF4117ADB5F3005AB174 /* Uint16Array.h in Headers */, > 0FE834181A6EF97B00D04847 /* PolymorphicCallStubRoutine.h in Headers */, >diff --git a/Source/JavaScriptCore/jsc.cpp b/Source/JavaScriptCore/jsc.cpp >index de4281cb7205b08ba06dea065082743c67bd695c..a182c2189e3755b5e5b4d6d30740671d41a4d584 100644 >--- a/Source/JavaScriptCore/jsc.cpp >+++ b/Source/JavaScriptCore/jsc.cpp >@@ -575,7 +575,7 @@ class GlobalObject : public JSGlobalObject { > return Structure::create(vm, 0, prototype, TypeInfo(GlobalObjectType, StructureFlags), info()); > } > >- static bool javaScriptExperimentsEnabled(const JSGlobalObject*) { return true; } >+ static RuntimeFlags javaScriptRuntimeFlags(const JSGlobalObject*) { return RuntimeFlags::createAllEnabled(); } > > protected: > void finishCreation(VM& vm, const Vector<String>& arguments) >@@ -663,7 +663,7 @@ class GlobalObject : public JSGlobalObject { > }; > > const ClassInfo GlobalObject::s_info = { "global", &JSGlobalObject::s_info, &globalObjectTable, CREATE_METHOD_TABLE(GlobalObject) }; >-const GlobalObjectMethodTable GlobalObject::s_globalObjectMethodTable = { &allowsAccessFrom, &supportsProfiling, &supportsRichSourceInfo, &shouldInterruptScript, &javaScriptExperimentsEnabled, 0, &shouldInterruptScriptBeforeTimeout }; >+const GlobalObjectMethodTable GlobalObject::s_globalObjectMethodTable = { &allowsAccessFrom, &supportsProfiling, &supportsRichSourceInfo, &shouldInterruptScript, &javaScriptRuntimeFlags, 0, &shouldInterruptScriptBeforeTimeout }; > > > GlobalObject::GlobalObject(VM& vm, Structure* structure) >diff --git a/Source/JavaScriptCore/runtime/JSGlobalObject.cpp b/Source/JavaScriptCore/runtime/JSGlobalObject.cpp >index bb75492c5683ac65bbb9979dc0d885ae1c1608d8..9b6beef8e1cd59a04230f29d018aef07a58718e6 100644 >--- a/Source/JavaScriptCore/runtime/JSGlobalObject.cpp >+++ b/Source/JavaScriptCore/runtime/JSGlobalObject.cpp >@@ -145,7 +145,7 @@ > > const ClassInfo JSGlobalObject::s_info = { "GlobalObject", &Base::s_info, &globalObjectTable, CREATE_METHOD_TABLE(JSGlobalObject) }; > >-const GlobalObjectMethodTable JSGlobalObject::s_globalObjectMethodTable = { &allowsAccessFrom, &supportsProfiling, &supportsRichSourceInfo, &shouldInterruptScript, &javaScriptExperimentsEnabled, 0, &shouldInterruptScriptBeforeTimeout }; >+const GlobalObjectMethodTable JSGlobalObject::s_globalObjectMethodTable = { &allowsAccessFrom, &supportsProfiling, &supportsRichSourceInfo, &shouldInterruptScript, &javaScriptRuntimeFlags, 0, &shouldInterruptScriptBeforeTimeout }; > > /* Source for JSGlobalObject.lut.h > @begin globalObjectTable >@@ -173,7 +173,7 @@ > , m_varInjectionWatchpoint(adoptRef(new WatchpointSet(IsWatched))) > , m_weakRandom(Options::forceWeakRandomSeed() ? Options::forcedWeakRandomSeed() : static_cast<unsigned>(randomNumber() * (std::numeric_limits<unsigned>::max() + 1.0))) > , m_evalEnabled(true) >- , m_experimentsEnabled(false) >+ , m_runtimeFlags() > , m_consoleClient(nullptr) > , m_globalObjectMethodTable(globalObjectMethodTable ? globalObjectMethodTable : &s_globalObjectMethodTable) > { >@@ -373,7 +373,10 @@ void JSGlobalObject::init(VM& vm) > putDirectWithoutTransition(vm, vm.propertyNames-> jsName, lowerName ## Constructor, DontEnum); \ > > FOR_EACH_SIMPLE_BUILTIN_TYPE_WITH_CONSTRUCTOR(PUT_CONSTRUCTOR_FOR_SIMPLE_TYPE) >- >+ >+ if (m_runtimeFlags.isSymbolEnabled()) >+ putDirectWithoutTransition(vm, vm.propertyNames->Symbol, symbolConstructor, DontEnum); >+ > #undef PUT_CONSTRUCTOR_FOR_SIMPLE_TYPE > PrototypeMap& prototypeMap = vm.prototypeMap; > Structure* iteratorResultStructure = prototypeMap.emptyObjectStructureForPrototype(m_objectPrototype.get(), JSFinalObject::defaultInlineCapacity()); >@@ -436,7 +439,7 @@ void JSGlobalObject::init(VM& vm) > m_consoleStructure.set(vm, this, JSConsole::createStructure(vm, this, consolePrototype)); > JSConsole* consoleObject = JSConsole::create(vm, m_consoleStructure.get()); > putDirectWithoutTransition(vm, Identifier(exec, "console"), consoleObject, DontEnum); >- >+ > resetPrototype(vm, prototype()); > } > >diff --git a/Source/JavaScriptCore/runtime/JSGlobalObject.h b/Source/JavaScriptCore/runtime/JSGlobalObject.h >index cac847089ad4e7afc7339338edaef5de15824eb8..41aaf963d7d4c71b8a769fd04116e0a9c5993a9a 100644 >--- a/Source/JavaScriptCore/runtime/JSGlobalObject.h >+++ b/Source/JavaScriptCore/runtime/JSGlobalObject.h >@@ -31,6 +31,7 @@ > #include "JSSegmentedVariableObject.h" > #include "JSWeakObjectMapRefInternal.h" > #include "NumberPrototype.h" >+#include "RuntimeFlags.h" > #include "SpecialPointer.h" > #include "StringPrototype.h" > #include "StructureChain.h" >@@ -86,13 +87,15 @@ > struct HashTable; > > #define DEFINE_STANDARD_BUILTIN(macro, upperName, lowerName) macro(upperName, lowerName, lowerName, JS ## upperName, upperName) >- >+ >+#define FOR_EACH_EXPERIMENTAL_BUILTIN_TYPE_WITH_CONSTRUCTOR(macro) \ >+ macro(Symbol, symbol, symbolObject, SymbolObject, Symbol) \ >+ > #define FOR_EACH_SIMPLE_BUILTIN_TYPE_WITH_CONSTRUCTOR(macro) \ > macro(Set, set, set, JSSet, Set) \ > macro(Map, map, map, JSMap, Map) \ > macro(Date, date, date, DateInstance, Date) \ > macro(String, string, stringObject, StringObject, String) \ >- macro(Symbol, symbol, symbolObject, SymbolObject, Symbol) \ > macro(Boolean, boolean, booleanObject, BooleanObject, Boolean) \ > macro(Number, number, numberObject, NumberObject, Number) \ > macro(Error, error, error, ErrorInstance, Error) \ >@@ -101,6 +104,7 @@ > > #define FOR_EACH_SIMPLE_BUILTIN_TYPE(macro) \ > FOR_EACH_SIMPLE_BUILTIN_TYPE_WITH_CONSTRUCTOR(macro) \ >+ FOR_EACH_EXPERIMENTAL_BUILTIN_TYPE_WITH_CONSTRUCTOR(macro) \ > DEFINE_STANDARD_BUILTIN(macro, ArrayIterator, arrayIterator) \ > DEFINE_STANDARD_BUILTIN(macro, ArgumentsIterator, argumentsIterator) \ > DEFINE_STANDARD_BUILTIN(macro, MapIterator, mapIterator) \ >@@ -131,8 +135,8 @@ struct GlobalObjectMethodTable { > typedef bool (*ShouldInterruptScriptFunctionPtr)(const JSGlobalObject*); > ShouldInterruptScriptFunctionPtr shouldInterruptScript; > >- typedef bool (*JavaScriptExperimentsEnabledFunctionPtr)(const JSGlobalObject*); >- JavaScriptExperimentsEnabledFunctionPtr javaScriptExperimentsEnabled; >+ typedef RuntimeFlags (*JavaScriptRuntimeFlagsFunctionPtr)(const JSGlobalObject*); >+ JavaScriptRuntimeFlagsFunctionPtr javaScriptRuntimeFlags; > > typedef void (*QueueTaskToEventLoopFunctionPtr)(const JSGlobalObject*, PassRefPtr<Microtask>); > QueueTaskToEventLoopFunctionPtr queueTaskToEventLoop; >@@ -273,7 +277,7 @@ class JSGlobalObject : public JSSegmentedVariableObject { > > bool m_evalEnabled; > String m_evalDisabledErrorMessage; >- bool m_experimentsEnabled; >+ RuntimeFlags m_runtimeFlags; > ConsoleClient* m_consoleClient; > > static JS_EXPORTDATA const GlobalObjectMethodTable s_globalObjectMethodTable; >@@ -309,7 +313,7 @@ class JSGlobalObject : public JSSegmentedVariableObject { > { > Base::finishCreation(vm); > structure()->setGlobalObject(vm, this); >- m_experimentsEnabled = m_globalObjectMethodTable->javaScriptExperimentsEnabled(this); >+ m_runtimeFlags = m_globalObjectMethodTable->javaScriptRuntimeFlags(this); > init(vm); > setGlobalThis(vm, JSProxy::create(vm, JSProxy::createStructure(vm, this, prototype(), PureForwardingProxyType), this)); > } >@@ -318,7 +322,7 @@ class JSGlobalObject : public JSSegmentedVariableObject { > { > Base::finishCreation(vm); > structure()->setGlobalObject(vm, this); >- m_experimentsEnabled = m_globalObjectMethodTable->javaScriptExperimentsEnabled(this); >+ m_runtimeFlags = m_globalObjectMethodTable->javaScriptRuntimeFlags(this); > init(vm); > setGlobalThis(vm, thisValue); > } >@@ -546,7 +550,7 @@ class JSGlobalObject : public JSSegmentedVariableObject { > > static bool shouldInterruptScript(const JSGlobalObject*) { return true; } > static bool shouldInterruptScriptBeforeTimeout(const JSGlobalObject*) { return false; } >- static bool javaScriptExperimentsEnabled(const JSGlobalObject*) { return false; } >+ static RuntimeFlags javaScriptRuntimeFlags(const JSGlobalObject*) { return RuntimeFlags(); } > > void queueMicrotask(PassRefPtr<Microtask>); > >diff --git a/Source/JavaScriptCore/runtime/RuntimeFlags.h b/Source/JavaScriptCore/runtime/RuntimeFlags.h >new file mode 100644 >index 0000000000000000000000000000000000000000..b0b5b37555ed139bcb9c29baf15d6bf27ab68ddd >--- /dev/null >+++ b/Source/JavaScriptCore/runtime/RuntimeFlags.h >@@ -0,0 +1,99 @@ >+/* >+ * Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+ * THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#ifndef RuntimeFlags_h >+#define RuntimeFlags_h >+ >+#include <initializer_list> >+ >+namespace JSC { >+ >+#define JSC_RUNTIME_FLAG(macro) \ >+ macro(SymbolEnabled) >+ >+ >+class RuntimeFlags { >+private: >+ enum RuntimeFlagShiftValue : unsigned { >+#define JSC_DECLARE_RUNTIME_FLAG_SHIFT_VALUE(name) shiftValueFor##name, >+ JSC_RUNTIME_FLAG(JSC_DECLARE_RUNTIME_FLAG_SHIFT_VALUE) >+#undef JSC_DECLARE_RUNTIME_FLAG_SHIFT_VALUE >+ }; >+ >+public: >+ enum RuntimeFlag : unsigned { >+#define JSC_DECLARE_RUNTIME_FLAG(name) name = 1u << (shiftValueFor##name), >+ JSC_RUNTIME_FLAG(JSC_DECLARE_RUNTIME_FLAG) >+#undef JSC_DECLARE_RUNTIME_FLAG >+ }; >+ >+#define JSC_DECLARE_RUNTIME_FLAG_ACCESSOR(name) \ >+ void set##name(bool value)\ >+ {\ >+ if (value)\ >+ m_flags |= name;\ >+ else\ >+ m_flags &= (~name);\ >+ }\ >+ bool is##name() const\ >+ {\ >+ return m_flags & name;\ >+ } >+ JSC_RUNTIME_FLAG(JSC_DECLARE_RUNTIME_FLAG_ACCESSOR) >+#undef JSC_DECLARE_RUNTIME_FLAG_ACCESSOR >+ >+ RuntimeFlags() >+ : RuntimeFlags(0u) >+ { >+ } >+ >+ RuntimeFlags(std::initializer_list<RuntimeFlag> initializerList) >+ : RuntimeFlags() >+ { >+ for (RuntimeFlag flag : initializerList) >+ m_flags |= flag; >+ } >+ >+ explicit RuntimeFlags(unsigned flags) >+ : m_flags(flags) >+ { >+ } >+ >+ static RuntimeFlags createAllEnabled() >+ { >+ return { >+#define JSC_USE_RUNTIME_FLAG(name) name, >+ JSC_RUNTIME_FLAG(JSC_USE_RUNTIME_FLAG) >+#undef JSC_USE_RUNTIME_FLAG >+ }; >+ } >+ >+private: >+ unsigned m_flags; >+}; >+ >+} // namespace JSC >+ >+#endif // RuntimeFlags_h >diff --git a/Source/WebCore/ForwardingHeaders/runtime/RuntimeFlags.h b/Source/WebCore/ForwardingHeaders/runtime/RuntimeFlags.h >new file mode 100644 >index 0000000000000000000000000000000000000000..ce44471c75135a56872bf0523d389e566923af4d >--- /dev/null >+++ b/Source/WebCore/ForwardingHeaders/runtime/RuntimeFlags.h >@@ -0,0 +1,4 @@ >+#ifndef WebCore_FWD_RuntimeFlags_h >+#define WebCore_FWD_RuntimeFlags_h >+#include <JavaScriptCore/RuntimeFlags.h> >+#endif >diff --git a/Source/WebCore/WebCore.order b/Source/WebCore/WebCore.order >index 556b36c43134bbde920a4cd6b843af8da436d7d3..f10677be50ef58ee1268d171408928789187d511 100644 >--- a/Source/WebCore/WebCore.order >+++ b/Source/WebCore/WebCore.order >@@ -3335,7 +3335,6 @@ __ZN7WebCore15JSDOMWindowBaseC2ERN3JSC2VMEPNS1_9StructureEN3WTF10PassRefPtrINS_9 > __ZN7WebCore17JSDOMGlobalObjectC2ERN3JSC2VMEPNS1_9StructureEN3WTF10PassRefPtrINS_15DOMWrapperWorldEEEPKNS1_23GlobalObjectMethodTableE > __ZN7WebCore15JSDOMWindowBase14finishCreationERN3JSC2VMEPNS_16JSDOMWindowShellE > __ZN7WebCore17JSDOMGlobalObject14finishCreationERN3JSC2VMEPNS1_8JSObjectE >-__ZN7WebCore15JSDOMWindowBase28javaScriptExperimentsEnabledEPKN3JSC14JSGlobalObjectE > __ZN7WebCore12gcControllerEv > __ZN7WebCore12GCController18garbageCollectSoonEv > __ZN3JSC6StrongIN7WebCore16JSDOMWindowShellEEC2ERNS_2VMEPS2_ >diff --git a/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj b/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj >index 58d27ecd0c51c3b971c05f8288641fc8c45454be..83bc2c1ecb0cc2e2de734dad88085a0f2e03548a 100644 >--- a/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj >+++ b/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj >@@ -19138,6 +19138,7 @@ > <ClInclude Include="..\ForwardingHeaders\runtime\PrototypeFunction.h" /> > <ClInclude Include="..\ForwardingHeaders\runtime\RegExp.h" /> > <ClInclude Include="..\ForwardingHeaders\runtime\RegExpObject.h" /> >+ <ClInclude Include="..\ForwardingHeaders\runtime\RuntimeFlags.h" /> > <ClInclude Include="..\ForwardingHeaders\runtime\StorageBarrier.h" /> > <ClInclude Include="..\ForwardingHeaders\runtime\StringPrototype.h" /> > <ClInclude Include="..\ForwardingHeaders\runtime\Structure.h" /> >diff --git a/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters b/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters >index 86f23e0423233bd2cebc63bd0ed0ccc703c93ee4..76e906dedd439d5fe3135cdf0c04f652bc600b39 100644 >--- a/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters >+++ b/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters >@@ -11631,6 +11631,9 @@ > <ClInclude Include="..\ForwardingHeaders\runtime\Protect.h"> > <Filter>ForwardingHeaders\runtime</Filter> > </ClInclude> >+ <ClInclude Include="..\ForwardingHeaders\runtime\RuntimeFlags.h"> >+ <Filter>ForwardingHeaders\runtime</Filter> >+ </ClInclude> > <ClInclude Include="..\ForwardingHeaders\runtime\StringObject.h"> > <Filter>ForwardingHeaders\runtime</Filter> > </ClInclude> >diff --git a/Source/WebCore/bindings/js/JSDOMWindowBase.cpp b/Source/WebCore/bindings/js/JSDOMWindowBase.cpp >index e5fb44d09829b6b78f637f5cd24573f74efe76b7..bc02b15416274f5e5524993b7d4bd1e5e420667e 100644 >--- a/Source/WebCore/bindings/js/JSDOMWindowBase.cpp >+++ b/Source/WebCore/bindings/js/JSDOMWindowBase.cpp >@@ -56,7 +56,7 @@ static bool shouldAllowAccessFrom(const JSGlobalObject* thisObject, ExecState* e > > const ClassInfo JSDOMWindowBase::s_info = { "Window", &JSDOMGlobalObject::s_info, 0, CREATE_METHOD_TABLE(JSDOMWindowBase) }; > >-const GlobalObjectMethodTable JSDOMWindowBase::s_globalObjectMethodTable = { &shouldAllowAccessFrom, &supportsProfiling, &supportsRichSourceInfo, &shouldInterruptScript, &javaScriptExperimentsEnabled, &queueTaskToEventLoop, &shouldInterruptScriptBeforeTimeout }; >+const GlobalObjectMethodTable JSDOMWindowBase::s_globalObjectMethodTable = { &shouldAllowAccessFrom, &supportsProfiling, &supportsRichSourceInfo, &shouldInterruptScript, &javaScriptRuntimeFlags, &queueTaskToEventLoop, &shouldInterruptScriptBeforeTimeout }; > > JSDOMWindowBase::JSDOMWindowBase(VM& vm, Structure* structure, PassRefPtr<DOMWindow> window, JSDOMWindowShell* shell) > : JSDOMGlobalObject(vm, structure, &shell->world(), &s_globalObjectMethodTable) >@@ -169,13 +169,13 @@ bool JSDOMWindowBase::shouldInterruptScriptBeforeTimeout(const JSGlobalObject* o > return JSGlobalObject::shouldInterruptScriptBeforeTimeout(object); > } > >-bool JSDOMWindowBase::javaScriptExperimentsEnabled(const JSGlobalObject* object) >+RuntimeFlags JSDOMWindowBase::javaScriptRuntimeFlags(const JSGlobalObject* object) > { > const JSDOMWindowBase* thisObject = static_cast<const JSDOMWindowBase*>(object); > Frame* frame = thisObject->impl().frame(); > if (!frame) >- return false; >- return frame->settings().javaScriptExperimentsEnabled(); >+ return RuntimeFlags(); >+ return frame->settings().javaScriptRuntimeFlags(); > } > > void JSDOMWindowBase::queueTaskToEventLoop(const JSGlobalObject* object, PassRefPtr<Microtask> task) >diff --git a/Source/WebCore/bindings/js/JSDOMWindowBase.h b/Source/WebCore/bindings/js/JSDOMWindowBase.h >index 1732c99bdb566049d2cca1cb07a40ac46c23dbf6..fb8e6db2619c9af692f28e289d5dcd3acede6bf3 100644 >--- a/Source/WebCore/bindings/js/JSDOMWindowBase.h >+++ b/Source/WebCore/bindings/js/JSDOMWindowBase.h >@@ -64,7 +64,7 @@ > static bool supportsRichSourceInfo(const JSC::JSGlobalObject*); > static bool shouldInterruptScript(const JSC::JSGlobalObject*); > static bool shouldInterruptScriptBeforeTimeout(const JSC::JSGlobalObject*); >- static bool javaScriptExperimentsEnabled(const JSC::JSGlobalObject*); >+ static JSC::RuntimeFlags javaScriptRuntimeFlags(const JSC::JSGlobalObject*); > static void queueTaskToEventLoop(const JSC::JSGlobalObject*, PassRefPtr<JSC::Microtask>); > > void printErrorMessage(const String&) const; >diff --git a/Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp b/Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp >index ec085cce6fd26007521efeaf6a10ce46422aee2e..aaa5dba55171cb9541ba65e1d247ab29c9d9c7c3 100644 >--- a/Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp >+++ b/Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp >@@ -43,7 +43,7 @@ > > const ClassInfo JSWorkerGlobalScopeBase::s_info = { "WorkerGlobalScope", &JSDOMGlobalObject::s_info, 0, CREATE_METHOD_TABLE(JSWorkerGlobalScopeBase) }; > >-const GlobalObjectMethodTable JSWorkerGlobalScopeBase::s_globalObjectMethodTable = { &allowsAccessFrom, &supportsProfiling, &supportsRichSourceInfo, &shouldInterruptScript, &javaScriptExperimentsEnabled, &queueTaskToEventLoop, &shouldInterruptScriptBeforeTimeout }; >+const GlobalObjectMethodTable JSWorkerGlobalScopeBase::s_globalObjectMethodTable = { &allowsAccessFrom, &supportsProfiling, &supportsRichSourceInfo, &shouldInterruptScript, &javaScriptRuntimeFlags, &queueTaskToEventLoop, &shouldInterruptScriptBeforeTimeout }; > > JSWorkerGlobalScopeBase::JSWorkerGlobalScopeBase(JSC::VM& vm, JSC::Structure* structure, PassRefPtr<WorkerGlobalScope> impl) > : JSDOMGlobalObject(vm, structure, &normalWorld(vm), &s_globalObjectMethodTable) >@@ -92,9 +92,9 @@ bool JSWorkerGlobalScopeBase::shouldInterruptScriptBeforeTimeout(const JSGlobalO > return JSGlobalObject::shouldInterruptScriptBeforeTimeout(object); > } > >-bool JSWorkerGlobalScopeBase::javaScriptExperimentsEnabled(const JSGlobalObject* object) >+RuntimeFlags JSWorkerGlobalScopeBase::javaScriptRuntimeFlags(const JSGlobalObject* object) > { >- return JSGlobalObject::javaScriptExperimentsEnabled(object); >+ return JSGlobalObject::javaScriptRuntimeFlags(object); > } > > void JSWorkerGlobalScopeBase::queueTaskToEventLoop(const JSGlobalObject* object, PassRefPtr<Microtask> task) >diff --git a/Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.h b/Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.h >index cd04a1d2c5ea9b7271051b5a15d138afecd660cf..031530ee586139fc5ab6f8b88514b584811c72de 100644 >--- a/Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.h >+++ b/Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.h >@@ -57,7 +57,7 @@ > static bool supportsRichSourceInfo(const JSC::JSGlobalObject*); > static bool shouldInterruptScript(const JSC::JSGlobalObject*); > static bool shouldInterruptScriptBeforeTimeout(const JSC::JSGlobalObject*); >- static bool javaScriptExperimentsEnabled(const JSC::JSGlobalObject*); >+ static JSC::RuntimeFlags javaScriptRuntimeFlags(const JSC::JSGlobalObject*); > static void queueTaskToEventLoop(const JSC::JSGlobalObject*, PassRefPtr<JSC::Microtask>); > > protected: >diff --git a/Source/WebCore/inspector/InspectorFrontendClientLocal.cpp b/Source/WebCore/inspector/InspectorFrontendClientLocal.cpp >index 345a73201f8deda5e457e846af264c8715a228f4..415ff7c39b39e7970bf079cee2c6ec1ec5b1380b 100644 >--- a/Source/WebCore/inspector/InspectorFrontendClientLocal.cpp >+++ b/Source/WebCore/inspector/InspectorFrontendClientLocal.cpp >@@ -120,6 +120,9 @@ void InspectorFrontendClientLocal::Settings::setProperty(const String&, const St > , m_dockSide(DockSide::Undocked) > { > m_frontendPage->settings().setAllowFileAccessFromFileURLs(true); >+ m_frontendPage->settings().setJavaScriptRuntimeFlags({ >+ JSC::RuntimeFlags::SymbolEnabled >+ }); > m_dispatchTask = std::make_unique<InspectorBackendDispatchTask>(inspectorController); > } > >diff --git a/Source/WebCore/page/Settings.h b/Source/WebCore/page/Settings.h >index 85e907117975bfd90c7d7d4130868ba686da5dfd..04823aecd8568a9fc8627849a86f579b0616ee38 100644 >--- a/Source/WebCore/page/Settings.h >+++ b/Source/WebCore/page/Settings.h >@@ -35,6 +35,7 @@ > #include "SettingsMacros.h" > #include "Timer.h" > #include <chrono> >+#include <runtime/RuntimeFlags.h> > #include <unicode/uscript.h> > #include <wtf/HashMap.h> > #include <wtf/RefCounted.h> >diff --git a/Source/WebCore/page/Settings.in b/Source/WebCore/page/Settings.in >index a1f6239c1ffa5ff0557b8de12f17d8d8afdb1471..86df198ddb0692b8ae6f950d2ad185adb820b8d4 100644 >--- a/Source/WebCore/page/Settings.in >+++ b/Source/WebCore/page/Settings.in >@@ -73,7 +73,6 @@ showsURLsInToolTips initial=false > showsToolTipOverTruncatedText initial=false > forceFTPDirectoryListings initial=false > developerExtrasEnabled initial=false >-javaScriptExperimentsEnabled initial=false > scriptMarkupEnabled initial=true > needsSiteSpecificQuirks initial=false > domTimersThrottlingEnabled initial=true >@@ -87,6 +86,7 @@ canvasUsesAcceleratedDrawing initial=false > acceleratedDrawingEnabled initial=false > acceleratedFiltersEnabled initial=false > useLegacyTextAlignPositionedElementBehavior initial=false >+javaScriptRuntimeFlags type=JSC::RuntimeFlags > > # FIXME: This should really be disabled by default as it makes platforms that don't support the feature download files > # they can't use by. Leaving enabled for now to not change existing behavior. >diff --git a/Source/WebKit/mac/Misc/WebNSDictionaryExtras.h b/Source/WebKit/mac/Misc/WebNSDictionaryExtras.h >index 8aca44ecb849e13c7ab35afc33677780b8935da8..05732024a87ad8f649cb81b37469abfe24c794fd 100644 >--- a/Source/WebKit/mac/Misc/WebNSDictionaryExtras.h >+++ b/Source/WebKit/mac/Misc/WebNSDictionaryExtras.h >@@ -44,7 +44,5 @@ > - (void)_webkit_setBool:(BOOL)value forKey:(id)key; > - (void)_webkit_setLongLong:(long long)value forKey:(id)key; > - (void)_webkit_setUnsignedLongLong:(unsigned long long)value forKey:(id)key; >-#if PLATFORM(IOS) > - (void)_webkit_setUnsignedInt:(unsigned)value forKey:(id)key; >-#endif > @end >diff --git a/Source/WebKit/mac/Misc/WebNSDictionaryExtras.m b/Source/WebKit/mac/Misc/WebNSDictionaryExtras.m >index 923674a4836027becb610d9c27f7ef4389ad3cbc..f1a1b031c00782df88b5a84b37afdc3c4c308301 100644 >--- a/Source/WebKit/mac/Misc/WebNSDictionaryExtras.m >+++ b/Source/WebKit/mac/Misc/WebNSDictionaryExtras.m >@@ -118,14 +118,12 @@ - (void)_webkit_setUnsignedLongLong:(unsigned long long)value forKey:(id)key > [object release]; > } > >-#if PLATFORM(IOS) > - (void)_webkit_setUnsignedInt:(unsigned)value forKey:(id)key > { > NSNumber *object = [[NSNumber alloc] initWithUnsignedInt:value]; > [self setObject:object forKey:key]; > [object release]; > } >-#endif > > @end > >diff --git a/Source/WebKit/mac/WebKit.order b/Source/WebKit/mac/WebKit.order >index 7a27b758c207fdff87d01f8a2bb30e41e3cbcae6..7162172cd61074d75908d3ba451d3e56f3ef55fe 100644 >--- a/Source/WebKit/mac/WebKit.order >+++ b/Source/WebKit/mac/WebKit.order >@@ -287,7 +287,6 @@ __Z4core40WebTextDirectionSubmenuInclusionBehavior > -[WebPreferences(WebPrivate) showsURLsInToolTips] > -[WebPreferences(WebPrivate) showsToolTipOverTruncatedText] > -[WebPreferences(WebPrivate) developerExtrasEnabled] >--[WebPreferences(WebPrivate) javaScriptExperimentsEnabled] > -[WebPreferences(WebPrivate) authorAndUserStylesEnabled] > -[WebPreferences(WebPrivate) applicationChromeModeEnabled] > -[WebPreferences userStyleSheetEnabled] >@@ -1246,7 +1245,6 @@ _WKCreatePrivateStorageSession > -[WebPreferences(WebPrivate) setTextAreasAreResizable:] > -[WebPreferences(WebPrivate) setJavaScriptCanAccessClipboard:] > -[WebPreferences(WebPrivate) setOfflineWebApplicationCacheEnabled:] >--[WebPreferences(WebPrivate) setJavaScriptExperimentsEnabled:] > -[WebPreferences(WebPrivate) setLoadsSiteIconsIgnoringImageLoadingPreference:] > -[WebPreferences(WebPrivate) setFrameFlatteningEnabled:] > -[WebPreferences(WebPrivate) setSpatialNavigationEnabled:] >diff --git a/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h b/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h >index 56b19b803c740e87eb1bb76fb7803aa98c66a5e2..beec23020e07eafbcd18b2e19dd7b016a2b8f67b 100644 >--- a/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h >+++ b/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h >@@ -84,7 +84,7 @@ > #define WebKitFTPDirectoryTemplatePath @"WebKitFTPDirectoryTemplatePath" > #define WebKitForceFTPDirectoryListings @"WebKitForceFTPDirectoryListings" > #define WebKitDeveloperExtrasEnabledPreferenceKey @"WebKitDeveloperExtrasEnabledPreferenceKey" >-#define WebKitJavaScriptExperimentsEnabledPreferenceKey @"WebKitJavaScriptExperimentsEnabledPreferenceKey" >+#define WebKitJavaScriptRuntimeFlagsPreferenceKey @"WebKitJavaScriptRuntimeFlagsPreferenceKey" > #define WebKitAuthorAndUserStylesEnabledPreferenceKey @"WebKitAuthorAndUserStylesEnabledPreferenceKey" > #define WebKitDOMTimersThrottlingEnabledPreferenceKey @"WebKitDOMTimersThrottlingEnabledPreferenceKey" > #define WebKitWebArchiveDebugModeEnabledPreferenceKey @"WebKitWebArchiveDebugModeEnabledPreferenceKey" >diff --git a/Source/WebKit/mac/WebView/WebPreferences.mm b/Source/WebKit/mac/WebView/WebPreferences.mm >index 13679592138164292c8b62544423450f747feb30..688e26bab09ab2887c609a3510c79ae5e6ca3f20 100644 >--- a/Source/WebKit/mac/WebView/WebPreferences.mm >+++ b/Source/WebKit/mac/WebView/WebPreferences.mm >@@ -473,7 +473,7 @@ + (void)initialize > [NSNumber numberWithInt:cacheModelForMainBundle()], WebKitCacheModelPreferenceKey, > [NSNumber numberWithBool:YES], WebKitPageCacheSupportsPluginsPreferenceKey, > [NSNumber numberWithBool:NO], WebKitDeveloperExtrasEnabledPreferenceKey, >- [NSNumber numberWithBool:NO], WebKitJavaScriptExperimentsEnabledPreferenceKey, >+ [NSNumber numberWithUnsignedInt:0], WebKitJavaScriptRuntimeFlagsPreferenceKey, > [NSNumber numberWithBool:YES], WebKitAuthorAndUserStylesEnabledPreferenceKey, > [NSNumber numberWithBool:YES], WebKitDOMTimersThrottlingEnabledPreferenceKey, > [NSNumber numberWithBool:NO], WebKitWebArchiveDebugModeEnabledPreferenceKey, >@@ -667,7 +667,6 @@ - (void)_setIntegerValue:(int)value forKey:(NSString *)key > [self _postPreferencesChangedNotification]; > } > >-#if PLATFORM(IOS) > - (unsigned int)_unsignedIntValueForKey:(NSString *)key > { > id o = [self _valueForKey:key]; >@@ -678,14 +677,17 @@ - (void)_setUnsignedIntValue:(unsigned int)value forKey:(NSString *)key > { if ([self _unsignedIntValueForKey:key] == value) > return; > NSString *_key = KEY(key); >+#if PLATFORM(IOS) > dispatch_barrier_sync(_private->readWriteQueue, ^{ >+#endif > [_private->values.get() _webkit_setUnsignedInt:value forKey:_key]; >+#if PLATFORM(IOS) > }); >+#endif > if (_private->autosaves) > [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithUnsignedInt:value] forKey:_key]; > [self _postPreferencesChangedNotification]; > } >-#endif > > - (float)_floatValueForKey:(NSString *)key > { >@@ -1184,14 +1186,14 @@ - (BOOL)developerExtrasEnabled > #endif > } > >-- (void)setJavaScriptExperimentsEnabled:(BOOL)flag >+- (WebKitJavaScriptRuntimeFlags)javaScriptRuntimeFlags > { >- [self _setBoolValue:flag forKey:WebKitJavaScriptExperimentsEnabledPreferenceKey]; >+ return static_cast<WebKitJavaScriptRuntimeFlags>([self _unsignedIntValueForKey:WebKitJavaScriptRuntimeFlagsPreferenceKey]); > } > >-- (BOOL)javaScriptExperimentsEnabled >+- (void)setJavaScriptRuntimeFlags:(WebKitJavaScriptRuntimeFlags)flags > { >- return [self _boolValueForKey:WebKitJavaScriptExperimentsEnabledPreferenceKey]; >+ [self _setUnsignedIntValue:flags forKey:WebKitJavaScriptRuntimeFlagsPreferenceKey]; > } > > - (void)setDeveloperExtrasEnabled:(BOOL)flag >diff --git a/Source/WebKit/mac/WebView/WebPreferencesPrivate.h b/Source/WebKit/mac/WebView/WebPreferencesPrivate.h >index fdd8b67f868dcf970c34941c3668a7049749a8c8..72f6825143fcd526f3631c582ba9409f0e7530cd 100644 >--- a/Source/WebKit/mac/WebView/WebPreferencesPrivate.h >+++ b/Source/WebKit/mac/WebView/WebPreferencesPrivate.h >@@ -52,6 +52,11 @@ > WebBlockAllStorage > } WebStorageBlockingPolicy; > >+typedef enum { >+ WebKitJavaScriptRuntimeFlagsSymbolEnabled = 1u << 0, >+ WebKitJavaScriptRuntimeFlagsAllEnabled = WebKitJavaScriptRuntimeFlagsSymbolEnabled >+} WebKitJavaScriptRuntimeFlags; >+ > extern NSString *WebPreferencesChangedNotification; > extern NSString *WebPreferencesRemovedNotification; > extern NSString *WebPreferencesChangedInternalNotification; >@@ -67,8 +72,8 @@ > - (BOOL)developerExtrasEnabled; > - (void)setDeveloperExtrasEnabled:(BOOL)flag; > >-- (BOOL)javaScriptExperimentsEnabled; >-- (void)setJavaScriptExperimentsEnabled:(BOOL)flag; >+- (WebKitJavaScriptRuntimeFlags)javaScriptRuntimeFlags; >+- (void)setJavaScriptRuntimeFlags:(WebKitJavaScriptRuntimeFlags)flags; > > - (BOOL)authorAndUserStylesEnabled; > - (void)setAuthorAndUserStylesEnabled:(BOOL)flag; >diff --git a/Source/WebKit/mac/WebView/WebView.mm b/Source/WebKit/mac/WebView/WebView.mm >index 65ee1486cbdf3b3ccf66b05e57f680af9118a5bc..5af8a1ec05594ee8b8fdffc017fdec59ccd2055e 100644 >--- a/Source/WebKit/mac/WebView/WebView.mm >+++ b/Source/WebKit/mac/WebView/WebView.mm >@@ -2234,7 +2234,7 @@ - (void)_preferencesChanged:(WebPreferences *)preferences > settings.setBackForwardCacheExpirationInterval([preferences _backForwardCacheExpirationInterval]); > > settings.setDeveloperExtrasEnabled([preferences developerExtrasEnabled]); >- settings.setJavaScriptExperimentsEnabled([preferences javaScriptExperimentsEnabled]); >+ settings.setJavaScriptRuntimeFlags(JSC::RuntimeFlags([preferences javaScriptRuntimeFlags])); > settings.setAuthorAndUserStylesEnabled([preferences authorAndUserStylesEnabled]); > > settings.setNeedsSiteSpecificQuirks(_private->useSiteSpecificSpoofing); >diff --git a/Source/WebKit/win/Interfaces/IWebPreferences.idl b/Source/WebKit/win/Interfaces/IWebPreferences.idl >index c32c3c166a1492876b43df41bbb8f8ab4b667db0..ae6c831753c6fcc0fa610416cfe3fc6df3a04740 100644 >--- a/Source/WebKit/win/Interfaces/IWebPreferences.idl >+++ b/Source/WebKit/win/Interfaces/IWebPreferences.idl >@@ -59,6 +59,11 @@ typedef enum WebCacheModel { > WebCacheModelPrimaryWebBrowser = 2 > } WebCacheModel; > >+typedef enum WebKitJavaScriptRuntimeFlags { >+ WebKitJavaScriptRuntimeFlagsSymbolEnabled = 1, // 1u << 0 >+ WebKitJavaScriptRuntimeFlagsAllEnabled = WebKitJavaScriptRuntimeFlagsSymbolEnabled >+} WebKitJavaScriptRuntimeFlags; >+ > [ > object, > oleautomation, >diff --git a/Source/WebKit/win/Interfaces/IWebPreferencesPrivate.idl b/Source/WebKit/win/Interfaces/IWebPreferencesPrivate.idl >index 11425865c7f0527b34586bd59480d6130bd1263c..4d503f266aad931283131c49717636d9ed9c70fd 100644 >--- a/Source/WebKit/win/Interfaces/IWebPreferencesPrivate.idl >+++ b/Source/WebKit/win/Interfaces/IWebPreferencesPrivate.idl >@@ -113,6 +113,9 @@ interface IWebPreferencesPrivate : IUnknown > HRESULT javaScriptCanAccessClipboard([out, retval] BOOL *enabled); > HRESULT setJavaScriptCanAccessClipboard([in] BOOL enabled); > >+ HRESULT javaScriptRuntimeFlags([out, retval] unsigned* flags); >+ HRESULT setJavaScriptRuntimeFlags([in] unsigned flags); >+ > HRESULT isDNSPrefetchingEnabled([out, retval] BOOL *enabled); > HRESULT setDNSPrefetchingEnabled([in] BOOL enabled); > >diff --git a/Source/WebKit/win/WebPreferenceKeysPrivate.h b/Source/WebKit/win/WebPreferenceKeysPrivate.h >index 31ec494f2c2d9395348b3c176c485fd78667dbee..a2fb9514aeba7125572fddd23ab560c3882f2728 100644 >--- a/Source/WebKit/win/WebPreferenceKeysPrivate.h >+++ b/Source/WebKit/win/WebPreferenceKeysPrivate.h >@@ -48,6 +48,7 @@ > #define WebKitTextAreasAreResizablePreferenceKey "WebKitTextAreasAreResizable" > #define WebKitJavaEnabledPreferenceKey "WebKitJavaEnabled" > #define WebKitJavaScriptEnabledPreferenceKey "WebKitJavaScriptEnabled" >+#define WebKitJavaScriptRuntimeFlagsPreferenceKey "WebKitJavaScriptRuntimeFlags" > #define WebKitWebSecurityEnabledPreferenceKey "WebKitWebSecurityEnabled" > #define WebKitAllowUniversalAccessFromFileURLsPreferenceKey "WebKitAllowUniversalAccessFromFileURLs" > #define WebKitAllowFileAccessFromFileURLsPreferenceKey "WebKitAllowFileAccessFromFileURLs" >diff --git a/Source/WebKit/win/WebPreferences.cpp b/Source/WebKit/win/WebPreferences.cpp >index cabbe66dedd7d30d1a0b83864bc96c8b0973e49f..9febcc068913954e1e4ec252a5260fd706f8d8dd 100644 >--- a/Source/WebKit/win/WebPreferences.cpp >+++ b/Source/WebKit/win/WebPreferences.cpp >@@ -215,6 +215,7 @@ void WebPreferences::initializeDefaultSettings() > CFDictionaryAddValue(defaults, CFSTR(WebKitTextAreasAreResizablePreferenceKey), kCFBooleanFalse); > CFDictionaryAddValue(defaults, CFSTR(WebKitJavaEnabledPreferenceKey), kCFBooleanTrue); > CFDictionaryAddValue(defaults, CFSTR(WebKitJavaScriptEnabledPreferenceKey), kCFBooleanTrue); >+ CFDictionaryAddValue(defaults, CFSTR(WebKitJavaScriptRuntimeFlagsPreferenceKey), CFSTR("0")); > CFDictionaryAddValue(defaults, CFSTR(WebKitWebSecurityEnabledPreferenceKey), kCFBooleanTrue); > CFDictionaryAddValue(defaults, CFSTR(WebKitAllowUniversalAccessFromFileURLsPreferenceKey), kCFBooleanFalse); > CFDictionaryAddValue(defaults, CFSTR(WebKitAllowFileAccessFromFileURLsPreferenceKey), kCFBooleanTrue); >@@ -823,7 +824,21 @@ HRESULT STDMETHODCALLTYPE WebPreferences::setJavaScriptEnabled( > return S_OK; > } > >-HRESULT STDMETHODCALLTYPE WebPreferences::isWebSecurityEnabled( >+HRESULT STDMETHODCALLTYPE WebPreferences::javaScriptRuntimeFlags( >+ /* [retval][out] */ unsigned* flags) >+{ >+ *flags = static_cast<unsigned>(longlongValueForKey(WebKitJavaScriptRuntimeFlagsPreferenceKey)); >+ return S_OK; >+} >+ >+HRESULT STDMETHODCALLTYPE WebPreferences::setJavaScriptRuntimeFlags( >+ /* [in] */ unsigned flags) >+{ >+ setLongLongValue(WebKitJavaScriptRuntimeFlagsPreferenceKey, flags); >+ return S_OK; >+} >+ >+HRESULT STDMETHODCALLTYPE WebPreferences::isWebSecurityEnabled( > /* [retval][out] */ BOOL* enabled) > { > *enabled = boolValueForKey(WebKitWebSecurityEnabledPreferenceKey); >diff --git a/Source/WebKit/win/WebPreferences.h b/Source/WebKit/win/WebPreferences.h >index 91873b76c0f316fe2368fcedaa7a20d4a52752cd..2f385f52ba00e7a9a0f9cdc4545dc4e74132b5ae 100644 >--- a/Source/WebKit/win/WebPreferences.h >+++ b/Source/WebKit/win/WebPreferences.h >@@ -150,7 +150,13 @@ class WebPreferences : public IWebPreferences, public IWebPreferencesPrivate { > > virtual HRESULT STDMETHODCALLTYPE setJavaScriptEnabled( > /* [in] */ BOOL enabled); >- >+ >+ virtual HRESULT STDMETHODCALLTYPE javaScriptRuntimeFlags( >+ /* [retval][out] */ unsigned*); >+ >+ virtual HRESULT STDMETHODCALLTYPE setJavaScriptRuntimeFlags( >+ /* [in] */ unsigned); >+ > virtual HRESULT STDMETHODCALLTYPE javaScriptCanOpenWindowsAutomatically( > /* [retval][out] */ BOOL* enabled); > >diff --git a/Source/WebKit/win/WebView.cpp b/Source/WebKit/win/WebView.cpp >index 539bda69a7e51d258704e0a8bcf6d0c8f63210c2..8fc434a027875d839d92eb7b122d33146cca10ce 100644 >--- a/Source/WebKit/win/WebView.cpp >+++ b/Source/WebKit/win/WebView.cpp >@@ -4759,6 +4759,7 @@ HRESULT WebView::notifyPreferencesChanged(IWebNotification* notification) > > BString str; > int size; >+ unsigned javaScriptRuntimeFlags; > BOOL enabled; > > Settings& settings = m_page->settings(); >@@ -4839,6 +4840,11 @@ HRESULT WebView::notifyPreferencesChanged(IWebNotification* notification) > return hr; > settings.setScriptEnabled(!!enabled); > >+ hr = preferences->javaScriptRuntimeFlags(&javaScriptRuntimeFlags); >+ if (FAILED(hr)) >+ return hr; >+ settings.setJavaScriptRuntimeFlags(JSC::RuntimeFlags(javaScriptRuntimeFlags)); >+ > hr = preferences->javaScriptCanOpenWindowsAutomatically(&enabled); > if (FAILED(hr)) > return hr; >diff --git a/Source/WebKit2/Shared/WebPreferencesDefinitions.h b/Source/WebKit2/Shared/WebPreferencesDefinitions.h >index 7109a04e602b3794a052662454e6ee052dada84e..d75428ab16fca44ec426975601a605defd3b9868 100644 >--- a/Source/WebKit2/Shared/WebPreferencesDefinitions.h >+++ b/Source/WebKit2/Shared/WebPreferencesDefinitions.h >@@ -95,7 +95,6 @@ > macro(DatabasesEnabled, databasesEnabled, Bool, bool, true) \ > macro(XSSAuditorEnabled, xssAuditorEnabled, Bool, bool, true) \ > macro(FrameFlatteningEnabled, frameFlatteningEnabled, Bool, bool, DEFAULT_FRAME_FLATTENING_ENABLED) \ >- macro(JavaScriptExperimentsEnabled, javaScriptExperimentsEnabled, Bool, bool, false) \ > macro(PrivateBrowsingEnabled, privateBrowsingEnabled, Bool, bool, false) \ > macro(TextAreasAreResizable, textAreasAreResizable, Bool, bool, DEFAULT_TEXT_AREAS_ARE_RESIZABLE) \ > macro(JavaScriptCanOpenWindowsAutomatically, javaScriptCanOpenWindowsAutomatically, Bool, bool, DEFAULT_JAVASCRIPT_CAN_OPEN_WINDOWS_AUTOMATICALLY) \ >@@ -217,6 +216,7 @@ > macro(InspectorAttachedWidth, inspectorAttachedWidth, UInt32, uint32_t, 750) \ > macro(InspectorAttachmentSide, inspectorAttachmentSide, UInt32, uint32_t, 0) \ > macro(StorageBlockingPolicy, storageBlockingPolicy, UInt32, uint32_t, WebCore::SecurityOrigin::BlockThirdPartyStorage) \ >+ macro(JavaScriptRuntimeFlags, javaScriptRuntimeFlags, UInt32, uint32_t, 0) \ > \ > > #define FOR_EACH_WEBKIT_DEBUG_BOOL_PREFERENCE(macro) \ >diff --git a/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp b/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp >index c05892107a292e3d0f408bdca7332e22aa0321f3..2a8ad6eb2d0841a8bab93593a15097fd26155706 100644 >--- a/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp >+++ b/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp >@@ -349,14 +349,14 @@ bool WKPreferencesGetDeveloperExtrasEnabled(WKPreferencesRef preferencesRef) > return toImpl(preferencesRef)->developerExtrasEnabled(); > } > >-void WKPreferencesSetJavaScriptExperimentsEnabled(WKPreferencesRef preferencesRef, bool enabled) >+void WKPreferencesSetJavaScriptRuntimeFlags(WKPreferencesRef preferencesRef, WKJavaScriptRuntimeFlagSet javaScriptRuntimeFlagSet) > { >- toImpl(preferencesRef)->setJavaScriptExperimentsEnabled(enabled); >+ toImpl(preferencesRef)->setJavaScriptRuntimeFlags(javaScriptRuntimeFlagSet); > } > >-bool WKPreferencesGetJavaScriptExperimentsEnabled(WKPreferencesRef preferencesRef) >+WKJavaScriptRuntimeFlagSet WKPreferencesGetJavaScriptRuntimeFlags(WKPreferencesRef preferencesRef) > { >- return toImpl(preferencesRef)->javaScriptExperimentsEnabled(); >+ return toImpl(preferencesRef)->javaScriptRuntimeFlags(); > } > > void WKPreferencesSetTextAreasAreResizable(WKPreferencesRef preferencesRef, bool resizable) >diff --git a/Source/WebKit2/UIProcess/API/C/WKPreferencesRef.h b/Source/WebKit2/UIProcess/API/C/WKPreferencesRef.h >index d5e7464c168f3cfa205d03890de5172b41380b68..24aa4326f6b42c085f678472f01ddd9c1e4c9f73 100644 >--- a/Source/WebKit2/UIProcess/API/C/WKPreferencesRef.h >+++ b/Source/WebKit2/UIProcess/API/C/WKPreferencesRef.h >@@ -150,10 +150,6 @@ enum WKDebugOverlayRegionFlags { > WK_EXPORT void WKPreferencesSetDeveloperExtrasEnabled(WKPreferencesRef preferencesRef, bool enabled); > WK_EXPORT bool WKPreferencesGetDeveloperExtrasEnabled(WKPreferencesRef preferencesRef); > >-// Defaults to false. >-WK_EXPORT void WKPreferencesSetJavaScriptExperimentsEnabled(WKPreferencesRef preferencesRef, bool enabled); >-WK_EXPORT bool WKPreferencesGetJavaScriptExperimentsEnabled(WKPreferencesRef preferencesRef); >- > // Defaults to true. > WK_EXPORT void WKPreferencesSetTextAreasAreResizable(WKPreferencesRef preferencesRef, bool resizable); > WK_EXPORT bool WKPreferencesGetTextAreasAreResizable(WKPreferencesRef preferencesRef); >diff --git a/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h b/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h >index 5df4ef275634fbdd774dd524ed8195038b4837d7..44e278c44e524bfccd7e5487e6c8947613fd1d4d 100644 >--- a/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h >+++ b/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h >@@ -49,6 +49,12 @@ enum WKEditableLinkBehavior { > }; > typedef enum WKEditableLinkBehavior WKEditableLinkBehavior; > >+enum WKJavaScriptRuntimeFlags { >+ kWKJavaScriptRuntimeFlagsSymbolEnabled = 1 << 0, >+ kWKJavaScriptRuntimeFlagsAllEnabled = kWKJavaScriptRuntimeFlagsSymbolEnabled >+}; >+typedef unsigned WKJavaScriptRuntimeFlagSet; >+ > // Creates a copy with no identifier. > WK_EXPORT WKPreferencesRef WKPreferencesCreateCopy(WKPreferencesRef); > >@@ -346,6 +352,10 @@ enum WKEditableLinkBehavior { > WK_EXPORT void WKPreferencesSetScreenFontSubstitutionEnabled(WKPreferencesRef preferences, bool enabled); > WK_EXPORT bool WKPreferencesGetScreenFontSubstitutionEnabled(WKPreferencesRef preferences); > >+// Defaults to 0. >+WK_EXPORT void WKPreferencesSetJavaScriptRuntimeFlags(WKPreferencesRef preferences, WKJavaScriptRuntimeFlagSet javascriptRuntimeFlagSet); >+WK_EXPORT WKJavaScriptRuntimeFlagSet WKPreferencesGetJavaScriptRuntimeFlags(WKPreferencesRef preferences); >+ > #ifdef __cplusplus > } > #endif >diff --git a/Source/WebKit2/UIProcess/API/Cocoa/WKPreferences.mm b/Source/WebKit2/UIProcess/API/Cocoa/WKPreferences.mm >index efcafbe3277d6282a97d108c28663879af593b46..7c37db386a6f08bd018569d65d31c522473d1d00 100644 >--- a/Source/WebKit2/UIProcess/API/Cocoa/WKPreferences.mm >+++ b/Source/WebKit2/UIProcess/API/Cocoa/WKPreferences.mm >@@ -267,6 +267,16 @@ - (void)_setAllowFileAccessFromFileURLs:(BOOL)allowFileAccessFromFileURLs > _preferences->setAllowFileAccessFromFileURLs(allowFileAccessFromFileURLs); > } > >+- (_WKJavaScriptRuntimeFlags)_javaScriptRuntimeFlags >+{ >+ return _preferences->javaScriptRuntimeFlags(); >+} >+ >+- (void)_setJavaScriptRuntimeFlags:(_WKJavaScriptRuntimeFlags)javaScriptRuntimeFlags >+{ >+ _preferences->setJavaScriptRuntimeFlags(javaScriptRuntimeFlags); >+} >+ > - (BOOL)_isStandalone > { > return _preferences->standalone(); >diff --git a/Source/WebKit2/UIProcess/API/Cocoa/WKPreferencesPrivate.h b/Source/WebKit2/UIProcess/API/Cocoa/WKPreferencesPrivate.h >index fe047a0f8a9d6a4b425dc1c072c3066d4a1b9b0b..33de8ba22b9d3045f6356994246b32045978c4fe 100644 >--- a/Source/WebKit2/UIProcess/API/Cocoa/WKPreferencesPrivate.h >+++ b/Source/WebKit2/UIProcess/API/Cocoa/WKPreferencesPrivate.h >@@ -42,6 +42,11 @@ typedef NS_OPTIONS(NSUInteger, _WKDebugOverlayRegions) { > _WKWheelEventHandlerRegion = 1 << 1 > } WK_ENUM_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA); > >+typedef NS_OPTIONS(NSUInteger, _WKJavaScriptRuntimeFlags) { >+ _WKJavaScriptRuntimeFlagsSymbolEnabled = 1 << 0, >+ _WKJavaScriptRuntimeFlagsAllEnabled = _WKJavaScriptRuntimeFlagsSymbolEnabled >+} WK_ENUM_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA); >+ > @interface WKPreferences (WKPrivate) > > // FIXME: This property should not have the verb "is" in it. >@@ -59,6 +64,7 @@ typedef NS_OPTIONS(NSUInteger, _WKDebugOverlayRegions) { > @property (nonatomic, setter=_setLogsPageMessagesToSystemConsoleEnabled:) BOOL _logsPageMessagesToSystemConsoleEnabled WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA); > > @property (nonatomic, setter=_setAllowFileAccessFromFileURLs:) BOOL _allowFileAccessFromFileURLs WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA); >+@property (nonatomic, setter=_setJavaScriptRuntimeFlags:) _WKJavaScriptRuntimeFlags _javaScriptRuntimeFlags WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA); > > @property (nonatomic, setter=_setStandalone:, getter=_isStandalone) BOOL _standalone WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA); > >diff --git a/Source/WebKit2/UIProcess/efl/WebInspectorProxyEfl.cpp b/Source/WebKit2/UIProcess/efl/WebInspectorProxyEfl.cpp >index 830eb4ca7da4c8058e8d8586cc85751eb209ed6f..b35a5f79c854204a897203a85af5a8fdc210e355 100644 >--- a/Source/WebKit2/UIProcess/efl/WebInspectorProxyEfl.cpp >+++ b/Source/WebKit2/UIProcess/efl/WebInspectorProxyEfl.cpp >@@ -114,6 +114,7 @@ WebPageProxy* WebInspectorProxy::platformCreateInspectorPage() > > WKPreferencesRef wkPreferences = WKPageGroupGetPreferences(wkPageGroup); > WKPreferencesSetFileAccessFromFileURLsAllowed(wkPreferences, true); >+ WKPreferencesSetJavaScriptRuntimeFlags(wkPreferences, kWKJavaScriptRuntimeFlagsSymbolEnabled); > > return toImpl(WKViewGetPage(wkView)); > } >diff --git a/Source/WebKit2/UIProcess/gtk/WebInspectorProxyGtk.cpp b/Source/WebKit2/UIProcess/gtk/WebInspectorProxyGtk.cpp >index e4a2b541908f00bc3fd370f92851db4902d20e0b..9e77bd494b58782d93ce575fbcfc375c5455f2c3 100644 >--- a/Source/WebKit2/UIProcess/gtk/WebInspectorProxyGtk.cpp >+++ b/Source/WebKit2/UIProcess/gtk/WebInspectorProxyGtk.cpp >@@ -69,6 +69,9 @@ WebPageProxy* WebInspectorProxy::platformCreateInspectorPage() > preferences->setLogsPageMessagesToSystemConsoleEnabled(true); > #endif > preferences->setAllowFileAccessFromFileURLs(true); >+ preferences->setJavaScriptRuntimeFlags({ >+ JSC::RuntimeFlags::SymbolEnabled >+ }); > RefPtr<WebPageGroup> pageGroup = WebPageGroup::create(inspectorPageGroupIdentifier(), false, false); > m_inspectorView = GTK_WIDGET(webkitWebViewBaseCreate(&inspectorProcessPool(), preferences.get(), pageGroup.get(), nullptr, nullptr)); > g_object_add_weak_pointer(G_OBJECT(m_inspectorView), reinterpret_cast<void**>(&m_inspectorView)); >diff --git a/Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm b/Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm >index a8d56eb64c89cd1794949d4dfb431a7ed9541786..c63023f19cf60c2f4afd666c2e32586610d1896e 100644 >--- a/Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm >+++ b/Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm >@@ -488,6 +488,7 @@ WebPageProxy* WebInspectorProxy::platformCreateInspectorPage() > preferences._logsPageMessagesToSystemConsoleEnabled = YES; > #endif > preferences._allowFileAccessFromFileURLs = YES; >+ preferences._javaScriptRuntimeFlags = _WKJavaScriptRuntimeFlagsSymbolEnabled; > [configuration setProcessPool: ::WebKit::wrapper(inspectorProcessPool())]; > [configuration _setGroupIdentifier:inspectorPageGroupIdentifier()]; > >diff --git a/Source/WebKit2/WebProcess/WebPage/WebPage.cpp b/Source/WebKit2/WebProcess/WebPage/WebPage.cpp >index b0de3032341b049367f8a81739e5e5227f549153..870ed924eef5a4f93e59b850427434fe178fea79 100644 >--- a/Source/WebKit2/WebProcess/WebPage/WebPage.cpp >+++ b/Source/WebKit2/WebProcess/WebPage/WebPage.cpp >@@ -2653,7 +2653,7 @@ void WebPage::updatePreferences(const WebPreferencesStore& store) > else if (!store.getBoolValueForKey(WebPreferencesKey::privateBrowsingEnabledKey()) && sessionID() == SessionID::legacyPrivateSessionID()) > setSessionID(SessionID::defaultSessionID()); > settings.setDeveloperExtrasEnabled(store.getBoolValueForKey(WebPreferencesKey::developerExtrasEnabledKey())); >- settings.setJavaScriptExperimentsEnabled(store.getBoolValueForKey(WebPreferencesKey::javaScriptExperimentsEnabledKey())); >+ settings.setJavaScriptRuntimeFlags(RuntimeFlags(store.getUInt32ValueForKey(WebPreferencesKey::javaScriptRuntimeFlagsKey()))); > settings.setTextAreasAreResizable(store.getBoolValueForKey(WebPreferencesKey::textAreasAreResizableKey())); > settings.setNeedsSiteSpecificQuirks(store.getBoolValueForKey(WebPreferencesKey::needsSiteSpecificQuirksKey())); > settings.setJavaScriptCanOpenWindowsAutomatically(store.getBoolValueForKey(WebPreferencesKey::javaScriptCanOpenWindowsAutomaticallyKey())); >diff --git a/Source/WebKit2/mac/WebKit2.order b/Source/WebKit2/mac/WebKit2.order >index ae625f7c16c6baf540749aceb465f272375f9c5b..8a03838927f5e92e38d5362fac39d7da06f636f8 100644 >--- a/Source/WebKit2/mac/WebKit2.order >+++ b/Source/WebKit2/mac/WebKit2.order >@@ -176,7 +176,6 @@ __ZN6WebKit17WebPreferencesKey19databasesEnabledKeyEv > __ZN6WebKit17WebPreferencesKey20xssAuditorEnabledKeyEv > __ZN6WebKit17WebPreferencesKey25frameFlatteningEnabledKeyEv > __ZN6WebKit17WebPreferencesKey25developerExtrasEnabledKeyEv >-__ZN6WebKit17WebPreferencesKey31javaScriptExperimentsEnabledKeyEv > __ZN6WebKit17WebPreferencesKey25privateBrowsingEnabledKeyEv > __ZN6WebKit17WebPreferencesKey24textAreasAreResizableKeyEv > __ZN6WebKit17WebPreferencesKey40javaScriptCanOpenWindowsAutomaticallyKeyEv >@@ -8129,8 +8128,6 @@ _WKPreferencesSetXSSAuditorEnabled > __ZN6WebKit14WebPreferences20setXSSAuditorEnabledERKb > _WKPreferencesSetWebAudioEnabled > __ZN6WebKit14WebPreferences18setWebAudioEnabledERKb >-_WKPreferencesSetJavaScriptExperimentsEnabled >-__ZN6WebKit14WebPreferences31setJavaScriptExperimentsEnabledERKb > _WKPreferencesSetJavaScriptCanAccessClipboard > __ZN6WebKit14WebPreferences31setJavaScriptCanAccessClipboardERKb > _WKPreferencesSetDOMPasteAllowed >diff --git a/Tools/ChangeLog b/Tools/ChangeLog >index 428523700dfe9016424fb75455acb4890e57857a..37cffd91ea53927554453da78cd9c2954afbfd21 100644 >--- a/Tools/ChangeLog >+++ b/Tools/ChangeLog >@@ -1,3 +1,19 @@ >+2015-02-24 Yusuke Suzuki <utatane.tea@gmail.com> >+ >+ REGRESSION(r179429): Can't type comments in Facebook >+ https://bugs.webkit.org/show_bug.cgi?id=141859 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Drop javaScriptExperimentsEnabled and specify JavaScriptRuntimeFlagsAllEnabled as KJavaScriptRuntimeFlags. >+ >+ * DumpRenderTree/mac/DumpRenderTree.mm: >+ (resetWebPreferencesToConsistentValues): >+ * DumpRenderTree/win/DumpRenderTree.cpp: >+ (resetWebPreferencesToConsistentValues): >+ * WebKitTestRunner/TestController.cpp: >+ (WTR::TestController::resetPreferencesToConsistentValues): >+ > 2015-02-23 Commit Queue <commit-queue@webkit.org> > > Unreviewed, rolling out r180547 and r180550. >diff --git a/Tools/DumpRenderTree/mac/DumpRenderTree.mm b/Tools/DumpRenderTree/mac/DumpRenderTree.mm >index 212e51ba4a01f2ed482f470737ef3942d58c91b9..63521e95052fe81b08e4d6e37a9c1eaa7b180916 100644 >--- a/Tools/DumpRenderTree/mac/DumpRenderTree.mm >+++ b/Tools/DumpRenderTree/mac/DumpRenderTree.mm >@@ -839,7 +839,7 @@ static void resetWebPreferencesToConsistentValues() > [preferences setJavaScriptCanAccessClipboard:YES]; > [preferences setOfflineWebApplicationCacheEnabled:YES]; > [preferences setDeveloperExtrasEnabled:NO]; >- [preferences setJavaScriptExperimentsEnabled:YES]; >+ [preferences setJavaScriptRuntimeFlags:WebKitJavaScriptRuntimeFlagsAllEnabled]; > [preferences setLoadsImagesAutomatically:YES]; > [preferences setLoadsSiteIconsIgnoringImageLoadingPreference:NO]; > [preferences setFrameFlatteningEnabled:NO]; >diff --git a/Tools/DumpRenderTree/win/DumpRenderTree.cpp b/Tools/DumpRenderTree/win/DumpRenderTree.cpp >index 2415b0fc99f44aa87f18daaddde12dbde779e439..a528c6b778393f304459863d667527d774b6c4bc 100644 >--- a/Tools/DumpRenderTree/win/DumpRenderTree.cpp >+++ b/Tools/DumpRenderTree/win/DumpRenderTree.cpp >@@ -816,6 +816,7 @@ static void resetWebPreferencesToConsistentValues(IWebPreferences* preferences) > prefsPrivate->setJavaScriptCanAccessClipboard(TRUE); > prefsPrivate->setOfflineWebApplicationCacheEnabled(TRUE); > prefsPrivate->setDeveloperExtrasEnabled(FALSE); >+ prefsPrivate->setJavaScriptRuntimeFlags(WebKitJavaScriptRuntimeFlagsAllEnabled); > // Set JS experiments enabled: YES > preferences->setLoadsImagesAutomatically(TRUE); > prefsPrivate->setLoadsSiteIconsIgnoringImageLoadingPreference(FALSE); >diff --git a/Tools/WebKitTestRunner/TestController.cpp b/Tools/WebKitTestRunner/TestController.cpp >index 3f5cf2d703b861d9cde6034b02b84ba5af3648e5..348134042c50c5db70ab06b2bbb63bd005cc4a45 100644 >--- a/Tools/WebKitTestRunner/TestController.cpp >+++ b/Tools/WebKitTestRunner/TestController.cpp >@@ -549,7 +549,7 @@ void TestController::resetPreferencesToConsistentValues() > WKPreferencesSetWebAudioEnabled(preferences, true); > WKPreferencesSetMediaStreamEnabled(preferences, true); > WKPreferencesSetDeveloperExtrasEnabled(preferences, true); >- WKPreferencesSetJavaScriptExperimentsEnabled(preferences, true); >+ WKPreferencesSetJavaScriptRuntimeFlags(preferences, kWKJavaScriptRuntimeFlagsAllEnabled); > WKPreferencesSetJavaScriptCanOpenWindowsAutomatically(preferences, true); > WKPreferencesSetJavaScriptCanAccessClipboard(preferences, true); > WKPreferencesSetDOMPasteAllowed(preferences, true);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 141859
:
247012
|
247022
|
247029
|
247043
|
247045
|
247113
|
247117
|
247120
|
247127
|
247208
|
247209
|
247210