Title: [86692] trunk/Source/WebKit2
Revision
86692
Author
[email protected]
Date
2011-05-17 11:57:54 -0700 (Tue, 17 May 2011)

Log Message

Part 4 of <rdar://problem/8814289> and https://bugs.webkit.org/show_bug.cgi?id=60595
Mac WebKit2 WebProcess needs a shim to make prompts appear to be from the UIProcess

Reviewed by Anders Carlsson.

This patch actually hooks up the shim to the WebProcess shim callbacks, which messages these
4 calls up to the UIProcess and returns the result.

Note that this patch uncovered the fact that CoreIPC can't sync message out from a secondary thread,
so I filed https://bugs.webkit.org/show_bug.cgi?id=60975 as a followup to allow that.

* Shared/mac/SecItemResponseData.cpp:
(WebKit::SecItemResponseData::SecItemResponseData): Reorder the constructor arguments to be 
  a little cleaner.
* Shared/mac/SecItemResponseData.h:

Call the shim callbacks for each method:
* WebProcess/mac/WebProcessShim.mm:
(WebKit::shimSecItemCopyMatching):
(WebKit::shimSecItemAdd):
(WebKit::shimSecItemUpdate):
(WebKit::shimSecItemDelete):

Implement the shim callbacks, which each marshall to the main thread, which then calls out to CoreIPC:
* WebProcess/mac/WebProcessMac.mm:
(WebKit::WebSecItemCopyMatchingMainThread):
(WebKit::WebSecItemCopyMatching):
(WebKit::WebSecItemAddOnMainThread):
(WebKit::WebSecItemAdd):
(WebKit::WebSecItemUpdateOnMainThread):
(WebKit::WebSecItemUpdate):
(WebKit::WebSecItemDeleteOnMainThread):
(WebKit::WebSecItemDelete):

Add the 4 messages and their implementations in the UIProcess:
* UIProcess/WebProcessProxy.h:
* UIProcess/WebProcessProxy.messages.in:
* UIProcess/mac/WebProcessProxyMac.mm: Added.
(WebKit::WebProcessProxy::secItemCopyMatching):
(WebKit::WebProcessProxy::secItemAdd):
(WebKit::WebProcessProxy::secItemUpdate):
(WebKit::WebProcessProxy::secItemDelete):

* WebKit2.xcodeproj/project.pbxproj:

Modified Paths

Added Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (86691 => 86692)


--- trunk/Source/WebKit2/ChangeLog	2011-05-17 18:37:32 UTC (rev 86691)
+++ trunk/Source/WebKit2/ChangeLog	2011-05-17 18:57:54 UTC (rev 86692)
@@ -1,3 +1,50 @@
+2011-05-17  Brady Eidson  <[email protected]>
+
+        Reviewed by Anders Carlsson.
+
+        Part 4 of <rdar://problem/8814289> and https://bugs.webkit.org/show_bug.cgi?id=60595
+        Mac WebKit2 WebProcess needs a shim to make prompts appear to be from the UIProcess
+
+        This patch actually hooks up the shim to the WebProcess shim callbacks, which messages these
+        4 calls up to the UIProcess and returns the result.
+
+        Note that this patch uncovered the fact that CoreIPC can't sync message out from a secondary thread,
+        so I filed https://bugs.webkit.org/show_bug.cgi?id=60975 as a followup to allow that.
+
+        * Shared/mac/SecItemResponseData.cpp:
+        (WebKit::SecItemResponseData::SecItemResponseData): Reorder the constructor arguments to be 
+          a little cleaner.
+        * Shared/mac/SecItemResponseData.h:
+
+        Call the shim callbacks for each method:
+        * WebProcess/mac/WebProcessShim.mm:
+        (WebKit::shimSecItemCopyMatching):
+        (WebKit::shimSecItemAdd):
+        (WebKit::shimSecItemUpdate):
+        (WebKit::shimSecItemDelete):
+
+        Implement the shim callbacks, which each marshall to the main thread, which then calls out to CoreIPC:
+        * WebProcess/mac/WebProcessMac.mm:
+        (WebKit::WebSecItemCopyMatchingMainThread):
+        (WebKit::WebSecItemCopyMatching):
+        (WebKit::WebSecItemAddOnMainThread):
+        (WebKit::WebSecItemAdd):
+        (WebKit::WebSecItemUpdateOnMainThread):
+        (WebKit::WebSecItemUpdate):
+        (WebKit::WebSecItemDeleteOnMainThread):
+        (WebKit::WebSecItemDelete):
+
+        Add the 4 messages and their implementations in the UIProcess:
+        * UIProcess/WebProcessProxy.h:
+        * UIProcess/WebProcessProxy.messages.in:
+        * UIProcess/mac/WebProcessProxyMac.mm: Added.
+        (WebKit::WebProcessProxy::secItemCopyMatching):
+        (WebKit::WebProcessProxy::secItemAdd):
+        (WebKit::WebProcessProxy::secItemUpdate):
+        (WebKit::WebProcessProxy::secItemDelete):
+
+        * WebKit2.xcodeproj/project.pbxproj:
+
 2011-05-17  Anders Carlsson  <[email protected]>
 
         Reviewed by Dan Bernstein.

