In WebKitTestRunner, text has font smoothing in pixel snapshots
https://bugs.webkit.org/show_bug.cgi?id=69396
Source/WebKit2:
Reviewed by Darin Adler.
Plumb through a method on WKContext that controls whether font smoothing
is enabled. Since this is a global setting, such a method is more appropriate
than a preference.
Remove leading underscores on some WKContext functions, but keep
exported versions of same for binary compatibility.
* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::WebProcessCreationParameters):
(WebKit::WebProcessCreationParameters::encode):
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.h:
* UIProcess/API/C/WKContext.cpp:
(WKContextSetAlwaysUsesComplexTextCodePath):
(WKContextSetShouldUseFontSmoothing):
(WKContextSetAdditionalPluginsDirectory):
(WKContextRegisterURLSchemeAsEmptyDocument):
(WKContextSetHTTPPipeliningEnabled):
(_WKContextSetAdditionalPluginsDirectory):
(_WKContextRegisterURLSchemeAsEmptyDocument):
(_WKContextSetAlwaysUsesComplexTextCodePath):
(_WKContextSetHTTPPipeliningEnabled):
* UIProcess/API/C/WKContextPrivate.h:
* UIProcess/WebContext.cpp:
(WebKit::WebContext::WebContext):
(WebKit::WebContext::ensureWebProcess):
(WebKit::WebContext::setShouldUseFontSmoothing):
(WebKit::WebContext::httpPipeliningEnabled):
* UIProcess/WebContext.h:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):
(WebKit::WebProcess::setShouldUseFontSmoothing):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:
Tools:
Reviewed by Darin Adler.
Call the new WKContext method that disables font smoothing in
WebKitTestRunner, so that pixel snapshots don't have font smoothing
enabled. Remove leading underscore from a WKContext function call.
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::resetStateToConsistentValues):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@96770 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebKit2/ChangeLog b/Source/WebKit2/ChangeLog
index 087b8ae..a8e24c7 100644
--- a/Source/WebKit2/ChangeLog
+++ b/Source/WebKit2/ChangeLog
@@ -1,3 +1,45 @@
+2011-10-05 Simon Fraser <simon.fraser@apple.com>
+
+ In WebKitTestRunner, text has font smoothing in pixel snapshots
+ https://bugs.webkit.org/show_bug.cgi?id=69396
+
+ Reviewed by Darin Adler.
+
+ Plumb through a method on WKContext that controls whether font smoothing
+ is enabled. Since this is a global setting, such a method is more appropriate
+ than a preference.
+
+ Remove leading underscores on some WKContext functions, but keep
+ exported versions of same for binary compatibility.
+
+ * Shared/WebProcessCreationParameters.cpp:
+ (WebKit::WebProcessCreationParameters::WebProcessCreationParameters):
+ (WebKit::WebProcessCreationParameters::encode):
+ (WebKit::WebProcessCreationParameters::decode):
+ * Shared/WebProcessCreationParameters.h:
+ * UIProcess/API/C/WKContext.cpp:
+ (WKContextSetAlwaysUsesComplexTextCodePath):
+ (WKContextSetShouldUseFontSmoothing):
+ (WKContextSetAdditionalPluginsDirectory):
+ (WKContextRegisterURLSchemeAsEmptyDocument):
+ (WKContextSetHTTPPipeliningEnabled):
+ (_WKContextSetAdditionalPluginsDirectory):
+ (_WKContextRegisterURLSchemeAsEmptyDocument):
+ (_WKContextSetAlwaysUsesComplexTextCodePath):
+ (_WKContextSetHTTPPipeliningEnabled):
+ * UIProcess/API/C/WKContextPrivate.h:
+ * UIProcess/WebContext.cpp:
+ (WebKit::WebContext::WebContext):
+ (WebKit::WebContext::ensureWebProcess):
+ (WebKit::WebContext::setShouldUseFontSmoothing):
+ (WebKit::WebContext::httpPipeliningEnabled):
+ * UIProcess/WebContext.h:
+ * WebProcess/WebProcess.cpp:
+ (WebKit::WebProcess::initializeWebProcess):
+ (WebKit::WebProcess::setShouldUseFontSmoothing):
+ * WebProcess/WebProcess.h:
+ * WebProcess/WebProcess.messages.in:
+
2011-10-05 Anders Carlsson <andersca@apple.com>
Flash of white when unminimizing windows
diff --git a/Source/WebKit2/Shared/WebProcessCreationParameters.cpp b/Source/WebKit2/Shared/WebProcessCreationParameters.cpp
index 30f2444..0bd2f07 100644
--- a/Source/WebKit2/Shared/WebProcessCreationParameters.cpp
+++ b/Source/WebKit2/Shared/WebProcessCreationParameters.cpp
@@ -36,6 +36,7 @@
WebProcessCreationParameters::WebProcessCreationParameters()
: shouldTrackVisitedLinks(false)
, shouldAlwaysUseComplexTextCodePath(false)
+ , shouldUseFontSmoothing(true)
, defaultRequestTimeoutInterval(INT_MAX)
#if PLATFORM(MAC)
, nsURLCacheMemoryCapacity(0)
@@ -60,6 +61,7 @@
encoder->encodeEnum(cacheModel);
encoder->encode(shouldTrackVisitedLinks);
encoder->encode(shouldAlwaysUseComplexTextCodePath);
+ encoder->encode(shouldUseFontSmoothing);
encoder->encode(iconDatabaseEnabled);
#if ENABLE(PLUGIN_PROCESS)
encoder->encode(disablePluginProcessMessageTimeout);
@@ -122,6 +124,8 @@
return false;
if (!decoder->decode(parameters.shouldAlwaysUseComplexTextCodePath))
return false;
+ if (!decoder->decode(parameters.shouldUseFontSmoothing))
+ return false;
if (!decoder->decode(parameters.iconDatabaseEnabled))
return false;
#if ENABLE(PLUGIN_PROCESS)
diff --git a/Source/WebKit2/Shared/WebProcessCreationParameters.h b/Source/WebKit2/Shared/WebProcessCreationParameters.h
index 9ebfa41..df8411c 100644
--- a/Source/WebKit2/Shared/WebProcessCreationParameters.h
+++ b/Source/WebKit2/Shared/WebProcessCreationParameters.h
@@ -67,6 +67,7 @@
bool shouldTrackVisitedLinks;
bool shouldAlwaysUseComplexTextCodePath;
+ bool shouldUseFontSmoothing;
bool iconDatabaseEnabled;
diff --git a/Source/WebKit2/UIProcess/API/C/WKContext.cpp b/Source/WebKit2/UIProcess/API/C/WKContext.cpp
index 2b6afb8..b6f5638 100644
--- a/Source/WebKit2/UIProcess/API/C/WKContext.cpp
+++ b/Source/WebKit2/UIProcess/API/C/WKContext.cpp
@@ -36,6 +36,12 @@
using namespace WebKit;
+// For binary compatibility with Safari 5.1. Should be removed eventually.
+WK_EXPORT void _WKContextSetAdditionalPluginsDirectory(WKContextRef context, WKStringRef pluginsDirectory);
+WK_EXPORT void _WKContextRegisterURLSchemeAsEmptyDocument(WKContextRef context, WKStringRef urlScheme);
+WK_EXPORT void _WKContextSetAlwaysUsesComplexTextCodePath(WKContextRef context, bool alwaysUseComplexTextCodePath);
+WK_EXPORT void _WKContextSetHTTPPipeliningEnabled(WKContextRef context, bool enabled);
+
WKTypeID WKContextGetTypeID()
{
return toAPI(WebContext::APIType);
@@ -117,17 +123,22 @@
return toAPI(toImpl(contextRef)->cacheModel());
}
-void _WKContextSetAlwaysUsesComplexTextCodePath(WKContextRef contextRef, bool alwaysUseComplexTextCodePath)
+void WKContextSetAlwaysUsesComplexTextCodePath(WKContextRef contextRef, bool alwaysUseComplexTextCodePath)
{
toImpl(contextRef)->setAlwaysUsesComplexTextCodePath(alwaysUseComplexTextCodePath);
}
-void _WKContextSetAdditionalPluginsDirectory(WKContextRef contextRef, WKStringRef pluginsDirectory)
+void WKContextSetShouldUseFontSmoothing(WKContextRef contextRef, bool useFontSmoothing)
+{
+ toImpl(contextRef)->setShouldUseFontSmoothing(useFontSmoothing);
+}
+
+void WKContextSetAdditionalPluginsDirectory(WKContextRef contextRef, WKStringRef pluginsDirectory)
{
toImpl(contextRef)->setAdditionalPluginsDirectory(toImpl(pluginsDirectory)->string());
}
-void _WKContextRegisterURLSchemeAsEmptyDocument(WKContextRef contextRef, WKStringRef urlScheme)
+void WKContextRegisterURLSchemeAsEmptyDocument(WKContextRef contextRef, WKStringRef urlScheme)
{
toImpl(contextRef)->registerURLSchemeAsEmptyDocument(toImpl(urlScheme)->string());
}
@@ -222,7 +233,7 @@
toImpl(contextRef)->enableProcessTermination();
}
-void _WKContextSetHTTPPipeliningEnabled(WKContextRef contextRef, bool enabled)
+void WKContextSetHTTPPipeliningEnabled(WKContextRef contextRef, bool enabled)
{
toImpl(contextRef)->setHTTPPipeliningEnabled(enabled);
}
@@ -242,3 +253,23 @@
toImpl(contextRef)->garbageCollectJavaScriptObjects();
}
+// Deprecated functions.
+void _WKContextSetAdditionalPluginsDirectory(WKContextRef context, WKStringRef pluginsDirectory)
+{
+ WKContextSetAdditionalPluginsDirectory(context, pluginsDirectory);
+}
+
+void _WKContextRegisterURLSchemeAsEmptyDocument(WKContextRef context, WKStringRef urlScheme)
+{
+ WKContextRegisterURLSchemeAsEmptyDocument(context, urlScheme);
+}
+
+void _WKContextSetAlwaysUsesComplexTextCodePath(WKContextRef context, bool alwaysUseComplexTextCodePath)
+{
+ WKContextSetAlwaysUsesComplexTextCodePath(context, alwaysUseComplexTextCodePath);
+}
+
+void _WKContextSetHTTPPipeliningEnabled(WKContextRef context, bool enabled)
+{
+ WKContextSetHTTPPipeliningEnabled(context, enabled);
+}
diff --git a/Source/WebKit2/UIProcess/API/C/WKContextPrivate.h b/Source/WebKit2/UIProcess/API/C/WKContextPrivate.h
index 77063a1..01dac4b 100644
--- a/Source/WebKit2/UIProcess/API/C/WKContextPrivate.h
+++ b/Source/WebKit2/UIProcess/API/C/WKContextPrivate.h
@@ -44,11 +44,13 @@
WK_EXPORT WKContextRef WKContextGetSharedThreadContext();
-WK_EXPORT void _WKContextSetAdditionalPluginsDirectory(WKContextRef context, WKStringRef pluginsDirectory);
+WK_EXPORT void WKContextSetAdditionalPluginsDirectory(WKContextRef context, WKStringRef pluginsDirectory);
-WK_EXPORT void _WKContextRegisterURLSchemeAsEmptyDocument(WKContextRef context, WKStringRef urlScheme);
+WK_EXPORT void WKContextRegisterURLSchemeAsEmptyDocument(WKContextRef context, WKStringRef urlScheme);
-WK_EXPORT void _WKContextSetAlwaysUsesComplexTextCodePath(WKContextRef context, bool alwaysUseComplexTextCodePath);
+WK_EXPORT void WKContextSetAlwaysUsesComplexTextCodePath(WKContextRef context, bool alwaysUseComplexTextCodePath);
+
+WK_EXPORT void WKContextSetShouldUseFontSmoothing(WKContextRef context, bool useFontSmoothing);
WK_EXPORT void WKContextRegisterURLSchemeAsSecure(WKContextRef context, WKStringRef urlScheme);
@@ -66,8 +68,8 @@
WK_EXPORT void WKContextDisableProcessTermination(WKContextRef context);
WK_EXPORT void WKContextEnableProcessTermination(WKContextRef context);
-WK_EXPORT void _WKContextSetHTTPPipeliningEnabled(WKContextRef context, bool enabled);
-
+WK_EXPORT void WKContextSetHTTPPipeliningEnabled(WKContextRef context, bool enabled);
+
WK_EXPORT void WKContextWarmInitialProcess(WKContextRef context);
#ifdef __cplusplus
diff --git a/Source/WebKit2/UIProcess/WebContext.cpp b/Source/WebKit2/UIProcess/WebContext.cpp
index ca7efd5..30038da 100644
--- a/Source/WebKit2/UIProcess/WebContext.cpp
+++ b/Source/WebKit2/UIProcess/WebContext.cpp
@@ -122,6 +122,7 @@
, m_injectedBundlePath(injectedBundlePath)
, m_visitedLinkProvider(this)
, m_alwaysUsesComplexTextCodePath(false)
+ , m_shouldUseFontSmoothing(true)
, m_cacheModel(CacheModelDocumentViewer)
, m_memorySamplerEnabled(false)
, m_memorySamplerInterval(1400.0)
@@ -254,6 +255,7 @@
copyToVector(m_schemesToSetDomainRelaxationForbiddenFor, parameters.urlSchemesForWhichDomainRelaxationIsForbidden);
parameters.shouldAlwaysUseComplexTextCodePath = m_alwaysUsesComplexTextCodePath;
+ parameters.shouldUseFontSmoothing = m_shouldUseFontSmoothing;
parameters.iconDatabaseEnabled = !iconDatabasePath().isEmpty();
@@ -508,6 +510,12 @@
sendToAllProcesses(Messages::WebProcess::SetAlwaysUsesComplexTextCodePath(alwaysUseComplexText));
}
+void WebContext::setShouldUseFontSmoothing(bool useFontSmoothing)
+{
+ m_shouldUseFontSmoothing = useFontSmoothing;
+ sendToAllProcesses(Messages::WebProcess::SetShouldUseFontSmoothing(useFontSmoothing));
+}
+
void WebContext::registerURLSchemeAsEmptyDocument(const String& urlScheme)
{
m_schemesToRegisterAsEmptyDocument.add(urlScheme);
@@ -803,7 +811,7 @@
#endif
}
-bool WebContext::httpPipeliningEnabled()
+bool WebContext::httpPipeliningEnabled() const
{
#if PLATFORM(MAC)
return ResourceRequest::httpPipeliningEnabled();
diff --git a/Source/WebKit2/UIProcess/WebContext.h b/Source/WebKit2/UIProcess/WebContext.h
index eaba67a..a835e96 100644
--- a/Source/WebKit2/UIProcess/WebContext.h
+++ b/Source/WebKit2/UIProcess/WebContext.h
@@ -113,6 +113,7 @@
String applicationCacheDirectory();
void setAlwaysUsesComplexTextCodePath(bool);
+ void setShouldUseFontSmoothing(bool);
void registerURLSchemeAsEmptyDocument(const String&);
void registerURLSchemeAsSecure(const String&);
@@ -178,7 +179,7 @@
// Defaults to false.
void setHTTPPipeliningEnabled(bool);
- bool httpPipeliningEnabled();
+ bool httpPipeliningEnabled() const;
void getWebCoreStatistics(PassRefPtr<DictionaryCallback>);
void garbageCollectJavaScriptObjects();
@@ -244,6 +245,7 @@
HashSet<String> m_schemesToSetDomainRelaxationForbiddenFor;
bool m_alwaysUsesComplexTextCodePath;
+ bool m_shouldUseFontSmoothing;
Vector<pair<String, RefPtr<APIObject> > > m_pendingMessagesToPostToInjectedBundle;
diff --git a/Source/WebKit2/WebProcess/WebProcess.cpp b/Source/WebKit2/WebProcess/WebProcess.cpp
index 214f2ae..074bfe6 100644
--- a/Source/WebKit2/WebProcess/WebProcess.cpp
+++ b/Source/WebKit2/WebProcess/WebProcess.cpp
@@ -237,6 +237,9 @@
if (parameters.shouldAlwaysUseComplexTextCodePath)
setAlwaysUsesComplexTextCodePath(true);
+ if (parameters.shouldUseFontSmoothing)
+ setShouldUseFontSmoothing(true);
+
#if USE(CFURLSTORAGESESSIONS)
WebCore::ResourceHandle::setPrivateBrowsingStorageSessionIdentifierBase(parameters.uiProcessBundleIdentifier);
#endif
@@ -276,6 +279,11 @@
WebCore::Font::setCodePath(alwaysUseComplexText ? WebCore::Font::Complex : WebCore::Font::Auto);
}
+void WebProcess::setShouldUseFontSmoothing(bool useFontSmoothing)
+{
+ WebCore::Font::setShouldUseSmoothing(useFontSmoothing);
+}
+
void WebProcess::languageChanged(const String& language) const
{
overrideDefaultLanguage(language);
diff --git a/Source/WebKit2/WebProcess/WebProcess.h b/Source/WebKit2/WebProcess/WebProcess.h
index 55b2486..0d5d74a 100644
--- a/Source/WebKit2/WebProcess/WebProcess.h
+++ b/Source/WebKit2/WebProcess/WebProcess.h
@@ -141,6 +141,7 @@
void setDomainRelaxationForbiddenForURLScheme(const String&) const;
void setDefaultRequestTimeoutInterval(double);
void setAlwaysUsesComplexTextCodePath(bool);
+ void setShouldUseFontSmoothing(bool);
void languageChanged(const String&) const;
#if PLATFORM(WIN)
void setShouldPaintNativeControls(bool);
diff --git a/Source/WebKit2/WebProcess/WebProcess.messages.in b/Source/WebKit2/WebProcess/WebProcess.messages.in
index 55a3770..44f4419 100644
--- a/Source/WebKit2/WebProcess/WebProcess.messages.in
+++ b/Source/WebKit2/WebProcess/WebProcess.messages.in
@@ -40,6 +40,7 @@
SetDomainRelaxationForbiddenForURLScheme(WTF::String scheme)
SetDefaultRequestTimeoutInterval(double timeoutInterval)
SetAlwaysUsesComplexTextCodePath(bool alwaysUseComplexText)
+ SetShouldUseFontSmoothing(bool useFontSmoothing)
LanguageChanged(WTF::String language)
#if PLATFORM(WIN)
SetShouldPaintNativeControls(bool shouldPaintNativeControls)
diff --git a/Tools/ChangeLog b/Tools/ChangeLog
index ed5f1f2..8080810 100644
--- a/Tools/ChangeLog
+++ b/Tools/ChangeLog
@@ -1,3 +1,17 @@
+2011-10-05 Simon Fraser <simon.fraser@apple.com>
+
+ In WebKitTestRunner, text has font smoothing in pixel snapshots
+ https://bugs.webkit.org/show_bug.cgi?id=69396
+
+ Reviewed by Darin Adler.
+
+ Call the new WKContext method that disables font smoothing in
+ WebKitTestRunner, so that pixel snapshots don't have font smoothing
+ enabled. Remove leading underscore from a WKContext function call.
+
+ * WebKitTestRunner/TestController.cpp:
+ (WTR::TestController::resetStateToConsistentValues):
+
2011-10-05 David Levin <levin@chromium.org>
Improve the watchlist for threading entries.
diff --git a/Tools/WebKitTestRunner/TestController.cpp b/Tools/WebKitTestRunner/TestController.cpp
index 744f058..65f7832 100644
--- a/Tools/WebKitTestRunner/TestController.cpp
+++ b/Tools/WebKitTestRunner/TestController.cpp
@@ -293,7 +293,7 @@
};
WKContextSetInjectedBundleClient(m_context.get(), &injectedBundleClient);
- _WKContextSetAdditionalPluginsDirectory(m_context.get(), testPluginDirectory());
+ WKContextSetAdditionalPluginsDirectory(m_context.get(), testPluginDirectory());
m_mainWebView = adoptPtr(new PlatformWebView(m_context.get(), m_pageGroup.get()));
@@ -391,6 +391,8 @@
WKContextPostMessageToInjectedBundle(TestController::shared().context(), messageName.get(), resetMessageBody.get());
+ WKContextSetShouldUseFontSmoothing(TestController::shared().context(), false);
+
// FIXME: This function should also ensure that there is only one page open.
// Reset preferences