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);