../WebCore: [Windows] Refactor RuntimeEnabledFeatures as a Singleton
authorbfulgham@apple.com <bfulgham@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 25 Sep 2013 22:18:34 +0000 (22:18 +0000)
committerbfulgham@apple.com <bfulgham@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 25 Sep 2013 22:18:34 +0000 (22:18 +0000)
commita6f3d0472c6d57e252a6f7bb10832958a1ddd869
tree907ed84824cc7c5e37180b885408e57dacb77afa
parent8a0aa8eefc0f606c2091f6a36bfdb4b3d6260727
../WebCore: [Windows] Refactor RuntimeEnabledFeatures as a Singleton
https://bugs.webkit.org/show_bug.cgi?id=121883

Windows is experiencing crashes when client programs (such as
DumpRenderTree) attemp to change settings on the RuntimeEnabledFeatures
object. The inlined static accessor methods are not accessing
memory safely (when compiled by Visual Studio) resulting in
crashes.

Reviewed by Jer Noble.

* WebCore.exp.in: Remove static accessors for RuntimeEnabledFeatures.
* bindings/generic/RuntimeEnabledFeatures.cpp: Switch methods to
conform to a singleton pattern.
(WebCore::RuntimeEnabledFeatures::RuntimeEnabledFeatures):
(WebCore::RuntimeEnabledFeatures::sharedRuntimeEnabledFeatures):
(WebCore::RuntimeEnabledFeatures::fileSystemEnabled):
(WebCore::RuntimeEnabledFeatures::javaScriptI18NAPIEnabled):
(WebCore::RuntimeEnabledFeatures::audioEnabled):
(WebCore::RuntimeEnabledFeatures::htmlMediaElementEnabled):
(WebCore::RuntimeEnabledFeatures::htmlAudioElementEnabled):
(WebCore::RuntimeEnabledFeatures::htmlVideoElementEnabled):
(WebCore::RuntimeEnabledFeatures::htmlSourceElementEnabled):
(WebCore::RuntimeEnabledFeatures::mediaControllerEnabled):
(WebCore::RuntimeEnabledFeatures::mediaErrorEnabled):
(WebCore::RuntimeEnabledFeatures::timeRangesEnabled):
(WebCore::RuntimeEnabledFeatures::sharedWorkerEnabled):
(WebCore::RuntimeEnabledFeatures::webSocketEnabled):
(WebCore::RuntimeEnabledFeatures::openDatabaseEnabled):
(WebCore::RuntimeEnabledFeatures::openDatabaseSyncEnabled):
* bindings/generic/RuntimeEnabledFeatures.h: Ditto.
(WebCore::RuntimeEnabledFeatures::setLocalStorageEnabled):
(WebCore::RuntimeEnabledFeatures::localStorageEnabled):
(WebCore::RuntimeEnabledFeatures::setSessionStorageEnabled):
(WebCore::RuntimeEnabledFeatures::sessionStorageEnabled):
(WebCore::RuntimeEnabledFeatures::setWebkitNotificationsEnabled):
(WebCore::RuntimeEnabledFeatures::webkitNotificationsEnabled):
(WebCore::RuntimeEnabledFeatures::setApplicationCacheEnabled):
(WebCore::RuntimeEnabledFeatures::applicationCacheEnabled):
(WebCore::RuntimeEnabledFeatures::setDataTransferItemsEnabled):
(WebCore::RuntimeEnabledFeatures::dataTransferItemsEnabled):
(WebCore::RuntimeEnabledFeatures::setGeolocationEnabled):
(WebCore::RuntimeEnabledFeatures::geolocationEnabled):
(WebCore::RuntimeEnabledFeatures::setWebkitIndexedDBEnabled):
(WebCore::RuntimeEnabledFeatures::webkitIndexedDBEnabled):
(WebCore::RuntimeEnabledFeatures::indexedDBEnabled):
(WebCore::RuntimeEnabledFeatures::setCanvasPathEnabled):
(WebCore::RuntimeEnabledFeatures::canvasPathEnabled):
(WebCore::RuntimeEnabledFeatures::setCSSExclusionsEnabled):
(WebCore::RuntimeEnabledFeatures::cssExclusionsEnabled):
(WebCore::RuntimeEnabledFeatures::setCSSShapesEnabled):
(WebCore::RuntimeEnabledFeatures::cssShapesEnabled):
(WebCore::RuntimeEnabledFeatures::setCSSRegionsEnabled):
(WebCore::RuntimeEnabledFeatures::cssRegionsEnabled):
(WebCore::RuntimeEnabledFeatures::setCSSCompositingEnabled):
(WebCore::RuntimeEnabledFeatures::cssCompositingEnabled):
(WebCore::RuntimeEnabledFeatures::setFontLoadEventsEnabled):
(WebCore::RuntimeEnabledFeatures::fontLoadEventsEnabled):
(WebCore::RuntimeEnabledFeatures::webkitFullScreenAPIEnabled):
(WebCore::RuntimeEnabledFeatures::setWebkitFullScreenAPIEnabled):
(WebCore::RuntimeEnabledFeatures::webkitRequestFullScreenEnabled):
(WebCore::RuntimeEnabledFeatures::webkitIsFullScreenEnabled):
(WebCore::RuntimeEnabledFeatures::webkitFullScreenKeyboardInputAllowedEnabled):
(WebCore::RuntimeEnabledFeatures::webkitCurrentFullScreenElementEnabled):
(WebCore::RuntimeEnabledFeatures::webkitCancelFullScreenEnabled):
(WebCore::RuntimeEnabledFeatures::webkitFullscreenEnabledEnabled):
(WebCore::RuntimeEnabledFeatures::webkitFullscreenElementEnabled):
(WebCore::RuntimeEnabledFeatures::webkitExitFullscreenEnabled):
(WebCore::RuntimeEnabledFeatures::webkitRequestFullscreenEnabled):
(WebCore::RuntimeEnabledFeatures::touchEnabled):
(WebCore::RuntimeEnabledFeatures::setTouchEnabled):
(WebCore::RuntimeEnabledFeatures::setDeviceMotionEnabled):
(WebCore::RuntimeEnabledFeatures::deviceMotionEnabled):
(WebCore::RuntimeEnabledFeatures::deviceMotionEventEnabled):
(WebCore::RuntimeEnabledFeatures::ondevicemotionEnabled):
(WebCore::RuntimeEnabledFeatures::setDeviceOrientationEnabled):
(WebCore::RuntimeEnabledFeatures::deviceOrientationEnabled):
(WebCore::RuntimeEnabledFeatures::deviceOrientationEventEnabled):
(WebCore::RuntimeEnabledFeatures::ondeviceorientationEnabled):
(WebCore::RuntimeEnabledFeatures::setSpeechInputEnabled):
(WebCore::RuntimeEnabledFeatures::speechInputEnabled):
(WebCore::RuntimeEnabledFeatures::webkitSpeechEnabled):
(WebCore::RuntimeEnabledFeatures::webkitGrammarEnabled):
(WebCore::RuntimeEnabledFeatures::setScriptedSpeechEnabled):
(WebCore::RuntimeEnabledFeatures::scriptedSpeechEnabled):
(WebCore::RuntimeEnabledFeatures::webkitSpeechRecognitionEnabled):
(WebCore::RuntimeEnabledFeatures::webkitSpeechRecognitionErrorEnabled):
(WebCore::RuntimeEnabledFeatures::webkitSpeechRecognitionEventEnabled):
(WebCore::RuntimeEnabledFeatures::webkitSpeechGrammarEnabled):
(WebCore::RuntimeEnabledFeatures::webkitSpeechGrammarListEnabled):
(WebCore::RuntimeEnabledFeatures::setFileSystemEnabled):
(WebCore::RuntimeEnabledFeatures::setJavaScriptI18NAPIEnabled):
(WebCore::RuntimeEnabledFeatures::mediaStreamEnabled):
(WebCore::RuntimeEnabledFeatures::setMediaStreamEnabled):
(WebCore::RuntimeEnabledFeatures::webkitGetUserMediaEnabled):
(WebCore::RuntimeEnabledFeatures::webkitMediaStreamEnabled):
(WebCore::RuntimeEnabledFeatures::peerConnectionEnabled):
(WebCore::RuntimeEnabledFeatures::setPeerConnectionEnabled):
(WebCore::RuntimeEnabledFeatures::webkitRTCPeerConnectionEnabled):
(WebCore::RuntimeEnabledFeatures::setLegacyCSSVendorPrefixesEnabled):
(WebCore::RuntimeEnabledFeatures::legacyCSSVendorPrefixesEnabled):
(WebCore::RuntimeEnabledFeatures::setWebkitGetGamepadsEnabled):
(WebCore::RuntimeEnabledFeatures::webkitGetGamepadsEnabled):
(WebCore::RuntimeEnabledFeatures::quotaEnabled):
(WebCore::RuntimeEnabledFeatures::setQuotaEnabled):
(WebCore::RuntimeEnabledFeatures::mediaSourceEnabled):
(WebCore::RuntimeEnabledFeatures::setMediaSourceEnabled):
(WebCore::RuntimeEnabledFeatures::encryptedMediaEnabled):
(WebCore::RuntimeEnabledFeatures::setEncryptedMediaEnabled):
(WebCore::RuntimeEnabledFeatures::webkitVideoTrackEnabled):
(WebCore::RuntimeEnabledFeatures::setWebkitVideoTrackEnabled):
(WebCore::RuntimeEnabledFeatures::shadowDOMEnabled):
(WebCore::RuntimeEnabledFeatures::setShadowDOMEnabled):
(WebCore::RuntimeEnabledFeatures::authorShadowDOMForAnyElementEnabled):
(WebCore::RuntimeEnabledFeatures::setAuthorShadowDOMForAnyElementEnabled):
(WebCore::RuntimeEnabledFeatures::customDOMElementsEnabled):
(WebCore::RuntimeEnabledFeatures::setCustomDOMElements):
(WebCore::RuntimeEnabledFeatures::styleScopedEnabled):
(WebCore::RuntimeEnabledFeatures::setStyleScopedEnabled):
(WebCore::RuntimeEnabledFeatures::inputTypeDateEnabled):
(WebCore::RuntimeEnabledFeatures::setInputTypeDateEnabled):
(WebCore::RuntimeEnabledFeatures::inputTypeDateTimeEnabled):
(WebCore::RuntimeEnabledFeatures::setInputTypeDateTimeEnabled):
(WebCore::RuntimeEnabledFeatures::inputTypeDateTimeLocalEnabled):
(WebCore::RuntimeEnabledFeatures::setInputTypeDateTimeLocalEnabled):
(WebCore::RuntimeEnabledFeatures::inputTypeMonthEnabled):
(WebCore::RuntimeEnabledFeatures::setInputTypeMonthEnabled):
(WebCore::RuntimeEnabledFeatures::inputTypeTimeEnabled):
(WebCore::RuntimeEnabledFeatures::setInputTypeTimeEnabled):
(WebCore::RuntimeEnabledFeatures::inputTypeWeekEnabled):
(WebCore::RuntimeEnabledFeatures::setInputTypeWeekEnabled):
(WebCore::RuntimeEnabledFeatures::experimentalContentSecurityPolicyFeaturesEnabled):
(WebCore::RuntimeEnabledFeatures::setExperimentalContentSecurityPolicyFeaturesEnabled):
(WebCore::RuntimeEnabledFeatures::seamlessIFramesEnabled):
(WebCore::RuntimeEnabledFeatures::setSeamlessIFramesEnabled):
(WebCore::RuntimeEnabledFeatures::langAttributeAwareFormControlUIEnabled):
(WebCore::RuntimeEnabledFeatures::setLangAttributeAwareFormControlUIEnabled):
* bindings/js/JSCSSStyleDeclarationCustom.cpp:
(WebCore::getCSSPropertyNamePrefix): Use singleton accessors.
(WebCore::cssPropertyIDForJSCSSPropertyName): Ditto.
* bindings/scripts/CodeGeneratorJS.pm:
(GetRuntimeEnableFunctionName): Generate singleton version of
accessors.
* css/CSSFontFace.cpp:
(WebCore::CSSFontFace::fontLoaded): Use singleton accessors.
(WebCore::CSSFontFace::getFontData): Ditto.
* css/CSSFontSelector.cpp:
(WebCore::CSSFontSelector::addFontFaceRule): Ditto.
* css/CSSParser.cpp:
(WebCore::isSimpleLengthPropertyID): Ditto.
(WebCore::isValidKeywordPropertyAndValue):
(WebCore::CSSParser::parseValue):
(WebCore::CSSParser::rewriteSpecifiers):
* css/CSSSegmentedFontFace.cpp:
(WebCore::CSSSegmentedFontFace::fontLoaded): Ditto.
* css/StyleResolver.h:
(WebCore::StyleResolver::ensureScopeResolver): Ditto.
* dom/Document.cpp:
(WebCore::Document::cssRegionsEnabled): Ditto.
(WebCore::Document::cssCompositingEnabled):
(WebCore::Document::shouldDisplaySeamlesslyWithParent):
(WebCore::Document::getCachedLocale):
* dom/Element.cpp:
(WebCore::Element::createShadowRoot): Ditto.
* dom/Position.cpp:
(WebCore::Position::Position): Ditto.
(WebCore::Position::findParent):
* dom/TreeScope.cpp:
(WebCore::TreeScope::getSelection): Ditto.
* dom/make_names.pl:
(printConstructorInterior): Generate singleton version of accessors.
(printWrapperFunctions): Ditto.
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::isSpeechEnabled): Use singleton accessors.
(WebCore::HTMLInputElement::setupDateTimeChooserParameters): Ditto.
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::finishParsingChildren): Ditto.
(WebCore::HTMLMediaElement::scheduleDelayedAction):
(WebCore::HTMLMediaElement::loadTimerFired):
(WebCore::HTMLMediaElement::prepareForLoad):
(WebCore::HTMLMediaElement::loadInternal):
(WebCore::HTMLMediaElement::setReadyState):
(WebCore::HTMLMediaElement::playbackProgressTimerFired):
(WebCore::HTMLMediaElement::mediaPlayerDidAddAudioTrack):
(WebCore::HTMLMediaElement::mediaPlayerDidAddTextTrack):
(WebCore::HTMLMediaElement::mediaPlayerDidAddVideoTrack):
(WebCore::HTMLMediaElement::addAudioTrack):
(WebCore::HTMLMediaElement::addTextTrack):
(WebCore::HTMLMediaElement::addVideoTrack):
(WebCore::HTMLMediaElement::removeAudioTrack):
(WebCore::HTMLMediaElement::removeTextTrack):
(WebCore::HTMLMediaElement::removeVideoTrack):
(WebCore::HTMLMediaElement::audioTracks):
(WebCore::HTMLMediaElement::textTracks):
(WebCore::HTMLMediaElement::videoTracks):
(WebCore::HTMLMediaElement::didAddTextTrack):
(WebCore::HTMLMediaElement::didRemoveTextTrack):
(WebCore::HTMLMediaElement::mediaPlayerTimeChanged):
(WebCore::HTMLMediaElement::userCancelledLoad):
(WebCore::HTMLMediaElement::hasClosedCaptions):
(WebCore::HTMLMediaElement::setClosedCaptionsVisible):
(WebCore::HTMLMediaElement::configureTextTrackDisplay):
* html/HTMLStyleElement.cpp:
(WebCore::HTMLStyleElement::parseAttribute): Ditto.
(WebCore::HTMLStyleElement::scopedAttributeChanged):
(WebCore::HTMLStyleElement::unregisterWithScopingNode):
(WebCore::HTMLStyleElement::scoped):
* html/HTMLTrackElement.cpp:
(WebCore::HTMLTrackElement::parseAttribute): Ditto.
(WebCore::HTMLTrackElement::scheduleLoad):
(WebCore::HTMLTrackElement::canLoadUrl):
* html/InputType.cpp:
(WebCore::createInputTypeFactoryMap): Ditto.
* page/ContentSecurityPolicy.cpp:
(WebCore::ContentSecurityPolicy::experimentalFeaturesEnabled): Ditto.
* page/DOMWindow.cpp:
(WebCore::DOMWindow::addEventListener): Ditto.
* page/FrameView.cpp:
(WebCore::FrameView::performPostLayoutTasks): Ditto.
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::Backup::Backup): Ditto.
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setShadowDOMEnabled):
(WebCore::InternalSettings::setAuthorShadowDOMForAnyElementEnabled):
(WebCore::InternalSettings::setStyleScopedEnabled):
(WebCore::InternalSettings::setCSSExclusionsEnabled):
(WebCore::InternalSettings::setCSSShapesEnabled):
(WebCore::InternalSettings::setLangAttributeAwareFormControlUIEnabled):