Modified: trunk/Source/WebKit2/Shared/mac/SecItemResponseData.cpp (86691 => 86692)


--- trunk/Source/WebKit2/Shared/mac/SecItemResponseData.cpp	2011-05-17 18:37:32 UTC (rev 86691)
+++ trunk/Source/WebKit2/Shared/mac/SecItemResponseData.cpp	2011-05-17 18:57:54 UTC (rev 86692)
@@ -35,7 +35,7 @@
 {
 }
 
-SecItemResponseData::SecItemResponseData(CFTypeRef resultObject, OSStatus resultCode)
+SecItemResponseData::SecItemResponseData(OSStatus resultCode, CFTypeRef resultObject)
     : m_resultObject(resultObject)
     , m_resultCode(resultCode)
 {

Modified: trunk/Source/WebKit2/Shared/mac/SecItemResponseData.h (86691 => 86692)


--- trunk/Source/WebKit2/Shared/mac/SecItemResponseData.h	2011-05-17 18:37:32 UTC (rev 86691)
+++ trunk/Source/WebKit2/Shared/mac/SecItemResponseData.h	2011-05-17 18:57:54 UTC (rev 86692)
@@ -38,7 +38,7 @@
 class SecItemResponseData {
 public:
     SecItemResponseData();
-    SecItemResponseData(CFTypeRef result, OSStatus);
+    SecItemResponseData(OSStatus, CFTypeRef result);
 
     void encode(CoreIPC::ArgumentEncoder*) const;
     static bool decode(CoreIPC::ArgumentDecoder*, SecItemResponseData&);

Modified: trunk/Source/WebKit2/UIProcess/WebProcessProxy.h (86691 => 86692)


--- trunk/Source/WebKit2/UIProcess/WebProcessProxy.h	2011-05-17 18:37:32 UTC (rev 86691)
+++ trunk/Source/WebKit2/UIProcess/WebProcessProxy.h	2011-05-17 18:57:54 UTC (rev 86692)
@@ -47,6 +47,11 @@
 
 namespace WebKit {
 
+#if PLATFORM(MAC)
+class SecItemRequestData;
+class SecItemResponseData;
+#endif
+
 class WebBackForwardListItem;
 class WebContext;
 class WebPageGroup;
@@ -124,6 +129,12 @@
     void getPluginProcessConnection(const String& pluginPath, PassRefPtr<Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply>);
     void pluginSyncMessageSendTimedOut(const String& pluginPath);
 #endif
+#if PLATFORM(MAC)
+    void secItemCopyMatching(const SecItemRequestData&, SecItemResponseData&);
+    void secItemAdd(const SecItemRequestData&, SecItemResponseData&);
+    void secItemUpdate(const SecItemRequestData&, SecItemResponseData&);
+    void secItemDelete(const SecItemRequestData&, SecItemResponseData&);
+#endif
 
     // CoreIPC::Connection::Client
     virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*);

Modified: trunk/Source/WebKit2/UIProcess/WebProcessProxy.messages.in (86691 => 86692)


--- trunk/Source/WebKit2/UIProcess/WebProcessProxy.messages.in	2011-05-17 18:37:32 UTC (rev 86691)
+++ trunk/Source/WebKit2/UIProcess/WebProcessProxy.messages.in	2011-05-17 18:57:54 UTC (rev 86692)
@@ -31,4 +31,12 @@
     GetPluginProcessConnection(WTF::String pluginPath) -> (CoreIPC::MachPort connectionHandle) Delayed
     PluginSyncMessageSendTimedOut(WTF::String pluginPath)
 #endif
+
+#if PLATFORM(MAC)
+    SecItemCopyMatching(WebKit::SecItemRequestData query) -> (WebKit::SecItemResponseData result)
+    SecItemAdd(WebKit::SecItemRequestData query) -> (WebKit::SecItemResponseData result)
+    SecItemUpdate(WebKit::SecItemRequestData query) -> (WebKit::SecItemResponseData result)
+    SecItemDelete(WebKit::SecItemRequestData query) -> (WebKit::SecItemResponseData result)
+#endif
+
 }

Added: trunk/Source/WebKit2/UIProcess/mac/WebProcessProxyMac.mm (0 => 86692)


--- trunk/Source/WebKit2/UIProcess/mac/WebProcessProxyMac.mm	                        (rev 0)
+++ trunk/Source/WebKit2/UIProcess/mac/WebProcessProxyMac.mm	2011-05-17 18:57:54 UTC (rev 86692)
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2011 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.
+ */
+ 
+#import "config.h"
+#import "WebProcessProxy.h"
+
+#import "SecItemRequestData.h"
+#import "SecItemResponseData.h"
+#import <Security/SecItem.h>
+
+namespace WebKit {
+
+void WebProcessProxy::secItemCopyMatching(const SecItemRequestData& queryData, SecItemResponseData& result)
+{
+    CFDictionaryRef query = queryData.query();
+    CFTypeRef resultObject;
+    OSStatus resultCode;
+
+    resultCode = SecItemCopyMatching(query, &resultObject);
+
+    result = SecItemResponseData(resultCode, resultObject);
+}
+
+void WebProcessProxy::secItemAdd(const SecItemRequestData& queryData, SecItemResponseData& result)
+{
+    CFDictionaryRef query = queryData.query();
+    CFTypeRef resultObject;
+    OSStatus resultCode;
+
+    resultCode = SecItemAdd(query, &resultObject);
+
+    result = SecItemResponseData(resultCode, resultObject);
+}
+
+void WebProcessProxy::secItemUpdate(const SecItemRequestData& queryData, SecItemResponseData& result)
+{
+    CFDictionaryRef query = queryData.query();
+    CFDictionaryRef attributesToMatch = queryData.attributesToMatch();
+    OSStatus resultCode;
+
+    resultCode = SecItemUpdate(query, attributesToMatch);
+
+    result = SecItemResponseData(resultCode, 0);
+}
+
+void WebProcessProxy::secItemDelete(const SecItemRequestData& queryData, SecItemResponseData& result)
+{
+    CFDictionaryRef query = queryData.query();
+    OSStatus resultCode;
+
+    resultCode = SecItemDelete(query);
+
+    result = SecItemResponseData(resultCode, 0);
+}
+
+} // namespace WebKit

Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (86691 => 86692)


--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj	2011-05-17 18:37:32 UTC (rev 86691)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj	2011-05-17 18:57:54 UTC (rev 86692)
@@ -374,6 +374,7 @@
 		51D130541382EAC000351EDD /* SecItemRequestData.h in Headers */ = {isa = PBXBuildFile; fileRef = 51D130501382EAC000351EDD /* SecItemRequestData.h */; };
 		51D130551382EAC000351EDD /* SecItemResponseData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51D130511382EAC000351EDD /* SecItemResponseData.cpp */; };
 		51D130561382EAC000351EDD /* SecItemResponseData.h in Headers */ = {isa = PBXBuildFile; fileRef = 51D130521382EAC000351EDD /* SecItemResponseData.h */; };
