Source/WebCore/ChangeLog

 12012-12-19 Alexey Proskuryakov <ap@apple.com>
 2
 3 <rdar://problem/12890242> [WK2 NetworkProcess] Client doesn't receive SSL certificates
 4 https://bugs.webkit.org/show_bug.cgi?id=105467
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 Implement a way to store certificate chain in ResourceResponse separately from
 9 NSURLResponse. There is no way to re-add it to a deserialized NSURLResponse.
 10
 11 * WebCore.exp.in:
 12 * platform/mac/WebCoreSystemInterface.h:
 13 * platform/mac/WebCoreSystemInterface.mm:
 14 * platform/network/cf/ResourceResponse.h:
 15 * platform/network/mac/ResourceResponseMac.mm:
 16 (WebCore::ResourceResponse::setCertificateChain):
 17 (WebCore::ResourceResponse::certificateChain):
 18
1192012-12-19 Antti Koivisto <antti@apple.com>
220
321 Use ElementTraversal in LiveNodeListBase
138195

Source/WebCore/WebCore.exp.in

@@__ZN7WebCore16NavigationActionC1ERKNS_15
468468__ZN7WebCore16NavigationActionC1ERKNS_15ResourceRequestENS_13FrameLoadTypeEb
469469__ZN7WebCore16NavigationActionC1ERKNS_15ResourceRequestENS_14NavigationTypeE
470470__ZN7WebCore16NavigationActionC1Ev
 471__ZN7WebCore16ResourceResponse19setCertificateChainEPK9__CFArray
471472__ZN7WebCore16ScriptController10initScriptEPNS_15DOMWrapperWorldE
472473__ZN7WebCore16ScriptController11createWorldEv
473474__ZN7WebCore16ScriptController13executeScriptERKN3WTF6StringEb

@@__ZNK7WebCore16HTMLInputElement15isPassw
12891290__ZNK7WebCore16HTMLInputElement18shouldAutocompleteEv
12901291__ZNK7WebCore16IconDatabaseBase12databasePathEv
12911292__ZNK7WebCore16ResourceResponse13nsURLResponseEv
 1293__ZNK7WebCore16ResourceResponse16certificateChainEv
12921294__ZNK7WebCore16VisibleSelection17isContentEditableEv
12931295__ZNK7WebCore16VisibleSelection17toNormalizedRangeEv
12941296__ZNK7WebCore16VisibleSelection19rootEditableElementEv

@@_wkCopyCFURLResponseSuggestedFilename
15171519_wkCopyCONNECTProxyResponse
15181520_wkCopyHTTPCookieStorage
15191521_wkCopyNSURLResponseStatusLine
 1522_wkCopyNSURLResponseCertificateChain
15201523_wkCopyRequestWithStorageSession
15211524_wkCreateCTLineWithUniCharProvider
15221525_wkCreateCustomCFReadStream
138173

Source/WebCore/platform/mac/WebCoreSystemInterface.h

@@extern CFReadStreamRef (*wkCreateCustomC
135135 void *context);
136136extern CFStringRef (*wkCopyCFLocalizationPreferredName)(CFStringRef);
137137extern NSString* (*wkCopyNSURLResponseStatusLine)(NSURLResponse*);
 138extern CFArrayRef (*wkCopyNSURLResponseCertificateChain)(NSURLResponse*);
138139extern id (*wkCreateNSURLConnectionDelegateProxy)(void);
139140extern void (*wkDrawBezeledTextFieldCell)(NSRect, BOOL enabled);
140141extern void (*wkDrawTextFieldCellFocusRing)(NSTextFieldCell*, NSRect);
138173

Source/WebCore/platform/mac/WebCoreSystemInterface.mm

@@bool (*wkCGContextDrawsWithCorrectShadow
3939CGPatternRef (*wkCGPatternCreateWithImageAndTransform)(CGImageRef, CGAffineTransform, int);
4040CFStringRef (*wkCopyCFLocalizationPreferredName)(CFStringRef);
4141NSString* (*wkCopyNSURLResponseStatusLine)(NSURLResponse*);
 42CFArrayRef (*wkCopyNSURLResponseCertificateChain)(NSURLResponse*);
4243NSString* (*wkCreateURLPasteboardFlavorTypeName)(void);
4344NSString* (*wkCreateURLNPasteboardFlavorTypeName)(void);
4445void (*wkDrawBezeledTextFieldCell)(NSRect, BOOL enabled);
138173

Source/WebCore/platform/network/cf/ResourceResponse.h

@@public:
8888 NSURLResponse *nsURLResponse() const;
8989#endif
9090
 91#if PLATFORM(MAC) || USE(CFNETWORK)
 92 void setCertificateChain(CFArrayRef);
 93 RetainPtr<CFArrayRef> certificateChain() const;
 94#endif
 95
9196private:
9297 friend class ResourceResponseBase;
9398

@@private:
106111#if PLATFORM(MAC)
107112 mutable RetainPtr<NSURLResponse> m_nsResponse;
108113#endif
 114#if PLATFORM(MAC) || USE(CFNETWORK)
 115 // Certificate chain is normally part of NS/CFURLResponse, but there is no way to re-add it to a deserialized response after IPC.
 116 RetainPtr<CFArrayRef> m_externalCertificateChain;
 117#endif
109118 InitLevel m_initLevel;
110119};
111120
138173

