Title: [175341] branches/safari-600.3-branch/Source/WebKit2

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
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to