Title: [170253] trunk/Source/WebKit2
Revision
170253
Author
ander...@apple.com
Date
2014-06-21 15:02:26 -0700 (Sat, 21 Jun 2014)

Log Message

Make it possible to override debug preferences on a per-identifier basis as well as globally
https://bugs.webkit.org/show_bug.cgi?id=134164

Reviewed by Dan Bernstein.

* Shared/WebPreferencesDefinitions.h:
* Shared/WebPreferencesKeys.cpp:
* Shared/WebPreferencesKeys.h:
* Shared/WebPreferencesStore.cpp:
(WebKit::defaults):
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesCreate):
(WKPreferencesCreateWithIdentifier):
* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences init]):
* UIProcess/WebPageGroup.cpp:
(WebKit::WebPageGroup::WebPageGroup):
* UIProcess/WebPreferences.cpp:
(WebKit::WebPreferences::create):
(WebKit::WebPreferences::createWithLegacyDefaults):
(WebKit::WebPreferences::WebPreferences):
* UIProcess/WebPreferences.h:
* UIProcess/mac/WebPreferencesMac.mm:
(WebKit::makeKey):
(WebKit::debugUserDefaultsValue):
(WebKit::setDebugBoolValueIfInUserDefaults):
(WebKit::WebPreferences::platformInitializeStore):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (170252 => 170253)


--- trunk/Source/WebKit2/ChangeLog	2014-06-21 21:01:26 UTC (rev 170252)
+++ trunk/Source/WebKit2/ChangeLog	2014-06-21 22:02:26 UTC (rev 170253)
@@ -1,5 +1,35 @@
 2014-06-21  Anders Carlsson  <ander...@apple.com>
 
+        Make it possible to override debug preferences on a per-identifier basis as well as globally
+        https://bugs.webkit.org/show_bug.cgi?id=134164
+
+        Reviewed by Dan Bernstein.
+
+        * Shared/WebPreferencesDefinitions.h:
+        * Shared/WebPreferencesKeys.cpp:
+        * Shared/WebPreferencesKeys.h:
+        * Shared/WebPreferencesStore.cpp:
+        (WebKit::defaults):
+        * UIProcess/API/C/WKPreferences.cpp:
+        (WKPreferencesCreate):
+        (WKPreferencesCreateWithIdentifier):
+        * UIProcess/API/Cocoa/WKPreferences.mm:
+        (-[WKPreferences init]):
+        * UIProcess/WebPageGroup.cpp:
+        (WebKit::WebPageGroup::WebPageGroup):
+        * UIProcess/WebPreferences.cpp:
+        (WebKit::WebPreferences::create):
+        (WebKit::WebPreferences::createWithLegacyDefaults):
+        (WebKit::WebPreferences::WebPreferences):
+        * UIProcess/WebPreferences.h:
+        * UIProcess/mac/WebPreferencesMac.mm:
+        (WebKit::makeKey):
+        (WebKit::debugUserDefaultsValue):
+        (WebKit::setDebugBoolValueIfInUserDefaults):
+        (WebKit::WebPreferences::platformInitializeStore):
+
+2014-06-21  Anders Carlsson  <ander...@apple.com>
+
         Begin work on decoding form data
         https://bugs.webkit.org/show_bug.cgi?id=134163
 

Modified: trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h (170252 => 170253)


--- trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h	2014-06-21 21:01:26 UTC (rev 170252)
+++ trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h	2014-06-21 22:02:26 UTC (rev 170253)
@@ -116,9 +116,6 @@
     macro(ForceCompositingMode, forceCompositingMode, Bool, bool, false) \
     macro(AcceleratedDrawingEnabled, acceleratedDrawingEnabled, Bool, bool, DEFAULT_ACCELERATED_DRAWING_ENABLED) \
     macro(CanvasUsesAcceleratedDrawing, canvasUsesAcceleratedDrawing, Bool, bool, DEFAULT_CANVAS_USES_ACCELERATED_DRAWING) \