../WebKit: [Windows] Refactor RuntimeEnabledFeatures as a Singleton
https://bugs.webkit.org/show_bug.cgi?id=121883

Reviewed by Jer Noble.

* WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
Expose singleton accessor for DLL clients.

../WebKit/blackberry: Refactor RuntimeEnabledFeatures as a Singleton.
https://bugs.webkit.org/show_bug.cgi?id=121883.

Reviewed by Jer Noble.

* WebKitSupport/DumpRenderTreeSupport.cpp:
(DumpRenderTreeSupport::setStyleScopedEnabled): use
singleton accessor.

../WebKit/efl: Refactor RuntimeEnabledFeatures as a Singleton.
https://bugs.webkit.org/show_bug.cgi?id=121883.

Reviewed by Jer Noble.

* WebCoreSupport/DumpRenderTreeSupportEfl.cpp:
(DumpRenderTreeSupportEfl::setCSSRegionsEnabled): Use singleton.
(DumpRenderTreeSupportEfl::setSeamlessIFramesEnabled): Ditto.
* ewk/ewk_settings.cpp:
(ewk_settings_shadow_dom_enable_get): Ditto.
(ewk_settings_shadow_dom_enable_set):
* ewk/ewk_view.cpp:
(_ewk_view_priv_new): Ditto.

