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-20150223230248.patch (text/plain), 51.36 KB, created by
Yusuke Suzuki
on 2015-02-23 06:03:00 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Yusuke Suzuki
Created:
2015-02-23 06:03:00 PST
Size:
51.36 KB
patch
obsolete
>Subversion Revision: 180499 >diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog >index d63534486ebb8da211efda7b2f56fea0343109dc..e7d03fc9e0738c0cf3249fdcd7febe9ee425efd8 100644 >--- a/Source/JavaScriptCore/ChangeLog >+++ b/Source/JavaScriptCore/ChangeLog >@@ -1,3 +1,38 @@ >+2015-02-23 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.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-21 Joseph Pecoraro <pecoraro@apple.com> > > Web Inspector: Generate Previews more often for RemoteObject interaction >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 40e3562cc6033ad2cfa9687958884cc49f15f1a8..d095a5c46f15dc2b738ef689c9450eb6039ce579 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,26 @@ >+2015-02-23 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. >+ >+ * WebCore.order: >+ * 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-22 Gyuyoung Kim <gyuyoung.kim@samsung.com> > > Move std::unique_ptr<>|make_unique<> to WebCore/page/scrolling >diff --git a/Source/WebKit/mac/ChangeLog b/Source/WebKit/mac/ChangeLog >index f13a8349e55047b9a13bd48c51dc813e915ff422..17496978ab7d4699dd859b5f2030a367721b4409 100644 >--- a/Source/WebKit/mac/ChangeLog >+++ b/Source/WebKit/mac/ChangeLog >@@ -1,3 +1,27 @@ >+2015-02-23 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. >+ >+ * WebKit.order: >+ * WebView/WebPreferenceKeysPrivate.h: >+ * WebView/WebPreferences.mm: >+ (+[WebPreferences initialize]): >+ (-[WebPreferences setJavaScriptRuntimeFlags:]): >+ (-[WebPreferences javaScriptRuntimeFlags]): >+ (-[WebPreferences setJavaScriptExperimentsEnabled:]): Deleted. >+ (-[WebPreferences javaScriptExperimentsEnabled]): Deleted. >+ >+ Private API, javaScriptExperimentsEnabled is dropped. >+ >+ * WebView/WebPreferencesPrivate.h: >+ * WebView/WebView.mm: >+ (-[WebView _preferencesChanged:]): >+ > 2015-02-20 Eric Carlson <eric.carlson@apple.com> > > [iOS] cleanup AirPlay code >diff --git a/Source/WebKit2/ChangeLog b/Source/WebKit2/ChangeLog >index 94d44b9c681fd534459670af954ea664167ede72..453e60fb507d8108b1ef48ffbc5e2af67027aa17 100644 >--- a/Source/WebKit2/ChangeLog >+++ b/Source/WebKit2/ChangeLog >@@ -1,3 +1,34 @@ >+2015-02-23 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-20 Brent Fulgham <bfulgham@apple.com> > > Scrollbars and ScrollAnimators must always have a ScrollableArea >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.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 ec7529958b7049de509a36c43ca30896e9dc93eb..09c5d59000add3432bb7adf2a1b4fdb11b7e9c16 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/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/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/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..46a52825b4012d7a6cbcaec414efb1e1b7062782 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, >@@ -1184,14 +1184,14 @@ - (BOOL)developerExtrasEnabled > #endif > } > >-- (void)setJavaScriptExperimentsEnabled:(BOOL)flag >+- (void)setJavaScriptRuntimeFlags:(BOOL)flags > { >- [self _setBoolValue:flag forKey:WebKitJavaScriptExperimentsEnabledPreferenceKey]; >+ [self _setUnsignedIntValue:flags forKey:WebKitJavaScriptRuntimeFlagsPreferenceKey]; > } > >-- (BOOL)javaScriptExperimentsEnabled >+- (WebKitJavaScriptRuntimeFlags)javaScriptRuntimeFlags; > { >- return [self _boolValueForKey:WebKitJavaScriptExperimentsEnabledPreferenceKey]; >+ return [self _unsignedIntValueForKey: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..14f2d4962e2d883f4adc38834492e088426cf0af 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([preferences javaScriptRuntimeFlags]); > settings.setAuthorAndUserStylesEnabled([preferences authorAndUserStylesEnabled]); > > settings.setNeedsSiteSpecificQuirks(_private->useSiteSpecificSpoofing); >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..82e2bb51d7bb5a2dc43a130564b8a060e06293ab 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 _javaScriptJavaScriptRuntimeFlags 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 3d83a9996cc4008d72839c0e8d8c53f05c178683..f554fa220abc96828e7602ad9824aedb58a5889c 100644 >--- a/Tools/ChangeLog >+++ b/Tools/ChangeLog >@@ -1,3 +1,17 @@ >+2015-02-23 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): >+ * WebKitTestRunner/TestController.cpp: >+ (WTR::TestController::resetPreferencesToConsistentValues): >+ > 2015-02-21 Youenn Fablet <youenn.fablet@crf.canon.fr> > > Tests don't work on some bots: Failed to stop wptwk >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/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