Source/WebKit2/ChangeLog

 12011-03-31 Balazs Kelemen <kbalazs@webkit.org>
 2
 3 Reviewed by NOBODY (OOPS!).
 4
 5 [Qt][WK2] Make Qt port compiling with ENABLE_PLUGIN_PROCESS=1
 6 https://bugs.webkit.org/show_bug.cgi?id=55719
 7
 8 Guard functionality related to complex text and implementations
 9 that rely on MachPort with PLATFORM(MAC).
 10 Based on Oleg Romashin's patch.
 11
 12 * PluginProcess/PluginControllerProxy.cpp:
 13 * PluginProcess/PluginControllerProxy.messages.in:
 14 * PluginProcess/PluginProcess.cpp:
 15 (WebKit::PluginProcess::createWebProcessConnection):
 16 * PluginProcess/WebProcessConnection.cpp:
 17 (WebKit::WebProcessConnection::createPlugin):
 18 * Shared/Plugins/PluginProcessCreationParameters.cpp:
 19 (WebKit::PluginProcessCreationParameters::decode): Fix bad C++ that
 20 does not compile with gcc-linux.
 21 * UIProcess/Plugins/PluginProcessProxy.cpp:
 22 (WebKit::PluginProcessProxy::pluginProcessCrashedOrFailedToLaunch):
 23 (WebKit::PluginProcessProxy::didCreateWebProcessConnection):
 24 * UIProcess/Plugins/PluginProcessProxy.h:
 25 * UIProcess/Plugins/PluginProcessProxy.messages.in:
 26 * WebKit2.pro: Move implementation that does not need external
 27 visibility from WebKit2API.pri. Adding the headers as well.
 28 * WebKit2API.pri:
 29 * WebProcess/Plugins/PluginProcessConnectionManager.cpp:
 30 (WebKit::PluginProcessConnectionManager::getPluginProcessConnection):
 31 * WebProcess/WebPage/WebPage.cpp:
 32
1332011-04-07 Balazs Kelemen <kbalazs@webkit.org>
234
335 Reviewed by Kenneth Rohde Christiansen.

Source/WebKit2/PluginProcess/PluginControllerProxy.cpp

@@void PluginControllerProxy::pluginProcessCrashed()
273273 ASSERT_NOT_REACHED();
274274}
275275
 276#if PLATFORM(MAC)
