[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

weinig at apple.com weinig at apple.com
Wed Dec 22 13:31:15 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit c368c8862d9da4aa1914eaa9adf25279f95eb6c4
Author: weinig at apple.com <weinig at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Sat Sep 18 00:20:23 2010 +0000

    Make certificate data available to the WKFrameRef after it is committed
    Part of <rdar://problem/8350189>
    https://bugs.webkit.org/show_bug.cgi?id=45998
    
    Reviewed by Anders Carlsson.
    
    * Shared/APIObject.h:
    Add new type.
    
    * Shared/WebCertificateInfo.h: Added.
    (WebKit::WebCertificateInfo::create):
    (WebKit::WebCertificateInfo::platformCertificateInfo):
    (WebKit::WebCertificateInfo::WebCertificateInfo):
    (WebKit::WebCertificateInfo::type):
    Add API type for vending.
    
    * Shared/mac/PlatformCertificateInfo.h: Added.
    (WebKit::PlatformCertificateInfo::peerCertificates):
    * Shared/mac/PlatformCertificateInfo.mm: Added.
    (WebKit::PlatformCertificateInfo::PlatformCertificateInfo):
    (WebKit::PlatformCertificateInfo::encode):
    (WebKit::PlatformCertificateInfo::decode):
    (WebKit::PlatformCertificateInfo::dump):
    * Shared/qt/PlatformCertificateInfo.h: Added.
    (WebKit::PlatformCertificateInfo::PlatformCertificateInfo):
    (WebKit::PlatformCertificateInfo::encode):
    (WebKit::PlatformCertificateInfo::decode):
    * Shared/win/PlatformCertificateInfo.h: Added.
    (WebKit::PlatformCertificateInfo::PlatformCertificateInfo):
    (WebKit::PlatformCertificateInfo::encode):
    (WebKit::PlatformCertificateInfo::decode):
    Add platform specific holder for certificate data and encode/decode functions
    to send it over the wire. Right now, this only implemented for the mac.
    
    * UIProcess/API/C/WKAPICast.h:
    * UIProcess/API/C/WKBase.h:
    * UIProcess/API/C/WKCertificateInfo.cpp: Added.
    (WKCertificateInfoGetTypeID):
    * UIProcess/API/C/WKCertificateInfo.h: Added.
    Add wrapper for WebCertificateInfo.
    
    * UIProcess/API/C/WKFrame.cpp:
    (WKFrameGetCertificateInfo):
    * UIProcess/API/C/WKFrame.h:
    Add getter for a WKCertificateInfo.
    
    * UIProcess/API/C/mac/WKCertificateInfoMac.h: Added.
    * UIProcess/API/C/mac/WKCertificateInfoMac.mm: Added.
    (WKCertificateInfoGetPeerCertificates):
    Add mac specific getters for the platform specific certificate
    data.
    
    * UIProcess/WebFrameProxy.cpp:
    (WebKit::WebFrameProxy::setCertificateInfo):
    * UIProcess/WebFrameProxy.h:
    (WebKit::WebFrameProxy::certificateInfo):
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::didReceiveMessage):
    (WebKit::WebPageProxy::didCommitLoadForFrame):
    * UIProcess/WebPageProxy.h:
    * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
    (WebKit::WebFrameLoaderClient::dispatchDidCommitLoad):
    * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
    Pipe the certificate info through to the WebFrameProxy on
    commit.
    
    * WebKit2.pro:
    * WebKit2.xcodeproj/project.pbxproj:
    * win/WebKit2.vcproj:
    * win/WebKit2Generated.make:
    Add new files.
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@67760 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index ff535e5..c244081 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -1,3 +1,77 @@
+2010-09-17  Sam Weinig  <sam at webkit.org>
+
+        Reviewed by Anders Carlsson.
+
+        Make certificate data available to the WKFrameRef after it is committed
+        Part of <rdar://problem/8350189>
+        https://bugs.webkit.org/show_bug.cgi?id=45998
+
+        * Shared/APIObject.h:
+        Add new type.
+
+        * Shared/WebCertificateInfo.h: Added.
+        (WebKit::WebCertificateInfo::create):
+        (WebKit::WebCertificateInfo::platformCertificateInfo):
+        (WebKit::WebCertificateInfo::WebCertificateInfo):
+        (WebKit::WebCertificateInfo::type):
+        Add API type for vending.
+
+        * Shared/mac/PlatformCertificateInfo.h: Added.
+        (WebKit::PlatformCertificateInfo::peerCertificates):
+        * Shared/mac/PlatformCertificateInfo.mm: Added.
+        (WebKit::PlatformCertificateInfo::PlatformCertificateInfo):
+        (WebKit::PlatformCertificateInfo::encode):
+        (WebKit::PlatformCertificateInfo::decode):
+        (WebKit::PlatformCertificateInfo::dump):
+        * Shared/qt/PlatformCertificateInfo.h: Added.
+        (WebKit::PlatformCertificateInfo::PlatformCertificateInfo):
+        (WebKit::PlatformCertificateInfo::encode):
+        (WebKit::PlatformCertificateInfo::decode):
+        * Shared/win/PlatformCertificateInfo.h: Added.
+        (WebKit::PlatformCertificateInfo::PlatformCertificateInfo):
+        (WebKit::PlatformCertificateInfo::encode):
+        (WebKit::PlatformCertificateInfo::decode):
+        Add platform specific holder for certificate data and encode/decode functions
+        to send it over the wire. Right now, this only implemented for the mac.
+
+        * UIProcess/API/C/WKAPICast.h:
+        * UIProcess/API/C/WKBase.h:
+        * UIProcess/API/C/WKCertificateInfo.cpp: Added.
+        (WKCertificateInfoGetTypeID):
+        * UIProcess/API/C/WKCertificateInfo.h: Added.
+        Add wrapper for WebCertificateInfo.
+
+        * UIProcess/API/C/WKFrame.cpp:
+        (WKFrameGetCertificateInfo):
+        * UIProcess/API/C/WKFrame.h:
+        Add getter for a WKCertificateInfo.
+
+        * UIProcess/API/C/mac/WKCertificateInfoMac.h: Added.
+        * UIProcess/API/C/mac/WKCertificateInfoMac.mm: Added.
+        (WKCertificateInfoGetPeerCertificates):
+        Add mac specific getters for the platform specific certificate
+        data.
+
+        * UIProcess/WebFrameProxy.cpp:
+        (WebKit::WebFrameProxy::setCertificateInfo):
+        * UIProcess/WebFrameProxy.h:
+        (WebKit::WebFrameProxy::certificateInfo):
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::didReceiveMessage):
+        (WebKit::WebPageProxy::didCommitLoadForFrame):
+        * UIProcess/WebPageProxy.h:
+        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
+        (WebKit::WebFrameLoaderClient::dispatchDidCommitLoad):
+        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
+        Pipe the certificate info through to the WebFrameProxy on
+        commit.
+
+        * WebKit2.pro:
+        * WebKit2.xcodeproj/project.pbxproj:
+        * win/WebKit2.vcproj:
+        * win/WebKit2Generated.make:
+        Add new files.
+
 2010-09-17  Matthew Delaney  <mdelaney at apple.com>
 
         Reviewed by Simon Fraser.
