Changeset 139009 in webkit
- Timestamp:
- Jan 7, 2013, 4:20:54 PM (12 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 6 added
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r139003 r139009 1 2013-01-07 Alexey Proskuryakov <ap@apple.com> 2 3 [WK2] Make SecItemShim messages work with any process 4 https://bugs.webkit.org/show_bug.cgi?id=106269 5 6 Reviewed by Sam Weinig. 7 8 Add SecItemShim and SecItemShimProxy classes to manage message sending, and moved 9 relevant code from WebProcess(Proxy). 10 11 * DerivedSources.make: 12 * Platform/CoreIPC/MessageID.h: 13 * UIProcess/WebProcessProxy.cpp: 14 (WebKit::WebProcessProxy::didFinishLaunching): 15 * UIProcess/WebProcessProxy.h: 16 (WebProcessProxy): 17 * UIProcess/WebProcessProxy.messages.in: 18 * Shared/mac/SecItemShim.cpp: Added. 19 (WebKit::SecItemShim::shared): 20 (WebKit::SecItemShim::SecItemShim): 21 (WebKit::SecItemShim::secItemResponse): 22 (WebKit::SecItemShim::install): 23 (WebKit::SecItemShim::didReceiveMessageOnConnectionWorkQueue): 24 * Shared/mac/SecItemShim.h: Added. 25 * Shared/mac/SecItemShim.messages.in: Added. 26 * UIProcess/mac/SecItemShimProxy.cpp: Added. 27 (WebKit::SecItemShimProxy::shared): 28 (WebKit::SecItemShimProxy::SecItemShimProxy): 29 (WebKit::handleSecItemRequest): 30 (WebKit::dispatchFunctionOnQueue): 31 (WebKit::SecItemShimProxy::secItemRequest): 32 (WebKit::SecItemShimProxy::didReceiveMessageOnConnectionWorkQueue): 33 * UIProcess/mac/SecItemShimProxy.h: Added. 34 * UIProcess/mac/SecItemShimProxy.messages.in: Added. 35 * UIProcess/mac/WebProcessProxyMac.mm: 36 * WebKit2.xcodeproj/project.pbxproj: 37 * WebProcess/WebProcess.cpp: 38 (WebKit::WebProcess::initializeConnection): 39 * WebProcess/WebProcess.h: 40 * WebProcess/WebProcess.messages.in: 41 * WebProcess/mac/SecItemShimMethods.mm: 42 (WebKit::sendSeqItemRequest): 43 * WebProcess/mac/WebProcessMac.mm: 44 (WebKit::WebProcess::platformInitializeProcess): 45 1 46 2013-01-07 Anders Carlsson <andersca@apple.com> 2 47 -
trunk/Source/WebKit2/DerivedSources.make
r137806 r139009 28 28 $(WebKit2)/Shared/Plugins \ 29 29 $(WebKit2)/Shared \ 30 $(WebKit2)/Shared/mac \ 30 31 $(WebKit2)/Shared/Network/CustomProtocols \ 31 32 $(WebKit2)/SharedWorkerProcess \ … … 82 83 NetworkResourceLoader \ 83 84 RemoteLayerTreeHost \ 85 SecItemShim \ 86 SecItemShimProxy \ 84 87 WebContext \ 85 88 WebDatabaseManager \ -
trunk/Source/WebKit2/Platform/CoreIPC/MessageID.h
r137358 r139009 137 137 MessageClassCustomProtocolManagerProxy, 138 138 #endif 139 140 #if USE(SECURITY_FRAMEWORK) 141 // Messages sent by a web process or a network process to the UI process. 142 MessageClassSecItemShimProxy, 143 144 // Responses to SecItemShimProxy that are sent back. 145 MessageClassSecItemShim, 146 #endif 139 147 }; 140 148 -
trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp
r137831 r139009 54 54 #endif 55 55 56 #if USE(SECURITY_FRAMEWORK) 57 #include "SecItemShimProxy.h" 58 #endif 59 56 60 using namespace WebCore; 57 61 using namespace std; … … 503 507 ChildProcessProxy::didFinishLaunching(launcher, connectionIdentifier); 504 508 509 #if USE(SECURITY_FRAMEWORK) 510 connection()->addQueueClient(&SecItemShimProxy::shared()); 511 #endif 512 505 513 m_webConnection = WebConnectionToWebProcess::create(this); 506 514 -
trunk/Source/WebKit2/UIProcess/WebProcessProxy.h
r137813 r139009 52 52 namespace WebKit { 53 53 54 #if USE(SECURITY_FRAMEWORK)55 class SecItemRequestData;56 class SecItemResponseData;57 #endif58 59 54 class DownloadProxyMap; 60 55 class WebBackForwardListItem; … … 154 149 #endif 155 150 156 #if USE(SECURITY_FRAMEWORK)157 void secItemRequest(CoreIPC::Connection*, uint64_t requestID, const SecItemRequestData&);158 #endif159 160 151 // CoreIPC::Connection::Client 161 152 friend class WebConnectionToWebProcess; -
trunk/Source/WebKit2/UIProcess/WebProcessProxy.messages.in
r136612 r139009 53 53 #endif 54 54 55 #if USE(SECURITY_FRAMEWORK)56 SecItemRequest(uint64_t requestID, WebKit::SecItemRequestData request) DispatchOnConnectionQueue57 #endif58 59 55 } -
trunk/Source/WebKit2/UIProcess/mac/WebProcessProxyMac.mm
r138982 r139009 27 27 #import "WebProcessProxy.h" 28 28 29 #import "SecItemRequestData.h"30 #import "SecItemResponseData.h"31 29 #import "WebProcessMessages.h" 32 30 #import "WKFullKeyboardAccessWatcher.h" 33 #import <Security/SecItem.h>34 31 35 32 namespace WebKit { 36 37 static void handleSecItemRequest(CoreIPC::Connection* connection, uint64_t requestID, const SecItemRequestData& request)38 {39 SecItemResponseData response;40 41 switch (request.type()) {42 case SecItemRequestData::Invalid:43 ASSERT_NOT_REACHED();44 return;45 46 case SecItemRequestData::CopyMatching: {47 CFTypeRef resultObject = 0;48 OSStatus resultCode = SecItemCopyMatching(request.query(), &resultObject);49 response = SecItemResponseData(resultCode, adoptCF(resultObject).get());50 break;51 }52 53 case SecItemRequestData::Add: {54 CFTypeRef resultObject = 0;55 OSStatus resultCode = SecItemAdd(request.query(), &resultObject);56 response = SecItemResponseData(resultCode, adoptCF(resultObject).get());57 break;58 }59 60 case SecItemRequestData::Update: {61 OSStatus resultCode = SecItemUpdate(request.query(), request.attributesToMatch());62 response = SecItemResponseData(resultCode, 0);63 break;64 }65 66 case SecItemRequestData::Delete: {67 OSStatus resultCode = SecItemDelete(request.query());68 response = SecItemResponseData(resultCode, 0);69 break;70 }71 }72 73 connection->send(Messages::WebProcess::SecItemResponse(requestID, response), 0);74 }75 76 static void dispatchFunctionOnQueue(dispatch_queue_t queue, const Function<void ()>& function)77 {78 #if COMPILER(CLANG)79 dispatch_async(queue, function);80 #else81 Function<void ()>* functionPtr = new Function<void ()>(function);82 dispatch_async(queue, ^{83 (*functionPtr)();84 delete functionPtr;85 });86 #endif87 }88 89 void WebProcessProxy::secItemRequest(CoreIPC::Connection* connection, uint64_t requestID, const SecItemRequestData& request)90 {91 // Since we don't want the connection work queue to be held up, we do all92 // keychain interaction work on a global dispatch queue.93 dispatch_queue_t keychainWorkQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);94 dispatchFunctionOnQueue(keychainWorkQueue, bind(handleSecItemRequest, RefPtr<CoreIPC::Connection>(connection), requestID, request));95 }96 33 97 34 bool WebProcessProxy::fullKeyboardAccessEnabled() -
trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj
r138981 r139009 1036 1036 E17BF99814D0AA8300A5A069 /* NetscapeSandboxFunctions.mm in Sources */ = {isa = PBXBuildFile; fileRef = E17BF99714D0AA8300A5A069 /* NetscapeSandboxFunctions.mm */; }; 1037 1037 E18C92F412DB9E7100CF2AEB /* PrintInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E18C92F312DB9E7100CF2AEB /* PrintInfo.cpp */; }; 1038 E18E690B169B563F009B6670 /* SecItemShimProxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E18E6909169B563F009B6670 /* SecItemShimProxy.cpp */; }; 1039 E18E690C169B563F009B6670 /* SecItemShimProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = E18E690A169B563F009B6670 /* SecItemShimProxy.h */; }; 1040 E18E6915169B667B009B6670 /* SecItemShimMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E18E6911169B667B009B6670 /* SecItemShimMessageReceiver.cpp */; }; 1041 E18E6916169B667B009B6670 /* SecItemShimMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = E18E6912169B667B009B6670 /* SecItemShimMessages.h */; }; 1042 E18E6917169B667B009B6670 /* SecItemShimProxyMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E18E6913169B667B009B6670 /* SecItemShimProxyMessageReceiver.cpp */; }; 1043 E18E6918169B667B009B6670 /* SecItemShimProxyMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = E18E6914169B667B009B6670 /* SecItemShimProxyMessages.h */; }; 1044 E18E6949169B77C8009B6670 /* SecItemShim.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E18E6947169B77C8009B6670 /* SecItemShim.cpp */; }; 1045 E18E694A169B77C8009B6670 /* SecItemShim.h in Headers */ = {isa = PBXBuildFile; fileRef = E18E6948169B77C8009B6670 /* SecItemShim.h */; }; 1038 1046 E19582D3153CBFD700B60875 /* PDFKitImports.h in Headers */ = {isa = PBXBuildFile; fileRef = E19582D2153CBFD700B60875 /* PDFKitImports.h */; }; 1039 1047 E19582D6153CC05400B60875 /* PDFKitImports.mm in Sources */ = {isa = PBXBuildFile; fileRef = E19582D4153CC05300B60875 /* PDFKitImports.mm */; }; … … 2340 2348 E17BF99914D0CBF100A5A069 /* com.apple.WebKit.PluginProcess.sb.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = com.apple.WebKit.PluginProcess.sb.in; sourceTree = "<group>"; }; 2341 2349 E18C92F312DB9E7100CF2AEB /* PrintInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PrintInfo.cpp; sourceTree = "<group>"; }; 2350 E18E6909169B563F009B6670 /* SecItemShimProxy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SecItemShimProxy.cpp; sourceTree = "<group>"; }; 2351 E18E690A169B563F009B6670 /* SecItemShimProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SecItemShimProxy.h; sourceTree = "<group>"; }; 2352 E18E690D169B57DF009B6670 /* SecItemShimProxy.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SecItemShimProxy.messages.in; sourceTree = "<group>"; }; 2353 E18E690F169B5928009B6670 /* SecItemShim.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SecItemShim.messages.in; sourceTree = "<group>"; }; 2354 E18E6911169B667B009B6670 /* SecItemShimMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SecItemShimMessageReceiver.cpp; sourceTree = "<group>"; }; 2355 E18E6912169B667B009B6670 /* SecItemShimMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SecItemShimMessages.h; sourceTree = "<group>"; }; 2356 E18E6913169B667B009B6670 /* SecItemShimProxyMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SecItemShimProxyMessageReceiver.cpp; sourceTree = "<group>"; }; 2357 E18E6914169B667B009B6670 /* SecItemShimProxyMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SecItemShimProxyMessages.h; sourceTree = "<group>"; }; 2358 E18E6947169B77C8009B6670 /* SecItemShim.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SecItemShim.cpp; sourceTree = "<group>"; }; 2359 E18E6948169B77C8009B6670 /* SecItemShim.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SecItemShim.h; sourceTree = "<group>"; }; 2342 2360 E19582D2153CBFD700B60875 /* PDFKitImports.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PDFKitImports.h; sourceTree = "<group>"; }; 2343 2361 E19582D4153CC05300B60875 /* PDFKitImports.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PDFKitImports.mm; sourceTree = "<group>"; }; … … 3836 3854 51D130511382EAC000351EDD /* SecItemResponseData.cpp */, 3837 3855 51D130521382EAC000351EDD /* SecItemResponseData.h */, 3856 E18E690F169B5928009B6670 /* SecItemShim.messages.in */, 3857 E18E6947169B77C8009B6670 /* SecItemShim.cpp */, 3858 E18E6948169B77C8009B6670 /* SecItemShim.h */, 3838 3859 BCE23262122C6CF300D5C35A /* WebCoreArgumentCodersMac.mm */, 3839 3860 BC111B5B112F629800337BAB /* WebEventFactory.h */, … … 4140 4161 1AA3D75D1651B5C5008713D0 /* RemoteLayerTreeHost.messages.in */, 4141 4162 1AA3D7591651B44F008713D0 /* RemoteLayerTreeHost.mm */, 4163 E18E690D169B57DF009B6670 /* SecItemShimProxy.messages.in */, 4164 E18E6909169B563F009B6670 /* SecItemShimProxy.cpp */, 4165 E18E690A169B563F009B6670 /* SecItemShimProxy.h */, 4142 4166 1AA417ED12C00D87002BE67B /* TextCheckerMac.mm */, 4143 4167 1AF05D8514688348008B1E81 /* TiledCoreAnimationDrawingAreaProxy.h */, … … 4316 4340 1AA3D75F1651B7D3008713D0 /* RemoteLayerTreeHostMessageReceiver.cpp */, 4317 4341 1AA3D7601651B7D3008713D0 /* RemoteLayerTreeHostMessages.h */, 4342 E18E6911169B667B009B6670 /* SecItemShimMessageReceiver.cpp */, 4343 E18E6912169B667B009B6670 /* SecItemShimMessages.h */, 4344 E18E6913169B667B009B6670 /* SecItemShimProxyMessageReceiver.cpp */, 4345 E18E6914169B667B009B6670 /* SecItemShimProxyMessages.h */, 4318 4346 E1EDFDB11628AD730039ECDA /* SharedWorkerProcessMessageReceiver.cpp */, 4319 4347 E1EDFDB21628AD730039ECDA /* SharedWorkerProcessMessages.h */, … … 5039 5067 BCF4DE25168FA44800C94AFC /* WebContextSupplement.h in Headers */, 5040 5068 BC9BA5051697C45300E44616 /* WebKit2Initialize.h in Headers */, 5069 E18E690C169B563F009B6670 /* SecItemShimProxy.h in Headers */, 5070 E18E6916169B667B009B6670 /* SecItemShimMessages.h in Headers */, 5071 E18E6918169B667B009B6670 /* SecItemShimProxyMessages.h in Headers */, 5041 5072 BC9BA50916991C3C00E44616 /* ChildProcessMain.h in Headers */, 5073 E18E694A169B77C8009B6670 /* SecItemShim.h in Headers */, 5042 5074 ); 5043 5075 runOnlyForDeploymentPostprocessing = 0; … … 6014 6046 31A505F91680025500A930EB /* WebContextClient.cpp in Sources */, 6015 6047 BC9BA5041697C45300E44616 /* WebKit2Initialize.cpp in Sources */, 6048 E18E690B169B563F009B6670 /* SecItemShimProxy.cpp in Sources */, 6049 E18E6915169B667B009B6670 /* SecItemShimMessageReceiver.cpp in Sources */, 6050 E18E6917169B667B009B6670 /* SecItemShimProxyMessageReceiver.cpp in Sources */, 6016 6051 BC9BA50816991C3C00E44616 /* ChildProcessMain.mm in Sources */, 6052 E18E6949169B77C8009B6670 /* SecItemShim.cpp in Sources */, 6017 6053 ); 6018 6054 runOnlyForDeploymentPostprocessing = 0; -
trunk/Source/WebKit2/WebProcess/WebProcess.cpp
r138913 r139009 121 121 #endif 122 122 123 #if USE(SECURITY_FRAMEWORK) 124 #include "SecItemShim.h" 125 #endif 126 123 127 using namespace JSC; 124 128 using namespace WebCore; … … 208 212 connection->addQueueClient(&m_eventDispatcher); 209 213 connection->addQueueClient(this); 214 215 #if USE(SECURITY_FRAMEWORK) 216 connection->addQueueClient(&SecItemShim::shared()); 217 #endif 210 218 211 219 m_webConnection = WebConnectionToUIProcess::create(this); -
trunk/Source/WebKit2/WebProcess/WebProcess.h
r138913 r139009 93 93 #endif 94 94 95 #if USE(SECURITY_FRAMEWORK)96 class SecItemResponseData;97 #endif98 99 95 #if ENABLE(NETWORK_PROCESS) 100 96 class WebResourceLoadScheduler; … … 271 267 void postInjectedBundleMessage(const CoreIPC::DataReference& messageData); 272 268 273 #if USE(SECURITY_FRAMEWORK)274 void secItemResponse(CoreIPC::Connection*, uint64_t requestID, const SecItemResponseData&);275 #endif276 277 269 // ChildProcess 278 270 virtual void initializeProcess(const ChildProcessInitializationParameters&) OVERRIDE; -
trunk/Source/WebKit2/WebProcess/WebProcess.messages.in
r138729 r139009 99 99 PostInjectedBundleMessage(CoreIPC::DataReference messageData); 100 100 101 #if USE(SECURITY_FRAMEWORK)102 SecItemResponse(uint64_t requestID, WebKit::SecItemResponseData response) DispatchOnConnectionQueue103 #endif104 105 101 #if PLATFORM(MAC) 106 102 SetApplicationIsOccluded(bool flag); -
trunk/Source/WebKit2/WebProcess/mac/SecItemShimMethods.mm
r136620 r139009 31 31 #import "SecItemResponseData.h" 32 32 #import "WebProcess.h" 33 #import " WebProcessProxyMessages.h"33 #import "SecItemShimProxyMessages.h" 34 34 #import "WebProcessShim.h" 35 35 #import <Security/SecItem.h> … … 58 58 { 59 59 uint64_t requestID = generateSecItemRequestID(); 60 if (!WebProcess::shared().connection()->send(Messages:: WebProcessProxy::SecItemRequest(requestID, SecItemRequestData(requestType, query, attributesToMatch)), 0))60 if (!WebProcess::shared().connection()->send(Messages::SecItemShimProxy::SecItemRequest(requestID, SecItemRequestData(requestType, query, attributesToMatch)), 0)) 61 61 return nullptr; 62 62 -
trunk/Source/WebKit2/WebProcess/mac/WebProcessMac.mm
r138913 r139009 29 29 #import "CustomProtocolManager.h" 30 30 #import "SandboxExtension.h" 31 #import "SecItemShimMethods.h"32 31 #import "WKFullKeyboardAccessWatcher.h" 33 32 #import "WebInspector.h" … … 49 48 #import <stdio.h> 50 49 50 #if USE(SECURITY_FRAMEWORK) 51 #import "SecItemShim.h" 52 #endif 53 51 54 #if ENABLE(WEB_PROCESS_SANDBOX) 52 55 #import <pwd.h> … … 309 312 { 310 313 WKAXRegisterRemoteApp(); 311 initializeSecItemShim(); 314 315 #if USE(SECURITY_FRAMEWORK) 316 SecItemShim::shared().install(); 317 #endif 312 318 } 313 319 … … 321 327 } 322 328 323 void WebProcess::secItemResponse(CoreIPC::Connection*, uint64_t requestID, const SecItemResponseData& response)324 {325 didReceiveSecItemResponse(requestID, response);326 }327 328 329 } // namespace WebKit
Note:
See TracChangeset
for help on using the changeset viewer.