[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
andersca at apple.com
andersca at apple.com
Wed Dec 22 13:55:11 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 22d7307a0cf94adac9ad53582bc4f8d9d6bf56c5
Author: andersca at apple.com <andersca at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Wed Sep 29 17:46:51 2010 +0000
Handle getting the user agent in the plug-in process
https://bugs.webkit.org/show_bug.cgi?id=46819
Reviewed by Sam Weinig.
* Platform/CoreIPC/HandleMessage.h:
(CoreIPC::handleMessage):
Add new handleMessage overload.
* PluginProcess/PluginControllerProxy.cpp:
(WebKit::PluginControllerProxy::create):
(WebKit::PluginControllerProxy::PluginControllerProxy):
Pass the user agent to the plug-in controller proxy.
(WebKit::PluginControllerProxy::userAgent):
Return the user agent.
* PluginProcess/WebProcessConnection.cpp:
(WebKit::WebProcessConnection::createPlugin):
Pass the user agent when creating the plug-in controller proxy.
* PluginProcess/WebProcessConnection.messages.in:
Add userAgent.
* WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
(WebKit::NetscapePlugin::userAgent):
* WebProcess/Plugins/PluginController.h:
Remove the URL parameter to userAgent.
* WebProcess/Plugins/PluginProxy.cpp:
(WebKit::PluginProxy::initialize):
Pass the user agent to WebProcessConnection::CreatePlugin.
* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::userAgent):
Remove url parameter.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@68662 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index 89a3832..1365cc7 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -2,6 +2,45 @@
Reviewed by Sam Weinig.
+ Handle getting the user agent in the plug-in process
+ https://bugs.webkit.org/show_bug.cgi?id=46819
+
+ * Platform/CoreIPC/HandleMessage.h:
+ (CoreIPC::handleMessage):
+ Add new handleMessage overload.
+
+ * PluginProcess/PluginControllerProxy.cpp:
+ (WebKit::PluginControllerProxy::create):
+ (WebKit::PluginControllerProxy::PluginControllerProxy):
+ Pass the user agent to the plug-in controller proxy.
+
+ (WebKit::PluginControllerProxy::userAgent):
+ Return the user agent.
+
+ * PluginProcess/WebProcessConnection.cpp:
+ (WebKit::WebProcessConnection::createPlugin):
+ Pass the user agent when creating the plug-in controller proxy.
+
+ * PluginProcess/WebProcessConnection.messages.in:
+ Add userAgent.
+
+ * WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
+ (WebKit::NetscapePlugin::userAgent):
+ * WebProcess/Plugins/PluginController.h:
+ Remove the URL parameter to userAgent.
+
+ * WebProcess/Plugins/PluginProxy.cpp:
+ (WebKit::PluginProxy::initialize):
+ Pass the user agent to WebProcessConnection::CreatePlugin.
+
+ * WebProcess/Plugins/PluginView.cpp:
+ (WebKit::PluginView::userAgent):
+ Remove url parameter.
+
+2010-09-29 Anders Carlsson <andersca at apple.com>
+
+ Reviewed by Sam Weinig.
+
Implement more PluginProxy member functions
https://bugs.webkit.org/show_bug.cgi?id=46815
diff --git a/WebKit2/Platform/CoreIPC/HandleMessage.h b/WebKit2/Platform/CoreIPC/HandleMessage.h
index 70e6c57..4c1cb4d 100644
--- a/WebKit2/Platform/CoreIPC/HandleMessage.h
+++ b/WebKit2/Platform/CoreIPC/HandleMessage.h
@@ -70,6 +70,26 @@ void handleMessage(ArgumentDecoder* arguments, ArgumentEncoder* reply, C* object
reply->encode(firstReplyArgument);
}
+template<typename T, typename C, typename P1, typename P2, typename P3, typename R1>
+void handleMessage(ArgumentDecoder* arguments, ArgumentEncoder* reply, C* object, void (C::*function)(P1, P2, P3, R1&))
+{
+ typename RemoveReference<typename T::FirstArgumentType>::Type firstArgument;
+ if (!arguments->decode(firstArgument))
+ return;
+
+ typename RemoveReference<typename T::SecondArgumentType>::Type secondArgument;
+ if (!arguments->decode(secondArgument))
+ return;
+
+ typename RemoveReference<typename T::ThirdArgumentType>::Type thirdArgument;
+ if (!arguments->decode(thirdArgument))
+ return;
+
+ typename RemoveReference<typename T::Reply::FirstArgumentType>::Type firstReplyArgument;
+ (object->*function)(firstArgument, secondArgument, thirdArgument, firstReplyArgument);
+ reply->encode(firstReplyArgument);
+}
+
template<typename T, typename C, typename P1, typename P2, typename R1>
void handleMessage(ArgumentDecoder* arguments, ArgumentEncoder* reply, C* object, void (C::*function)(P1, P2, R1&))
{
diff --git a/WebKit2/PluginProcess/PluginControllerProxy.cpp b/WebKit2/PluginProcess/PluginControllerProxy.cpp
index 562d09c..0f5f894 100644
--- a/WebKit2/PluginProcess/PluginControllerProxy.cpp
+++ b/WebKit2/PluginProcess/PluginControllerProxy.cpp
@@ -41,14 +41,15 @@ using namespace WebCore;
namespace WebKit {
-PassOwnPtr<PluginControllerProxy> PluginControllerProxy::create(WebProcessConnection* connection, uint64_t pluginInstanceID)
+PassOwnPtr<PluginControllerProxy> PluginControllerProxy::create(WebProcessConnection* connection, uint64_t pluginInstanceID, const String& userAgent)
{
- return adoptPtr(new PluginControllerProxy(connection, pluginInstanceID));
+ return adoptPtr(new PluginControllerProxy(connection, pluginInstanceID, userAgent));
}
-PluginControllerProxy::PluginControllerProxy(WebProcessConnection* connection, uint64_t pluginInstanceID)
+PluginControllerProxy::PluginControllerProxy(WebProcessConnection* connection, uint64_t pluginInstanceID, const String& userAgent)
: m_connection(connection)
, m_pluginInstanceID(pluginInstanceID)
+ , m_userAgent(userAgent)
, m_paintTimer(RunLoop::main(), this, &PluginControllerProxy::paint)
{
}
@@ -124,10 +125,9 @@ void PluginControllerProxy::invalidate(const IntRect& rect)
m_paintTimer.startOneShot(0);
}
-String PluginControllerProxy::userAgent(const WebCore::KURL&)
+String PluginControllerProxy::userAgent()
{
- notImplemented();
- return String();
+ return m_userAgent;
}
void PluginControllerProxy::loadURL(uint64_t requestID, const String& method, const String& urlString, const String& target, const HTTPHeaderMap& headerFields, const Vector<uint8_t>& httpBody, bool allowPopups)
diff --git a/WebKit2/PluginProcess/PluginControllerProxy.h b/WebKit2/PluginProcess/PluginControllerProxy.h
index 4c1c8f1..bec4043 100644
--- a/WebKit2/PluginProcess/PluginControllerProxy.h
+++ b/WebKit2/PluginProcess/PluginControllerProxy.h
@@ -44,7 +44,7 @@ class PluginControllerProxy : PluginController {
WTF_MAKE_NONCOPYABLE(PluginControllerProxy);
public:
- static PassOwnPtr<PluginControllerProxy> create(WebProcessConnection* connection, uint64_t pluginInstanceID);
+ static PassOwnPtr<PluginControllerProxy> create(WebProcessConnection* connection, uint64_t pluginInstanceID, const String& userAgent);
~PluginControllerProxy();
uint64_t pluginInstanceID() const { return m_pluginInstanceID; }
@@ -56,13 +56,13 @@ public:
CoreIPC::SyncReplyMode didReceiveSyncPluginControllerProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, CoreIPC::ArgumentEncoder*);
private:
- PluginControllerProxy(WebProcessConnection* connection, uint64_t pluginInstanceID);
+ PluginControllerProxy(WebProcessConnection* connection, uint64_t pluginInstanceID, const String& userAgent);
void paint();
// PluginController
virtual void invalidate(const WebCore::IntRect&);
- virtual String userAgent(const WebCore::KURL&);
+ virtual String userAgent();
virtual void loadURL(uint64_t requestID, const String& method, const String& urlString, const String& target, const WebCore::HTTPHeaderMap& headerFields, const Vector<uint8_t>& httpBody, bool allowPopups);
virtual void cancelStreamLoad(uint64_t streamID);
virtual void cancelManualStreamLoad();
@@ -89,6 +89,8 @@ private:
WebProcessConnection* m_connection;
uint64_t m_pluginInstanceID;
+ String m_userAgent;
+
RefPtr<Plugin> m_plugin;
// The plug-in rect and clip rect in window coordinates.
diff --git a/WebKit2/PluginProcess/WebProcessConnection.cpp b/WebKit2/PluginProcess/WebProcessConnection.cpp
index c8d2b59..968e01b 100644
--- a/WebKit2/PluginProcess/WebProcessConnection.cpp
+++ b/WebKit2/PluginProcess/WebProcessConnection.cpp
@@ -131,9 +131,9 @@ void WebProcessConnection::didReceiveInvalidMessage(CoreIPC::Connection*, CoreIP
// FIXME: Implement.
}
-void WebProcessConnection::createPlugin(uint64_t pluginInstanceID, const Plugin::Parameters& parameters, bool& result)
+void WebProcessConnection::createPlugin(uint64_t pluginInstanceID, const Plugin::Parameters& parameters, const String& userAgent, bool& result)
{
- OwnPtr<PluginControllerProxy> pluginControllerProxy = PluginControllerProxy::create(this, pluginInstanceID);
+ OwnPtr<PluginControllerProxy> pluginControllerProxy = PluginControllerProxy::create(this, pluginInstanceID, userAgent);
PluginControllerProxy* pluginControllerProxyPtr = pluginControllerProxy.get();
diff --git a/WebKit2/PluginProcess/WebProcessConnection.h b/WebKit2/PluginProcess/WebProcessConnection.h
index c2e5cd5..28cf944 100644
--- a/WebKit2/PluginProcess/WebProcessConnection.h
+++ b/WebKit2/PluginProcess/WebProcessConnection.h
@@ -61,7 +61,7 @@ private:
// Message handlers.
CoreIPC::SyncReplyMode didReceiveSyncWebProcessConnectionMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, CoreIPC::ArgumentEncoder*);
- void createPlugin(uint64_t pluginInstanceID, const Plugin::Parameters&, bool& result);
+ void createPlugin(uint64_t pluginInstanceID, const Plugin::Parameters&, const String& userAgent, bool& result);
void destroyPlugin(uint64_t pluginInstanceID);
RefPtr<CoreIPC::Connection> m_connection;
diff --git a/WebKit2/PluginProcess/WebProcessConnection.messages.in b/WebKit2/PluginProcess/WebProcessConnection.messages.in
index 9c8217c..7d6c1c0 100644
--- a/WebKit2/PluginProcess/WebProcessConnection.messages.in
+++ b/WebKit2/PluginProcess/WebProcessConnection.messages.in
@@ -24,7 +24,7 @@
messages -> WebProcessConnection {
# Creates a plug-in instance with the given instance ID.
- CreatePlugin(uint64_t pluginInstanceID, WebKit::Plugin::Parameters parameters) -> (bool result)
+ CreatePlugin(uint64_t pluginInstanceID, WebKit::Plugin::Parameters parameters, WTF::String userAgent) -> (bool result)
# Destroys the plug-in instance with the given instance ID.
DestroyPlugin(uint64_t pluginInstanceID) -> ()
diff --git a/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp b/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp
index 43b93a9..fb7ead7 100644
--- a/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp
+++ b/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp
@@ -101,11 +101,9 @@ void NetscapePlugin::invalidate(const NPRect* invalidRect)
const char* NetscapePlugin::userAgent()
{
if (m_userAgent.isNull()) {
- // FIXME: Pass the src URL.
- m_userAgent = m_pluginController->userAgent(KURL()).utf8();
+ m_userAgent = m_pluginController->userAgent().utf8();
ASSERT(!m_userAgent.isNull());
}
-
return m_userAgent.data();
}
diff --git a/WebKit2/WebProcess/Plugins/PluginController.h b/WebKit2/WebProcess/Plugins/PluginController.h
index b4e6e76..53b4e5e 100644
--- a/WebKit2/WebProcess/Plugins/PluginController.h
+++ b/WebKit2/WebProcess/Plugins/PluginController.h
@@ -44,8 +44,8 @@ public:
// Tells the controller that the plug-in wants the given rect to be repainted. The rect is in the plug-in's coordinate system.
virtual void invalidate(const WebCore::IntRect&) = 0;
- // Returns the user agent string for the given URL.
- virtual String userAgent(const WebCore::KURL&) = 0;
+ // Returns the user agent string.
+ virtual String userAgent() = 0;
// Loads the given URL and associates it with the request ID.
//
diff --git a/WebKit2/WebProcess/Plugins/PluginProxy.cpp b/WebKit2/WebProcess/Plugins/PluginProxy.cpp
index 82e5e7c..8bc342d 100644
--- a/WebKit2/WebProcess/Plugins/PluginProxy.cpp
+++ b/WebKit2/WebProcess/Plugins/PluginProxy.cpp
@@ -81,7 +81,7 @@ bool PluginProxy::initialize(PluginController* pluginController, const Parameter
// Ask the plug-in process to create a plug-in.
bool result = false;
- if (!m_connection->connection()->sendSync(Messages::WebProcessConnection::CreatePlugin(m_pluginInstanceID, parameters),
+ if (!m_connection->connection()->sendSync(Messages::WebProcessConnection::CreatePlugin(m_pluginInstanceID, parameters, pluginController->userAgent()),
Messages::WebProcessConnection::CreatePlugin::Reply(result),
0, CoreIPC::Connection::NoTimeout))
return false;
diff --git a/WebKit2/WebProcess/Plugins/PluginView.cpp b/WebKit2/WebProcess/Plugins/PluginView.cpp
index c79cb1a..45960fc 100644
--- a/WebKit2/WebProcess/Plugins/PluginView.cpp
+++ b/WebKit2/WebProcess/Plugins/PluginView.cpp
@@ -699,13 +699,13 @@ void PluginView::invalidate(const IntRect& dirtyRect)
invalidateRect(dirtyRect);
}
-String PluginView::userAgent(const KURL& url)
+String PluginView::userAgent()
{
Frame* frame = m_pluginElement->document()->frame();
if (!frame)
return String();
- return frame->loader()->client()->userAgent(url);
+ return frame->loader()->client()->userAgent(KURL());
}
void PluginView::loadURL(uint64_t requestID, const String& method, const String& urlString, const String& target,
diff --git a/WebKit2/WebProcess/Plugins/PluginView.h b/WebKit2/WebProcess/Plugins/PluginView.h
index 025ddbf..e932529 100644
--- a/WebKit2/WebProcess/Plugins/PluginView.h
+++ b/WebKit2/WebProcess/Plugins/PluginView.h
@@ -113,7 +113,7 @@ private:
// PluginController
virtual void invalidate(const WebCore::IntRect&);
- virtual String userAgent(const WebCore::KURL&);
+ virtual String userAgent();
virtual void loadURL(uint64_t requestID, const String& method, const String& urlString, const String& target,
const WebCore::HTTPHeaderMap& headerFields, const Vector<uint8_t>& httpBody, bool allowPopups);
virtual void cancelStreamLoad(uint64_t streamID);
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list