diff --git a/WebKit2/Shared/APIObject.h b/WebKit2/Shared/APIObject.h
index 38d12d3..4eada83 100644
--- a/WebKit2/Shared/APIObject.h
+++ b/WebKit2/Shared/APIObject.h
@@ -34,8 +34,9 @@ class APIObject : public RefCounted<APIObject> {
 public:
     enum Type {
         // Base types
-        TypeNull,
+        TypeNull = 0,
         TypeArray,
+        TypeCertificateInfo,
         TypeData,
         TypeDictionary,
         TypeError,
diff --git a/WebKit2/Shared/WebCertificateInfo.h b/WebKit2/Shared/WebCertificateInfo.h
new file mode 100644
index 0000000..84ff231
--- /dev/null
+++ b/WebKit2/Shared/WebCertificateInfo.h
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef WebCertificateInfo_h
+#define WebCertificateInfo_h
+
+#include "APIObject.h"
+#include "PlatformCertificateInfo.h"
+#include <wtf/PassRefPtr.h>
+
+namespace WebKit {
+
+class WebCertificateInfo : public APIObject {
+public:
+    static const Type APIType = TypeCertificateInfo;
+
+    static PassRefPtr<WebCertificateInfo> create(const PlatformCertificateInfo& info)
+    {
+        return adoptRef(new WebCertificateInfo(info));
+    }
+
+    const PlatformCertificateInfo& platformCertificateInfo() const { return m_platformCertificateInfo; }
+
+private:
+    explicit WebCertificateInfo(const PlatformCertificateInfo& info)
+        : m_platformCertificateInfo(info)
+    {
+    }
+
+    virtual Type type() const { return APIType; }
+
+    PlatformCertificateInfo m_platformCertificateInfo;
+};
+
+} // namespace WebKit
+
+#endif // WebCertificateInfo_h
diff --git a/WebKit2/Shared/mac/PlatformCertificateInfo.h b/WebKit2/Shared/mac/PlatformCertificateInfo.h
new file mode 100644
index 0000000..5a3ad5c
--- /dev/null
+++ b/WebKit2/Shared/mac/PlatformCertificateInfo.h
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef PlatformCertificateInfo_h
+#define PlatformCertificateInfo_h
+
+#include <WebCore/ResourceResponse.h>
+#include <wtf/RetainPtr.h>
+
+namespace CoreIPC {
+    class ArgumentDecoder;
+    class ArgumentEncoder;
+}
+
+namespace WebKit {
+
+class PlatformCertificateInfo {
+public:
+    PlatformCertificateInfo();
+    explicit PlatformCertificateInfo(const WebCore::ResourceResponse&);
+
+    CFArrayRef peerCertificates() const { return m_peerCertificates.get(); }
+
+    void encode(CoreIPC::ArgumentEncoder* encoder) const;
+    static bool decode(CoreIPC::ArgumentDecoder* decoder, PlatformCertificateInfo& t);
+
+#ifndef NDEBUG
+    void dump() const;
+#endif
+
+private:
+    RetainPtr<CFArrayRef> m_peerCertificates;
+};
+
+} // namespace WebKit
+
+#endif // PlatformCertificateInfo_h
diff --git a/WebKit2/Shared/mac/PlatformCertificateInfo.mm b/WebKit2/Shared/mac/PlatformCertificateInfo.mm
new file mode 100644
index 0000000..c234d76
--- /dev/null
+++ b/WebKit2/Shared/mac/PlatformCertificateInfo.mm
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "PlatformCertificateInfo.h"
+
+#include "ArgumentDecoder.h"
+#include "ArgumentEncoder.h"
+#include <WebKitSystemInterface.h>
+#include <Security/Security.h>
+
+using namespace WebCore;
+
+namespace WebKit {
+
+PlatformCertificateInfo::PlatformCertificateInfo()
+{
+}
+
+PlatformCertificateInfo::PlatformCertificateInfo(const ResourceResponse& response)
+    : m_peerCertificates(AdoptCF, WKCopyNSURLResponsePeerCertificates(response.nsURLResponse()))
+{
+}
+
+void PlatformCertificateInfo::encode(CoreIPC::ArgumentEncoder* encoder) const
+{
+    // Special case no certificates, 
+    if (!m_peerCertificates) {
+        encoder->encodeUInt64(std::numeric_limits<uint64_t>::max());
+        return;
+    }
+
+    uint64_t length = CFArrayGetCount(m_peerCertificates.get());
+    encoder->encodeUInt64(length);
+
+    for (size_t i = 0; i < length; ++i) {
+        RetainPtr<CFDataRef> data(AdoptCF, SecCertificateCopyData((SecCertificateRef)CFArrayGetValueAtIndex(m_peerCertificates.get(), i)));
+        encoder->encodeBytes(CFDataGetBytePtr(data.get()), CFDataGetLength(data.get()));
+    }
+}
+
+bool PlatformCertificateInfo::decode(CoreIPC::ArgumentDecoder* decoder, PlatformCertificateInfo& c)
+{
+    uint64_t length;
+    if (!decoder->decode(length))
+        return false;
+
+    if (length == std::numeric_limits<uint64_t>::max()) {
+        // This is the no certificates case.
+        return true;
+    }
+
+    RetainPtr<CFMutableArrayRef> array(AdoptCF, CFArrayCreateMutable(0, length, &kCFTypeArrayCallBacks));
+
+    for (size_t i = 0; i < length; ++i) {
+        Vector<uint8_t> bytes;
+        if (!decoder->decodeBytes(bytes))
+            return false;
+
+        RetainPtr<CFDataRef> data(AdoptCF, CFDataCreateWithBytesNoCopy(0, bytes.data(), bytes.size(), kCFAllocatorNull));
+        RetainPtr<SecCertificateRef> certificate(AdoptCF, SecCertificateCreateWithData(0, data.get()));
+        CFArrayAppendValue(array.get(), certificate.get());
+    }
+
+    c.m_peerCertificates = array;
+    return true;
+}
+
+#ifndef NDEBUG
+void PlatformCertificateInfo::dump() const
+{
+    unsigned entries = m_peerCertificates ? CFArrayGetCount(m_peerCertificates.get()) : 0;
+
+    NSLog(@"PlatformCertificateInfo\n");
+    NSLog(@"  Entries: %d\n", entries);
+    for (unsigned i = 0; i < entries; ++i) {
+        RetainPtr<CFStringRef> summary(AdoptCF, SecCertificateCopySubjectSummary((SecCertificateRef)CFArrayGetValueAtIndex(m_peerCertificates.get(), i)));
+        NSLog(@"  %@", (NSString *)summary.get());
+    }
+}
+#endif
+
+} // namespace WebKit
diff --git a/WebKit2/Shared/qt/PlatformCertificateInfo.h b/WebKit2/Shared/qt/PlatformCertificateInfo.h
new file mode 100644
index 0000000..1a407d1
--- /dev/null
+++ b/WebKit2/Shared/qt/PlatformCertificateInfo.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef PlatformCertificateInfo_h
+#define PlatformCertificateInfo_h
+
+#include "ArgumentDecoder.h"
+#include "ArgumentEncoder.h"
+#include <WebCore/ResourceResponse.h>
+
+namespace WebKit {
+
+class PlatformCertificateInfo {
+public:
+    PlatformCertificateInfo()
+    {
+    }
+
+    explicit PlatformCertificateInfo(const WebCore::ResourceResponse&)
+    {
+    }
+
+    void encode(CoreIPC::ArgumentEncoder*) const
+    {
+    }
+
+    static bool decode(CoreIPC::ArgumentDecoder*, PlatformCertificateInfo&)
+    {
+    }
+};
+
+} // namespace WebKit
+
+#endif // PlatformCertificateInfo_h
diff --git a/WebKit2/Shared/win/PlatformCertificateInfo.h b/WebKit2/Shared/win/PlatformCertificateInfo.h
new file mode 100644
index 0000000..8d76b27
--- /dev/null
+++ b/WebKit2/Shared/win/PlatformCertificateInfo.h
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef PlatformCertificateInfo_h
+#define PlatformCertificateInfo_h
+
+#include "ArgumentDecoder.h"
+#include "ArgumentEncoder.h"
+#include <WebCore/ResourceResponse.h>
+
+namespace WebKit {
+
+class PlatformCertificateInfo {
+public:
+    PlatformCertificateInfo()
+    {
+    }
+
+    explicit PlatformCertificateInfo(const WebCore::ResourceResponse&)
+    {
+    }
+
+    void encode(CoreIPC::ArgumentEncoder*) const
+    {
+    }
+
+    static bool decode(CoreIPC::ArgumentDecoder*, PlatformCertificateInfo&)
+    {
+        
+    }
+};
+
+} // namespace WebKit
+
+#endif // PlatformCertificateInfo_h
diff --git a/WebKit2/UIProcess/API/C/WKAPICast.h b/WebKit2/UIProcess/API/C/WKAPICast.h
index f46e314..147b0fa 100644
--- a/WebKit2/UIProcess/API/C/WKAPICast.h
+++ b/WebKit2/UIProcess/API/C/WKAPICast.h
@@ -47,6 +47,7 @@ class MutableArray;
 class MutableDictionary;
 class WebBackForwardList;
 class WebBackForwardListItem;
+class WebCertificateInfo;
 class WebContext;
 class WebData;
 class WebError;
@@ -66,6 +67,7 @@ template<> struct APITypeInfo<WKArrayRef>                       { typedef Immuta
 template<> struct APITypeInfo<WKBackForwardListItemRef>         { typedef WebBackForwardListItem* ImplType; };
 template<> struct APITypeInfo<WKBackForwardListRef>             { typedef WebBackForwardList* ImplType; };
 template<> struct APITypeInfo<WKBooleanRef>                     { typedef WebBoolean* ImplType; };
+template<> struct APITypeInfo<WKCertificateInfoRef>             { typedef WebCertificateInfo* ImplType; };
 template<> struct APITypeInfo<WKContextRef>                     { typedef WebContext* ImplType; };
 template<> struct APITypeInfo<WKDataRef>                        { typedef WebData* ImplType; };
 template<> struct APITypeInfo<WKDictionaryRef>                  { typedef ImmutableDictionary* ImplType; };
@@ -97,6 +99,7 @@ template<> struct ImplTypeInfo<MutableDictionary*>              { typedef WKMuta
 template<> struct ImplTypeInfo<WebBackForwardList*>             { typedef WKBackForwardListRef APIType; };
 template<> struct ImplTypeInfo<WebBackForwardListItem*>         { typedef WKBackForwardListItemRef APIType; };
 template<> struct ImplTypeInfo<WebBoolean*>                     { typedef WKBooleanRef APIType; };
+template<> struct ImplTypeInfo<WebCertificateInfo*>             { typedef WKCertificateInfoRef APIType; };
 template<> struct ImplTypeInfo<WebContext*>                     { typedef WKContextRef APIType; };
 template<> struct ImplTypeInfo<WebData*>                        { typedef WKDataRef APIType; };
 template<> struct ImplTypeInfo<WebDouble*>                      { typedef WKDoubleRef APIType; };
diff --git a/WebKit2/UIProcess/API/C/WKBase.h b/WebKit2/UIProcess/API/C/WKBase.h
index 7e07403..f598f48 100644
--- a/WebKit2/UIProcess/API/C/WKBase.h
+++ b/WebKit2/UIProcess/API/C/WKBase.h
@@ -44,6 +44,7 @@ typedef struct OpaqueWKDictionary* WKMutableDictionaryRef;
 typedef const struct OpaqueWKBackForwardList* WKBackForwardListRef;
 typedef const struct OpaqueWKBackForwardListItem* WKBackForwardListItemRef;
 typedef const struct OpaqueWKBoolean* WKBooleanRef;
+typedef const struct OpaqueWKCertificateInfo* WKCertificateInfoRef;
 typedef const struct OpaqueWKContext* WKContextRef;
 typedef const struct OpaqueWKData* WKDataRef;
 typedef const struct OpaqueWKDouble* WKDoubleRef;
diff --git a/WebKit2/UIProcess/API/C/WKCertificateInfo.cpp b/WebKit2/UIProcess/API/C/WKCertificateInfo.cpp
new file mode 100644
index 0000000..94ded70
--- /dev/null
+++ b/WebKit2/UIProcess/API/C/WKCertificateInfo.cpp
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "WKCertificateInfo.h"
+
+#include "WebCertificateInfo.h"
+#include "WKAPICast.h"
+
+using namespace WebKit;
+
+WKTypeID WKCertificateInfoGetTypeID()
+{
+    return toRef(WebCertificateInfo::APIType);
+}
diff --git a/WebKit2/UIProcess/API/C/WKCertificateInfo.h b/WebKit2/UIProcess/API/C/WKCertificateInfo.h
new file mode 100644
index 0000000..d4a2ed9
--- /dev/null
+++ b/WebKit2/UIProcess/API/C/WKCertificateInfo.h
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef WKCertificateInfo_h
+#define WKCertificateInfo_h
+
+#include <WebKit2/WKBase.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+WK_EXPORT WKTypeID WKCertificateInfoGetTypeID();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* WKCertificateInfo_h */
diff --git a/WebKit2/UIProcess/API/C/WKFrame.cpp b/WebKit2/UIProcess/API/C/WKFrame.cpp
index c4504e7..da390f3 100644
--- a/WebKit2/UIProcess/API/C/WKFrame.cpp
+++ b/WebKit2/UIProcess/API/C/WKFrame.cpp
@@ -70,3 +70,8 @@ WKPageRef WKFrameGetPage(WKFrameRef frameRef)
 {
     return toRef(toWK(frameRef)->page());
 }
+
+WKCertificateInfoRef WKFrameGetCertificateInfo(WKFrameRef frameRef)
+{
+    return toRef(toWK(frameRef)->certificateInfo());
+}
diff --git a/WebKit2/UIProcess/API/C/WKFrame.h b/WebKit2/UIProcess/API/C/WKFrame.h
index aa0180a..3e81724 100644
--- a/WebKit2/UIProcess/API/C/WKFrame.h
+++ b/WebKit2/UIProcess/API/C/WKFrame.h
@@ -52,6 +52,8 @@ WK_EXPORT WKURLRef WKFrameCopyURL(WKFrameRef frame);
 
 WK_EXPORT WKPageRef WKFrameGetPage(WKFrameRef frame);
 
+WK_EXPORT WKCertificateInfoRef WKFrameGetCertificateInfo(WKFrameRef frame);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/WebKit2/UIProcess/API/C/mac/WKCertificateInfoMac.h b/WebKit2/UIProcess/API/C/mac/WKCertificateInfoMac.h
new file mode 100644
index 0000000..11efdb7
--- /dev/null
+++ b/WebKit2/UIProcess/API/C/mac/WKCertificateInfoMac.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef WKCertificateInfoMac_h
+#define WKCertificateInfoMac_h
+
+#include <Foundation/Foundation.h>
+#include <WebKit2/WKBase.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+WK_EXPORT CFArrayRef WKCertificateInfoGetPeerCertificates(WKCertificateInfoRef certificateInfo);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* WKCertificateInfoMac_h */
diff --git a/WebKit2/UIProcess/API/C/mac/WKCertificateInfoMac.mm b/WebKit2/UIProcess/API/C/mac/WKCertificateInfoMac.mm
new file mode 100644
index 0000000..1455909
--- /dev/null
+++ b/WebKit2/UIProcess/API/C/mac/WKCertificateInfoMac.mm
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "WKCertificateInfoMac.h"
+
+#include "WKAPICast.h"
+#include "WebCertificateInfo.h"
+
+using namespace WebKit;
+
+CFArrayRef WKCertificateInfoGetPeerCertificates(WKCertificateInfoRef certificateInfoRef)
+{
+    return toWK(certificateInfoRef)->platformCertificateInfo().peerCertificates();
+}
diff --git a/WebKit2/UIProcess/WebFrameProxy.cpp b/WebKit2/UIProcess/WebFrameProxy.cpp
index 16406a4..c382915 100644
--- a/WebKit2/UIProcess/WebFrameProxy.cpp
+++ b/WebKit2/UIProcess/WebFrameProxy.cpp
@@ -25,6 +25,7 @@
 
 #include "WebFrameProxy.h"
 
+#include "WebCertificateInfo.h"
 #include "WebFormSubmissionListenerProxy.h"
 #include "WebFramePolicyListenerProxy.h"
 #include "WebPageProxy.h"
@@ -62,6 +63,11 @@ bool WebFrameProxy::isMainFrame() const
     return this == m_page->mainFrame();
 }
 
+void WebFrameProxy::setCertificateInfo(PassRefPtr<WebCertificateInfo> certificateInfo)
+{
+    m_certificateInfo = certificateInfo;
+}
+
 void WebFrameProxy::didStartProvisionalLoad(const String& url)
 {
     // FIXME: Add assertions.
diff --git a/WebKit2/UIProcess/WebFrameProxy.h b/WebKit2/UIProcess/WebFrameProxy.h
index 4b36002..72839e5 100644
--- a/WebKit2/UIProcess/WebFrameProxy.h
+++ b/WebKit2/UIProcess/WebFrameProxy.h
@@ -41,9 +41,11 @@ namespace CoreIPC {
 
 namespace WebKit {
 
-class WebPageProxy;
-class WebFramePolicyListenerProxy;
+class PlatformCertificateInfo;
+class WebCertificateInfo;
 class WebFormSubmissionListenerProxy;
+class WebFramePolicyListenerProxy;
+class WebPageProxy;
 
 class WebFrameProxy : public APIObject {
 public:
@@ -72,6 +74,9 @@ public:
     const WTF::String& url() const { return m_url; }
     const WTF::String& provisionalURL() const { return m_provisionalURL; }
 
+    void setCertificateInfo(PassRefPtr<WebCertificateInfo>);
+    WebCertificateInfo* certificateInfo() const { return m_certificateInfo.get(); }
+
     void didStartProvisionalLoad(const String& url);
     void didReceiveServerRedirectForProvisionalLoad(const String& url);
     void didCommitLoad();
@@ -91,6 +96,7 @@ private:
     LoadState m_loadState;
     WTF::String m_url;
     WTF::String m_provisionalURL;
+    RefPtr<WebCertificateInfo> m_certificateInfo;
     RefPtr<WebFrameListenerProxy> m_activeListener;
     uint64_t m_frameID;
 };
diff --git a/WebKit2/UIProcess/WebPageProxy.cpp b/WebKit2/UIProcess/WebPageProxy.cpp
index 47b970b..88924db 100644
--- a/WebKit2/UIProcess/WebPageProxy.cpp
+++ b/WebKit2/UIProcess/WebPageProxy.cpp
@@ -30,6 +30,7 @@
 #include "PageClient.h"
 #include "WebBackForwardList.h"
 #include "WebBackForwardListItem.h"
+#include "WebCertificateInfo.h"
 #include "WebContext.h"
 #include "WebContextUserMessageCoders.h"
 #include "WebCoreArgumentCoders.h"
@@ -555,9 +556,10 @@ void WebPageProxy::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::M
         }
         case WebPageProxyMessage::DidCommitLoadForFrame: {
             uint64_t frameID;
-            if (!arguments->decode(frameID))
+            PlatformCertificateInfo certificateInfo;
+            if (!arguments->decode(CoreIPC::Out(frameID, certificateInfo)))
                 return;
-            didCommitLoadForFrame(process()->webFrame(frameID));
+            didCommitLoadForFrame(process()->webFrame(frameID), certificateInfo);
             break;
         }
         case WebPageProxyMessage::DidFinishDocumentLoadForFrame: {
@@ -933,8 +935,9 @@ void WebPageProxy::didFailProvisionalLoadForFrame(WebFrameProxy* frame)
     m_loaderClient.didFailProvisionalLoadWithErrorForFrame(this, frame);
 }
 
-void WebPageProxy::didCommitLoadForFrame(WebFrameProxy* frame)
+void WebPageProxy::didCommitLoadForFrame(WebFrameProxy* frame, const PlatformCertificateInfo& certificateInfo)
 {
+    frame->setCertificateInfo(WebCertificateInfo::create(certificateInfo));
     frame->didCommitLoad();
     m_loaderClient.didCommitLoadForFrame(this, frame);
 }
diff --git a/WebKit2/UIProcess/WebPageProxy.h b/WebKit2/UIProcess/WebPageProxy.h
index 7a7e8da..ffc51c7 100644
--- a/WebKit2/UIProcess/WebPageProxy.h
+++ b/WebKit2/UIProcess/WebPageProxy.h
@@ -64,6 +64,7 @@ namespace WebKit {
 
 class DrawingAreaProxy;
 class PageClient;
+class PlatformCertificateInfo;
 class WebBackForwardList;
 class WebBackForwardListItem;
 class WebData;
@@ -206,7 +207,7 @@ private:
     void didStartProvisionalLoadForFrame(WebFrameProxy*, const String&);
     void didReceiveServerRedirectForProvisionalLoadForFrame(WebFrameProxy*, const String&);
     void didFailProvisionalLoadForFrame(WebFrameProxy*);
-    void didCommitLoadForFrame(WebFrameProxy*);
+    void didCommitLoadForFrame(WebFrameProxy*, const PlatformCertificateInfo&);
     void didFinishDocumentLoadForFrame(WebFrameProxy*);
     void didFinishLoadForFrame(WebFrameProxy*);
     void didFailLoadForFrame(WebFrameProxy*);
diff --git a/WebKit2/WebKit2.pro b/WebKit2/WebKit2.pro
index 2987561..4688007 100644
--- a/WebKit2/WebKit2.pro
+++ b/WebKit2/WebKit2.pro
@@ -162,9 +162,11 @@ HEADERS += \
     Shared/MutableArray.h \
     Shared/MutableDictionary.h \
     Shared/NotImplemented.h \
+    Shared/qt/PlatformCertificateInfo.h \
     Shared/qt/WebEventFactoryQt.h \
     Shared/UserMessageCoders.h \
     Shared/VisitedLinkTable.h \
+    Shared/WebCertificateInfo.h \
     Shared/WebEventConversion.h \
     Shared/WebEvent.h \
     Shared/WebNumber.h \
@@ -178,6 +180,7 @@ HEADERS += \
     UIProcess/API/C/WebKit2.h \
     UIProcess/API/C/WKAPICast.h \
     UIProcess/API/C/WKBase.h \
+    UIProcess/API/C/WKCertificateInfo.h \
     UIProcess/API/C/WKContext.h \
     UIProcess/API/C/WKContextPrivate.h \
     UIProcess/API/C/WKFrame.h \
@@ -292,6 +295,7 @@ SOURCES += \
     Shared/qt/WebCoreArgumentCodersQt.cpp \
     Shared/qt/WebURLRequestQt.cpp \
     Shared/qt/WebURLResponseQt.cpp \
+    UIProcess/API/C/WKCertificateInfo.cpp \
     UIProcess/API/C/WKContext.cpp \
     UIProcess/API/C/WKFrame.cpp \
     UIProcess/API/C/WKFramePolicyListener.cpp \
diff --git a/WebKit2/WebKit2.xcodeproj/project.pbxproj b/WebKit2/WebKit2.xcodeproj/project.pbxproj
index 57a9d45..95125b3 100644
--- a/WebKit2/WebKit2.xcodeproj/project.pbxproj
+++ b/WebKit2/WebKit2.xcodeproj/project.pbxproj
@@ -336,6 +336,14 @@
 		BCF50121123ED3B3005955AE /* ThreadLauncher.h in Headers */ = {isa = PBXBuildFile; fileRef = BCF5011F123ED3B3005955AE /* ThreadLauncher.h */; };
 		BCF50122123ED3B3005955AE /* ThreadLauncher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCF50120123ED3B3005955AE /* ThreadLauncher.cpp */; };
 		BCF501B4123EF602005955AE /* ThreadLauncherMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCF501B3123EF602005955AE /* ThreadLauncherMac.mm */; };
+		BCF505E71243047B005955AE /* PlatformCertificateInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = BCF505E51243047B005955AE /* PlatformCertificateInfo.h */; };
+		BCF505E81243047B005955AE /* PlatformCertificateInfo.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCF505E61243047B005955AE /* PlatformCertificateInfo.mm */; };
+		BCF5068512431861005955AE /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BCF5068412431861005955AE /* Security.framework */; };
+		BCF50724124328A9005955AE /* WKCertificateInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = BCF50722124328A9005955AE /* WKCertificateInfo.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		BCF50725124328A9005955AE /* WKCertificateInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCF50723124328A9005955AE /* WKCertificateInfo.cpp */; };
+		BCF50728124329AA005955AE /* WebCertificateInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = BCF50726124329AA005955AE /* WebCertificateInfo.h */; };
+		BCF5072E12432A97005955AE /* WKCertificateInfoMac.h in Headers */ = {isa = PBXBuildFile; fileRef = BCF5072C12432A97005955AE /* WKCertificateInfoMac.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		BCF5072F12432A97005955AE /* WKCertificateInfoMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCF5072D12432A97005955AE /* WKCertificateInfoMac.mm */; };
 		BCF69F861176CD6F00471A52 /* WebHistoryClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCF69F841176CD6F00471A52 /* WebHistoryClient.cpp */; };
 		BCF69F871176CD6F00471A52 /* WebHistoryClient.h in Headers */ = {isa = PBXBuildFile; fileRef = BCF69F851176CD6F00471A52 /* WebHistoryClient.h */; };
 		BCF69F9A1176CED600471A52 /* WebNavigationDataStore.h in Headers */ = {isa = PBXBuildFile; fileRef = BCF69F981176CED600471A52 /* WebNavigationDataStore.h */; };