Source/WebCore/platform/network/mac/ResourceResponseMac.mm

@@bool ResourceResponse::platformCompare(c
171171 return a.nsURLResponse() == b.nsURLResponse();
172172}
173173
 174void ResourceResponse::setCertificateChain(CFArrayRef certificateChain)
 175{
 176 ASSERT(!wkCopyNSURLResponseCertificateChain(nsURLResponse()));
 177 m_externalCertificateChain = certificateChain;
 178}
 179
 180RetainPtr<CFArrayRef> ResourceResponse::certificateChain() const
 181{
 182 if (m_externalCertificateChain)
 183 return m_externalCertificateChain;
 184
 185 return adoptCF(wkCopyNSURLResponseCertificateChain(nsURLResponse()));
 186}
 187
174188#endif // USE(CFNETWORK)
175189
176190} // namespace WebCore
138173

Source/WebKit2/ChangeLog

 12012-12-19 Alexey Proskuryakov <ap@apple.com>
 2
 3 <rdar://problem/12890242> [WK2 NetworkProcess] Client doesn't receive SSL certificates
 4 https://bugs.webkit.org/show_bug.cgi?id=105467
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 * NetworkProcess/NetworkResourceLoader.cpp:
 9 (WebKit::NetworkResourceLoader::didReceiveResponse):
 10 * Shared/mac/PlatformCertificateInfo.mm:
 11 (WebKit::PlatformCertificateInfo::PlatformCertificateInfo):
 12 * WebProcess/Network/WebResourceLoader.cpp:
 13 (WebKit::WebResourceLoader::didReceiveResponse):
 14 * WebProcess/Network/WebResourceLoader.h:
 15 * WebProcess/Network/WebResourceLoader.messages.in:
 16 Pass certificate chain over IPC, so that we could ultimately send it to client
 17 via WebPageProxy::DidCommitLoadForFrame message.
 18
 19 * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm: (InitWebCoreSystemInterface):
 20 Initialize a WKSI function we've been missing.
 21
1222012-12-18 Jon Lee <jonlee@apple.com>
223
324 Notify context client of change to table, and allow client to get a copy of it
138195

Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp

3333#include "NetworkConnectionToWebProcess.h"
3434#include "NetworkProcess.h"
3535#include "NetworkResourceLoadParameters.h"
 36#include "PlatformCertificateInfo.h"
3637#include "RemoteNetworkingContext.h"
3738#include "SharedMemory.h"
3839#include "WebCoreArgumentCoders.h"

@@void NetworkResourceLoader::didReceiveRe
151152 // FIXME (NetworkProcess): Cache the response.
152153 if (FormData* formData = m_requestParameters.request().httpBody())
153154 formData->removeGeneratedFilesIfNeeded();
154  send(Messages::WebResourceLoader::DidReceiveResponse(response));
 155 send(Messages::WebResourceLoader::DidReceiveResponse(response, PlatformCertificateInfo(response)));
155156}
156157
157158void NetworkResourceLoader::didReceiveData(ResourceHandle*, const char* data, int length, int encodedDataLength)
138173

Source/WebKit2/Shared/mac/PlatformCertificateInfo.mm

2929#import "ArgumentCodersCF.h"
3030#import "ArgumentDecoder.h"
3131#import "ArgumentEncoder.h"
32 #import <WebKitSystemInterface.h>
3332
3433using namespace WebCore;
3534

@@PlatformCertificateInfo::PlatformCertifi
4039}
4140
4241PlatformCertificateInfo::PlatformCertificateInfo(const ResourceResponse& response)
43  : m_certificateChain(AdoptCF, WKCopyNSURLResponseCertificateChain(response.nsURLResponse()))
 42 : m_certificateChain(response.certificateChain())
4443{
4544}
4645
138173

Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp

3333#include "NetworkConnectionToWebProcessMessages.h"
3434#include "NetworkProcessConnection.h"
3535#include "NetworkResourceLoaderMessages.h"
 36#include "PlatformCertificateInfo.h"