-    macro(CompositingBordersVisible, compositingBordersVisible, Bool, bool, false) \
-    macro(CompositingRepaintCountersVisible, compositingRepaintCountersVisible, Bool, bool, false) \
-    macro(TiledScrollingIndicatorVisible, tiledScrollingIndicatorVisible, Bool, bool, false) \
     macro(WebGLEnabled, webGLEnabled, Bool, bool, true) \
     macro(MultithreadedWebGLEnabled, multithreadedWebGLEnabled, Bool, bool, false) \
     macro(ForceSoftwareWebGLRendering, forceSoftwareWebGLRendering, Bool, bool, false) \
@@ -237,6 +234,11 @@
     macro(StorageBlockingPolicy, storageBlockingPolicy, UInt32, uint32_t, WebCore::SecurityOrigin::BlockThirdPartyStorage) \
     \
 
+#define FOR_EACH_WEBKIT_DEBUG_BOOL_PREFERENCE(macro) \
+    macro(CompositingBordersVisible, compositingBordersVisible, Bool, bool, false) \
+    macro(CompositingRepaintCountersVisible, compositingRepaintCountersVisible, Bool, bool, false) \
+    macro(TiledScrollingIndicatorVisible, tiledScrollingIndicatorVisible, Bool, bool, false) \
+
 #if PLATFORM(COCOA)
 
 #if PLATFORM(IOS)
@@ -282,6 +284,10 @@
     macro(InspectorWindowFrame, inspectorWindowFrame, String, String, "") \
     \
 
+#define FOR_EACH_WEBKIT_DEBUG_PREFERENCE(macro) \
+    FOR_EACH_WEBKIT_DEBUG_BOOL_PREFERENCE(macro) \
+    \
+
 #define FOR_EACH_WEBKIT_PREFERENCE(macro) \
     FOR_EACH_WEBKIT_BOOL_PREFERENCE(macro) \
     FOR_EACH_WEBKIT_DOUBLE_PREFERENCE(macro) \

Modified: trunk/Source/WebKit2/Shared/WebPreferencesKeys.cpp (170252 => 170253)


--- trunk/Source/WebKit2/Shared/WebPreferencesKeys.cpp	2014-06-21 21:01:26 UTC (rev 170252)
+++ trunk/Source/WebKit2/Shared/WebPreferencesKeys.cpp	2014-06-21 22:02:26 UTC (rev 170253)
@@ -38,7 +38,8 @@
             return key; \
         }
 
-    FOR_EACH_WEBKIT_PREFERENCE(DEFINE_KEY_GETTERS)
+FOR_EACH_WEBKIT_PREFERENCE(DEFINE_KEY_GETTERS)
+FOR_EACH_WEBKIT_DEBUG_PREFERENCE(DEFINE_KEY_GETTERS)
 
 #undef DEFINE_KEY_GETTERS
 

Modified: trunk/Source/WebKit2/Shared/WebPreferencesKeys.h (170252 => 170253)


--- trunk/Source/WebKit2/Shared/WebPreferencesKeys.h	2014-06-21 21:01:26 UTC (rev 170252)
+++ trunk/Source/WebKit2/Shared/WebPreferencesKeys.h	2014-06-21 22:02:26 UTC (rev 170253)
@@ -35,6 +35,7 @@
 #define DECLARE_KEY_GETTERS(KeyUpper, KeyLower, TypeName, Type, DefaultValue) const String& KeyLower##Key();
 
 FOR_EACH_WEBKIT_PREFERENCE(DECLARE_KEY_GETTERS)
+FOR_EACH_WEBKIT_DEBUG_PREFERENCE(DECLARE_KEY_GETTERS)
 
 #undef DECLARE_KEY_GETTERS
 

Modified: trunk/Source/WebKit2/Shared/WebPreferencesStore.cpp (170252 => 170253)