@@ -720,6 +728,14 @@
 		BCF5011F123ED3B3005955AE /* ThreadLauncher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadLauncher.h; sourceTree = "<group>"; };
 		BCF50120123ED3B3005955AE /* ThreadLauncher.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ThreadLauncher.cpp; sourceTree = "<group>"; };
 		BCF501B3123EF602005955AE /* ThreadLauncherMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ThreadLauncherMac.mm; sourceTree = "<group>"; };
+		BCF505E51243047B005955AE /* PlatformCertificateInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformCertificateInfo.h; sourceTree = "<group>"; };
+		BCF505E61243047B005955AE /* PlatformCertificateInfo.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PlatformCertificateInfo.mm; sourceTree = "<group>"; };
+		BCF5068412431861005955AE /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = /System/Library/Frameworks/Security.framework; sourceTree = "<absolute>"; };
+		BCF50722124328A9005955AE /* WKCertificateInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKCertificateInfo.h; sourceTree = "<group>"; };
+		BCF50723124328A9005955AE /* WKCertificateInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKCertificateInfo.cpp; sourceTree = "<group>"; };
+		BCF50726124329AA005955AE /* WebCertificateInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebCertificateInfo.h; sourceTree = "<group>"; };
+		BCF5072C12432A97005955AE /* WKCertificateInfoMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKCertificateInfoMac.h; sourceTree = "<group>"; };
+		BCF5072D12432A97005955AE /* WKCertificateInfoMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKCertificateInfoMac.mm; sourceTree = "<group>"; };
 		BCF69F841176CD6F00471A52 /* WebHistoryClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebHistoryClient.cpp; sourceTree = "<group>"; };
 		BCF69F851176CD6F00471A52 /* WebHistoryClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebHistoryClient.h; sourceTree = "<group>"; };
 		BCF69F981176CED600471A52 /* WebNavigationDataStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNavigationDataStore.h; sourceTree = "<group>"; };
@@ -763,6 +779,7 @@
 				BC87DFAA1018101400564216 /* libicucore.dylib in Frameworks */,
 				1AA1CC5D100FA1A10078DEBC /* QuartzCore.framework in Frameworks */,
 				1A1C4EC810D06099005E67E7 /* WebCore.framework in Frameworks */,