../WebKit/gtk: Refactor RuntimeEnabledFeatures as a Singleton.
https://bugs.webkit.org/show_bug.cgi?id=121883.

Reviewed by Jer Noble.

* WebCoreSupport/DumpRenderTreeSupportGtk.cpp:
(DumpRenderTreeSupportGtk::setCSSRegionsEnabled): Use singleton.
(DumpRenderTreeSupportGtk::setExperimentalContentSecurityPolicyFeaturesEnabled):
(DumpRenderTreeSupportGtk::setSeamlessIFramesEnabled):
(DumpRenderTreeSupportGtk::setShadowDOMEnabled):
(DumpRenderTreeSupportGtk::setStyleScopedEnabled):
* webkit/webkitwebview.cpp:
(webkit_web_view_update_settings): Ditto.

../WebKit/mac: Refactor RuntimeEnabledFeatures as a Singleton.
https://bugs.webkit.org/show_bug.cgi?id=121883.

Reviewed by Jer Noble.

* WebView/WebView.mm:
(-[WebView _preferencesChanged:]): Use singleton accessor.
(-[WebView _setDashboardBehavior:to:]): Ditto.

../WebKit/qt: Refactor RuntimeEnabledFeatures as a Singleton.
https://bugs.webkit.org/show_bug.cgi?id=121883.

