Title: [138206] trunk/Source

Diff

Modified: trunk/Source/WebCore/ChangeLog (138205 => 138206)


--- trunk/Source/WebCore/ChangeLog	2012-12-20 00:50:48 UTC (rev 138205)
+++ trunk/Source/WebCore/ChangeLog	2012-12-20 00:58:25 UTC (rev 138206)
@@ -1,3 +1,21 @@
+2012-12-19  Alexey Proskuryakov  <a...@apple.com>
+
+        <rdar://problem/12890242> [WK2 NetworkProcess] Client doesn't receive SSL certificates
+        https://bugs.webkit.org/show_bug.cgi?id=105467
+
+        Reviewed by Brady Eidson.
+
+        Implement a way to store certificate chain in ResourceResponse separately from
+        NSURLResponse. There is no way to re-add it to a deserialized NSURLResponse.
+
+        * WebCore.exp.in:
+        * platform/mac/WebCoreSystemInterface.h:
+        * platform/mac/WebCoreSystemInterface.mm:
+        * platform/network/cf/ResourceResponse.h:
+        * platform/network/mac/ResourceResponseMac.mm:
+        (WebCore::ResourceResponse::setCertificateChain):
+        (WebCore::ResourceResponse::certificateChain):
+
 2012-12-19  Gustavo Noronha Silva  <g...@gnome.org>
 
         Unreviewed. Add new strings to GTK+'s implementation of

Modified: trunk/Source/WebCore/WebCore.exp.in (138205 => 138206)


--- trunk/Source/WebCore/WebCore.exp.in	2012-12-20 00:50:48 UTC (rev 138205)
+++ trunk/Source/WebCore/WebCore.exp.in	2012-12-20 00:58:25 UTC (rev 138206)
@@ -468,6 +468,7 @@
 __ZN7WebCore16NavigationActionC1ERKNS_15ResourceRequestENS_13FrameLoadTypeEb
 __ZN7WebCore16NavigationActionC1ERKNS_15ResourceRequestENS_14NavigationTypeE
 __ZN7WebCore16NavigationActionC1Ev
+__ZN7WebCore16ResourceResponse19setCertificateChainEPK9__CFArray
 __ZN7WebCore16ScriptController10initScriptEPNS_15DOMWrapperWorldE
 __ZN7WebCore16ScriptController11createWorldEv
 __ZN7WebCore16ScriptController13executeScriptERKN3WTF6StringEb
@@ -1289,6 +1290,7 @@
 __ZNK7WebCore16HTMLInputElement18shouldAutocompleteEv
 __ZNK7WebCore16IconDatabaseBase12databasePathEv
 __ZNK7WebCore16ResourceResponse13nsURLResponseEv
+__ZNK7WebCore16ResourceResponse16certificateChainEv
 __ZNK7WebCore16VisibleSelection17isContentEditableEv
 __ZNK7WebCore16VisibleSelection17toNormalizedRangeEv
 __ZNK7WebCore16VisibleSelection19rootEditableElementEv
@@ -1517,6 +1519,7 @@
 _wkCopyCONNECTProxyResponse
 _wkCopyHTTPCookieStorage
 _wkCopyNSURLResponseStatusLine
+_wkCopyNSURLResponseCertificateChain
 _wkCopyRequestWithStorageSession
 _wkCreateCTLineWithUniCharProvider
 _wkCreateCustomCFReadStream

Modified: trunk/Source/WebCore/platform/mac/WebCoreSystemInterface.h (138205 => 138206)


--- trunk/Source/WebCore/platform/mac/WebCoreSystemInterface.h	2012-12-20 00:50:48 UTC (rev 138205)
+++ trunk/Source/WebCore/platform/mac/WebCoreSystemInterface.h	2012-12-20 00:58:25 UTC (rev 138206)
@@ -135,6 +135,7 @@
     void *context);
 extern CFStringRef (*wkCopyCFLocalizationPreferredName)(CFStringRef);
 extern NSString* (*wkCopyNSURLResponseStatusLine)(NSURLResponse*);
+extern CFArrayRef (*wkCopyNSURLResponseCertificateChain)(NSURLResponse*);
 extern id (*wkCreateNSURLConnectionDelegateProxy)(void);
 extern void (*wkDrawBezeledTextFieldCell)(NSRect, BOOL enabled);
 extern void (*wkDrawTextFieldCellFocusRing)(NSTextFieldCell*, NSRect);

Modified: trunk/Source/WebCore/platform/mac/WebCoreSystemInterface.mm (138205 => 138206)


