Changeset 118018 in webkit
- Timestamp:
- May 22, 2012 12:10:43 PM (12 years ago)
- Location:
- trunk
- Files:
-
- 23 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r117993 r118018 1 2012-05-21 Gavin Barraclough <barraclough@apple.com> 2 3 Disable private names by default in WebCore 4 https://bugs.webkit.org/show_bug.cgi?id=87088 5 6 Reviewed by Geoff Garen. 7 8 r117859 introduced a preliminary implementation of ES6-like private name objects to JSC. 9 These are probably not yet ready to be web-facing, so disabling by default in WebCore. 10 Opting-in for JSC & DumpRenderTree so that we can still run the fast/js/names.html test. 11 12 * jsc.cpp: 13 (GlobalObject): 14 (GlobalObject::javaScriptExperimentsEnabled): 15 - Implemented new trap to opt-in to private names support. 16 * runtime/JSGlobalObject.cpp: 17 (JSC): 18 (JSC::JSGlobalObject::reset): 19 - Only add the Name property to the global object if experiments are enabled. 20 * runtime/JSGlobalObject.h: 21 (GlobalObjectMethodTable): 22 - Added new trap to enabled experiments. 23 (JSGlobalObject): 24 (JSC::JSGlobalObject::finishCreation): 25 - Set the global object's m_experimentsEnabled state on construction. 26 (JSC::JSGlobalObject::javaScriptExperimentsEnabled): 27 - Defaults to off. 28 1 29 2012-05-06 Filip Pizlo <fpizlo@apple.com> 2 30 -
trunk/Source/JavaScriptCore/jsc.cpp
r116828 r118018 170 170 171 171 static const ClassInfo s_info; 172 static const GlobalObjectMethodTable s_globalObjectMethodTable; 172 173 173 174 static Structure* createStructure(JSGlobalData& globalData, JSValue prototype) … … 175 176 return Structure::create(globalData, 0, prototype, TypeInfo(GlobalObjectType, StructureFlags), &s_info); 176 177 } 178 179 static bool javaScriptExperimentsEnabled(const JSGlobalObject*) { return true; } 177 180 178 181 protected: … … 232 235 233 236 const ClassInfo GlobalObject::s_info = { "global", &JSGlobalObject::s_info, 0, ExecState::globalObjectTable, CREATE_METHOD_TABLE(GlobalObject) }; 237 const GlobalObjectMethodTable GlobalObject::s_globalObjectMethodTable = { &allowsAccessFrom, &supportsProfiling, &supportsRichSourceInfo, &shouldInterruptScript, &javaScriptExperimentsEnabled }; 238 234 239 235 240 GlobalObject::GlobalObject(JSGlobalData& globalData, Structure* structure) 236 : JSGlobalObject(globalData, structure )241 : JSGlobalObject(globalData, structure, &s_globalObjectMethodTable) 237 242 { 238 243 } -
trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp
r117859 r118018 82 82 const ClassInfo JSGlobalObject::s_info = { "GlobalObject", &JSVariableObject::s_info, 0, ExecState::globalObjectTable, CREATE_METHOD_TABLE(JSGlobalObject) }; 83 83 84 const GlobalObjectMethodTable JSGlobalObject::s_globalObjectMethodTable = { &allowsAccessFrom, &supportsProfiling, &supportsRichSourceInfo, &shouldInterruptScript };84 const GlobalObjectMethodTable JSGlobalObject::s_globalObjectMethodTable = { &allowsAccessFrom, &supportsProfiling, &supportsRichSourceInfo, &shouldInterruptScript, &javaScriptExperimentsEnabled }; 85 85 86 86 /* Source for JSGlobalObject.lut.h … … 248 248 m_errorStructure.set(exec->globalData(), this, ErrorInstance::createStructure(exec->globalData(), this, errorPrototype)); 249 249 250 NamePrototype* privateNamePrototype = NamePrototype::create(exec, NamePrototype::createStructure(exec->globalData(), this, m_objectPrototype.get()));251 m_privateNameStructure.set(exec->globalData(), this, NameInstance::createStructure(exec->globalData(), this, privateNamePrototype));252 253 250 // Constructors 254 251 … … 264 261 265 262 m_errorConstructor.set(exec->globalData(), this, ErrorConstructor::create(exec, this, ErrorConstructor::createStructure(exec->globalData(), this, m_functionPrototype.get()), errorPrototype)); 266 JSCell* privateNameConstructor = NameConstructor::create(exec, this, NameConstructor::createStructure(exec->globalData(), this, m_functionPrototype.get()), privateNamePrototype);267 263 268 264 Structure* nativeErrorPrototypeStructure = NativeErrorPrototype::createStructure(exec->globalData(), this, errorPrototype); … … 284 280 m_regExpPrototype->putDirectWithoutTransition(exec->globalData(), exec->propertyNames().constructor, m_regExpConstructor.get(), DontEnum); 285 281 errorPrototype->putDirectWithoutTransition(exec->globalData(), exec->propertyNames().constructor, m_errorConstructor.get(), DontEnum); 286 privateNamePrototype->putDirectWithoutTransition(exec->globalData(), exec->propertyNames().constructor, privateNameConstructor, DontEnum);287 282 288 283 putDirectWithoutTransition(exec->globalData(), Identifier(exec, "Object"), objectConstructor, DontEnum); … … 301 296 putDirectWithoutTransition(exec->globalData(), Identifier(exec, "TypeError"), m_typeErrorConstructor.get(), DontEnum); 302 297 putDirectWithoutTransition(exec->globalData(), Identifier(exec, "URIError"), m_URIErrorConstructor.get(), DontEnum); 303 putDirectWithoutTransition(exec->globalData(), Identifier(exec, "Name"), privateNameConstructor, DontEnum);304 298 305 299 m_evalFunction.set(exec->globalData(), this, JSFunction::create(exec, this, 1, exec->propertyNames().eval.ustring(), globalFuncEval)); … … 315 309 }; 316 310 addStaticGlobals(staticGlobals, WTF_ARRAY_LENGTH(staticGlobals)); 311 312 if (m_experimentsEnabled) { 313 NamePrototype* privateNamePrototype = NamePrototype::create(exec, NamePrototype::createStructure(exec->globalData(), this, m_objectPrototype.get())); 314 m_privateNameStructure.set(exec->globalData(), this, NameInstance::createStructure(exec->globalData(), this, privateNamePrototype)); 315 316 JSCell* privateNameConstructor = NameConstructor::create(exec, this, NameConstructor::createStructure(exec->globalData(), this, m_functionPrototype.get()), privateNamePrototype); 317 privateNamePrototype->putDirectWithoutTransition(exec->globalData(), exec->propertyNames().constructor, privateNameConstructor, DontEnum); 318 putDirectWithoutTransition(exec->globalData(), Identifier(exec, "Name"), privateNameConstructor, DontEnum); 319 } 317 320 318 321 resetPrototype(exec->globalData(), prototype); -
trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h
r117859 r118018 69 69 typedef bool (*ShouldInterruptScriptFunctionPtr)(const JSGlobalObject*); 70 70 ShouldInterruptScriptFunctionPtr shouldInterruptScript; 71 72 typedef bool (*JavaScriptExperimentsEnabledFunctionPtr)(const JSGlobalObject*); 73 JavaScriptExperimentsEnabledFunctionPtr javaScriptExperimentsEnabled; 71 74 }; 72 75 … … 146 149 147 150 bool m_evalEnabled; 151 bool m_experimentsEnabled; 148 152 149 153 static JS_EXPORTDATA const GlobalObjectMethodTable s_globalObjectMethodTable; … … 185 189 Base::finishCreation(globalData); 186 190 structure()->setGlobalObject(globalData, this); 191 m_experimentsEnabled = m_globalObjectMethodTable->javaScriptExperimentsEnabled(this); 187 192 init(this); 188 193 } … … 192 197 Base::finishCreation(globalData); 193 198 structure()->setGlobalObject(globalData, this); 199 m_experimentsEnabled = m_globalObjectMethodTable->javaScriptExperimentsEnabled(this); 194 200 init(thisValue); 195 201 } … … 293 299 294 300 static bool shouldInterruptScript(const JSGlobalObject*) { return true; } 301 static bool javaScriptExperimentsEnabled(const JSGlobalObject*) { return false; } 295 302 296 303 bool isDynamicScope(bool& requiresDynamicChecks) const; -
trunk/Source/WebCore/ChangeLog
r118012 r118018 1 2012-05-21 Gavin Barraclough <barraclough@apple.com> 2 3 Disable private names by default in WebCore 4 https://bugs.webkit.org/show_bug.cgi?id=87088 5 6 Reviewed by Geoff Garen. 7 8 r117859 introduced a preliminary implementation of ES6-like private name objects to JSC. 9 These are probably not yet ready to be web-facing, so disabling by default in WebCore. 10 Opting-in for JSC & DumpRenderTree so that we can still run the fast/js/names.html test. 11 12 * WebCore.exp.in: 13 - Added export. 14 * bindings/js/JSDOMWindowBase.cpp: 15 (WebCore): 16 (WebCore::JSDOMWindowBase::javaScriptExperimentsEnabled): 17 - Override default from JSC, enable based on corresponding Setting. 18 * bindings/js/JSDOMWindowBase.h: 19 (JSDOMWindowBase): 20 - Added declaration for javaScriptExperimentsEnabled. 21 * page/Settings.cpp: 22 (WebCore::Settings::Settings): 23 (WebCore::Settings::setJavaScriptExperimentsEnabled): 24 (WebCore): 25 * page/Settings.h: 26 (Settings): 27 (WebCore::Settings::javaScriptExperimentsEnabled): 28 - Added Setting, reflecting WebPreference. 29 1 30 2012-05-22 Adam Barth <abarth@webkit.org> 2 31 -
trunk/Source/WebCore/WebCore.exp.in
r117610 r118018 1043 1043 __ZN7WebCore8Settings31setCanvasUsesAcceleratedDrawingEb 1044 1044 __ZN7WebCore8Settings31setJavaScriptCanAccessClipboardEb 1045 __ZN7WebCore8Settings31setJavaScriptExperimentsEnabledEb 1045 1046 __ZN7WebCore8Settings31setShrinksStandaloneImagesToFitEb 1046 1047 __ZN7WebCore8Settings32setAcceleratedCompositingEnabledEb -
trunk/Source/WebCore/bindings/js/JSDOMWindowBase.cpp
r113387 r118018 44 44 const ClassInfo JSDOMWindowBase::s_info = { "Window", &JSDOMGlobalObject::s_info, 0, 0, CREATE_METHOD_TABLE(JSDOMWindowBase) }; 45 45 46 const GlobalObjectMethodTable JSDOMWindowBase::s_globalObjectMethodTable = { &allowsAccessFrom, &supportsProfiling, &supportsRichSourceInfo, &shouldInterruptScript };46 const GlobalObjectMethodTable JSDOMWindowBase::s_globalObjectMethodTable = { &allowsAccessFrom, &supportsProfiling, &supportsRichSourceInfo, &shouldInterruptScript, &javaScriptExperimentsEnabled }; 47 47 48 48 JSDOMWindowBase::JSDOMWindowBase(JSGlobalData& globalData, Structure* structure, PassRefPtr<DOMWindow> window, JSDOMWindowShell* shell) … … 176 176 } 177 177 178 bool JSDOMWindowBase::javaScriptExperimentsEnabled(const JSGlobalObject* object) 179 { 180 const JSDOMWindowBase* thisObject = static_cast<const JSDOMWindowBase*>(object); 181 Frame* frame = thisObject->impl()->frame(); 182 if (!frame) 183 return false; 184 Settings* settings = frame->settings(); 185 if (!settings) 186 return false; 187 return settings->javaScriptExperimentsEnabled(); 188 } 189 178 190 void JSDOMWindowBase::willRemoveFromWindowShell() 179 191 { -
trunk/Source/WebCore/bindings/js/JSDOMWindowBase.h
r108259 r118018 64 64 static bool supportsRichSourceInfo(const JSC::JSGlobalObject*); 65 65 static bool shouldInterruptScript(const JSC::JSGlobalObject*); 66 static bool javaScriptExperimentsEnabled(const JSC::JSGlobalObject*); 66 67 static bool allowsAccessFrom(const JSC::JSGlobalObject*, JSC::ExecState*); 67 68 -
trunk/Source/WebCore/page/Settings.cpp
r117613 r118018 175 175 , m_forceFTPDirectoryListings(false) 176 176 , m_developerExtrasEnabled(false) 177 , m_javaScriptExperimentsEnabled(false) 177 178 , m_authorAndUserStylesEnabled(true) 178 179 , m_needsSiteSpecificQuirks(false) … … 666 667 } 667 668 669 void Settings::setJavaScriptExperimentsEnabled(bool javaScriptExperimentsEnabled) 670 { 671 m_javaScriptExperimentsEnabled = javaScriptExperimentsEnabled; 672 } 673 668 674 void Settings::setAuthorAndUserStylesEnabled(bool authorAndUserStylesEnabled) 669 675 { -
trunk/Source/WebCore/page/Settings.h
r117613 r118018 261 261 void setDeveloperExtrasEnabled(bool); 262 262 bool developerExtrasEnabled() const { return m_developerExtrasEnabled; } 263 264 void setJavaScriptExperimentsEnabled(bool); 265 bool javaScriptExperimentsEnabled() const { return m_javaScriptExperimentsEnabled; } 263 266 264 267 void setFrameFlatteningEnabled(bool); … … 640 643 bool m_forceFTPDirectoryListings : 1; 641 644 bool m_developerExtrasEnabled : 1; 645 bool m_javaScriptExperimentsEnabled : 1; 642 646 bool m_authorAndUserStylesEnabled : 1; 643 647 bool m_needsSiteSpecificQuirks : 1; -
trunk/Source/WebKit/mac/ChangeLog
r117859 r118018 1 2012-05-21 Gavin Barraclough <barraclough@apple.com> 2 3 Disable private names by default in WebCore 4 https://bugs.webkit.org/show_bug.cgi?id=87088 5 6 Reviewed by Geoff Garen. 7 8 r117859 introduced a preliminary implementation of ES6-like private name objects to JSC. 9 These are probably not yet ready to be web-facing, so disabling by default in WebCore. 10 Opting-in for JSC & DumpRenderTree so that we can still run the fast/js/names.html test. 11 12 * WebView/WebPreferenceKeysPrivate.h: 13 * WebView/WebPreferences.mm: 14 (+[WebPreferences initialize]): 15 (-[WebPreferences setJavaScriptExperimentsEnabled:]): 16 (-[WebPreferences javaScriptExperimentsEnabled]): 17 * WebView/WebPreferencesPrivate.h: 18 * WebView/WebView.mm: 19 (-[WebView _preferencesChanged:]): 20 - Added JavaScriptExperimentsEnabled to WebPreferences. 21 1 22 2012-05-15 Gavin Barraclough <barraclough@apple.com> 2 23 -
trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h
r117771 r118018 80 80 #define WebKitForceFTPDirectoryListings @"WebKitForceFTPDirectoryListings" 81 81 #define WebKitDeveloperExtrasEnabledPreferenceKey @"WebKitDeveloperExtrasEnabledPreferenceKey" 82 #define WebKitJavaScriptExperimentsEnabledPreferenceKey @"WebKitJavaScriptExperimentsEnabledPreferenceKey" 82 83 #define WebKitAuthorAndUserStylesEnabledPreferenceKey @"WebKitAuthorAndUserStylesEnabledPreferenceKey" 83 84 #define WebKitApplicationChromeModeEnabledPreferenceKey @"WebKitApplicationChromeModeEnabledPreferenceKey" -
trunk/Source/WebKit/mac/WebView/WebPreferences.mm
r117771 r118018 358 358 [NSNumber numberWithBool:YES], WebKitPageCacheSupportsPluginsPreferenceKey, 359 359 [NSNumber numberWithBool:NO], WebKitDeveloperExtrasEnabledPreferenceKey, 360 [NSNumber numberWithBool:NO], WebKitJavaScriptExperimentsEnabledPreferenceKey, 360 361 [NSNumber numberWithBool:YES], WebKitAuthorAndUserStylesEnabledPreferenceKey, 361 362 [NSNumber numberWithBool:NO], WebKitApplicationChromeModeEnabledPreferenceKey, … … 853 854 } 854 855 856 - (void)setJavaScriptExperimentsEnabled:(BOOL)flag 857 { 858 [self _setBoolValue:flag forKey:WebKitJavaScriptExperimentsEnabledPreferenceKey]; 859 } 860 861 - (BOOL)javaScriptExperimentsEnabled 862 { 863 return [self _boolValueForKey:WebKitJavaScriptExperimentsEnabledPreferenceKey]; 864 } 865 855 866 - (void)setDeveloperExtrasEnabled:(BOOL)flag 856 867 { -
trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h
r117771 r118018 58 58 - (void)setDeveloperExtrasEnabled:(BOOL)flag; 59 59 60 - (BOOL)javaScriptExperimentsEnabled; 61 - (void)setJavaScriptExperimentsEnabled:(BOOL)flag; 62 60 63 - (BOOL)authorAndUserStylesEnabled; 61 64 - (void)setAuthorAndUserStylesEnabled:(BOOL)flag; -
trunk/Source/WebKit/mac/WebView/WebView.mm
r117771 r118018 1454 1454 settings->setShowsToolTipOverTruncatedText([preferences showsToolTipOverTruncatedText]); 1455 1455 settings->setDeveloperExtrasEnabled([preferences developerExtrasEnabled]); 1456 settings->setJavaScriptExperimentsEnabled([preferences javaScriptExperimentsEnabled]); 1456 1457 settings->setAuthorAndUserStylesEnabled([preferences authorAndUserStylesEnabled]); 1457 1458 settings->setApplicationChromeMode([preferences applicationChromeModeEnabled]); -
trunk/Source/WebKit2/ChangeLog
r117968 r118018 1 2012-05-21 Gavin Barraclough <barraclough@apple.com> 2 3 Disable private names by default in WebCore 4 https://bugs.webkit.org/show_bug.cgi?id=87088 5 6 Reviewed by Geoff Garen. 7 8 r117859 introduced a preliminary implementation of ES6-like private name objects to JSC. 9 These are probably not yet ready to be web-facing, so disabling by default in WebCore. 10 Opting-in for JSC & DumpRenderTree so that we can still run the fast/js/names.html test. 11 12 * Shared/WebPreferencesStore.h: 13 (WebKit): 14 * UIProcess/API/C/WKPreferences.cpp: 15 (WKPreferencesSetJavaScriptExperimentsEnabled): 16 (WKPreferencesGetJavaScriptExperimentsEnabled): 17 * UIProcess/API/C/WKPreferences.h: 18 * WebProcess/WebPage/WebPage.cpp: 19 (WebKit::WebPage::updatePreferences): 20 - Added JavaScriptExperimentsEnabled to WebPreferences. 21 1 22 2012-05-22 Kenneth Rohde Christiansen <kenneth@webkit.org> 2 23 -
trunk/Source/WebKit2/Shared/WebPreferencesStore.h
r117613 r118018 62 62 macro(FrameFlatteningEnabled, frameFlatteningEnabled, Bool, bool, false) \ 63 63 macro(DeveloperExtrasEnabled, developerExtrasEnabled, Bool, bool, false) \ 64 macro(JavaScriptExperimentsEnabled, javaScriptExperimentsEnabled, Bool, bool, false) \ 64 65 macro(PrivateBrowsingEnabled, privateBrowsingEnabled, Bool, bool, false) \ 65 66 macro(TextAreasAreResizable, textAreasAreResizable, Bool, bool, true) \ -
trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp
r117613 r118018 329 329 } 330 330 331 void WKPreferencesSetJavaScriptExperimentsEnabled(WKPreferencesRef preferencesRef, bool enabled) 332 { 333 toImpl(preferencesRef)->setJavaScriptExperimentsEnabled(enabled); 334 } 335 336 bool WKPreferencesGetJavaScriptExperimentsEnabled(WKPreferencesRef preferencesRef) 337 { 338 return toImpl(preferencesRef)->javaScriptExperimentsEnabled(); 339 } 340 331 341 void WKPreferencesSetTextAreasAreResizable(WKPreferencesRef preferencesRef, bool resizable) 332 342 { -
trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.h
r113486 r118018 134 134 WK_EXPORT bool WKPreferencesGetDeveloperExtrasEnabled(WKPreferencesRef preferencesRef); 135 135 136 // Defaults to false. 137 WK_EXPORT void WKPreferencesSetJavaScriptExperimentsEnabled(WKPreferencesRef preferencesRef, bool enabled); 138 WK_EXPORT bool WKPreferencesGetJavaScriptExperimentsEnabled(WKPreferencesRef preferencesRef); 139 136 140 // Defaults to true. 137 141 WK_EXPORT void WKPreferencesSetTextAreasAreResizable(WKPreferencesRef preferencesRef, bool resizable); -
trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp
r117869 r118018 1945 1945 settings->setPrivateBrowsingEnabled(store.getBoolValueForKey(WebPreferencesKey::privateBrowsingEnabledKey())); 1946 1946 settings->setDeveloperExtrasEnabled(store.getBoolValueForKey(WebPreferencesKey::developerExtrasEnabledKey())); 1947 settings->setJavaScriptExperimentsEnabled(store.getBoolValueForKey(WebPreferencesKey::javaScriptExperimentsEnabledKey())); 1947 1948 settings->setTextAreasAreResizable(store.getBoolValueForKey(WebPreferencesKey::textAreasAreResizableKey())); 1948 1949 settings->setNeedsSiteSpecificQuirks(store.getBoolValueForKey(WebPreferencesKey::needsSiteSpecificQuirksKey())); -
trunk/Tools/ChangeLog
r118009 r118018 1 2012-05-21 Gavin Barraclough <barraclough@apple.com> 2 3 Disable private names by default in WebCore 4 https://bugs.webkit.org/show_bug.cgi?id=87088 5 6 Reviewed by Geoff Garen. 7 8 r117859 introduced a preliminary implementation of ES6-like private name objects to JSC. 9 These are probably not yet ready to be web-facing, so disabling by default in WebCore. 10 Opting-in for JSC & DumpRenderTree so that we can still run the fast/js/names.html test. 11 12 * DumpRenderTree/mac/DumpRenderTree.mm: 13 (resetDefaultsToConsistentValues): 14 - Enable private name support in DRT. 15 * WebKitTestRunner/TestController.cpp: 16 (WTR::TestController::resetStateToConsistentValues): 17 - Enable private name support in WKTR. 18 1 19 2012-05-22 Martin Robinson <mrobinson@igalia.com> 2 20 -
trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm
r117771 r118018 640 640 [preferences setOfflineWebApplicationCacheEnabled:YES]; 641 641 [preferences setDeveloperExtrasEnabled:NO]; 642 [preferences setJavaScriptExperimentsEnabled:YES]; 642 643 [preferences setLoadsImagesAutomatically:YES]; 643 644 [preferences setLoadsSiteIconsIgnoringImageLoadingPreference:NO]; -
trunk/Tools/WebKitTestRunner/TestController.cpp
r117827 r118018 443 443 WKPreferencesSetWebAudioEnabled(preferences, true); 444 444 WKPreferencesSetDeveloperExtrasEnabled(preferences, true); 445 WKPreferencesSetJavaScriptExperimentsEnabled(preferences, true); 445 446 WKPreferencesSetJavaScriptCanOpenWindowsAutomatically(preferences, true); 446 447 WKPreferencesSetJavaScriptCanAccessClipboard(preferences, true);
Note: See TracChangeset
for help on using the changeset viewer.