276277void PluginControllerProxy::setComplexTextInputEnabled(bool complexTextInputEnabled)
277278{
278279 if (m_isComplexTextInputEnabled == complexTextInputEnabled)

@@mach_port_t PluginControllerProxy::compositingRenderServerPort()
287288{
288289 return PluginProcess::shared().compositingRenderServerPort();
289290}
 291#endif
290292
291293String PluginControllerProxy::proxiesForURL(const String& urlString)
292294{

Source/WebKit2/PluginProcess/PluginControllerProxy.messages.in

@@messages -> PluginControllerProxy {
8686 # Get a reference to the plug-in's scriptable NPObject.
8787 GetPluginScriptableNPObject() -> (uint64_t pluginScriptableNPObjectID)
8888
 89#if PLATFORM(MAC)
8990 # Send the complex text input to the plug-in.
9091 SendComplexTextInput(WTF::String textInput)
9192
92 #if PLATFORM(MAC)
9393 # Sent when the containing NSWindow's focus changes
9494 WindowFocusChanged(bool hasFocus)
9595

Source/WebKit2/PluginProcess/PluginProcess.cpp

2929#if ENABLE(PLUGIN_PROCESS)
3030
3131#include "ArgumentCoders.h"
32 #include "MachPort.h"
3332#include "NetscapePluginModule.h"
3433#include "PluginProcessProxyMessages.h"
3534#include "PluginProcessCreationParameters.h"
3635#include "WebProcessConnection.h"
3736
 37#if PLATFORM(MAC)
 38#include "MachPort.h"
 39#endif
 40
3841namespace WebKit {
3942
4043static const double shutdownTimeout = 15.0;

@@void PluginProcess::initializePluginProcess(const PluginProcessCreationParameter
132135
133136void PluginProcess::createWebProcessConnection()
134137{
135  // FIXME: This is platform specific!
 138 bool didHaveAnyWebProcessConnections = !m_webProcessConnections.isEmpty();
136139
 140#if PLATFORM(MAC)
137141 // Create the listening port.
138142 mach_port_t listeningPort;
139143 mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_RECEIVE, &listeningPort);
140144
141  bool didHaveAnyWebProcessConnections = !m_webProcessConnections.isEmpty();
142 
143145 // Create a listening connection.
144146 RefPtr<WebProcessConnection> connection = WebProcessConnection::create(listeningPort);
145147 m_webProcessConnections.append(connection.release());
146148
147149 CoreIPC::MachPort clientPort(listeningPort, MACH_MSG_TYPE_MAKE_SEND);
148150 m_connection->send(Messages::PluginProcessProxy::DidCreateWebProcessConnection(clientPort), 0);
 151#else
 152 // FIXME: Implement.
 153 ASSERT_NOT_REACHED();
 154#endif
149155
150156 if (NetscapePluginModule* module = netscapePluginModule()) {
151157 if (!didHaveAnyWebProcessConnections) {

Source/WebKit2/PluginProcess/WebProcessConnection.cpp

@@void WebProcessConnection::createPlugin(uint64_t pluginInstanceID, const Plugin:
173173 if (!result)
174174 return;
175175
 176#if PLATFORM(MAC)
176177 remoteLayerClientID = pluginControllerProxyPtr->remoteLayerClientID();
 178#endif
177179}
178180
179181} // namespace WebKit

Source/WebKit2/Shared/Plugins/PluginProcessCreationParameters.cpp

@@void PluginProcessCreationParameters::encode(CoreIPC::ArgumentEncoder* encoder)
4646#endif
4747}
4848
49 bool PluginProcessCreationParameters::decode(CoreIPC::ArgumentDecoder* decoder, PluginProcessCreationParameters::PluginProcessCreationParameters& result)
 49bool PluginProcessCreationParameters::decode(CoreIPC::ArgumentDecoder* decoder, PluginProcessCreationParameters& result)
5050{
5151 if (!decoder->decode(result.pluginPath))
5252 return false;

Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp

2828
2929#if ENABLE(PLUGIN_PROCESS)
3030
31 #include "MachPort.h"
3231#include "PluginProcessCreationParameters.h"
3332#include "PluginProcessManager.h"
3433#include "PluginProcessMessages.h"

3736#include "WebPluginSiteDataManager.h"
3837#include "WebProcessProxy.h"
3938
 39#if PLATFORM(MAC)
 40#include "MachPort.h"
 41#endif
 42
4043namespace WebKit {
4144
4245PassOwnPtr<PluginProcessProxy> PluginProcessProxy::create(PluginProcessManager* PluginProcessManager, const PluginInfoStore::Plugin& pluginInfo)

@@void PluginProcessProxy::pluginProcessCrashedOrFailedToLaunch()
125128 CoreIPC::ArgumentEncoder* reply = m_pendingConnectionReplies.first().second;
126129 m_pendingConnectionReplies.removeFirst();
127130
128  // FIXME: This is Mac specific.
 131#if PLATFORM(MAC)
129132 reply->encode(CoreIPC::MachPort(0, MACH_MSG_TYPE_MOVE_SEND));
 133#else
 134 // FIXME: Implement.
 135 ASSERT_NOT_REACHED();
 136#endif
130137 replyWebProcessProxy->connection()->sendSyncReply(reply);
131138 }
132139

@@void PluginProcessProxy::didFinishLaunching(ProcessLauncher*, CoreIPC::Connectio
201208 m_numPendingConnectionRequests = 0;
202209}
203210
 211#if PLATFORM(MAC)
204212void PluginProcessProxy::didCreateWebProcessConnection(const CoreIPC::MachPort& machPort)
205213{
206214 ASSERT(!m_pendingConnectionReplies.isEmpty());

@@void PluginProcessProxy::didCreateWebProcessConnection(const CoreIPC::MachPort&
210218 CoreIPC::ArgumentEncoder* reply = m_pendingConnectionReplies.first().second;
211219 m_pendingConnectionReplies.removeFirst();
212220
213  // FIXME: This is Mac specific.
214221 reply->encode(CoreIPC::MachPort(machPort.port(), MACH_MSG_TYPE_MOVE_SEND));
215222 replyWebProcessProxy->connection()->sendSyncReply(reply);
216223}
 224#endif
217225
218226void PluginProcessProxy::didGetSitesWithData(const Vector<String>& sites, uint64_t callbackID)
219227{

Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h

@@private:
8686
8787 // Message handlers
8888 void didReceivePluginProcessProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*);
 89#if PLATFORM(MAC)
8990 void didCreateWebProcessConnection(const CoreIPC::MachPort&);
 91#endif
9092 void didGetSitesWithData(const Vector<String>& sites, uint64_t callbackID);
9193 void didClearSiteData(uint64_t callbackID);
9294

Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.messages.in

2323#if ENABLE(PLUGIN_PROCESS)
2424
2525messages -> PluginProcessProxy {
26  # FIXME: This is platform specific
 26#if PLATFORM(MAC)
2727 DidCreateWebProcessConnection(CoreIPC::MachPort connectionIdentifier)
 28#endif
2829
2930 DidGetSitesWithData(Vector<WTF::String> sites, uint64_t callbackID)
3031 DidClearSiteData(uint64_t callbackID)

Source/WebKit2/WebKit2.pro

@@HEADERS += \
107107 Platform/SharedMemory.h \
108108 Platform/WorkItem.h \
109109 Platform/WorkQueue.h \
 110 PluginProcess/PluginControllerProxy.h \
 111 PluginProcess/PluginProcess.h \
 112 PluginProcess/WebProcessConnection.h \
110113 Shared/ShareableBitmap.h \
111114 Shared/CacheModel.h \
112115 Shared/ChildProcess.h \

@@SOURCES += \
308311 Platform/qt/RunLoopQt.cpp \
309312 Platform/qt/WorkQueueQt.cpp \
310313 Platform/unix/SharedMemoryUnix.cpp \
 314 PluginProcess/PluginControllerProxy.cpp \
 315 PluginProcess/PluginProcess.cpp \
 316 PluginProcess/WebProcessConnection.cpp \
 317 PluginProcess/qt/PluginControllerProxyQt.cpp \
 318 PluginProcess/qt/PluginProcessQt.cpp \
311319 Shared/Plugins/Netscape/NetscapePluginModule.cpp \
312320 Shared/Plugins/Netscape/NetscapePluginModuleNone.cpp \
313321 Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp \

Source/WebKit2/WebKit2API.pri

@@WEBKIT2_API_SOURCES = \
6060 $$SOURCE_DIR/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePageGroup.cpp \
6161 $$SOURCE_DIR/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp \
6262 $$SOURCE_DIR/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleScriptWorld.cpp \
63  $$SOURCE_DIR/WebKit2/PluginProcess/PluginControllerProxy.cpp \
64  $$SOURCE_DIR/WebKit2/PluginProcess/PluginProcess.cpp \
65  $$SOURCE_DIR/WebKit2/PluginProcess/WebProcessConnection.cpp \
66  $$SOURCE_DIR/WebKit2/PluginProcess/qt/PluginControllerProxyQt.cpp \
6763 $$SOURCE_DIR/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp \
68  $$SOURCE_DIR/WebKit2/PluginProcess/qt/PluginProcessQt.cpp \
6964 $$SOURCE_DIR/WebKit2/WebProcess/qt/WebProcessMainQt.cpp
7065
7166

Source/WebKit2/WebProcess/Plugins/PluginProcessConnectionManager.cpp

3030
3131#include "ArgumentDecoder.h"
3232#include "ArgumentEncoder.h"
33 #include "MachPort.h"
3433#include "PluginProcessConnection.h"
3534#include "WebCoreArgumentCoders.h"
3635#include "WebProcess.h"
3736#include "WebProcessProxyMessageKinds.h"
3837#include <wtf/StdLibExtras.h>
3938
 39#if PLATFORM(MAC)
 40#include "MachPort.h"
 41#endif
 42
4043namespace WebKit {
4144
4245PluginProcessConnectionManager& PluginProcessConnectionManager::shared()

@@PluginProcessConnection* PluginProcessConnectionManager::getPluginProcessConnect
6164 }
6265
6366 CoreIPC::Connection::Identifier connectionIdentifier;
 67#if PLATFORM(MAC)
6468 CoreIPC::MachPort connectionMachPort;
6569 if (!WebProcess::shared().connection()->deprecatedSendSync(WebProcessProxyLegacyMessage::GetPluginProcessConnection, 0, CoreIPC::In(pluginPath), CoreIPC::Out(connectionMachPort)))
6670 return 0;
6771
6872 connectionIdentifier = connectionMachPort.port();
 73#else
 74 // FIXME: Implement.
 75 connectionIdentifier = 0;
 76 ASSERT_NOT_REACHED();
 77#endif
6978 if (!connectionIdentifier)
7079 return 0;
7180

Source/WebKit2/WebProcess/WebPage/WebPage.cpp

115115#endif
116116
117117#if ENABLE(PLUGIN_PROCESS)
118 // FIXME: This is currently Mac-specific!
 118#if PLATFORM(MAC)
119119#include "MachPort.h"
120120#endif
 121#endif
121122
122123#if PLATFORM(QT)
123124#include "HitTestResult.h"