+				BCF5068512431861005955AE /* Security.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -826,6 +843,7 @@
 				BC87DFA91018101400564216 /* libicucore.dylib */,
 				1AA1CC5C100FA1A10078DEBC /* QuartzCore.framework */,
 				1AA1C79A100E7FC50078DEBC /* WebCore.framework */,
+				BCF5068412431861005955AE /* Security.framework */,
 			);
 			name = "Linked Frameworks";
 			sourceTree = "<group>";
@@ -942,6 +960,7 @@
 				1A0F29C9120B37160053D1B9 /* VisitedLinkTable.cpp */,
 				1A0F29CA120B37160053D1B9 /* VisitedLinkTable.h */,
 				BC1DD7B1114DC396005ADAF3 /* WebCoreArgumentCoders.h */,
+				BCF50726124329AA005955AE /* WebCertificateInfo.h */,
 				51578B821209ECEF00A37C4A /* WebData.h */,
 				516A4A5B120A2CCD00C05B7F /* WebError.h */,
 				BC032DAF10F4380F0058C15A /* WebEvent.h */,
@@ -951,13 +970,13 @@
 				BC33DD671238464600360F3F /* WebNumber.h */,
 				BCD598AB112B7FDF00EC8C23 /* WebPreferencesStore.cpp */,
 				BCD598AA112B7FDF00EC8C23 /* WebPreferencesStore.h */,