+		51D130581382F10500351EDD /* WebProcessProxyMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51D130571382F10500351EDD /* WebProcessProxyMac.mm */; };
 		6501BD1A12F1243400E9F248 /* WKBundleInspector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65B86F1712F11D7B00B7DD8A /* WKBundleInspector.cpp */; };
 		659C551E130006410025C0C2 /* InjectedBundlePageResourceLoadClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6546A82913000164000CEB1C /* InjectedBundlePageResourceLoadClient.cpp */; };
 		65B86F1E12F11DE300B7DD8A /* WKBundleInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = 65B86F1812F11D7B00B7DD8A /* WKBundleInspector.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -1301,6 +1302,7 @@
 		51D130501382EAC000351EDD /* SecItemRequestData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SecItemRequestData.h; sourceTree = "<group>"; };
 		51D130511382EAC000351EDD /* SecItemResponseData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SecItemResponseData.cpp; sourceTree = "<group>"; };
 		51D130521382EAC000351EDD /* SecItemResponseData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SecItemResponseData.h; sourceTree = "<group>"; };
+		51D130571382F10500351EDD /* WebProcessProxyMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebProcessProxyMac.mm; sourceTree = "<group>"; };
 		5DAD7294116FF70B00EE5396 /* WebProcess.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = WebProcess.xcconfig; sourceTree = "<group>"; };
 		5DAD73F1116FF90C00EE5396 /* BaseTarget.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = BaseTarget.xcconfig; sourceTree = "<group>"; };
 		6546A82913000164000CEB1C /* InjectedBundlePageResourceLoadClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedBundlePageResourceLoadClient.cpp; sourceTree = "<group>"; };
@@ -3134,6 +3136,7 @@
 				BC5750951268F3C6006F0F12 /* WebPopupMenuProxyMac.h */,
 				BC5750961268F3C6006F0F12 /* WebPopupMenuProxyMac.mm */,
 				BC84EB1712A7100C0083F2DA /* WebPreferencesMac.mm */,
