Changeset 71081 in webkit


Ignore:
Timestamp:
Nov 1, 2010 5:12:48 PM (13 years ago)
Author:
andersca@apple.com
Message:

Make NPRemoteObjectMap a ref counted object
https://bugs.webkit.org/show_bug.cgi?id=48808

Reviewed by Oliver Hunt.

  • PluginProcess/PluginControllerProxy.cpp:

(WebKit::PluginControllerProxy::windowScriptNPObject):

  • PluginProcess/WebProcessConnection.cpp:

(WebKit::WebProcessConnection::WebProcessConnection):
(WebKit::WebProcessConnection::didReceiveSyncMessage):

  • PluginProcess/WebProcessConnection.h:

(WebKit::WebProcessConnection::npRemoteObjectMap):

  • Shared/Plugins/NPRemoteObjectMap.cpp:

(WebKit::NPRemoteObjectMap::create):
(WebKit::NPRemoteObjectMap::~NPRemoteObjectMap):
(WebKit::NPRemoteObjectMap::createNPObjectProxy):

  • Shared/Plugins/NPRemoteObjectMap.h:
  • WebProcess/Plugins/PluginProcessConnection.cpp:

(WebKit::PluginProcessConnection::PluginProcessConnection):
(WebKit::PluginProcessConnection::didReceiveSyncMessage):

  • WebProcess/Plugins/PluginProcessConnection.h:

(WebKit::PluginProcessConnection::npRemoteObjectMap):

  • WebProcess/Plugins/PluginProxy.cpp:

(WebKit::PluginProxy::getWindowScriptNPObject):

