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;