Diff
Modified: branches/safari-600.3-branch/Source/WebKit2/ChangeLog (175340 => 175341)
--- branches/safari-600.3-branch/Source/WebKit2/ChangeLog 2014-10-29 20:26:40 UTC (rev 175340)
+++ branches/safari-600.3-branch/Source/WebKit2/ChangeLog 2014-10-29 20:48:31 UTC (rev 175341)
@@ -1,3 +1,63 @@
+2014-10-29 Matthew Hanson <[email protected]>
+
+ Rollout r174369. <rdar://problem/18640842>
+
+ 2014-10-06 Chris Dumez <[email protected]>
+
+ [Mac] We are spending too much time serializing ProtectionSpace objects
+ https://bugs.webkit.org/show_bug.cgi?id=137367
+
+ Reviewed by Dan Bernstein.
+
+ When profiling the load of nytimes.com, I noticed that we were spending
+ a lot of CPU time serializing ProtectionSpace objects (in particular
+ the NSURLProtectionSpace platform data):
+ - 5.6% of CPU time for Network Process
+ - 2.5% of CPU time for WebProcess
+
+ Serializing an NSURLProtectionSpace seems to be costly due to server
+ trust verification. We do this for every sub-resource load over HTTPS
+ due to the canAuthenticateAgainstProtectionSpace() callback for server
+ trust validation, from the NetworkProcess to the WebProcess and then to
+ the UIProcess.
+
+ This patch adds a WKContextSetCanHandleHTTPSServerTrustEvaluation(bool)
+ WK2 private API that the client can call to indicate that it cannot
+ handle HTTPS server trust evaluation and that it is thus unnecessary to
+ call the canAuthenticateAgainstProtectionSpace() callback for such
+ evaluations. This reduces the amount of IPC between the process and
+ thus the number of times we have to serialize the ProtectionSpace.
+
+ In the case of the nytimes.com load, there is no longer any
+ ProtectionSpace serialization happening as
+ canAuthenticateAgainstProtectionSpace() was only called for HTTPS
+ server trust evaluation.
+
+ * NetworkProcess/NetworkProcess.cpp:
+ (WebKit::NetworkProcess::NetworkProcess):
+ (WebKit::NetworkProcess::initializeNetworkProcess):
+ (WebKit::NetworkProcess::setCanHandleHTTPSServerTrustEvaluation):
+ * NetworkProcess/NetworkProcess.h:
+ (WebKit::NetworkProcess::canHandleHTTPSServerTrustEvaluation):
+ * NetworkProcess/NetworkProcess.messages.in:
+ * NetworkProcess/NetworkResourceLoader.cpp:
+ (WebKit::NetworkResourceLoader::canAuthenticateAgainstProtectionSpaceAsync):
+ * Shared/Network/NetworkProcessCreationParameters.cpp:
+ (WebKit::NetworkProcessCreationParameters::encode):
+ (WebKit::NetworkProcessCreationParameters::decode):
+ * Shared/Network/NetworkProcessCreationParameters.h:
+ * UIProcess/API/C/WKContext.cpp:
+ (WKContextSetCanHandleHTTPSServerTrustEvaluation):
+ * UIProcess/API/C/WKContextPrivate.h:
+ * UIProcess/API/Cocoa/WKProcessPool.mm:
+ (-[WKProcessPool _setCanHandleHTTPSServerTrustEvaluation:]):
+ * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
+ * UIProcess/WebContext.cpp:
+ (WebKit::WebContext::WebContext):
+ (WebKit::WebContext::ensureNetworkProcess):
+ (WebKit::WebContext::setCanHandleHTTPSServerTrustEvaluation):
+ * UIProcess/WebContext.h:
+
2014-08-29 Matthew Hanson <[email protected]>
Merge r175335. rdar://problem/18709436
Modified: branches/safari-600.3-branch/Source/WebKit2/NetworkProcess/NetworkProcess.cpp (175340 => 175341)
--- branches/safari-600.3-branch/Source/WebKit2/NetworkProcess/NetworkProcess.cpp 2014-10-29 20:26:40 UTC (rev 175340)
+++ branches/safari-600.3-branch/Source/WebKit2/NetworkProcess/NetworkProcess.cpp 2014-10-29 20:48:31 UTC (rev 175341)
@@ -67,7 +67,6 @@
NetworkProcess::NetworkProcess()
: m_hasSetCacheModel(false)
, m_cacheModel(CacheModelDocumentViewer)
- , m_canHandleHTTPSServerTrustEvaluation(true)
#if PLATFORM(COCOA)
, m_clearCacheDispatchGroup(0)
#endif
@@ -164,7 +163,6 @@
memoryPressureHandler().install();
setCacheModel(static_cast<uint32_t>(parameters.cacheModel));
- setCanHandleHTTPSServerTrustEvaluation(parameters.canHandleHTTPSServerTrustEvaluation);
#if PLATFORM(MAC) || USE(CFNETWORK)
SessionTracker::setIdentifierBase(parameters.uiProcessBundleIdentifier);
@@ -254,11 +252,6 @@
}
}
-void NetworkProcess::setCanHandleHTTPSServerTrustEvaluation(bool value)
-{
- m_canHandleHTTPSServerTrustEvaluation = value;
-}
-
void NetworkProcess::getNetworkProcessStatistics(uint64_t callbackID)
{
NetworkResourceLoadScheduler& scheduler = NetworkProcess::shared().networkResourceLoadScheduler();
Modified: branches/safari-600.3-branch/Source/WebKit2/NetworkProcess/NetworkProcess.h (175340 => 175341)
--- branches/safari-600.3-branch/Source/WebKit2/NetworkProcess/NetworkProcess.h 2014-10-29 20:26:40 UTC (rev 175340)
+++ branches/safari-600.3-branch/Source/WebKit2/NetworkProcess/NetworkProcess.h 2014-10-29 20:48:31 UTC (rev 175341)
@@ -73,7 +73,6 @@
AuthenticationManager& authenticationManager();
DownloadManager& downloadManager();
- bool canHandleHTTPSServerTrustEvaluation() const { return m_canHandleHTTPSServerTrustEvaluation; }
private:
NetworkProcess();
@@ -116,7 +115,6 @@
void cancelDownload(uint64_t downloadID);
void setCacheModel(uint32_t);
void allowSpecificHTTPSCertificateForHost(const WebCore::CertificateInfo&, const String& host);
- void setCanHandleHTTPSServerTrustEvaluation(bool);
void getNetworkProcessStatistics(uint64_t callbackID);
void clearCacheForAllOrigins(uint32_t cachesToClear);
@@ -136,7 +134,6 @@
String m_diskCacheDirectory;
bool m_hasSetCacheModel;
CacheModel m_cacheModel;
- bool m_canHandleHTTPSServerTrustEvaluation;
typedef HashMap<const char*, std::unique_ptr<NetworkProcessSupplement>, PtrHash<const char*>> NetworkProcessSupplementMap;
NetworkProcessSupplementMap m_supplements;
Modified: branches/safari-600.3-branch/Source/WebKit2/NetworkProcess/NetworkProcess.messages.in (175340 => 175341)
--- branches/safari-600.3-branch/Source/WebKit2/NetworkProcess/NetworkProcess.messages.in 2014-10-29 20:26:40 UTC (rev 175340)
+++ branches/safari-600.3-branch/Source/WebKit2/NetworkProcess/NetworkProcess.messages.in 2014-10-29 20:48:31 UTC (rev 175341)
@@ -46,7 +46,6 @@
#endif
AllowSpecificHTTPSCertificateForHost(WebCore::CertificateInfo certificate, String host)
- SetCanHandleHTTPSServerTrustEvaluation(bool value)
GetNetworkProcessStatistics(uint64_t callbackID)
Modified: branches/safari-600.3-branch/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp (175340 => 175341)
--- branches/safari-600.3-branch/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp 2014-10-29 20:26:40 UTC (rev 175340)
+++ branches/safari-600.3-branch/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp 2014-10-29 20:48:31 UTC (rev 175341)
@@ -399,13 +399,6 @@
ASSERT_UNUSED(handle, handle == m_handle);
m_networkLoaderClient->canAuthenticateAgainstProtectionSpace(this, protectionSpace);
-
- // Handle server trust evaluation at platform-level if requested, for performance reasons.
- if (protectionSpace.authenticationScheme() == ProtectionSpaceAuthenticationSchemeServerTrustEvaluationRequested
- && !NetworkProcess::shared().canHandleHTTPSServerTrustEvaluation()) {
- continueCanAuthenticateAgainstProtectionSpace(false);
- return;
- }
}
void NetworkResourceLoader::continueCanAuthenticateAgainstProtectionSpace(bool result)
Modified: branches/safari-600.3-branch/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.cpp (175340 => 175341)
--- branches/safari-600.3-branch/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.cpp 2014-10-29 20:26:40 UTC (rev 175340)
+++ branches/safari-600.3-branch/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.cpp 2014-10-29 20:48:31 UTC (rev 175341)
@@ -40,7 +40,6 @@
{
encoder << privateBrowsingEnabled;
encoder.encodeEnum(cacheModel);
- encoder << canHandleHTTPSServerTrustEvaluation;
encoder << diskCacheDirectory;
encoder << diskCacheDirectoryExtensionHandle;
encoder << cookieStorageDirectory;
@@ -76,8 +75,6 @@
return false;
if (!decoder.decodeEnum(result.cacheModel))
return false;
- if (!decoder.decode(result.canHandleHTTPSServerTrustEvaluation))
- return false;
if (!decoder.decode(result.diskCacheDirectory))
return false;
if (!decoder.decode(result.diskCacheDirectoryExtensionHandle))
Modified: branches/safari-600.3-branch/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.h (175340 => 175341)
--- branches/safari-600.3-branch/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.h 2014-10-29 20:26:40 UTC (rev 175340)
+++ branches/safari-600.3-branch/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.h 2014-10-29 20:48:31 UTC (rev 175341)
@@ -52,7 +52,6 @@
bool privateBrowsingEnabled;
CacheModel cacheModel;
- bool canHandleHTTPSServerTrustEvaluation;
String diskCacheDirectory;
SandboxExtension::Handle diskCacheDirectoryExtensionHandle;
Modified: branches/safari-600.3-branch/Source/WebKit2/UIProcess/API/C/WKContext.cpp (175340 => 175341)
--- branches/safari-600.3-branch/Source/WebKit2/UIProcess/API/C/WKContext.cpp 2014-10-29 20:26:40 UTC (rev 175340)
+++ branches/safari-600.3-branch/Source/WebKit2/UIProcess/API/C/WKContext.cpp 2014-10-29 20:48:31 UTC (rev 175341)
@@ -385,11 +385,6 @@
toImpl(contextRef)->setDomainRelaxationForbiddenForURLScheme(toImpl(urlScheme)->string());
}
-void WKContextSetCanHandleHTTPSServerTrustEvaluation(WKContextRef contextRef, bool value)
-{
- toImpl(contextRef)->setCanHandleHTTPSServerTrustEvaluation(value);
-}
-
WKCookieManagerRef WKContextGetCookieManager(WKContextRef contextRef)
{
return toAPI(toImpl(contextRef)->supplement<WebCookieManagerProxy>());
Modified: branches/safari-600.3-branch/Source/WebKit2/UIProcess/API/C/WKContextPrivate.h (175340 => 175341)
--- branches/safari-600.3-branch/Source/WebKit2/UIProcess/API/C/WKContextPrivate.h 2014-10-29 20:26:40 UTC (rev 175340)
+++ branches/safari-600.3-branch/Source/WebKit2/UIProcess/API/C/WKContextPrivate.h 2014-10-29 20:48:31 UTC (rev 175341)
@@ -56,8 +56,6 @@
WK_EXPORT void WKContextSetDomainRelaxationForbiddenForURLScheme(WKContextRef context, WKStringRef urlScheme);
-WK_EXPORT void WKContextSetCanHandleHTTPSServerTrustEvaluation(WKContextRef context, bool value);
-
WK_EXPORT void WKContextSetIconDatabasePath(WKContextRef context, WKStringRef iconDatabasePath);
WK_EXPORT void WKContextAllowSpecificHTTPSCertificateForHost(WKContextRef context, WKCertificateInfoRef certificate, WKStringRef host);
Modified: branches/safari-600.3-branch/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm (175340 => 175341)
--- branches/safari-600.3-branch/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm 2014-10-29 20:26:40 UTC (rev 175340)
+++ branches/safari-600.3-branch/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm 2014-10-29 20:48:31 UTC (rev 175341)
@@ -197,11 +197,6 @@
_context->allowSpecificHTTPSCertificateForHost(WebKit::WebCertificateInfo::create(WebCore::CertificateInfo((CFArrayRef)certificateChain)).get(), host);
}
-- (void)_setCanHandleHTTPSServerTrustEvaluation:(BOOL)value
-{
- _context->setCanHandleHTTPSServerTrustEvaluation(value);
-}
-
static WebKit::HTTPCookieAcceptPolicy toHTTPCookieAcceptPolicy(NSHTTPCookieAcceptPolicy policy)
{
switch (static_cast<NSUInteger>(policy)) {
Modified: branches/safari-600.3-branch/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPoolPrivate.h (175340 => 175341)
--- branches/safari-600.3-branch/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPoolPrivate.h 2014-10-29 20:26:40 UTC (rev 175340)
+++ branches/safari-600.3-branch/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPoolPrivate.h 2014-10-29 20:48:31 UTC (rev 175341)
@@ -37,7 +37,6 @@
@property (nonatomic, readonly) _WKProcessPoolConfiguration *_configuration;
- (void)_setAllowsSpecificHTTPSCertificate:(NSArray *)certificateChain forHost:(NSString *)host;
-- (void)_setCanHandleHTTPSServerTrustEvaluation:(BOOL)value;
- (void)_setCookieAcceptPolicy:(NSHTTPCookieAcceptPolicy)policy;
- (id)_objectForBundleParameter:(NSString *)parameter;
Modified: branches/safari-600.3-branch/Source/WebKit2/UIProcess/WebContext.cpp (175340 => 175341)
--- branches/safari-600.3-branch/Source/WebKit2/UIProcess/WebContext.cpp 2014-10-29 20:26:40 UTC (rev 175340)
+++ branches/safari-600.3-branch/Source/WebKit2/UIProcess/WebContext.cpp 2014-10-29 20:48:31 UTC (rev 175341)
@@ -180,7 +180,6 @@
, m_shouldUseTestingNetworkSession(false)
, m_processTerminationEnabled(true)
#if ENABLE(NETWORK_PROCESS)
- , m_canHandleHTTPSServerTrustEvaluation(true)
, m_usesNetworkProcess(false)
#endif
#if USE(SOUP)
@@ -416,7 +415,6 @@
parameters.privateBrowsingEnabled = WebPreferences::anyPagesAreUsingPrivateBrowsing();
parameters.cacheModel = m_cacheModel;
- parameters.canHandleHTTPSServerTrustEvaluation = m_canHandleHTTPSServerTrustEvaluation;
parameters.diskCacheDirectory = stringByResolvingSymlinksInPath(diskCacheDirectory());
if (!parameters.diskCacheDirectory.isEmpty())
@@ -982,19 +980,6 @@
sendToAllProcesses(Messages::WebProcess::SetDomainRelaxationForbiddenForURLScheme(urlScheme));
}
-void WebContext::setCanHandleHTTPSServerTrustEvaluation(bool value)
-{
-#if ENABLE(NETWORK_PROCESS)
- m_canHandleHTTPSServerTrustEvaluation = value;
- if (m_usesNetworkProcess && m_networkProcess) {
- m_networkProcess->send(Messages::NetworkProcess::SetCanHandleHTTPSServerTrustEvaluation(value), 0);
- return;
- }
-#else
- UNUSED_PARAM(value);
-#endif
-}
-
void WebContext::registerURLSchemeAsLocal(const String& urlScheme)
{
m_schemesToRegisterAsLocal.add(urlScheme);
Modified: branches/safari-600.3-branch/Source/WebKit2/UIProcess/WebContext.h (175340 => 175341)
--- branches/safari-600.3-branch/Source/WebKit2/UIProcess/WebContext.h 2014-10-29 20:26:40 UTC (rev 175340)
+++ branches/safari-600.3-branch/Source/WebKit2/UIProcess/WebContext.h 2014-10-29 20:48:31 UTC (rev 175341)
@@ -199,7 +199,6 @@
void registerURLSchemeAsEmptyDocument(const String&);
void registerURLSchemeAsSecure(const String&);
void setDomainRelaxationForbiddenForURLScheme(const String&);
- void setCanHandleHTTPSServerTrustEvaluation(bool);
void registerURLSchemeAsLocal(const String&);
void registerURLSchemeAsNoAccess(const String&);
void registerURLSchemeAsDisplayIsolated(const String&);
@@ -534,7 +533,6 @@
bool m_processTerminationEnabled;
#if ENABLE(NETWORK_PROCESS)
- bool m_canHandleHTTPSServerTrustEvaluation;
bool m_usesNetworkProcess;
RefPtr<NetworkProcessProxy> m_networkProcess;
#endif