Reviewed by Jer Noble.

* Api/qwebsettings.cpp:
(QWebSettingsPrivate::apply): Use singleton accessor.
* WebCoreSupport/DumpRenderTreeSupportQt.cpp:
(DumpRenderTreeSupportQt::setSeamlessIFramesEnabled): Ditto.

../WebKit/win: [Windows] Refactor RuntimeEnabledFeatures as a Singleton.
https://bugs.webkit.org/show_bug.cgi?id=121883

Reviewed by Jer Noble.

* WebView.cpp:
(WebView::notifyPreferencesChanged): Use singleton accessor

../WebKit2: Refactor RuntimeEnabledFeatures as a Singleton.
https://bugs.webkit.org/show_bug.cgi?id=121883.

Reviewed by Jer Noble.

* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): Use
Singleton accessor.
(WebKit::InjectedBundle::setShadowDOMEnabled):
(WebKit::InjectedBundle::setCSSRegionsEnabled):
(WebKit::InjectedBundle::setCSSCompositingEnabled):
(WebKit::InjectedBundle::setSeamlessIFramesEnabled):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences): Ditto.
* WebProcess/qt/WebProcessQt.cpp:
(WebKit::WebProcess::platformInitializeWebProcess): Ditto.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@156424 268f45cc-cd09-0410-ab3c-d52691b4dbfc
47 files changed:
Source/WebCore/ChangeLog
Source/WebCore/WebCore.exp.in
Source/WebCore/bindings/generic/RuntimeEnabledFeatures.cpp
Source/WebCore/bindings/generic/RuntimeEnabledFeatures.h
Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp
Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
Source/WebCore/css/CSSFontFace.cpp
Source/WebCore/css/CSSFontSelector.cpp
Source/WebCore/css/CSSParser.cpp
Source/WebCore/css/CSSSegmentedFontFace.cpp
Source/WebCore/css/StyleResolver.h
Source/WebCore/dom/Document.cpp
Source/WebCore/dom/Element.cpp
Source/WebCore/dom/Position.cpp
Source/WebCore/dom/TreeScope.cpp
Source/WebCore/dom/make_names.pl
Source/WebCore/html/HTMLInputElement.cpp
Source/WebCore/html/HTMLMediaElement.cpp
Source/WebCore/html/HTMLStyleElement.cpp
Source/WebCore/html/HTMLTrackElement.cpp
Source/WebCore/html/InputType.cpp
Source/WebCore/page/ContentSecurityPolicy.cpp
Source/WebCore/page/DOMWindow.cpp
Source/WebCore/page/FrameView.cpp
Source/WebCore/testing/InternalSettings.cpp
Source/WebKit/ChangeLog
Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in
Source/WebKit/blackberry/ChangeLog
Source/WebKit/blackberry/WebKitSupport/DumpRenderTreeSupport.cpp
Source/WebKit/efl/ChangeLog
Source/WebKit/efl/WebCoreSupport/DumpRenderTreeSupportEfl.cpp
Source/WebKit/efl/ewk/ewk_settings.cpp
Source/WebKit/efl/ewk/ewk_view.cpp
Source/WebKit/gtk/ChangeLog
Source/WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.cpp
Source/WebKit/gtk/webkit/webkitwebview.cpp
Source/WebKit/mac/ChangeLog
Source/WebKit/mac/WebView/WebView.mm
Source/WebKit/qt/Api/qwebsettings.cpp
Source/WebKit/qt/ChangeLog
Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.cpp
Source/WebKit/win/ChangeLog
Source/WebKit/win/WebView.cpp
Source/WebKit2/ChangeLog
Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp
Source/WebKit2/WebProcess/WebPage/WebPage.cpp
Source/WebKit2/WebProcess/qt/WebProcessQt.cpp