+				51D130571382F10500351EDD /* WebProcessProxyMac.mm */,
 				CDCA85C6132ABA4E00E961DF /* WKFullScreenWindowController.mm */,
 				CDCA85C7132ABA4E00E961DF /* WKFullScreenWindowController.h */,
 			);
@@ -4457,6 +4460,7 @@
 				BCE17B7D1381F1170012A641 /* WKPagePrivateMac.cpp in Sources */,
 				51D130531382EAC000351EDD /* SecItemRequestData.cpp in Sources */,
 				51D130551382EAC000351EDD /* SecItemResponseData.cpp in Sources */,
+				51D130581382F10500351EDD /* WebProcessProxyMac.mm in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

Modified: trunk/Source/WebKit2/WebProcess/mac/WebProcessMac.mm (86691 => 86692)


--- trunk/Source/WebKit2/WebProcess/mac/WebProcessMac.mm	2011-05-17 18:37:32 UTC (rev 86691)
+++ trunk/Source/WebKit2/WebProcess/mac/WebProcessMac.mm	2011-05-17 18:57:54 UTC (rev 86692)
@@ -28,8 +28,11 @@
 
 #import "FullKeyboardAccessWatcher.h"
 #import "SandboxExtension.h"
+#import "SecItemRequestData.h"
+#import "SecItemResponseData.h"
 #import "WebPage.h"
 #import "WebProcessCreationParameters.h"
+#import "WebProcessProxyMessages.h"
 #import "WebProcessShim.h"
 #import <WebCore/FileSystem.h>
 #import <WebCore/LocalizedStrings.h>
@@ -239,28 +242,123 @@
     method_setImplementation(methodToPatch, (IMP)NSApplicationAccessibilityFocusedUIElement);
 }
 
-static OSStatus WebSecItemCopyMatching(CFDictionaryRef query, CFTypeRef *result)
+// FIXME (https://bugs.webkit.org/show_bug.cgi?id=60975) - Once CoreIPC supports sync messaging from a secondary thread,
+// we can remove SecItemAPIContext and these 4 main-thread methods, and we can have the shim methods call out directly 
+// from whatever thread they're on.
+
+struct SecItemAPIContext
 {
-    ASSERT_NOT_REACHED();
-    return -1;
+    CFDictionaryRef query;
+    CFDictionaryRef attributesToUpdate;
+    CFTypeRef resultObject;
+    OSStatus resultCode;
+};
+
+static void WebSecItemCopyMatchingMainThread(void* voidContext)
+{
+    SecItemAPIContext* context = (SecItemAPIContext*)voidContext;
+    
+    SecItemRequestData requestData(context->query);
+    SecItemResponseData response;
+    if (!WebProcess::shared().connection()->sendSync(Messages::WebProcessProxy::SecItemCopyMatching(requestData), Messages::WebProcessProxy::SecItemCopyMatching::Reply(response), 0)) {
+        context->resultCode = errSecInteractionNotAllowed;
+        ASSERT_NOT_REACHED();
+        return;
+    }
+    
+    context->resultObject = response.resultObject().leakRef();
+    context->resultCode = response.resultCode();
 }
 
-static OSStatus WebSecItemAdd(CFDictionaryRef query, CFTypeRef *result)
+static OSStatus WebSecItemCopyMatching(CFDictionaryRef query, CFTypeRef* result)
 {
-    ASSERT_NOT_REACHED();
-    return -1;
+    SecItemAPIContext context;
+    context.query = query;
+    
+    callOnMainThreadAndWait(WebSecItemCopyMatchingMainThread, &context);
+    
+    if (result)
+        *result = context.resultObject;
+    return context.resultCode;
 }
 
+static void WebSecItemAddOnMainThread(void* voidContext)
+{
+    SecItemAPIContext* context = (SecItemAPIContext*)voidContext;
+    
+    SecItemRequestData requestData(context->query);
+    SecItemResponseData response;
+    if (!WebProcess::shared().connection()->sendSync(Messages::WebProcessProxy::SecItemAdd(requestData), Messages::WebProcessProxy::SecItemAdd::Reply(response), 0)) {
+        context->resultCode = errSecInteractionNotAllowed;
+        ASSERT_NOT_REACHED();
+        return;
+    }
+    
+    context->resultObject = response.resultObject().leakRef();
+    context->resultCode = response.resultCode();
+}
+
+static OSStatus WebSecItemAdd(CFDictionaryRef query, CFTypeRef* result)
+{    
+    SecItemAPIContext context;
+    context.query = query;
+    
+    callOnMainThreadAndWait(WebSecItemAddOnMainThread, &context);
+    
+    if (result)
+        *result = context.resultObject;
+    return context.resultCode;
+}
+
+static void WebSecItemUpdateOnMainThread(void* voidContext)
+{
+    SecItemAPIContext* context = (SecItemAPIContext*)voidContext;
+    
+    SecItemRequestData requestData(context->query, context->attributesToUpdate);
+    SecItemResponseData response;
+    if (!WebProcess::shared().connection()->sendSync(Messages::WebProcessProxy::SecItemUpdate(requestData), Messages::WebProcessProxy::SecItemUpdate::Reply(response), 0)) {
+        context->resultCode = errSecInteractionNotAllowed;
+        ASSERT_NOT_REACHED();
+        return;
+    }
+    
+    context->resultCode = response.resultCode();
+}
+
 static OSStatus WebSecItemUpdate(CFDictionaryRef query, CFDictionaryRef attributesToUpdate)
+{    
+    SecItemAPIContext context;
+    context.query = query;
+    context.attributesToUpdate = attributesToUpdate;
+    
+    callOnMainThreadAndWait(WebSecItemUpdateOnMainThread, &context);
+    
+    return context.resultCode;
+}
+
+static void WebSecItemDeleteOnMainThread(void* voidContext)
 {
-    ASSERT_NOT_REACHED();
-    return -1;
+    SecItemAPIContext* context = (SecItemAPIContext*)voidContext;
+    
+    SecItemRequestData requestData(context->query);
+    SecItemResponseData response;
+    if (!WebProcess::shared().connection()->sendSync(Messages::WebProcessProxy::SecItemDelete(requestData), Messages::WebProcessProxy::SecItemDelete::Reply(response), 0)) {
+        context->resultCode = errSecInteractionNotAllowed;
+        ASSERT_NOT_REACHED();
+        return;
+    }
+    
+    context->resultCode = response.resultCode();
 }
 
 static OSStatus WebSecItemDelete(CFDictionaryRef query)
-{
-    ASSERT_NOT_REACHED();
-    return -1;
+{    
+    SecItemAPIContext context;
+    context.query = query;
+    
+    callOnMainThreadAndWait(WebSecItemDeleteOnMainThread, &context);
+
+    return context.resultCode;
 }
 
 void WebProcess::initializeShim()

Modified: trunk/Source/WebKit2/WebProcess/mac/WebProcessShim.mm (86691 => 86692)


--- trunk/Source/WebKit2/WebProcess/mac/WebProcessShim.mm	2011-05-17 18:37:32 UTC (rev 86691)
+++ trunk/Source/WebKit2/WebProcess/mac/WebProcessShim.mm	2011-05-17 18:57:54 UTC (rev 86692)
@@ -37,24 +37,24 @@
 
 static WebProcessShimCallbacks webProcessShimCallbacks;
 
-static OSStatus shimSecItemCopyMatching(CFDictionaryRef query, CFTypeRef *result)
+static OSStatus shimSecItemCopyMatching(CFDictionaryRef query, CFTypeRef* result)
 {
-    return SecItemCopyMatching(query, result);
+    return webProcessShimCallbacks.secItemCopyMatching(query, result);
 }
 
-static OSStatus shimSecItemAdd(CFDictionaryRef query, CFTypeRef *result)
+static OSStatus shimSecItemAdd(CFDictionaryRef query, CFTypeRef* result)
 {
-    return SecItemAdd(query, result);
+    return webProcessShimCallbacks.secItemAdd(query, result);
 }
 
 static OSStatus shimSecItemUpdate(CFDictionaryRef query, CFDictionaryRef attributesToUpdate)
 {
-    return SecItemUpdate(query, attributesToUpdate);
+    return webProcessShimCallbacks.secItemUpdate(query, attributesToUpdate);
 }
 
 static OSStatus shimSecItemDelete(CFDictionaryRef query)
 {
-    return SecItemDelete(query);
+    return webProcessShimCallbacks.secItemDelete(query);
 }
 
 DYLD_INTERPOSE(shimSecItemCopyMatching, SecItemCopyMatching)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to