--- trunk/Source/WebCore/platform/mac/WebCoreSystemInterface.mm	2012-12-20 00:50:48 UTC (rev 138205)
+++ trunk/Source/WebCore/platform/mac/WebCoreSystemInterface.mm	2012-12-20 00:58:25 UTC (rev 138206)
@@ -39,6 +39,7 @@
 CGPatternRef (*wkCGPatternCreateWithImageAndTransform)(CGImageRef, CGAffineTransform, int);
 CFStringRef (*wkCopyCFLocalizationPreferredName)(CFStringRef);
 NSString* (*wkCopyNSURLResponseStatusLine)(NSURLResponse*);
+CFArrayRef (*wkCopyNSURLResponseCertificateChain)(NSURLResponse*);
 NSString* (*wkCreateURLPasteboardFlavorTypeName)(void);
 NSString* (*wkCreateURLNPasteboardFlavorTypeName)(void);
 void (*wkDrawBezeledTextFieldCell)(NSRect, BOOL enabled);

Modified: trunk/Source/WebCore/platform/network/cf/ResourceResponse.h (138205 => 138206)


--- trunk/Source/WebCore/platform/network/cf/ResourceResponse.h	2012-12-20 00:50:48 UTC (rev 138205)
+++ trunk/Source/WebCore/platform/network/cf/ResourceResponse.h	2012-12-20 00:58:25 UTC (rev 138206)
@@ -88,6 +88,11 @@
     NSURLResponse *nsURLResponse() const;
 #endif
 
+#if PLATFORM(MAC) || USE(CFNETWORK)
+    void setCertificateChain(CFArrayRef);
+    RetainPtr<CFArrayRef> certificateChain() const;
+#endif
+
 private:
     friend class ResourceResponseBase;
 
@@ -106,6 +111,10 @@
 #if PLATFORM(MAC)
     mutable RetainPtr<NSURLResponse> m_nsResponse;
 #endif
+#if PLATFORM(MAC) || USE(CFNETWORK)
+    // Certificate chain is normally part of NS/CFURLResponse, but there is no way to re-add it to a deserialized response after IPC.
+    RetainPtr<CFArrayRef> m_externalCertificateChain;
+#endif
     InitLevel m_initLevel;
 };
 

Modified: trunk/Source/WebCore/platform/network/mac/ResourceResponseMac.mm (138205 => 138206)


--- trunk/Source/WebCore/platform/network/mac/ResourceResponseMac.mm	2012-12-20 00:50:48 UTC (rev 138205)
+++ trunk/Source/WebCore/platform/network/mac/ResourceResponseMac.mm	2012-12-20 00:58:25 UTC (rev 138206)
@@ -171,6 +171,20 @@
     return a.nsURLResponse() == b.nsURLResponse();
 }
 
+void ResourceResponse::setCertificateChain(CFArrayRef certificateChain)
+{
+    ASSERT(!wkCopyNSURLResponseCertificateChain(nsURLResponse()));
+    m_externalCertificateChain = certificateChain;
+}
+
+RetainPtr<CFArrayRef> ResourceResponse::certificateChain() const
+{
+    if (m_externalCertificateChain)
+        return m_externalCertificateChain;
+
+    return adoptCF(wkCopyNSURLResponseCertificateChain(nsURLResponse()));
+}
+
 #endif // USE(CFNETWORK)
 
 } // namespace WebCore

Modified: trunk/Source/WebKit/mac/ChangeLog (138205 => 138206)


--- trunk/Source/WebKit/mac/ChangeLog	2012-12-20 00:50:48 UTC (rev 138205)
+++ trunk/Source/WebKit/mac/ChangeLog	2012-12-20 00:58:25 UTC (rev 138206)
@@ -1,3 +1,13 @@
+2012-12-19  Alexey Proskuryakov  <a...@apple.com>
+
+        <rdar://problem/12890242> [WK2 NetworkProcess] Client doesn't receive SSL certificates
+        https://bugs.webkit.org/show_bug.cgi?id=105467
+
+        Reviewed by Brady Eidson.
+
+        * WebCoreSupport/WebSystemInterface.mm: (InitWebCoreSystemInterface): Initialize
+        a WKSI function we've been missing.
+
 2012-12-19  Alexis Menard  <ale...@webkit.org>
 
         Implement CSS parsing for CSS transitions unprefixed.

Modified: trunk/Source/WebKit/mac/WebCoreSupport/WebSystemInterface.mm (138205 => 138206)


