Changeset 87153 in webkit
- Timestamp:
- May 24, 2011 8:31:27 AM (13 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 2 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r87119 r87153 1 2011-05-23 Brady Eidson <beidson@apple.com> 2 3 Reviewed by Sam Weinig. 4 5 Part of <rdar://problem/9434311> and https://bugs.webkit.org/show_bug.cgi?id=61334 6 Should shim a few SecKeychainItem* methods on SnowLeopard 7 8 In preparation for different WebProcess shims depending on platform, move the current 9 shim to its own files. 10 11 * WebKit2.xcodeproj/project.pbxproj: 12 13 * WebProcess/mac/WebProcessMac.mm: 14 (WebKit::WebProcess::initializeShim): For non-SnowLeopard platforms, call initializeSecItemShim(). 15 16 * WebProcess/mac/SecItemShimMethods.h: Added. 17 * WebProcess/mac/SecItemShimMethods.mm: Added. Actual webSecItem* methods moved from WebProcessMac.mm. 18 (WebKit::webSecItemCopyMatchingMainThread): 19 (WebKit::webSecItemCopyMatching): 20 (WebKit::webSecItemAddOnMainThread): 21 (WebKit::webSecItemAdd): 22 (WebKit::webSecItemUpdateOnMainThread): 23 (WebKit::webSecItemUpdate): 24 (WebKit::webSecItemDeleteOnMainThread): 25 (WebKit::webSecItemDelete): 26 (WebKit::initializeSecItemShim): Initialize the callbacks via WebKitWebProcessSecItemShimInitialize 27 28 * WebProcess/mac/WebProcessShim.h: 29 * WebProcess/mac/WebProcessShim.mm: Wrap all the actual code here in a !BUILDING_ON_SNOW_LEOPARD block 30 (WebKit::shimSecItemCopyMatching): 31 (WebKit::shimSecItemAdd): 32 (WebKit::shimSecItemUpdate): 33 (WebKit::shimSecItemDelete): 34 (WebKit::WebKitWebProcessSecItemShimInitialize): 35 1 36 2011-05-23 Anders Carlsson <andersca@apple.com> 2 37 -
trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj
r86990 r87153 280 280 37F623B812A57B6200E3FDF6 /* WKFindOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 37F623B712A57B6200E3FDF6 /* WKFindOptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; 281 281 37F90DE31376560E0051CF68 /* HTTPCookieAcceptPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = F638954F133BEF38008941D5 /* HTTPCookieAcceptPolicy.h */; }; 282 510031D51379C11300C8DFE4 /* WebProcessShim.h in Headers */ = {isa = PBXBuildFile; fileRef = 510031D31379C11300C8DFE4 /* WebProcessShim.h */; };283 510031F71379CB1600C8DFE4 /* WebProcessShim.mm in Sources */ = {isa = PBXBuildFile; fileRef = 510031D41379C11300C8DFE4 /* WebProcessShim.mm */; };284 282 51021E9C12B16788005C033C /* WebContextMenuClientMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51021E9B12B16788005C033C /* WebContextMenuClientMac.mm */; }; 285 283 510FBB9A1288C95E00AFFDF4 /* WebContextMenuItemData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 510FBB981288C95E00AFFDF4 /* WebContextMenuItemData.cpp */; }; … … 291 289 511B24AA132E097200065A0C /* WebIconDatabase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 511B24A8132E097200065A0C /* WebIconDatabase.cpp */; }; 292 290 511B24AB132E097200065A0C /* WebIconDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 511B24A9132E097200065A0C /* WebIconDatabase.h */; }; 291 511F8A7B138B460900A95F44 /* WebProcessShim.h in Headers */ = {isa = PBXBuildFile; fileRef = 511F8A77138B460900A95F44 /* WebProcessShim.h */; }; 292 511F8A7F138B46FE00A95F44 /* SecItemShimMethods.h in Headers */ = {isa = PBXBuildFile; fileRef = 511F8A7D138B46FE00A95F44 /* SecItemShimMethods.h */; }; 293 511F8A80138B46FE00A95F44 /* SecItemShimMethods.mm in Sources */ = {isa = PBXBuildFile; fileRef = 511F8A7E138B46FE00A95F44 /* SecItemShimMethods.mm */; }; 294 511F8A81138B485D00A95F44 /* WebProcessShim.mm in Sources */ = {isa = PBXBuildFile; fileRef = 511F8A78138B460900A95F44 /* WebProcessShim.mm */; }; 293 295 5123CF1B133D260A0056F800 /* WKIconDatabaseCG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5123CF19133D260A0056F800 /* WKIconDatabaseCG.cpp */; }; 294 296 5123CF1C133D260A0056F800 /* WKIconDatabaseCG.h in Headers */ = {isa = PBXBuildFile; fileRef = 5123CF1A133D260A0056F800 /* WKIconDatabaseCG.h */; settings = {ATTRIBUTES = (Public, ); }; }; … … 1196 1198 33F9D5B81312F1EE000D683F /* WebResourceCacheManagerCFNet.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; name = WebResourceCacheManagerCFNet.cpp; path = ResourceCache/cf/WebResourceCacheManagerCFNet.cpp; sourceTree = "<group>"; }; 1197 1199 37F623B712A57B6200E3FDF6 /* WKFindOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKFindOptions.h; sourceTree = "<group>"; }; 1198 510031D31379C11300C8DFE4 /* WebProcessShim.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebProcessShim.h; sourceTree = "<group>"; };1199 510031D41379C11300C8DFE4 /* WebProcessShim.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebProcessShim.mm; sourceTree = "<group>"; };1200 1200 510031F61379CACB00C8DFE4 /* WebProcessShim.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = WebProcessShim.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; 1201 1201 51021E9B12B16788005C033C /* WebContextMenuClientMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebContextMenuClientMac.mm; sourceTree = "<group>"; }; … … 1208 1208 511B24A8132E097200065A0C /* WebIconDatabase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebIconDatabase.cpp; sourceTree = "<group>"; }; 1209 1209 511B24A9132E097200065A0C /* WebIconDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebIconDatabase.h; sourceTree = "<group>"; }; 1210 511F8A77138B460900A95F44 /* WebProcessShim.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebProcessShim.h; sourceTree = "<group>"; }; 1211 511F8A78138B460900A95F44 /* WebProcessShim.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebProcessShim.mm; sourceTree = "<group>"; }; 1212 511F8A7D138B46FE00A95F44 /* SecItemShimMethods.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SecItemShimMethods.h; sourceTree = "<group>"; }; 1213 511F8A7E138B46FE00A95F44 /* SecItemShimMethods.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SecItemShimMethods.mm; sourceTree = "<group>"; }; 1210 1214 5123CF19133D260A0056F800 /* WKIconDatabaseCG.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WKIconDatabaseCG.cpp; path = cg/WKIconDatabaseCG.cpp; sourceTree = "<group>"; }; 1211 1215 5123CF1A133D260A0056F800 /* WKIconDatabaseCG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WKIconDatabaseCG.h; path = cg/WKIconDatabaseCG.h; sourceTree = "<group>"; }; … … 2009 2013 isa = PBXGroup; 2010 2014 children = ( 2015 E1BB1688132018BA00F49431 /* FullKeyboardAccessWatcher.h */, 2016 E1BB1689132018BA00F49431 /* FullKeyboardAccessWatcher.mm */, 2017 511F8A7D138B46FE00A95F44 /* SecItemShimMethods.h */, 2018 511F8A7E138B46FE00A95F44 /* SecItemShimMethods.mm */, 2011 2019 1A6FA01D11E1526300DB1371 /* WebProcessMainMac.mm */, 2012 2020 BC3065C312592F8900E71278 /* WebProcessMac.mm */, 2013 510031D31379C11300C8DFE4 /* WebProcessShim.h */, 2014 510031D41379C11300C8DFE4 /* WebProcessShim.mm */, 2015 E1BB1688132018BA00F49431 /* FullKeyboardAccessWatcher.h */, 2016 E1BB1689132018BA00F49431 /* FullKeyboardAccessWatcher.mm */, 2021 511F8A77138B460900A95F44 /* WebProcessShim.h */, 2022 511F8A78138B460900A95F44 /* WebProcessShim.mm */, 2017 2023 ); 2018 2024 path = mac; … … 3779 3785 37F90DE31376560E0051CF68 /* HTTPCookieAcceptPolicy.h in Headers */, 3780 3786 1A7C6CDB1378950800B9C04D /* EnvironmentVariables.h in Headers */, 3781 510031D51379C11300C8DFE4 /* WebProcessShim.h in Headers */,3782 3787 1A179780137EE82C00F97D45 /* PluginCreationParameters.h in Headers */, 3783 3788 51D130541382EAC000351EDD /* SecItemRequestData.h in Headers */, 3784 3789 51D130561382EAC000351EDD /* SecItemResponseData.h in Headers */, 3785 3790 51B15A8513843A3900321AD8 /* EnvironmentUtilities.h in Headers */, 3791 511F8A7B138B460900A95F44 /* WebProcessShim.h in Headers */, 3792 511F8A7F138B46FE00A95F44 /* SecItemShimMethods.h in Headers */, 3786 3793 ); 3787 3794 runOnlyForDeploymentPostprocessing = 0; … … 4056 4063 buildActionMask = 2147483647; 4057 4064 files = ( 4058 51 0031F71379CB1600C8DFE4 /* WebProcessShim.mm in Sources */,4065 511F8A81138B485D00A95F44 /* WebProcessShim.mm in Sources */, 4059 4066 ); 4060 4067 runOnlyForDeploymentPostprocessing = 0; … … 4446 4453 51D130581382F10500351EDD /* WebProcessProxyMac.mm in Sources */, 4447 4454 51B15A8413843A3900321AD8 /* EnvironmentUtilities.cpp in Sources */, 4455 511F8A80138B46FE00A95F44 /* SecItemShimMethods.mm in Sources */, 4448 4456 ); 4449 4457 runOnlyForDeploymentPostprocessing = 0; -
trunk/Source/WebKit2/WebProcess/mac/WebProcessMac.mm
r86967 r87153 29 29 #import "FullKeyboardAccessWatcher.h" 30 30 #import "SandboxExtension.h" 31 #import "SecItemRequestData.h"32 #import "SecItemResponseData.h"33 31 #import "WebPage.h" 34 32 #import "WebProcessCreationParameters.h" 35 33 #import "WebProcessProxyMessages.h" 36 #import " WebProcessShim.h"34 #import "SecItemShimMethods.h" 37 35 #import <WebCore/FileSystem.h> 38 36 #import <WebCore/LocalizedStrings.h> … … 42 40 #import <algorithm> 43 41 #import <dispatch/dispatch.h> 44 #import <dlfcn.h>45 42 #import <mach/host_info.h> 46 43 #import <mach/mach.h> … … 244 241 } 245 242 246 // FIXME (https://bugs.webkit.org/show_bug.cgi?id=60975) - Once CoreIPC supports sync messaging from a secondary thread,247 // we can remove SecItemAPIContext and these 4 main-thread methods, and we can have the shim methods call out directly248 // from whatever thread they're on.249 250 struct SecItemAPIContext251 {252 CFDictionaryRef query;253 CFDictionaryRef attributesToUpdate;254 CFTypeRef resultObject;255 OSStatus resultCode;256 };257 258 static void WebSecItemCopyMatchingMainThread(void* voidContext)259 {260 SecItemAPIContext* context = (SecItemAPIContext*)voidContext;261 262 SecItemRequestData requestData(context->query);263 SecItemResponseData response;264 if (!WebProcess::shared().connection()->sendSync(Messages::WebProcessProxy::SecItemCopyMatching(requestData), Messages::WebProcessProxy::SecItemCopyMatching::Reply(response), 0)) {265 context->resultCode = errSecInteractionNotAllowed;266 ASSERT_NOT_REACHED();267 return;268 }269 270 context->resultObject = response.resultObject().leakRef();271 context->resultCode = response.resultCode();272 }273 274 static OSStatus WebSecItemCopyMatching(CFDictionaryRef query, CFTypeRef* result)275 {276 SecItemAPIContext context;277 context.query = query;278 279 callOnMainThreadAndWait(WebSecItemCopyMatchingMainThread, &context);280 281 if (result)282 *result = context.resultObject;283 return context.resultCode;284 }285 286 static void WebSecItemAddOnMainThread(void* voidContext)287 {288 SecItemAPIContext* context = (SecItemAPIContext*)voidContext;289 290 SecItemRequestData requestData(context->query);291 SecItemResponseData response;292 if (!WebProcess::shared().connection()->sendSync(Messages::WebProcessProxy::SecItemAdd(requestData), Messages::WebProcessProxy::SecItemAdd::Reply(response), 0)) {293 context->resultCode = errSecInteractionNotAllowed;294 ASSERT_NOT_REACHED();295 return;296 }297 298 context->resultObject = response.resultObject().leakRef();299 context->resultCode = response.resultCode();300 }301 302 static OSStatus WebSecItemAdd(CFDictionaryRef query, CFTypeRef* result)303 {304 SecItemAPIContext context;305 context.query = query;306 307 callOnMainThreadAndWait(WebSecItemAddOnMainThread, &context);308 309 if (result)310 *result = context.resultObject;311 return context.resultCode;312 }313 314 static void WebSecItemUpdateOnMainThread(void* voidContext)315 {316 SecItemAPIContext* context = (SecItemAPIContext*)voidContext;317 318 SecItemRequestData requestData(context->query, context->attributesToUpdate);319 SecItemResponseData response;320 if (!WebProcess::shared().connection()->sendSync(Messages::WebProcessProxy::SecItemUpdate(requestData), Messages::WebProcessProxy::SecItemUpdate::Reply(response), 0)) {321 context->resultCode = errSecInteractionNotAllowed;322 ASSERT_NOT_REACHED();323 return;324 }325 326 context->resultCode = response.resultCode();327 }328 329 static OSStatus WebSecItemUpdate(CFDictionaryRef query, CFDictionaryRef attributesToUpdate)330 {331 SecItemAPIContext context;332 context.query = query;333 context.attributesToUpdate = attributesToUpdate;334 335 callOnMainThreadAndWait(WebSecItemUpdateOnMainThread, &context);336 337 return context.resultCode;338 }339 340 static void WebSecItemDeleteOnMainThread(void* voidContext)341 {342 SecItemAPIContext* context = (SecItemAPIContext*)voidContext;343 344 SecItemRequestData requestData(context->query);345 SecItemResponseData response;346 if (!WebProcess::shared().connection()->sendSync(Messages::WebProcessProxy::SecItemDelete(requestData), Messages::WebProcessProxy::SecItemDelete::Reply(response), 0)) {347 context->resultCode = errSecInteractionNotAllowed;348 ASSERT_NOT_REACHED();349 return;350 }351 352 context->resultCode = response.resultCode();353 }354 355 static OSStatus WebSecItemDelete(CFDictionaryRef query)356 {357 SecItemAPIContext context;358 context.query = query;359 360 callOnMainThreadAndWait(WebSecItemDeleteOnMainThread, &context);361 362 return context.resultCode;363 }364 365 243 void WebProcess::initializeShim() 366 244 { 367 const WebProcessShimCallbacks callbacks = { 368 WebSecItemCopyMatching, 369 WebSecItemAdd, 370 WebSecItemUpdate, 371 WebSecItemDelete 372 }; 373 374 WebProcessShimInitializeFunc initFunc = reinterpret_cast<WebProcessShimInitializeFunc>(dlsym(RTLD_DEFAULT, "WebKitWebProcessShimInitialize")); 375 initFunc(callbacks); 245 #if !defined(BUILDING_ON_SNOW_LEOPARD) 246 initializeSecItemShim(); 247 #endif 376 248 } 377 249 -
trunk/Source/WebKit2/WebProcess/mac/WebProcessShim.h
r86686 r87153 29 29 namespace WebKit { 30 30 31 struct WebProcessShimCallbacks { 31 #if !defined(BUILDING_ON_SNOW_LEOPARD) 32 33 struct WebProcessSecItemShimCallbacks { 32 34 OSStatus (*secItemCopyMatching)(CFDictionaryRef query, CFTypeRef *result); 33 35 OSStatus (*secItemAdd)(CFDictionaryRef attributes, CFTypeRef *result); … … 36 38 }; 37 39 38 typedef void (*WebProcessShimInitializeFunc)(const WebProcessShimCallbacks& callbacks); 40 typedef void (*WebProcessSecItemShimInitializeFunc)(const WebProcessSecItemShimCallbacks& callbacks); 41 42 #endif // BUILDING_ON_SNOW_LEOPARD 39 43 40 44 } -
trunk/Source/WebKit2/WebProcess/mac/WebProcessShim.mm
r86692 r87153 34 34 namespace WebKit { 35 35 36 extern "C" void WebKitWebProcessShimInitialize(const WebProcessShimCallbacks&); 36 #if !defined(BUILDING_ON_SNOW_LEOPARD) 37 37 38 static WebProcessShimCallbacks webProcessShimCallbacks; 38 extern "C" void WebKitWebProcessSecItemShimInitialize(const WebProcessSecItemShimCallbacks&); 39 40 static WebProcessSecItemShimCallbacks secItemShimCallbacks; 39 41 40 42 static OSStatus shimSecItemCopyMatching(CFDictionaryRef query, CFTypeRef* result) 41 43 { 42 return webProcessShimCallbacks.secItemCopyMatching(query, result);44 return secItemShimCallbacks.secItemCopyMatching(query, result); 43 45 } 44 46 45 47 static OSStatus shimSecItemAdd(CFDictionaryRef query, CFTypeRef* result) 46 48 { 47 return webProcessShimCallbacks.secItemAdd(query, result);49 return secItemShimCallbacks.secItemAdd(query, result); 48 50 } 49 51 50 52 static OSStatus shimSecItemUpdate(CFDictionaryRef query, CFDictionaryRef attributesToUpdate) 51 53 { 52 return webProcessShimCallbacks.secItemUpdate(query, attributesToUpdate);54 return secItemShimCallbacks.secItemUpdate(query, attributesToUpdate); 53 55 } 54 56 55 57 static OSStatus shimSecItemDelete(CFDictionaryRef query) 56 58 { 57 return webProcessShimCallbacks.secItemDelete(query);59 return secItemShimCallbacks.secItemDelete(query); 58 60 } 59 61 … … 64 66 65 67 __attribute__((visibility("default"))) 66 void WebKitWebProcessS himInitialize(const WebProcessShimCallbacks& callbacks)68 void WebKitWebProcessSecItemShimInitialize(const WebProcessSecItemShimCallbacks& callbacks) 67 69 { 68 webProcessShimCallbacks = callbacks;70 secItemShimCallbacks = callbacks; 69 71 } 70 72 73 #endif // BUILDING_ON_SNOW_LEOPARD 74 71 75 } // namespace WebKit
Note: See TracChangeset
for help on using the changeset viewer.