[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