Location:
trunk/WebKit2
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebKit2/ChangeLog

    r71076 r71081  
     12010-11-01  Anders Carlsson  <andersca@apple.com>
     2
     3        Reviewed by Oliver Hunt.
     4
     5        Make NPRemoteObjectMap a ref counted object
     6        https://bugs.webkit.org/show_bug.cgi?id=48808
     7
     8        * PluginProcess/PluginControllerProxy.cpp:
     9        (WebKit::PluginControllerProxy::windowScriptNPObject):
     10        * PluginProcess/WebProcessConnection.cpp:
     11        (WebKit::WebProcessConnection::WebProcessConnection):
     12        (WebKit::WebProcessConnection::didReceiveSyncMessage):
     13        * PluginProcess/WebProcessConnection.h:
     14        (WebKit::WebProcessConnection::npRemoteObjectMap):
     15        * Shared/Plugins/NPRemoteObjectMap.cpp:
     16        (WebKit::NPRemoteObjectMap::create):
     17        (WebKit::NPRemoteObjectMap::~NPRemoteObjectMap):
     18        (WebKit::NPRemoteObjectMap::createNPObjectProxy):
     19        * Shared/Plugins/NPRemoteObjectMap.h:
     20        * WebProcess/Plugins/PluginProcessConnection.cpp:
     21        (WebKit::PluginProcessConnection::PluginProcessConnection):
     22        (WebKit::PluginProcessConnection::didReceiveSyncMessage):
     23        * WebProcess/Plugins/PluginProcessConnection.h:
     24        (WebKit::PluginProcessConnection::npRemoteObjectMap):
     25        * WebProcess/Plugins/PluginProxy.cpp:
     26        (WebKit::PluginProxy::getWindowScriptNPObject):
     27
    1282010-11-01  Anders Carlsson  <andersca@apple.com>
    229
  • trunk/WebKit2/PluginProcess/PluginControllerProxy.cpp

    r71054 r71081  
    3030#include "BackingStore.h"
    3131#include "DataReference.h"
    32 #include "NPObjectProxy.h"
     32#include "NPRemoteObjectMap.h"
    3333#include "NetscapePlugin.h"
    3434#include "NotImplemented.h"
     
    171171        return 0;
    172172
    173     return m_connection->npRemoteObjectMap().createNPObjectProxy(windowScriptNPObjectID);
     173    return m_connection->npRemoteObjectMap()->createNPObjectProxy(windowScriptNPObjectID);
    174174}
    175175
  • trunk/WebKit2/PluginProcess/WebProcessConnection.cpp

    r71075 r71081  
    2828#include "WebProcessConnection.h"
    2929
     30#include "NPRemoteObjectMap.h"
    3031#include "PluginControllerProxy.h"
    3132#include "PluginProcess.h"
     
    4546   
    4647WebProcessConnection::WebProcessConnection(CoreIPC::Connection::Identifier connectionIdentifier)
    47     : m_connection(CoreIPC::Connection::createServerConnection(connectionIdentifier, this, RunLoop::main()))
    48     , m_npRemoteObjectMap(m_connection.get())
    4948{
     49    m_connection = CoreIPC::Connection::createServerConnection(connectionIdentifier, this, RunLoop::main());
     50    m_npRemoteObjectMap = NPRemoteObjectMap::create(m_connection.get());
     51
    5052    m_connection->open();
    5153}
     
    106108
    107109    if (messageID.is<CoreIPC::MessageClassNPObjectMessageReceiver>())
    108         return m_npRemoteObjectMap.didReceiveSyncMessage(connection, messageID, arguments, reply);
     110        return m_npRemoteObjectMap->didReceiveSyncMessage(connection, messageID, arguments, reply);
    109111
    110112    if (PluginControllerProxy* pluginControllerProxy = m_pluginControllers.get(destinationID))
  • trunk/WebKit2/PluginProcess/WebProcessConnection.h

    r71051 r71081  
    3030
    3131#include "Connection.h"
    32 #include "NPRemoteObjectMap.h"
    3332#include "Plugin.h"
    3433#include <wtf/RefCounted.h>
     
    3635namespace WebKit {
    3736
     37class NPRemoteObjectMap;
    3838class PluginControllerProxy;
    3939   
     
    4747    CoreIPC::Connection* connection() const { return m_connection.get(); }
    4848
    49     NPRemoteObjectMap& npRemoteObjectMap() { return m_npRemoteObjectMap; }
     49    NPRemoteObjectMap* npRemoteObjectMap() const { return m_npRemoteObjectMap.get(); }
    5050
    5151private:
     
    7171
    7272    HashMap<uint64_t, PluginControllerProxy*> m_pluginControllers;
    73     NPRemoteObjectMap m_npRemoteObjectMap;
     73    RefPtr<NPRemoteObjectMap> m_npRemoteObjectMap;
    7474};
    7575
  • trunk/WebKit2/Shared/Plugins/NPRemoteObjectMap.cpp

    r71075 r71081  
    3939    return ++generateNPObjectID;
    4040}
    41    
     41
     42PassRefPtr<NPRemoteObjectMap> NPRemoteObjectMap::create(CoreIPC::Connection* connection)
     43{
     44    return adoptRef(new NPRemoteObjectMap(connection));
     45}
     46
    4247NPRemoteObjectMap::NPRemoteObjectMap(CoreIPC::Connection* connection)
    4348    : m_connection(connection)
     
    4550}
    4651
    47 NPObjectProxy* NPRemoteObjectMap::createNPObjectProxy(uint64_t remoteObjectID)
     52NPRemoteObjectMap::~NPRemoteObjectMap()
     53{
     54}
     55
     56NPObject* NPRemoteObjectMap::createNPObjectProxy(uint64_t remoteObjectID)
    4857{
    4958    return NPObjectProxy::create(this, remoteObjectID);
  • trunk/WebKit2/Shared/Plugins/NPRemoteObjectMap.h

    r71075 r71081  
    3232#include <WebCore/npruntime.h>
    3333#include <wtf/HashMap.h>
    34 #include <wtf/Noncopyable.h>
     34#include <wtf/RefCounted.h>
    3535
    3636namespace WebKit {
     
    3939class NPObjectProxy;
    4040
    41 class NPRemoteObjectMap {
    42     WTF_MAKE_NONCOPYABLE(NPRemoteObjectMap);
    43 
     41class NPRemoteObjectMap : public RefCounted<NPRemoteObjectMap> {
    4442public:
    45     explicit NPRemoteObjectMap(CoreIPC::Connection*);
     43    static PassRefPtr<NPRemoteObjectMap> create(CoreIPC::Connection*);
     44    ~NPRemoteObjectMap();
    4645
    4746    // Creates an NPObjectProxy wrapper for the remote object with the given remote object ID.
    48     NPObjectProxy* createNPObjectProxy(uint64_t remoteObjectID);
     47    NPObject* createNPObjectProxy(uint64_t remoteObjectID);
    4948
    5049    // Expose the given NPObject as a remote object. Returns the objectID.
     
    5655
    5756private:
     57    explicit NPRemoteObjectMap(CoreIPC::Connection*);
    5858    CoreIPC::Connection* m_connection;
    5959
  • trunk/WebKit2/WebProcess/Plugins/PluginProcessConnection.cpp

    r71075 r71081  
    2828#include "PluginProcessConnection.h"
    2929
     30#include "NPRemoteObjectMap.h"
    3031#include "PluginProcessConnectionManager.h"
    3132#include "PluginProxy.h"
     
    3738    : m_pluginProcessConnectionManager(pluginProcessConnectionManager)
    3839    , m_pluginPath(pluginPath)
    39     , m_connection(CoreIPC::Connection::createClientConnection(connectionIdentifier, this, WebProcess::shared().runLoop()))
    40     , m_npRemoteObjectMap(m_connection.get())
    4140{
     41    m_connection = CoreIPC::Connection::createClientConnection(connectionIdentifier, this, WebProcess::shared().runLoop());
     42    m_npRemoteObjectMap = NPRemoteObjectMap::create(m_connection.get());
     43
    4244    m_connection->open();
    4345}
     
    8486{
    8587    if (messageID.is<CoreIPC::MessageClassNPObjectMessageReceiver>())
    86         return m_npRemoteObjectMap.didReceiveSyncMessage(connection, messageID, arguments, reply);
     88        return m_npRemoteObjectMap->didReceiveSyncMessage(connection, messageID, arguments, reply);
    8789
    8890    if (PluginProxy* pluginProxy = m_plugins.get(arguments->destinationID()))
  • trunk/WebKit2/WebProcess/Plugins/PluginProcessConnection.h

    r71051 r71081  
    3030
    3131#include "Connection.h"
    32 #include "NPRemoteObjectMap.h"
    3332#include "Plugin.h"
    3433#include <wtf/RefCounted.h>
     
    3938namespace WebKit {
    4039
     40class NPRemoteObjectMap;
    4141class PluginProcessConnectionManager;
    4242class PluginProxy;
     
    5757    void removePluginProxy(PluginProxy*);
    5858
    59     NPRemoteObjectMap& npRemoteObjectMap() { return m_npRemoteObjectMap; }
     59    NPRemoteObjectMap* npRemoteObjectMap() const { return m_npRemoteObjectMap.get(); }
    6060
    6161private:
     
    7777    HashMap<uint64_t, PluginProxy*> m_plugins;
    7878
    79     NPRemoteObjectMap m_npRemoteObjectMap;
     79    RefPtr<NPRemoteObjectMap> m_npRemoteObjectMap;
    8080};
    8181
  • trunk/WebKit2/WebProcess/Plugins/PluginProxy.cpp

    r71051 r71081  
    3030#include "BackingStore.h"
    3131#include "DataReference.h"
     32#include "NPRemoteObjectMap.h"
    3233#include "NPRuntimeUtilities.h"
    3334#include "NotImplemented.h"
     
    355356    }
    356357
    357     windowScriptNPObjectID = m_connection->npRemoteObjectMap().registerNPObject(windowScriptNPObject);
     358    windowScriptNPObjectID = m_connection->npRemoteObjectMap()->registerNPObject(windowScriptNPObject);
    358359    releaseNPObject(windowScriptNPObject);
    359360}
Note: See TracChangeset for help on using the changeset viewer.