--- trunk/Source/WebKit2/Shared/WebPreferencesStore.cpp	2014-06-21 21:01:26 UTC (rev 170252)
+++ trunk/Source/WebKit2/Shared/WebPreferencesStore.cpp	2014-06-21 22:02:26 UTC (rev 170253)
@@ -163,6 +163,7 @@
     if (defaults.get().isEmpty()) {
 #define DEFINE_DEFAULTS(KeyUpper, KeyLower, TypeName, Type, DefaultValue) defaults.get().set(WebPreferencesKey::KeyLower##Key(), WebPreferencesStore::Value((Type)DefaultValue));
         FOR_EACH_WEBKIT_PREFERENCE(DEFINE_DEFAULTS)
+        FOR_EACH_WEBKIT_DEBUG_PREFERENCE(DEFINE_DEFAULTS)
 #undef DEFINE_DEFAULTS
     }
 

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp (170252 => 170253)


--- trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp	2014-06-21 21:01:26 UTC (rev 170252)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp	2014-06-21 22:02:26 UTC (rev 170253)
@@ -43,13 +43,13 @@
 
 WKPreferencesRef WKPreferencesCreate()
 {
-    RefPtr<WebPreferences> preferences = WebPreferences::createWithLegacyDefaults(String(), "WebKit2.");
+    RefPtr<WebPreferences> preferences = WebPreferences::createWithLegacyDefaults(String(), "WebKit2.", "WebKit2.");
     return toAPI(preferences.release().leakRef());
 }
 
 WKPreferencesRef WKPreferencesCreateWithIdentifier(WKStringRef identifierRef)
 {
-    RefPtr<WebPreferences> preferences = WebPreferences::createWithLegacyDefaults(toWTFString(identifierRef), "WebKit2.");
+    RefPtr<WebPreferences> preferences = WebPreferences::createWithLegacyDefaults(toWTFString(identifierRef), "WebKit2.", "WebKit2.");
     return toAPI(preferences.release().leakRef());
 }
 

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKPreferences.mm (170252 => 170253)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKPreferences.mm	2014-06-21 21:01:26 UTC (rev 170252)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKPreferences.mm	2014-06-21 22:02:26 UTC (rev 170253)
@@ -39,7 +39,7 @@
     if (!(self = [super init]))
         return nil;
 
-    _preferences = WebKit::WebPreferences::create(String(), "WebKit");
+    _preferences = WebKit::WebPreferences::create(String(), "WebKit", "WebKit");
     return self;
 }
 

Modified: trunk/Source/WebKit2/UIProcess/WebPageGroup.cpp (170252 => 170253)


--- trunk/Source/WebKit2/UIProcess/WebPageGroup.cpp	2014-06-21 21:01:26 UTC (rev 170252)
+++ trunk/Source/WebKit2/UIProcess/WebPageGroup.cpp	2014-06-21 22:02:26 UTC (rev 170253)
@@ -82,9 +82,11 @@
     return data;
 }
 
+// FIXME: Why does the WebPreferences object here use ".WebKit2" instead of "WebKit2." which all the other constructors use.
+// If it turns out that it's wrong, we can change it to to "WebKit2." and get rid of the globalDebugKeyPrefix from WebPreferences.
 WebPageGroup::WebPageGroup(const String& identifier, bool visibleToInjectedBundle, bool visibleToHistoryClient)
     : m_data(pageGroupData(identifier, visibleToInjectedBundle, visibleToHistoryClient))
-    , m_preferences(WebPreferences::createWithLegacyDefaults(m_data.identifer, ".WebKit2"))
+    , m_preferences(WebPreferences::createWithLegacyDefaults(m_data.identifer, ".WebKit2", "WebKit2."))
 {
     webPageGroupMap().set(m_data.pageGroupID, this);
 }

Modified: trunk/Source/WebKit2/UIProcess/WebPreferences.cpp (170252 => 170253)


