RuntimeEnabledFeatures.h [plain text]
#ifndef RuntimeEnabledFeatures_h
#define RuntimeEnabledFeatures_h
#include "PlatformExportMacros.h"
#include <wtf/NeverDestroyed.h>
namespace WebCore {
class RuntimeEnabledFeatures {
WTF_MAKE_NONCOPYABLE(RuntimeEnabledFeatures);
public:
void setLocalStorageEnabled(bool isEnabled) { m_isLocalStorageEnabled = isEnabled; }
bool localStorageEnabled() const { return m_isLocalStorageEnabled; }
void setSessionStorageEnabled(bool isEnabled) { m_isSessionStorageEnabled = isEnabled; }
bool sessionStorageEnabled() const { return m_isSessionStorageEnabled; }
void setWebkitNotificationsEnabled(bool isEnabled) { m_isWebkitNotificationsEnabled = isEnabled; }
bool webkitNotificationsEnabled() const { return m_isWebkitNotificationsEnabled; }
void setApplicationCacheEnabled(bool isEnabled) { m_isApplicationCacheEnabled = isEnabled; }
bool applicationCacheEnabled() const { return m_isApplicationCacheEnabled; }
void setDataTransferItemsEnabled(bool isEnabled) { m_isDataTransferItemsEnabled = isEnabled; }
bool dataTransferItemsEnabled() const { return m_isDataTransferItemsEnabled; }
void setGeolocationEnabled(bool isEnabled) { m_isGeolocationEnabled = isEnabled; }
bool geolocationEnabled() const { return m_isGeolocationEnabled; }
void setWebkitIndexedDBEnabled(bool isEnabled) { m_isIndexedDBEnabled = isEnabled; }
bool webkitIndexedDBEnabled() const { return m_isIndexedDBEnabled; }
bool indexedDBEnabled() const { return m_isIndexedDBEnabled; }
#if ENABLE(CSS_SHAPES)
void setCSSShapesEnabled(bool isEnabled) { m_isCSSShapesEnabled = isEnabled; }
bool cssShapesEnabled() const { return m_isCSSShapesEnabled; }
#else
void setCSSShapesEnabled(bool) { }
bool cssShapesEnabled() const { return false; }
#endif
#if ENABLE(CSS_REGIONS)
void setCSSRegionsEnabled(bool isEnabled) { m_isCSSRegionsEnabled = isEnabled; }
bool cssRegionsEnabled() const { return m_isCSSRegionsEnabled; }
#else
void setCSSRegionsEnabled(bool) { }
bool cssRegionsEnabled() const { return false; }
#endif
void setCSSCompositingEnabled(bool isEnabled) { m_isCSSCompositingEnabled = isEnabled; }
bool cssCompositingEnabled() const { return m_isCSSCompositingEnabled; }
#if ENABLE(FONT_LOAD_EVENTS)
void setFontLoadEventsEnabled(bool isEnabled) { m_isFontLoadEventsEnabled = isEnabled; }
bool fontLoadEventsEnabled() const { return m_isFontLoadEventsEnabled; }
#else
void setFontLoadEventsEnabled(bool) { }
bool fontLoadEventsEnabled() { return false; }
#endif
#if ENABLE(VIDEO)
bool audioEnabled() const;
bool htmlMediaElementEnabled() const;
bool htmlAudioElementEnabled() const;
bool htmlVideoElementEnabled() const;
bool htmlSourceElementEnabled() const;
bool mediaControllerEnabled() const;
bool mediaErrorEnabled() const;
bool timeRangesEnabled() const;
#endif
#if ENABLE(WEB_SOCKETS)
bool webSocketEnabled() const;
#endif
#if ENABLE(TOUCH_EVENTS)
bool touchEnabled() const { return m_isTouchEnabled; }
void setTouchEnabled(bool isEnabled) { m_isTouchEnabled = isEnabled; }
#endif
void setDeviceMotionEnabled(bool isEnabled) { m_isDeviceMotionEnabled = isEnabled; }
bool deviceMotionEnabled() const { return m_isDeviceMotionEnabled; }
bool deviceMotionEventEnabled() const { return m_isDeviceMotionEnabled; }
bool ondevicemotionEnabled() const { return m_isDeviceMotionEnabled; }
void setDeviceOrientationEnabled(bool isEnabled) { m_isDeviceOrientationEnabled = isEnabled; }
bool deviceOrientationEnabled() const { return m_isDeviceOrientationEnabled; }
bool deviceOrientationEventEnabled() const { return m_isDeviceOrientationEnabled; }
bool ondeviceorientationEnabled() const { return m_isDeviceOrientationEnabled; }
#if ENABLE(JAVASCRIPT_I18N_API)
bool javaScriptI18NAPIEnabled() const;
void setJavaScriptI18NAPIEnabled(bool isEnabled) { m_isJavaScriptI18NAPIEnabled = isEnabled; }
#endif
#if ENABLE(MEDIA_STREAM)
bool mediaStreamEnabled() const { return m_isMediaStreamEnabled; }
void setMediaStreamEnabled(bool isEnabled) { m_isMediaStreamEnabled = isEnabled; }
bool webkitGetUserMediaEnabled() const { return m_isMediaStreamEnabled; }
bool webkitMediaStreamEnabled() const { return m_isMediaStreamEnabled; }
bool peerConnectionEnabled() const { return m_isMediaStreamEnabled && m_isPeerConnectionEnabled; }
void setPeerConnectionEnabled(bool isEnabled) { m_isPeerConnectionEnabled = isEnabled; }
bool webkitRTCPeerConnectionEnabled() const { return peerConnectionEnabled(); }
#endif
#if ENABLE(LEGACY_CSS_VENDOR_PREFIXES)
void setLegacyCSSVendorPrefixesEnabled(bool isEnabled) { m_isLegacyCSSVendorPrefixesEnabled = isEnabled; }
bool legacyCSSVendorPrefixesEnabled() const { return m_isLegacyCSSVendorPrefixesEnabled; }
#endif
#if ENABLE(VIDEO_TRACK)
bool webkitVideoTrackEnabled() const { return m_isVideoTrackEnabled; }
void setWebkitVideoTrackEnabled(bool isEnabled) { m_isVideoTrackEnabled = isEnabled; }
#endif
#if ENABLE(INPUT_TYPE_DATE)
bool inputTypeDateEnabled() const { return m_isInputTypeDateEnabled; }
void setInputTypeDateEnabled(bool isEnabled) { m_isInputTypeDateEnabled = isEnabled; }
#endif
#if ENABLE(INPUT_TYPE_DATETIME_INCOMPLETE)
bool inputTypeDateTimeEnabled() const { return m_isInputTypeDateTimeEnabled; }
void setInputTypeDateTimeEnabled(bool isEnabled) { m_isInputTypeDateTimeEnabled = isEnabled; }
#endif
#if ENABLE(INPUT_TYPE_DATETIMELOCAL)
bool inputTypeDateTimeLocalEnabled() const { return m_isInputTypeDateTimeLocalEnabled; }
void setInputTypeDateTimeLocalEnabled(bool isEnabled) { m_isInputTypeDateTimeLocalEnabled = isEnabled; }
#endif
#if ENABLE(INPUT_TYPE_MONTH)
bool inputTypeMonthEnabled() const { return m_isInputTypeMonthEnabled; }
void setInputTypeMonthEnabled(bool isEnabled) { m_isInputTypeMonthEnabled = isEnabled; }
#endif
#if ENABLE(INPUT_TYPE_TIME)
bool inputTypeTimeEnabled() const { return m_isInputTypeTimeEnabled; }
void setInputTypeTimeEnabled(bool isEnabled) { m_isInputTypeTimeEnabled = isEnabled; }
#endif
#if ENABLE(INPUT_TYPE_WEEK)
bool inputTypeWeekEnabled() const { return m_isInputTypeWeekEnabled; }
void setInputTypeWeekEnabled(bool isEnabled) { m_isInputTypeWeekEnabled = isEnabled; }
#endif
#if ENABLE(CSP_NEXT)
bool experimentalContentSecurityPolicyFeaturesEnabled() const { return m_areExperimentalContentSecurityPolicyFeaturesEnabled; }
void setExperimentalContentSecurityPolicyFeaturesEnabled(bool isEnabled) { m_areExperimentalContentSecurityPolicyFeaturesEnabled = isEnabled; }
#endif
bool langAttributeAwareFormControlUIEnabled() const { return m_isLangAttributeAwareFormControlUIEnabled; }
void setLangAttributeAwareFormControlUIEnabled(bool isEnabled) { m_isLangAttributeAwareFormControlUIEnabled = isEnabled; }
void setPluginReplacementEnabled(bool isEnabled) { m_isPluginReplacementEnabled = isEnabled; }
bool pluginReplacementEnabled() const { return m_isPluginReplacementEnabled; }
#if ENABLE(GAMEPAD)
void setGamepadsEnabled(bool areEnabled) { m_areGamepadsEnabled = areEnabled; }
bool gamepadsEnabled() const { return m_areGamepadsEnabled; }
#endif
#if ENABLE(CSS_ANIMATIONS_LEVEL_2)
void setAnimationTriggersEnabled(bool areEnabled) { m_areAnimationTriggersEnabled = areEnabled; }
bool animationTriggersEnabled() const { return m_areAnimationTriggersEnabled; }
#endif
WEBCORE_EXPORT static RuntimeEnabledFeatures& sharedFeatures();
private:
RuntimeEnabledFeatures();
bool m_isLocalStorageEnabled;
bool m_isSessionStorageEnabled;
bool m_isWebkitNotificationsEnabled;
bool m_isApplicationCacheEnabled;
bool m_isDataTransferItemsEnabled;
bool m_isGeolocationEnabled;
bool m_isIndexedDBEnabled;
bool m_isTouchEnabled;
bool m_isDeviceMotionEnabled;
bool m_isDeviceOrientationEnabled;
bool m_isCSSShapesEnabled;
bool m_isCSSRegionsEnabled;
bool m_isCSSCompositingEnabled;
bool m_isLangAttributeAwareFormControlUIEnabled;
bool m_isPluginReplacementEnabled;
#if ENABLE(JAVASCRIPT_I18N_API)
bool m_isJavaScriptI18NAPIEnabled;
#endif
#if ENABLE(MEDIA_STREAM)
bool m_isMediaStreamEnabled;
bool m_isPeerConnectionEnabled;
#endif
#if ENABLE(LEGACY_CSS_VENDOR_PREFIXES)
bool m_isLegacyCSSVendorPrefixesEnabled;
#endif
#if ENABLE(VIDEO_TRACK)
bool m_isVideoTrackEnabled;
#endif
#if ENABLE(INPUT_TYPE_DATE)
bool m_isInputTypeDateEnabled;
#endif
#if ENABLE(INPUT_TYPE_DATETIME_INCOMPLETE)
bool m_isInputTypeDateTimeEnabled;
#endif
#if ENABLE(INPUT_TYPE_DATETIMELOCAL)
bool m_isInputTypeDateTimeLocalEnabled;
#endif
#if ENABLE(INPUT_TYPE_MONTH)
bool m_isInputTypeMonthEnabled;
#endif
#if ENABLE(INPUT_TYPE_TIME)
bool m_isInputTypeTimeEnabled;
#endif
#if ENABLE(INPUT_TYPE_WEEK)
bool m_isInputTypeWeekEnabled;
#endif
#if ENABLE(CSP_NEXT)
bool m_areExperimentalContentSecurityPolicyFeaturesEnabled;
#endif
#if ENABLE(FONT_LOAD_EVENTS)
bool m_isFontLoadEventsEnabled;
#endif
#if ENABLE(GAMEPAD)
bool m_areGamepadsEnabled;
#endif
#if ENABLE(CSS_ANIMATIONS_LEVEL_2)
bool m_areAnimationTriggersEnabled;
#endif
friend class WTF::NeverDestroyed<RuntimeEnabledFeatures>;
};
}
#endif // RuntimeEnabledFeatures_h