Changeset 68170 in webkit
- Timestamp:
- Sep 23, 2010 11:21:43 AM (14 years ago)
- Location:
- trunk/WebKit2
- Files:
-
- 3 added
- 9 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebKit2/ChangeLog
r68162 r68170 1 2010-09-23 Anders Carlsson <andersca@apple.com> 2 3 Reviewed by Sam Weinig. 4 5 Add PluginProcessProxy class 6 https://bugs.webkit.org/show_bug.cgi?id=46377 7 8 * DerivedSources.make: 9 Add PluginProcess. 10 11 * Platform/CoreIPC/Connection.h: 12 (CoreIPC::Connection::send): 13 Add send overload that takes a message. 14 15 * Platform/CoreIPC/MessageID.h: 16 Add MessageClassPluginProcess message kind. 17 18 * PluginProcess/PluginProcess.messages.in: Added. 19 Add PluginProcess messages. 20 21 * UIProcess/Plugins/PluginInfoStore.cpp: 22 (WebKit::PluginInfoStore::infoForPluginWithPath): 23 * UIProcess/Plugins/PluginInfoStore.h: 24 New function that returns the plug-in info for a plug-in with the given path. 25 26 * UIProcess/Plugins/PluginProcessManager.cpp: 27 (WebKit::PluginProcessManager::getPluginProcessConnection): 28 Look for an existing plug-in process proxy. 29 30 * UIProcess/Plugins/PluginProcessProxy.cpp: Added. 31 (WebKit::PluginProcessProxy::create): 32 Launch the process. 33 34 (WebKit::PluginProcessProxy::didReceiveMessage): 35 (WebKit::PluginProcessProxy::didReceiveInvalidMessage): 36 Add stubbed out functions. 37 38 (WebKit::PluginProcessProxy::didClose): 39 Delete the plug-in process proxy. 40 41 (WebKit::PluginProcessProxy::didFinishLaunching): 42 Open a connection to the plug-in process proxy. 43 44 * UIProcess/Plugins/PluginProcessProxy.h: Added. 45 (WebKit::PluginProcessProxy::pluginInfo): 46 Return the plug-in info. 47 48 * UIProcess/WebProcessProxy.h: 49 (WebKit::WebProcessProxy::context): 50 Add a context getter. 51 52 * WebKit2.xcodeproj/project.pbxproj: 53 Add new files. 54 1 55 2010-09-23 Jessie Berlin <jberlin@apple.com> 2 56 -
trunk/WebKit2/DerivedSources.make
r68079 r68170 1 1 VPATH = \ 2 $(WebKit2)/PluginProcess \ 2 3 $(WebKit2)/WebProcess/WebPage \ 3 4 # 4 5 5 6 MESSAGE_RECEIVERS = \ 7 PluginProcess \ 6 8 WebPage \ 7 9 # -
trunk/WebKit2/Platform/CoreIPC/Connection.h
r67891 r68170 95 95 void invalidate(); 96 96 97 // FIXME: This variant of send is deprecated, all clients should move to the overload that takes a message. 97 98 template<typename E, typename T> bool send(E messageID, uint64_t destinationID, const T& arguments); 98 99 100 template<typename T> bool send(const T& message, uint64_t destinationID); 101 99 102 static const unsigned long long NoTimeout = 10000000000ULL; 100 103 template<typename E, typename T, typename U> bool sendSync(E messageID, uint64_t destinationID, const T& arguments, const U& reply, double timeout); … … 220 223 } 221 224 225 template<typename T> bool Connection::send(const T& message, uint64_t destinationID) 226 { 227 OwnPtr<ArgumentEncoder> argumentEncoder(new ArgumentEncoder(destinationID)); 228 argumentEncoder->encode(message); 229 230 return sendMessage(MessageID(T::messageID), argumentEncoder.release()); 231 } 232 222 233 template<typename E, typename T, typename U> 223 234 inline bool Connection::sendSync(E messageID, uint64_t destinationID, const T& arguments, const U& reply, double timeout) -
trunk/WebKit2/Platform/CoreIPC/MessageID.h
r64396 r68170 45 45 MessageClassWebProcessProxy, 46 46 MessageClassWebPageProxy, 47 MessageClassDrawingAreaProxy 47 MessageClassDrawingAreaProxy, 48 49 // Messages sent by the UI process to the plug-in process. 50 MessageClassPluginProcess, 48 51 }; 49 52 -
trunk/WebKit2/UIProcess/Plugins/PluginInfoStore.cpp
r67775 r68170 191 191 } 192 192 193 PluginInfoStore::Plugin PluginInfoStore::infoForPluginWithPath(const String& pluginPath) 194 { 195 for (size_t i = 0; i < m_plugins.size(); ++i) { 196 if (m_plugins[i].path == pluginPath) 197 return m_plugins[i]; 198 } 199 200 ASSERT_NOT_REACHED(); 201 return Plugin(); 202 } 203 193 204 } // namespace WebKit -
trunk/WebKit2/UIProcess/Plugins/PluginInfoStore.h
r67775 r68170 60 60 Plugin findPlugin(String& mimeType, const WebCore::KURL& url); 61 61 62 // Returns the info for the plug-in with the given path. 63 Plugin infoForPluginWithPath(const String& pluginPath); 64 62 65 private: 63 66 -
trunk/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp
r68088 r68170 29 29 30 30 #include "PluginInfoStore.h" 31 #include "PluginProcessProxy.h" 31 32 #include "WebContext.h" 32 33 #include <wtf/StdLibExtras.h> … … 45 46 ASSERT(!pluginPath.isNull()); 46 47 47 // FIXME: Implement. 48 PluginInfoStore::Plugin plugin = webProcessProxy->context()->pluginInfoStore()->infoForPluginWithPath(pluginPath); 49 50 PluginProcessProxy* pluginProcess = 0; 51 52 for (size_t i = 0; i < m_pluginProcesses.size(); ++i) { 53 if (m_pluginProcesses[i]->pluginInfo().path == plugin.path) { 54 pluginProcess = m_pluginProcesses[i]; 55 break; 56 } 57 } 58 59 if (!pluginProcess) { 60 pluginProcess = PluginProcessProxy::create(this, plugin).leakPtr(); 61 m_pluginProcesses.append(pluginProcess); 62 } 63 64 // FIXME: Ask the plug-in process for a connection 48 65 } 49 66 -
trunk/WebKit2/UIProcess/Plugins/PluginProcessProxy.h
r68169 r68170 24 24 */ 25 25 26 #ifndef PluginProcessProxy_h 27 #define PluginProcessProxy_h 28 26 29 #if ENABLE(PLUGIN_PROCESS) 27 30 28 #include "PluginProcessManager.h" 29 31 #include "Connection.h" 30 32 #include "PluginInfoStore.h" 31 #include "WebContext.h" 32 #include <wtf/StdLibExtras.h> 33 #include <wtf/text/WTFString.h> 33 #include "ProcessLauncher.h" 34 #include <wtf/Deque.h> 34 35 35 36 namespace WebKit { 36 37 37 PluginProcessManager& PluginProcessManager::shared() 38 { 39 DEFINE_STATIC_LOCAL(PluginProcessManager, pluginProcessManager, ()); 40 return pluginProcessManager; 41 } 38 class PluginProcessManager; 39 class WebProcessProxy; 40 41 class PluginProcessProxy : CoreIPC::Connection::Client, ProcessLauncher::Client { 42 public: 43 static PassOwnPtr<PluginProcessProxy> create(PluginProcessManager*, const PluginInfoStore::Plugin&); 42 44 43 void PluginProcessManager::getPluginProcessConnection(const String& pluginPath, WebProcessProxy* webProcessProxy, CoreIPC::ArgumentEncoder* reply) 44 { 45 ASSERT(!pluginPath.isNull()); 45 const PluginInfoStore::Plugin& pluginInfo() const { return m_pluginInfo; } 46 46 47 // FIXME: Implement. 48 } 47 private: 48 PluginProcessProxy(PluginProcessManager*, const PluginInfoStore::Plugin&); 49 49 50 void PluginProcessManager::removePluginProcessProxy(PluginProcessProxy* pluginProcessProxy) 51 { 52 size_t vectorIndex = m_pluginProcesses.find(pluginProcessProxy);53 ASSERT(vectorIndex != notFound);50 // CoreIPC::Connection::Client 51 virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); 52 virtual void didClose(CoreIPC::Connection*); 53 virtual void didReceiveInvalidMessage(CoreIPC::Connection*, CoreIPC::MessageID); 54 54 55 m_pluginProcesses.remove(vectorIndex); 56 } 55 // ProcessLauncher::Client 56 virtual void didFinishLaunching(ProcessLauncher*, CoreIPC::Connection::Identifier); 57 58 // The plug-in host process manager. 59 PluginProcessManager* m_pluginProcessManager; 60 61 // Information about the plug-in. 62 PluginInfoStore::Plugin m_pluginInfo; 63 64 // The connection to the plug-in host process. 65 RefPtr<CoreIPC::Connection> m_connection; 66 67 // The process launcher for the plug-in host process. 68 RefPtr<ProcessLauncher> m_processLauncher; 69 }; 57 70 58 71 } // namespace WebKit 59 72 60 73 #endif // ENABLE(PLUGIN_PROCESS) 74 75 #endif // PluginProcessProxy_h -
trunk/WebKit2/UIProcess/WebProcessProxy.h
r68079 r68170 71 71 return m_connection.get(); 72 72 } 73 74 WebContext* context() const { return m_context; } 73 75 74 76 PlatformProcessIdentifier processIdentifier() const { return m_processLauncher->processIdentifier(); } -
trunk/WebKit2/WebKit2.xcodeproj/project.pbxproj
r68088 r68170 47 47 1A0EC603124A9F2C007EF4A5 /* PluginProcessManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A0EC601124A9F2C007EF4A5 /* PluginProcessManager.h */; }; 48 48 1A0EC604124A9F2C007EF4A5 /* PluginProcessManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A0EC602124A9F2C007EF4A5 /* PluginProcessManager.cpp */; }; 49 1A0EC6B2124BBD36007EF4A5 /* PluginProcess.messages.in in Resources */ = {isa = PBXBuildFile; fileRef = 1A0EC6B1124BBD36007EF4A5 /* PluginProcess.messages.in */; }; 50 1A0EC6C0124BBD9B007EF4A5 /* PluginProcessMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A0EC6BE124BBD9B007EF4A5 /* PluginProcessMessages.h */; }; 51 1A0EC75E124BC7B2007EF4A5 /* PluginProcessProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A0EC75C124BC7B2007EF4A5 /* PluginProcessProxy.h */; }; 52 1A0EC75F124BC7B2007EF4A5 /* PluginProcessProxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A0EC75D124BC7B2007EF4A5 /* PluginProcessProxy.cpp */; }; 49 53 1A0F29CB120B37160053D1B9 /* VisitedLinkTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A0F29C9120B37160053D1B9 /* VisitedLinkTable.cpp */; }; 50 54 1A0F29CC120B37160053D1B9 /* VisitedLinkTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A0F29CA120B37160053D1B9 /* VisitedLinkTable.h */; }; … … 440 444 1A0EC601124A9F2C007EF4A5 /* PluginProcessManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PluginProcessManager.h; sourceTree = "<group>"; }; 441 445 1A0EC602124A9F2C007EF4A5 /* PluginProcessManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PluginProcessManager.cpp; sourceTree = "<group>"; }; 446 1A0EC6B1124BBD36007EF4A5 /* PluginProcess.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = PluginProcess.messages.in; sourceTree = "<group>"; }; 447 1A0EC6BD124BBD9B007EF4A5 /* PluginProcessMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = PluginProcessMessageReceiver.cpp; path = /Users/andersca/Build/Debug/DerivedSources/WebKit2/PluginProcessMessageReceiver.cpp; sourceTree = "<absolute>"; }; 448 1A0EC6BE124BBD9B007EF4A5 /* PluginProcessMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PluginProcessMessages.h; path = /Users/andersca/Build/Debug/DerivedSources/WebKit2/PluginProcessMessages.h; sourceTree = "<absolute>"; }; 449 1A0EC75C124BC7B2007EF4A5 /* PluginProcessProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PluginProcessProxy.h; sourceTree = "<group>"; }; 450 1A0EC75D124BC7B2007EF4A5 /* PluginProcessProxy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PluginProcessProxy.cpp; sourceTree = "<group>"; }; 442 451 1A0F29C9120B37160053D1B9 /* VisitedLinkTable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VisitedLinkTable.cpp; sourceTree = "<group>"; }; 443 452 1A0F29CA120B37160053D1B9 /* VisitedLinkTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VisitedLinkTable.h; sourceTree = "<group>"; }; … … 828 837 C0CE72DB1247E8F700BC0EC4 /* DerivedSources.make */, 829 838 BC2E6E74114196F000A63B1E /* Platform */, 839 1A0EC6B0124BBD36007EF4A5 /* PluginProcess */, 830 840 1AADDF4B10D82AF000D3D63D /* Shared */, 831 841 BC032D5C10F436D50058C15A /* WebProcess */, … … 884 894 ); 885 895 name = "Other Frameworks"; 896 sourceTree = "<group>"; 897 }; 898 1A0EC6B0124BBD36007EF4A5 /* PluginProcess */ = { 899 isa = PBXGroup; 900 children = ( 901 1A0EC6B1124BBD36007EF4A5 /* PluginProcess.messages.in */, 902 ); 903 path = PluginProcess; 886 904 sourceTree = "<group>"; 887 905 }; … … 1042 1060 1A0EC602124A9F2C007EF4A5 /* PluginProcessManager.cpp */, 1043 1061 1A0EC601124A9F2C007EF4A5 /* PluginProcessManager.h */, 1062 1A0EC75D124BC7B2007EF4A5 /* PluginProcessProxy.cpp */, 1063 1A0EC75C124BC7B2007EF4A5 /* PluginProcessProxy.h */, 1044 1064 ); 1045 1065 path = Plugins; … … 1521 1541 isa = PBXGroup; 1522 1542 children = ( 1543 1A0EC6BD124BBD9B007EF4A5 /* PluginProcessMessageReceiver.cpp */, 1544 1A0EC6BE124BBD9B007EF4A5 /* PluginProcessMessages.h */, 1523 1545 C0CE729E1247E71D00BC0EC4 /* WebPageMessageReceiver.cpp */, 1524 1546 C0CE729F1247E71D00BC0EC4 /* WebPageMessages.h */, … … 1732 1754 C0CE72AD1247E78D00BC0EC4 /* HandleMessage.h in Headers */, 1733 1755 1A0EC603124A9F2C007EF4A5 /* PluginProcessManager.h in Headers */, 1756 1A0EC6C0124BBD9B007EF4A5 /* PluginProcessMessages.h in Headers */, 1757 1A0EC75E124BC7B2007EF4A5 /* PluginProcessProxy.h in Headers */, 1734 1758 ); 1735 1759 runOnlyForDeploymentPostprocessing = 0; … … 1781 1805 buildConfigurationList = 1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "WebKit2" */; 1782 1806 compatibilityVersion = "Xcode 3.1"; 1807 developmentRegion = English; 1783 1808 hasScannedForEncodings = 1; 1784 1809 knownRegions = ( … … 1815 1840 files = ( 1816 1841 8DC2EF530486A6940098B216 /* InfoPlist.strings in Resources */, 1842 1A0EC6B2124BBD36007EF4A5 /* PluginProcess.messages.in in Resources */, 1817 1843 ); 1818 1844 runOnlyForDeploymentPostprocessing = 0; … … 2003 2029 C0CE72A01247E71D00BC0EC4 /* WebPageMessageReceiver.cpp in Sources */, 2004 2030 1A0EC604124A9F2C007EF4A5 /* PluginProcessManager.cpp in Sources */, 2031 1A0EC75F124BC7B2007EF4A5 /* PluginProcessProxy.cpp in Sources */, 2005 2032 ); 2006 2033 runOnlyForDeploymentPostprocessing = 0;
Note: See TracChangeset
for help on using the changeset viewer.