--- trunk/Source/WebKit2/UIProcess/WebPreferences.cpp	2014-06-21 21:01:26 UTC (rev 170252)
+++ trunk/Source/WebKit2/UIProcess/WebPreferences.cpp	2014-06-21 22:02:26 UTC (rev 170253)
@@ -37,14 +37,14 @@
 // Instead of tracking private browsing state as a boolean preference, we should let the client provide storage sessions explicitly.
 static unsigned privateBrowsingPageCount;
 
-PassRefPtr<WebPreferences> WebPreferences::create(const String& identifier, const String& keyPrefix)
+PassRefPtr<WebPreferences> WebPreferences::create(const String& identifier, const String& keyPrefix, const String& globalDebugKeyPrefix)
 {
-    return adoptRef(new WebPreferences(identifier, keyPrefix));
+    return adoptRef(new WebPreferences(identifier, keyPrefix, globalDebugKeyPrefix));
 }
 
-PassRefPtr<WebPreferences> WebPreferences::createWithLegacyDefaults(const String& identifier, const String& keyPrefix)
+PassRefPtr<WebPreferences> WebPreferences::createWithLegacyDefaults(const String& identifier, const String& keyPrefix, const String& globalDebugKeyPrefix)
 {
-    RefPtr<WebPreferences> preferences = adoptRef(new WebPreferences(identifier, keyPrefix));
+    RefPtr<WebPreferences> preferences = adoptRef(new WebPreferences(identifier, keyPrefix, globalDebugKeyPrefix));
     preferences->m_store.setOverrideDefaultsBoolValueForKey(WebPreferencesKey::javaEnabledKey(), true);
     preferences->m_store.setOverrideDefaultsBoolValueForKey(WebPreferencesKey::javaEnabledForLocalFilesKey(), true);
     preferences->m_store.setOverrideDefaultsBoolValueForKey(WebPreferencesKey::pluginsEnabledKey(), true);
@@ -52,15 +52,17 @@
     return preferences.release();
 }
 
-WebPreferences::WebPreferences(const String& identifier, const String& keyPrefix)
+WebPreferences::WebPreferences(const String& identifier, const String& keyPrefix, const String& globalDebugKeyPrefix)
     : m_identifier(identifier)
     , m_keyPrefix(keyPrefix)
+    , m_globalDebugKeyPrefix(globalDebugKeyPrefix)
 {
     platformInitializeStore();
 }
 
 WebPreferences::WebPreferences(const WebPreferences& other)
     : m_keyPrefix(other.m_keyPrefix)
+    , m_globalDebugKeyPrefix(other.m_globalDebugKeyPrefix)
     , m_store(other.m_store)
 {
     platformInitializeStore();
@@ -181,6 +183,7 @@
     } \
 
 FOR_EACH_WEBKIT_PREFERENCE(DEFINE_PREFERENCE_GETTER_AND_SETTERS)
+FOR_EACH_WEBKIT_DEBUG_PREFERENCE(DEFINE_PREFERENCE_GETTER_AND_SETTERS)
 
 #undef DEFINE_PREFERENCE_GETTER_AND_SETTERS
 

Modified: trunk/Source/WebKit2/UIProcess/WebPreferences.h (170252 => 170253)


