Changeset 224191 in webkit
- Timestamp:
- Oct 30, 2017 11:16:11 AM (7 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 1 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/CMakeLists.txt
r224154 r224191 909 909 ${WEBKIT_DIR}/Scripts/PreferencesTemplates/WebPageUpdatePreferences.cpp.erb 910 910 ${WEBKIT_DIR}/Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb 911 ${WEBKIT_DIR}/Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb 911 912 ${WEBKIT_DIR}/Scripts/PreferencesTemplates/WebPreferencesKeys.cpp.erb 912 913 ${WEBKIT_DIR}/Scripts/PreferencesTemplates/WebPreferencesKeys.h.erb … … 915 916 916 917 add_custom_command( 917 OUTPUT ${DERIVED_SOURCES_WEBKIT_DIR}/WebPageUpdatePreferences.cpp ${DERIVED_SOURCES_WEBKIT_DIR}/WebPreferencesDefinitions.h ${DERIVED_SOURCES_WEBKIT_DIR}/WebPreferences Keys.cpp ${DERIVED_SOURCES_WEBKIT_DIR}/WebPreferencesKeys.h ${DERIVED_SOURCES_WEBKIT_DIR}/WebPreferencesStoreDefaultsMap.cpp918 OUTPUT ${DERIVED_SOURCES_WEBKIT_DIR}/WebPageUpdatePreferences.cpp ${DERIVED_SOURCES_WEBKIT_DIR}/WebPreferencesDefinitions.h ${DERIVED_SOURCES_WEBKIT_DIR}/WebPreferencesExperimentalFeatures.cpp ${DERIVED_SOURCES_WEBKIT_DIR}/WebPreferencesKeys.cpp ${DERIVED_SOURCES_WEBKIT_DIR}/WebPreferencesKeys.h ${DERIVED_SOURCES_WEBKIT_DIR}/WebPreferencesStoreDefaultsMap.cpp 918 919 MAIN_DEPENDENCY ${WEBKIT_DIR}/Shared/WebPreferences.yaml 919 920 DEPENDS ${WebKit_WEB_PREFERENCES_TEMPLATES} … … 928 929 list(APPEND WebKit_SOURCES 929 930 ${DERIVED_SOURCES_WEBKIT_DIR}/WebPageUpdatePreferences.cpp 931 ${DERIVED_SOURCES_WEBKIT_DIR}/WebPreferencesExperimentalFeatures.cpp 930 932 ${DERIVED_SOURCES_WEBKIT_DIR}/WebPreferencesKeys.cpp 931 933 ${DERIVED_SOURCES_WEBKIT_DIR}/WebPreferencesStoreDefaultsMap.cpp -
trunk/Source/WebKit/ChangeLog
r224189 r224191 1 2017-10-30 Sam Weinig <sam@webkit.org> 2 3 [Settings] Replace macro driven experimental features code with generated code 4 https://bugs.webkit.org/show_bug.cgi?id=178994 5 6 Reviewed by Simon Fraser. 7 8 As a first step toward allowing experimental features to vary based on compile 9 time flags, replace the macro driven implementation of the WebPreferences part 10 of experimental features, with one generated from a template file. 11 12 * CMakeLists.txt: 13 * DerivedSources.make: 14 * Scripts/GeneratePreferences.rb: 15 * WebKit.xcodeproj/project.pbxproj: 16 17 Generate the new template. 18 19 * Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb: Added. 20 * UIProcess/WebPreferences.cpp: 21 (WebKit::createExperimentalFeaturesVector): Deleted. 22 (WebKit::WebPreferences::experimentalFeatures): Deleted. 23 (WebKit::WebPreferences::isEnabledForFeature const): Deleted. 24 (WebKit::WebPreferences::setEnabledForFeature): Deleted. 25 (WebKit::WebPreferences::enableAllExperimentalFeatures): Deleted. 26 27 Replace macro implementation with template generated one. 28 1 29 2017-10-30 Michael Catanzaro <mcatanzaro@igalia.com> 2 30 -
trunk/Source/WebKit/DerivedSources.make
r224154 r224191 291 291 $(WebKit2)/Scripts/PreferencesTemplates/WebPageUpdatePreferences.cpp.erb \ 292 292 $(WebKit2)/Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb \ 293 $(WebKit2)/Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb \ 293 294 $(WebKit2)/Scripts/PreferencesTemplates/WebPreferencesKeys.h.erb \ 294 295 $(WebKit2)/Scripts/PreferencesTemplates/WebPreferencesKeys.cpp.erb \ … … 297 298 # 298 299 299 all : WebP referencesDefinitions.h WebPageUpdatePreferences.cpp WebPreferencesKeys.h WebPreferencesKeys.cpp WebPreferencesStoreDefaultsMap.cpp300 301 WebP referencesDefinitions%h WebPageUpdatePreferences%cpp WebPreferencesKeys%h WebPreferencesKeys%cpp WebPreferencesStoreDefaultsMap%cpp : $(WebKit2)/Scripts/GeneratePreferences.rb $(WEB_PREFERENCES_TEMPLATES) $(WebKit2)/Shared/WebPreferences.yaml300 all : WebPageUpdatePreferences.cpp WebPreferencesDefinitions.h WebPreferencesExperimentalFeatures.cpp WebPreferencesKeys.h WebPreferencesKeys.cpp WebPreferencesStoreDefaultsMap.cpp 301 302 WebPageUpdatePreferences%cpp WebPreferencesDefinitions%h WebPreferencesExperimentalFeatures%cpp WebPreferencesKeys%h WebPreferencesKeys%cpp WebPreferencesStoreDefaultsMap%cpp : $(WebKit2)/Scripts/GeneratePreferences.rb $(WEB_PREFERENCES_TEMPLATES) $(WebKit2)/Shared/WebPreferences.yaml 302 303 $(RUBY) $< --input $(WebKit2)/Shared/WebPreferences.yaml 303 304 -
trunk/Source/WebKit/Scripts/GeneratePreferences.rb
r224154 r224191 160 160 preferences.renderToFile("PreferencesTemplates/WebPreferencesKeys.cpp.erb", File.join(options[:outputDirectory], "WebPreferencesKeys.cpp")) 161 161 preferences.renderToFile("PreferencesTemplates/WebPreferencesStoreDefaultsMap.cpp.erb", File.join(options[:outputDirectory], "WebPreferencesStoreDefaultsMap.cpp")) 162 preferences.renderToFile("PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb", File.join(options[:outputDirectory], "WebPreferencesExperimentalFeatures.cpp")) -
trunk/Source/WebKit/UIProcess/WebPreferences.cpp
r220270 r224191 197 197 #undef DEFINE_PREFERENCE_GETTER_AND_SETTERS 198 198 199 #define DEFINE_EXPERIMENTAL_PREFERENCE_GETTER_AND_SETTERS(KeyUpper, KeyLower, TypeName, Type, DefaultValue, HumanReadableName, HumanReadableDescription) \200 void WebPreferences::set##KeyUpper(const Type& value) \201 { \202 if (!m_store.set##TypeName##ValueForKey(WebPreferencesKey::KeyLower##Key(), value)) \203 return; \204 update##TypeName##ValueForExperimentalFeatureKey(WebPreferencesKey::KeyLower##Key(), value); \205 \206 } \207 \208 Type WebPreferences::KeyLower() const \209 { \210 return m_store.get##TypeName##ValueForKey(WebPreferencesKey::KeyLower##Key()); \211 } \212 213 FOR_EACH_WEBKIT_EXPERIMENTAL_FEATURE_PREFERENCE(DEFINE_EXPERIMENTAL_PREFERENCE_GETTER_AND_SETTERS)214 215 #undef DEFINE_EXPERIMENTAL_PREFERENCE_GETTER_AND_SETTERS216 217 static Vector<RefPtr<API::Object>> createExperimentalFeaturesVector()218 {219 Vector<RefPtr<API::Object>> features;220 221 #define ADD_EXPERIMENTAL_PREFERENCE_DESCRIPTION(KeyUpper, KeyLower, TypeName, Type, DefaultValue, HumanReadableName, HumanReadableDescription) \222 features.append(API::ExperimentalFeature::create(HumanReadableName, #KeyUpper, HumanReadableDescription, DefaultValue)); \223 224 FOR_EACH_WEBKIT_EXPERIMENTAL_FEATURE_PREFERENCE(ADD_EXPERIMENTAL_PREFERENCE_DESCRIPTION)225 226 #undef ADD_EXPERIMENTAL_PREFERENCE_DESCRIPTION227 228 return features;229 }230 231 const Vector<RefPtr<API::Object>>& WebPreferences::experimentalFeatures()232 {233 static NeverDestroyed<Vector<RefPtr<API::Object>>> features = createExperimentalFeaturesVector();234 return features;235 }236 237 bool WebPreferences::isEnabledForFeature(const API::ExperimentalFeature& feature) const238 {239 struct FeatureGetterMapping {240 const char* name;241 bool (WebPreferences::*function) () const;242 };243 244 #define MAKE_FEATURE_GETTER(KeyUpper, KeyLower, TypeName, Type, DefaultValue, HumanReadableName, HumanReadableDescription) \245 { #KeyUpper, &WebPreferences::KeyLower }, \246 247 static FeatureGetterMapping getters[] = {248 FOR_EACH_WEBKIT_EXPERIMENTAL_FEATURE_PREFERENCE(MAKE_FEATURE_GETTER)249 };250 251 #undef MAKE_FEATURE_GETTER252 253 const String& key = feature.key();254 255 for (auto& getter : getters) {256 if (key == getter.name)257 return (this->*getter.function)();258 }259 260 return false;261 }262 263 void WebPreferences::setEnabledForFeature(bool value, const API::ExperimentalFeature& feature)264 {265 struct FeatureSetterMapping {266 const char* name;267 void (WebPreferences::*function) (const bool&);268 };269 270 #define MAKE_FEATURE_SETTER(KeyUpper, KeyLower, TypeName, Type, DefaultValue, HumanReadableName, HumanReadableDescription) \271 { #KeyUpper, &WebPreferences::set##KeyUpper }, \272 273 static FeatureSetterMapping setters[] = {274 FOR_EACH_WEBKIT_EXPERIMENTAL_FEATURE_PREFERENCE(MAKE_FEATURE_SETTER)275 };276 277 #undef MAKE_FEATURE_SETTER278 279 const String& key = feature.key();280 281 for (auto& setter : setters) {282 if (key == setter.name) {283 (this->*setter.function)(value);284 return;285 }286 }287 }288 289 void WebPreferences::enableAllExperimentalFeatures()290 {291 #define SET_FEATURE_ENABLED(KeyUpper, KeyLower, TypeName, Type, DefaultValue, HumanReadableName, HumanReadableDescription) \292 set##KeyUpper(true); \293 294 FOR_EACH_WEBKIT_EXPERIMENTAL_FEATURE_PREFERENCE(SET_FEATURE_ENABLED)295 296 #undef SET_FEATURE_ENABLED297 }298 199 299 200 bool WebPreferences::anyPagesAreUsingPrivateBrowsing() -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r224154 r224191 1357 1357 7CE4D2281A4916C200C7F152 /* WebProcessPoolMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CE4D2261A4916C200C7F152 /* WebProcessPoolMessages.h */; }; 1358 1358 7CE9CE101FA0767A000177DE /* WebPageUpdatePreferences.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CE9CE0F1FA0764D000177DE /* WebPageUpdatePreferences.cpp */; }; 1359 7CEB00DD1FA69ABE0065473B /* WebPreferencesExperimentalFeatures.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEB00DC1FA69A890065473B /* WebPreferencesExperimentalFeatures.cpp */; }; 1359 1360 7CEFA9621AC0999300B910FD /* APIContentRuleListStoreCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7CEFA9601AC0999300B910FD /* APIContentRuleListStoreCocoa.mm */; }; 1360 1361 7CF47FF617275B71008ACB91 /* WKBundlePageBanner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CF47FF417275B71008ACB91 /* WKBundlePageBanner.cpp */; }; … … 3745 3746 7CE4D2261A4916C200C7F152 /* WebProcessPoolMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebProcessPoolMessages.h; sourceTree = "<group>"; }; 3746 3747 7CE9CE0F1FA0764D000177DE /* WebPageUpdatePreferences.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WebPageUpdatePreferences.cpp; sourceTree = "<group>"; }; 3748 7CEB00DC1FA69A890065473B /* WebPreferencesExperimentalFeatures.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WebPreferencesExperimentalFeatures.cpp; sourceTree = "<group>"; }; 3747 3749 7CEFA9601AC0999300B910FD /* APIContentRuleListStoreCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = APIContentRuleListStoreCocoa.mm; sourceTree = "<group>"; }; 3748 3750 7CF47FF417275B71008ACB91 /* WKBundlePageBanner.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKBundlePageBanner.cpp; sourceTree = "<group>"; }; … … 8147 8149 1AB1F7951D1B3613007C9BD1 /* WebPaymentCoordinatorProxyMessages.h */, 8148 8150 7CDE73A31F9DAB6500390312 /* WebPreferencesDefinitions.h */, 8151 7CEB00DC1FA69A890065473B /* WebPreferencesExperimentalFeatures.cpp */, 8149 8152 7CB100EE1FA2D74A001729EE /* WebPreferencesKeys.cpp */, 8150 8153 7CB100EF1FA2D74B001729EE /* WebPreferencesKeys.h */, … … 10694 10697 BC5750981268F3C6006F0F12 /* WebPopupMenuProxyMac.mm in Sources */, 10695 10698 BCD59800112B57BE00EC8C23 /* WebPreferences.cpp in Sources */, 10699 7CEB00DD1FA69ABE0065473B /* WebPreferencesExperimentalFeatures.cpp in Sources */, 10696 10700 7CB100F11FA3858A001729EE /* WebPreferencesKeys.cpp in Sources */, 10697 10701 BC84EB1812A7100C0083F2DA /* WebPreferencesMac.mm in Sources */,
Note: See TracChangeset
for help on using the changeset viewer.