--- trunk/Source/WebKit/mac/WebCoreSupport/WebSystemInterface.mm	2012-12-20 00:50:48 UTC (rev 138205)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebSystemInterface.mm	2012-12-20 00:58:25 UTC (rev 138206)
@@ -58,6 +58,7 @@
     INIT(CopyCFLocalizationPreferredName);
     INIT(CopyCONNECTProxyResponse);
     INIT(CopyNSURLResponseStatusLine);
+    INIT(CopyNSURLResponseCertificateChain);
     INIT(CreateCustomCFReadStream);
     INIT(CreateNSURLConnectionDelegateProxy);
     INIT(DrawCapsLockIndicator);

Modified: trunk/Source/WebKit2/ChangeLog (138205 => 138206)


--- trunk/Source/WebKit2/ChangeLog	2012-12-20 00:50:48 UTC (rev 138205)
+++ trunk/Source/WebKit2/ChangeLog	2012-12-20 00:58:25 UTC (rev 138206)
@@ -1,3 +1,24 @@
+2012-12-19  Alexey Proskuryakov  <a...@apple.com>
+
+        <rdar://problem/12890242> [WK2 NetworkProcess] Client doesn't receive SSL certificates
+        https://bugs.webkit.org/show_bug.cgi?id=105467
+
+        Reviewed by Brady Eidson.
+
+        * NetworkProcess/NetworkResourceLoader.cpp:
+        (WebKit::NetworkResourceLoader::didReceiveResponse):
+        * Shared/mac/PlatformCertificateInfo.mm:
+        (WebKit::PlatformCertificateInfo::PlatformCertificateInfo):
+        * WebProcess/Network/WebResourceLoader.cpp:
+        (WebKit::WebResourceLoader::didReceiveResponseWithCertificateInfo):
+        * WebProcess/Network/WebResourceLoader.h:
+        * WebProcess/Network/WebResourceLoader.messages.in:
+        Pass certificate chain over IPC, so that we could ultimately send it to client
+        via WebPageProxy::DidCommitLoadForFrame message.
+
+        * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm: (InitWebCoreSystemInterface):
+        Initialize a WKSI function we've been missing.
+
 2012-12-19  Jon Lee  <jon...@apple.com>
 
         Add a function to set the origin hash table

Modified: trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp (138205 => 138206)


--- trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp	2012-12-20 00:50:48 UTC (rev 138205)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp	2012-12-20 00:58:25 UTC (rev 138206)
@@ -33,6 +33,7 @@
 #include "NetworkConnectionToWebProcess.h"
 #include "NetworkProcess.h"
 #include "NetworkResourceLoadParameters.h"
+#include "PlatformCertificateInfo.h"
 #include "RemoteNetworkingContext.h"
 #include "SharedMemory.h"
 #include "WebCoreArgumentCoders.h"
@@ -151,7 +152,7 @@
     // FIXME (NetworkProcess): Cache the response.
     if (FormData* formData = m_requestParameters.request().httpBody())
         formData->removeGeneratedFilesIfNeeded();
-    send(Messages::WebResourceLoader::DidReceiveResponse(response));
+    send(Messages::WebResourceLoader::DidReceiveResponseWithCertificateInfo(response, PlatformCertificateInfo(response)));
 }
 
 void NetworkResourceLoader::didReceiveData(ResourceHandle*, const char* data, int length, int encodedDataLength)

Modified: trunk/Source/WebKit2/Shared/mac/PlatformCertificateInfo.mm (138205 => 138206)


--- trunk/Source/WebKit2/Shared/mac/PlatformCertificateInfo.mm	2012-12-20 00:50:48 UTC (rev 138205)
+++ trunk/Source/WebKit2/Shared/mac/PlatformCertificateInfo.mm	2012-12-20 00:58:25 UTC (rev 138206)
@@ -29,7 +29,6 @@
 #import "ArgumentCodersCF.h"
 #import "ArgumentDecoder.h"
 #import "ArgumentEncoder.h"
-#import <WebKitSystemInterface.h>
 
 using namespace WebCore;
 
@@ -40,7 +39,7 @@
 }
 
 PlatformCertificateInfo::PlatformCertificateInfo(const ResourceResponse& response)
-    : m_certificateChain(AdoptCF, WKCopyNSURLResponseCertificateChain(response.nsURLResponse()))
+    : m_certificateChain(response.certificateChain())
 {
 }
 

Modified: trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp (138205 => 138206)


--- trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp	2012-12-20 00:50:48 UTC (rev 138205)
+++ trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp	2012-12-20 00:58:25 UTC (rev 138206)
@@ -33,6 +33,7 @@
 #include "NetworkConnectionToWebProcessMessages.h"
 #include "NetworkProcessConnection.h"
 #include "NetworkResourceLoaderMessages.h"
+#include "PlatformCertificateInfo.h"
 #include "WebCoreArgumentCoders.h"
 #include "WebProcess.h"
 #include <WebCore/ResourceLoader.h>
@@ -75,10 +76,12 @@
     send(Messages::NetworkResourceLoader::WillSendRequestHandled(requestID, newRequest));
 }
 
-void WebResourceLoader::didReceiveResponse(const WebCore::ResourceResponse& response)
+void WebResourceLoader::didReceiveResponseWithCertificateInfo(const ResourceResponse& response, const PlatformCertificateInfo& certificateInfo)
 {
-    LOG(Network, "(WebProcess) WebResourceLoader::didReceiveResponse for '%s'. Status %d.", m_coreLoader->url().string().utf8().data(), response.httpStatusCode());
-    m_coreLoader->didReceiveResponse(response);
+    LOG(Network, "(WebProcess) WebResourceLoader::didReceiveResponseWithCertificateInfo for '%s'. Status %d.", m_coreLoader->url().string().utf8().data(), response.httpStatusCode());
+    ResourceResponse responseCopy(response);
+    responseCopy.setCertificateChain(certificateInfo.certificateChain());
+    m_coreLoader->didReceiveResponse(responseCopy);
 }
 
 void WebResourceLoader::didReceiveData(const CoreIPC::DataReference& data, int64_t encodedDataLength, bool allAtOnce)

Modified: trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.h (138205 => 138206)


--- trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.h	2012-12-20 00:50:48 UTC (rev 138205)
+++ trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.h	2012-12-20 00:58:25 UTC (rev 138206)
@@ -52,6 +52,7 @@
 
 namespace WebKit {
 
+class PlatformCertificateInfo;
 typedef uint64_t ResourceLoadIdentifier;
 
 class WebResourceLoader : public RefCounted<WebResourceLoader>, public CoreIPC::MessageSender<WebResourceLoader>, public WebCore::AuthenticationClient {
@@ -77,7 +78,7 @@
     WebResourceLoader(PassRefPtr<WebCore::ResourceLoader>);
 
     void willSendRequest(uint64_t requestID, const WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse);
-    void didReceiveResponse(const WebCore::ResourceResponse&);
+    void didReceiveResponseWithCertificateInfo(const WebCore::ResourceResponse&, const PlatformCertificateInfo&);
     void didReceiveData(const CoreIPC::DataReference&, int64_t encodedDataLength, bool allAtOnce);
     void didFinishResourceLoad(double finishTime);
     void didFailResourceLoad(const WebCore::ResourceError&);

Modified: trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.messages.in (138205 => 138206)


--- trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.messages.in	2012-12-20 00:50:48 UTC (rev 138205)
+++ trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.messages.in	2012-12-20 00:58:25 UTC (rev 138206)
@@ -24,7 +24,7 @@
 
     // FIXME (NetworkProcess): We'll need much more granularity for response messages.
     WillSendRequest(uint64_t requestID, WebCore::ResourceRequest request, WebCore::ResourceResponse redirectResponse)
-    DidReceiveResponse(WebCore::ResourceResponse response)
+    DidReceiveResponseWithCertificateInfo(WebCore::ResourceResponse response, WebKit::PlatformCertificateInfo certificateInfo)
     DidReceiveData(CoreIPC::DataReference data, int64_t encodedDataLength, bool allAtOnce)
     DidFinishResourceLoad(double finishTime)
     DidFailResourceLoad(WebCore::ResourceError error)

Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/mac/WebSystemInterface.mm (138205 => 138206)


--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/mac/WebSystemInterface.mm	2012-12-20 00:50:48 UTC (rev 138205)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/mac/WebSystemInterface.mm	2012-12-20 00:58:25 UTC (rev 138206)
@@ -50,6 +50,7 @@
 #endif
         INIT(CopyCONNECTProxyResponse);
         INIT(CopyNSURLResponseStatusLine);
+        INIT(CopyNSURLResponseCertificateChain);
         INIT(CreateCTLineWithUniCharProvider);
         INIT(CreateCustomCFReadStream);
         INIT(CreateNSURLConnectionDelegateProxy);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to