3637#include "WebCoreArgumentCoders.h"
3738#include "WebProcess.h"
3839#include <WebCore/ResourceLoader.h>

@@void WebResourceLoader::willSendRequest(
7576 send(Messages::NetworkResourceLoader::WillSendRequestHandled(requestID, newRequest));
7677}
7778
78 void WebResourceLoader::didReceiveResponse(const WebCore::ResourceResponse& response)
 79void WebResourceLoader::didReceiveResponse(const ResourceResponse& response, const PlatformCertificateInfo& certificateInfo)
7980{
8081 LOG(Network, "(WebProcess) WebResourceLoader::didReceiveResponse for '%s'. Status %d.", m_coreLoader->url().string().utf8().data(), response.httpStatusCode());
81  m_coreLoader->didReceiveResponse(response);
 82 ResourceResponse responseCopy(response);
 83 responseCopy.setCertificateChain(certificateInfo.certificateChain());
 84 m_coreLoader->didReceiveResponse(responseCopy);
8285}
8386
8487void WebResourceLoader::didReceiveData(const CoreIPC::DataReference& data, int64_t encodedDataLength, bool allAtOnce)
138173

Source/WebKit2/WebProcess/Network/WebResourceLoader.h

@@class ResourceResponse;
5252
5353namespace WebKit {
5454
 55class PlatformCertificateInfo;
5556typedef uint64_t ResourceLoadIdentifier;
5657
5758class WebResourceLoader : public RefCounted<WebResourceLoader>, public CoreIPC::MessageSender<WebResourceLoader>, public WebCore::AuthenticationClient {

@@private:
7778 WebResourceLoader(PassRefPtr<WebCore::ResourceLoader>);
7879
7980 void willSendRequest(uint64_t requestID, const WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse);
80  void didReceiveResponse(const WebCore::ResourceResponse&);
 81 void didReceiveResponse(const WebCore::ResourceResponse&, const PlatformCertificateInfo& certificateInfo);
8182 void didReceiveData(const CoreIPC::DataReference&, int64_t encodedDataLength, bool allAtOnce);
8283 void didFinishResourceLoad(double finishTime);
8384 void didFailResourceLoad(const WebCore::ResourceError&);
138173

Source/WebKit2/WebProcess/Network/WebResourceLoader.messages.in

@@messages -> WebResourceLoader {
2424
2525 // FIXME (NetworkProcess): We'll need much more granularity for response messages.
2626 WillSendRequest(uint64_t requestID, WebCore::ResourceRequest request, WebCore::ResourceResponse redirectResponse)
27  DidReceiveResponse(WebCore::ResourceResponse response)
 27 DidReceiveResponse(WebCore::ResourceResponse response, WebKit::PlatformCertificateInfo certificateInfo)
2828 DidReceiveData(CoreIPC::DataReference data, int64_t encodedDataLength, bool allAtOnce)
2929 DidFinishResourceLoad(double finishTime)
3030 DidFailResourceLoad(WebCore::ResourceError error)
138173

Source/WebKit2/WebProcess/WebCoreSupport/mac/WebSystemInterface.mm

@@void InitWebCoreSystemInterface(void)
5050#endif
5151 INIT(CopyCONNECTProxyResponse);
5252 INIT(CopyNSURLResponseStatusLine);
 53 INIT(CopyNSURLResponseCertificateChain);
5354 INIT(CreateCTLineWithUniCharProvider);
5455 INIT(CreateCustomCFReadStream);
5556 INIT(CreateNSURLConnectionDelegateProxy);
138173

Source/WebKit/mac/ChangeLog

 12012-12-19 Alexey Proskuryakov <ap@apple.com>
 2
 3 Need a short description (OOPS!).
 4 Need the bug URL (OOPS!).
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).
 9
 10 * WebCoreSupport/WebSystemInterface.mm:
 11 (InitWebCoreSystemInterface):
 12
1132012-12-19 Alexis Menard <alexis@webkit.org>
214
315 Implement CSS parsing for CSS transitions unprefixed.
138195

Source/WebKit/mac/WebCoreSupport/WebSystemInterface.mm

@@void InitWebCoreSystemInterface(void)
5858 INIT(CopyCFLocalizationPreferredName);
5959 INIT(CopyCONNECTProxyResponse);
6060 INIT(CopyNSURLResponseStatusLine);
 61 INIT(CopyNSURLResponseCertificateChain);
6162 INIT(CreateCustomCFReadStream);
6263 INIT(CreateNSURLConnectionDelegateProxy);
6364 INIT(DrawCapsLockIndicator);
138173