+				A72D5D7F1236CBA800A88B15 /* WebSerializedScriptValue.h */,
 				BCF04C8E11FF9F6E00F86A58 /* WebString.h */,
 				BCDB86C01200FB97007254BE /* WebURL.h */,
 				BCE2315C122C30CA00D5C35A /* WebURLRequest.cpp */,
 				BCE2315B122C30CA00D5C35A /* WebURLRequest.h */,
 				BC90A1D1122DD55E00CC8C50 /* WebURLResponse.cpp */,
 				BC90A1D0122DD55E00CC8C50 /* WebURLResponse.h */,
-				A72D5D7F1236CBA800A88B15 /* WebSerializedScriptValue.h */,
 			);
 			path = Shared;
 			sourceTree = "<group>";
@@ -1166,6 +1185,8 @@
 				BC646C1811DD399F006455B0 /* WKBackForwardListItem.cpp */,
 				BC646C1911DD399F006455B0 /* WKBackForwardListItem.h */,
 				BC0C376710F807B20076D7CB /* WKBase.h */,
+				BCF50723124328A9005955AE /* WKCertificateInfo.cpp */,
+				BCF50722124328A9005955AE /* WKCertificateInfo.h */,
 				BCB9E24A1120E15C00A137E0 /* WKContext.cpp */,
 				BCB9E2491120E15C00A137E0 /* WKContext.h */,
 				BCC938E01180DE440085E5FE /* WKContextPrivate.h */,