--- trunk/Source/WebKit2/UIProcess/WebPreferences.h	2014-06-21 21:01:26 UTC (rev 170252)
+++ trunk/Source/WebKit2/UIProcess/WebPreferences.h	2014-06-21 22:02:26 UTC (rev 170253)
@@ -44,8 +44,8 @@
 
 class WebPreferences : public API::ObjectImpl<API::Object::Type::Preferences> {
 public:
-    static PassRefPtr<WebPreferences> create(const String& identifier, const String& keyPrefix);
-    static PassRefPtr<WebPreferences> createWithLegacyDefaults(const String& identifier, const String& keyPrefix);
+    static PassRefPtr<WebPreferences> create(const String& identifier, const String& keyPrefix, const String& globalDebugKeyPrefix);
+    static PassRefPtr<WebPreferences> createWithLegacyDefaults(const String& identifier, const String& keyPrefix, const String& globalDebugKeyPrefix);
 
     virtual ~WebPreferences();
 
@@ -61,6 +61,7 @@
     Type KeyLower() const; \
 
     FOR_EACH_WEBKIT_PREFERENCE(DECLARE_PREFERENCE_GETTER_AND_SETTERS)
+    FOR_EACH_WEBKIT_DEBUG_PREFERENCE(DECLARE_PREFERENCE_GETTER_AND_SETTERS)
 
 #undef DECLARE_PREFERENCE_GETTER_AND_SETTERS
 
@@ -70,7 +71,7 @@
     static bool anyPagesAreUsingPrivateBrowsing();
 
 private:
-    explicit WebPreferences(const String&, const String&);
+    explicit WebPreferences(const String& identifier, const String& keyPrefix, const String& globalDebugKeyPrefix);
     WebPreferences(const WebPreferences&);
 
     void platformInitializeStore();
@@ -92,6 +93,7 @@
 
     const String m_identifier;
     const String m_keyPrefix;
+    const String m_globalDebugKeyPrefix;
     WebPreferencesStore m_store;
 
     HashSet<WebPageProxy*> m_pages;

Modified: trunk/Source/WebKit2/UIProcess/mac/WebPreferencesMac.mm (170252 => 170253)


--- trunk/Source/WebKit2/UIProcess/mac/WebPreferencesMac.mm	2014-06-21 21:01:26 UTC (rev 170252)
+++ trunk/Source/WebKit2/UIProcess/mac/WebPreferencesMac.mm	2014-06-21 22:02:26 UTC (rev 170253)
@@ -34,7 +34,7 @@
 
 static inline NSString* makeKey(NSString *identifier, NSString *keyPrefix, NSString *key)
 {
-    ASSERT(identifier);
+    ASSERT(identifier.length);
     ASSERT(keyPrefix);
     ASSERT(key);
 
@@ -85,8 +85,46 @@
     store.setDoubleValueForKey(key, [object doubleValue]);
 }
 
+
+static id debugUserDefaultsValue(NSString *identifier, NSString *keyPrefix, NSString *globalDebugKeyPrefix, NSString *key)
+{
+    ASSERT(keyPrefix);
+    ASSERT(key);
+
+    NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
+    id object = nil;
+
+    if (identifier.length)
+        object = [standardUserDefaults objectForKey:[NSString stringWithFormat:@"%@%@%@", identifier, keyPrefix, key]];
+
+    if (!object) {
+        // Allow debug preferences to be set globally, using the debug key prefix.
+        object = [standardUserDefaults objectForKey:[globalDebugKeyPrefix stringByAppendingString:key]];
+    }
+
+    return object;
+}
+
+static void setDebugBoolValueIfInUserDefaults(const String& identifier, const String& keyPrefix, const String& globalDebugKeyPrefix, const String& key, WebPreferencesStore& store)
+{
+    id object = debugUserDefaultsValue(identifier, keyPrefix, globalDebugKeyPrefix, key);
+    if (!object)
+        return;
+    if (![object respondsToSelector:@selector(boolValue)])
+        return;
+
+    store.setBoolValueForKey(key, [object boolValue]);
+}
+
 void WebPreferences::platformInitializeStore()
 {
+#define INITIALIZE_DEBUG_PREFERENCE_FROM_NSUSERDEFAULTS(KeyUpper, KeyLower, TypeName, Type, DefaultValue) \
+    setDebug##TypeName##ValueIfInUserDefaults(m_identifier, m_keyPrefix, m_globalDebugKeyPrefix, WebPreferencesKey::KeyLower##Key(), m_store);
+
+    FOR_EACH_WEBKIT_DEBUG_PREFERENCE(INITIALIZE_DEBUG_PREFERENCE_FROM_NSUSERDEFAULTS)
+
+#undef INITIALIZE_DEBUG_PREFERENCE_FROM_NSUSERDEFAULTS
+
     if (!m_identifier)
         return;
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to