@@ -1263,6 +1284,8 @@
 			isa = PBXGroup;
 			children = (
 				1A6F9FB611E1408500DB1371 /* CommandLineMac.cpp */,
+				BCF505E61243047B005955AE /* PlatformCertificateInfo.mm */,
+				BCF505E51243047B005955AE /* PlatformCertificateInfo.h */,
 				BC9E95D211449B0300870E71 /* UpdateChunk.cpp */,
 				BC9E95D111449B0300870E71 /* UpdateChunk.h */,
 				BCE23262122C6CF300D5C35A /* WebCoreArgumentCodersMac.mm */,
@@ -1448,6 +1471,8 @@
 		BCE23276122C718F00D5C35A /* mac */ = {
 			isa = PBXGroup;
 			children = (
+				BCF5072C12432A97005955AE /* WKCertificateInfoMac.h */,
+				BCF5072D12432A97005955AE /* WKCertificateInfoMac.mm */,
 				BCE23277122C71AC00D5C35A /* WKURLRequestNS.h */,
 				BCE23278122C71AC00D5C35A /* WKURLRequestNS.mm */,
 				BC90A1DE122DD8EE00CC8C50 /* WKURLResponseNS.h */,
@@ -1633,6 +1658,10 @@
 				BC33DE8E12385C3300360F3F /* WKNumber.h in Headers */,
 				BC33DF061238677F00360F3F /* WKSerializedScriptValue.h in Headers */,
 				BCF50121123ED3B3005955AE /* ThreadLauncher.h in Headers */,
+				BCF505E71243047B005955AE /* PlatformCertificateInfo.h in Headers */,
+				BCF50724124328A9005955AE /* WKCertificateInfo.h in Headers */,
+				BCF50728124329AA005955AE /* WebCertificateInfo.h in Headers */,
+				BCF5072E12432A97005955AE /* WKCertificateInfoMac.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -1880,6 +1909,9 @@
 				BC33DE8F12385C3300360F3F /* WKNumber.cpp in Sources */,
 				BCF50122123ED3B3005955AE /* ThreadLauncher.cpp in Sources */,
 				BCF501B4123EF602005955AE /* ThreadLauncherMac.mm in Sources */,
+				BCF505E81243047B005955AE /* PlatformCertificateInfo.mm in Sources */,
+				BCF50725124328A9005955AE /* WKCertificateInfo.cpp in Sources */,
+				BCF5072F12432A97005955AE /* WKCertificateInfoMac.mm in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
diff --git a/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp b/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
index ec65182..6447dfa 100644
--- a/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
+++ b/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
@@ -30,6 +30,7 @@
 
 #include "InjectedBundleUserMessageCoders.h"
 #include "NetscapePlugin.h"
+#include "PlatformCertificateInfo.h"
 #include "PluginView.h"
 #include "WebCoreArgumentCoders.h"
 #include "WebErrors.h"
@@ -309,11 +310,13 @@ void WebFrameLoaderClient::dispatchDidCommitLoad()
     if (!webPage)
         return;
 
+    const ResourceResponse& response = m_frame->coreFrame()->loader()->documentLoader()->response();
+
     // Notify the bundle client.
     webPage->injectedBundleLoaderClient().didCommitLoadForFrame(webPage, m_frame);
 
     // Notify the UIProcess.
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidCommitLoadForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID()));
+    WebProcess::shared().connection()->send(WebPageProxyMessage::DidCommitLoadForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID(), PlatformCertificateInfo(response)));
 }
 
 void WebFrameLoaderClient::dispatchDidFailProvisionalLoad(const ResourceError& error)
diff --git a/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.h b/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.h
index bcde537..766557a 100644
--- a/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.h
+++ b/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.h
@@ -205,9 +205,8 @@ private:
     virtual bool shouldUsePluginDocument(const WTF::String& /*mimeType*/) const;
     
     virtual PassRefPtr<WebCore::FrameNetworkingContext> createNetworkingContext();
-    
+
     WebFrame* m_frame;
-    
     RefPtr<PluginView> m_pluginView;
     bool m_hasSentResponseToPluginView;
 };
diff --git a/WebKit2/win/WebKit2.vcproj b/WebKit2/win/WebKit2.vcproj
index cb2bd03..ede8c8a 100755
--- a/WebKit2/win/WebKit2.vcproj
+++ b/WebKit2/win/WebKit2.vcproj
@@ -461,6 +461,10 @@
 				>
 			</File>
 			<File
+				RelativePath="..\Shared\WebCertificateInfo.h"
+				>
+			</File>
+			<File
 				RelativePath="..\Shared\WebEvent.h"
 				>
 			</File>
@@ -576,6 +580,10 @@
 					>
 				</File>
 				<File
+					RelativePath="..\Shared\win\PlatformCertificateInfo.h"
+					>
+				</File>
+				<File
 					RelativePath="..\Shared\win\WebURLRequestWin.cpp"
 					>
 					<FileConfiguration
@@ -1331,6 +1339,14 @@
 						>
 					</File>
 					<File
+						RelativePath="..\UIProcess\API\C\WKCertificateInfo.cpp"
+						>
+					</File>
+					<File
+						RelativePath="..\UIProcess\API\C\WKCertificateInfo.h"
+						>
+					</File>
+					<File
 						RelativePath="..\UIProcess\API\C\WKContext.cpp"
 						>
 					</File>
diff --git a/WebKit2/win/WebKit2Generated.make b/WebKit2/win/WebKit2Generated.make
index 07e9f1b..19f4b65 100644
--- a/WebKit2/win/WebKit2Generated.make
+++ b/WebKit2/win/WebKit2Generated.make
@@ -6,6 +6,7 @@ all:
     xcopy /y /d "..\UIProcess\API\C\WKBackForwardList.h" "$(WEBKITOUTPUTDIR)\include\WebKit2"
     xcopy /y /d "..\UIProcess\API\C\WKBackForwardListItem.h" "$(WEBKITOUTPUTDIR)\include\WebKit2"
     xcopy /y /d "..\UIProcess\API\C\WKBase.h" "$(WEBKITOUTPUTDIR)\include\WebKit2"
+    xcopy /y /d "..\UIProcess\API\C\WKCertificateInfo.h" "$(WEBKITOUTPUTDIR)\include\WebKit2"
     xcopy /y /d "..\UIProcess\API\C\WKContext.h" "$(WEBKITOUTPUTDIR)\include\WebKit2"
     xcopy /y /d "..\UIProcess\API\C\WKContextPrivate.h" "$(WEBKITOUTPUTDIR)\include\WebKit2"
     xcopy /y /d "..\UIProcess\API\C\WKData.h" "$(WEBKITOUTPUTDIR)\include\WebKit2"

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list