Changeset 142656 in webkit


Ignore:
Timestamp:
Feb 12, 2013 12:56:57 PM (11 years ago)
Author:
andersca@apple.com
Message:

Change the queue client base class to be private everywhere
https://bugs.webkit.org/show_bug.cgi?id=109604

Reviewed by Andreas Kling.

Move connection queue client registration inside of the respective queue client classes.

Also, it's too late to add queue clients in ChildProcessProxy::didFinishLaunching, so do this in
ChildProcessProxy::connectionWillOpen instead.

Finally, assert that queue clients are only being added and removed from the client thread.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeConnection):

  • Platform/CoreIPC/Connection.cpp:

(CoreIPC::Connection::addQueueClient):
(CoreIPC::Connection::removeQueueClient):

  • Shared/mac/SecItemShim.cpp:

(WebKit::SecItemShim::initializeConnection):
(WebKit):

  • Shared/mac/SecItemShim.h:

(SecItemShim):

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::connectionWillOpen):
(WebKit):
(WebKit::NetworkProcessProxy::connectionWillClose):
(WebKit::NetworkProcessProxy::didFinishLaunching):

  • UIProcess/Network/NetworkProcessProxy.h:

(NetworkProcessProxy):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::connectionWillOpen):
(WebKit::WebProcessProxy::didFinishLaunching):

  • UIProcess/mac/SecItemShimProxy.cpp:

(WebKit::SecItemShimProxy::initializeConnection):
(WebKit):

  • UIProcess/mac/SecItemShimProxy.h:

(SecItemShimProxy):

  • WebProcess/Plugins/PluginProcessConnectionManager.cpp:

(WebKit::PluginProcessConnectionManager::initializeConnection):
(WebKit):

  • WebProcess/Plugins/PluginProcessConnectionManager.h:

(PluginProcessConnectionManager):

  • WebProcess/WebPage/EventDispatcher.cpp:

(WebKit::EventDispatcher::initializeConnection):
(WebKit):

  • WebProcess/WebPage/EventDispatcher.h:

(EventDispatcher):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeConnection):

Location:
trunk/Source/WebKit2
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r142651 r142656  
     12013-02-12  Anders Carlsson  <andersca@apple.com>
     2
     3        Change the queue client base class to be private everywhere
     4        https://bugs.webkit.org/show_bug.cgi?id=109604
     5
     6        Reviewed by Andreas Kling.
     7
     8        Move connection queue client registration inside of the respective queue client classes.
     9
     10        Also, it's too late to add queue clients in ChildProcessProxy::didFinishLaunching, so do this in
     11        ChildProcessProxy::connectionWillOpen instead.
     12       
     13        Finally, assert that queue clients are only being added and removed from the client thread.
     14
     15        * NetworkProcess/NetworkProcess.cpp:
     16        (WebKit::NetworkProcess::initializeConnection):
     17        * Platform/CoreIPC/Connection.cpp:
     18        (CoreIPC::Connection::addQueueClient):
     19        (CoreIPC::Connection::removeQueueClient):
     20        * Shared/mac/SecItemShim.cpp:
     21        (WebKit::SecItemShim::initializeConnection):
     22        (WebKit):
     23        * Shared/mac/SecItemShim.h:
     24        (SecItemShim):
     25        * UIProcess/Network/NetworkProcessProxy.cpp:
     26        (WebKit::NetworkProcessProxy::connectionWillOpen):
     27        (WebKit):
     28        (WebKit::NetworkProcessProxy::connectionWillClose):
     29        (WebKit::NetworkProcessProxy::didFinishLaunching):
     30        * UIProcess/Network/NetworkProcessProxy.h:
     31        (NetworkProcessProxy):
     32        * UIProcess/WebProcessProxy.cpp:
     33        (WebKit::WebProcessProxy::connectionWillOpen):
     34        (WebKit::WebProcessProxy::didFinishLaunching):
     35        * UIProcess/mac/SecItemShimProxy.cpp:
     36        (WebKit::SecItemShimProxy::initializeConnection):
     37        (WebKit):
     38        * UIProcess/mac/SecItemShimProxy.h:
     39        (SecItemShimProxy):
     40        * WebProcess/Plugins/PluginProcessConnectionManager.cpp:
     41        (WebKit::PluginProcessConnectionManager::initializeConnection):
     42        (WebKit):
     43        * WebProcess/Plugins/PluginProcessConnectionManager.h:
     44        (PluginProcessConnectionManager):
     45        * WebProcess/WebPage/EventDispatcher.cpp:
     46        (WebKit::EventDispatcher::initializeConnection):
     47        (WebKit):
     48        * WebProcess/WebPage/EventDispatcher.h:
     49        (EventDispatcher):
     50        * WebProcess/WebProcess.cpp:
     51        (WebKit::WebProcess::initializeConnection):
     52
    1532013-02-12  Brady Eidson  <beidson@apple.com>
    254
  • trunk/Source/WebKit2/NetworkProcess/NetworkProcess.cpp

    r142651 r142656  
    166166
    167167#if USE(SECURITY_FRAMEWORK)
    168     connection->addQueueClient(&SecItemShim::shared());
     168    SecItemShim::shared().initializeConnection(connection);
    169169#endif
    170170}
  • trunk/Source/WebKit2/Platform/CoreIPC/Connection.cpp

    r141814 r142656  
    257257void Connection::addQueueClient(QueueClient* queueClient)
    258258{
     259    ASSERT(RunLoop::current() == m_clientRunLoop);
     260    ASSERT(!m_isConnected);
     261
    259262    m_connectionQueue->dispatch(WTF::bind(&Connection::addQueueClientOnWorkQueue, this, queueClient));
    260263}
     
    262265void Connection::removeQueueClient(QueueClient* queueClient)
    263266{
     267    ASSERT(RunLoop::current() == m_clientRunLoop);
     268
    264269    m_connectionQueue->dispatch(WTF::bind(&Connection::removeQueueClientOnWorkQueue, this, queueClient));
    265270}
  • trunk/Source/WebKit2/Shared/mac/SecItemShim.cpp

    r141820 r142656  
    133133}
    134134
     135void SecItemShim::initializeConnection(CoreIPC::Connection* connection)
     136{
     137    connection->addQueueClient(this);
     138}
     139
    135140void SecItemShim::didReceiveMessageOnConnectionWorkQueue(CoreIPC::Connection* connection, OwnPtr<CoreIPC::MessageDecoder>& decoder)
    136141{
  • trunk/Source/WebKit2/Shared/mac/SecItemShim.h

    r141820 r142656  
    3636class SecItemResponseData;
    3737
    38 class SecItemShim : public CoreIPC::Connection::QueueClient {
     38class SecItemShim : private CoreIPC::Connection::QueueClient {
    3939WTF_MAKE_NONCOPYABLE(SecItemShim);
    4040public:
     
    4242
    4343    void initialize(ChildProcess*);
     44    void initializeConnection(CoreIPC::Connection*);
    4445
    4546private:
  • trunk/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp

    r142064 r142656  
    7373}
    7474
     75void NetworkProcessProxy::connectionWillOpen(CoreIPC::Connection* connection)
     76{
     77#if USE(SECURITY_FRAMEWORK)
     78    SecItemShimProxy::shared().initializeConnection(connection);
     79#endif
     80}
     81
     82void NetworkProcessProxy::connectionWillClose(CoreIPC::Connection*)
     83{
     84}
     85
    7586void NetworkProcessProxy::getNetworkProcessConnection(PassRefPtr<Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply> reply)
    7687{
     
    169180    ChildProcessProxy::didFinishLaunching(launcher, connectionIdentifier);
    170181
    171 #if USE(SECURITY_FRAMEWORK)
    172     connection()->addQueueClient(&SecItemShimProxy::shared());
    173 #endif
    174 
    175182    if (CoreIPC::Connection::identifierIsNull(connectionIdentifier)) {
    176183        // FIXME: Do better cleanup here.
  • trunk/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h

    r142630 r142656  
    6565    NetworkProcessProxy(WebContext*);
    6666
     67    // ChildProcessProxy
    6768    virtual void getLaunchOptions(ProcessLauncher::LaunchOptions&) OVERRIDE;
     69    virtual void connectionWillOpen(CoreIPC::Connection*) OVERRIDE;
     70    virtual void connectionWillClose(CoreIPC::Connection*) OVERRIDE;
     71
    6872    void platformGetLaunchOptions(ProcessLauncher::LaunchOptions&);
    69 
    7073    void networkProcessCrashedOrFailedToLaunch();
    7174
  • trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp

    r142409 r142656  
    124124    ASSERT(this->connection() == connection);
    125125
     126#if USE(SECURITY_FRAMEWORK)
     127    SecItemShimProxy::shared().initializeConnection(connection);
     128#endif
     129
    126130    m_context->processWillOpenConnection(this);
    127131}
     
    444448    ChildProcessProxy::didFinishLaunching(launcher, connectionIdentifier);
    445449
    446 #if USE(SECURITY_FRAMEWORK)
    447     connection()->addQueueClient(&SecItemShimProxy::shared());
    448 #endif
    449 
    450450    m_webConnection = WebConnectionToWebProcess::create(this);
    451451
  • trunk/Source/WebKit2/UIProcess/mac/SecItemShimProxy.cpp

    r141820 r142656  
    4545SecItemShimProxy::SecItemShimProxy()
    4646{
     47}
     48
     49void SecItemShimProxy::initializeConnection(CoreIPC::Connection* connection)
     50{
     51    connection->addQueueClient(this);
    4752}
    4853
  • trunk/Source/WebKit2/UIProcess/mac/SecItemShimProxy.h

    r141820 r142656  
    3535class SecItemRequestData;
    3636
    37 class SecItemShimProxy : public CoreIPC::Connection::QueueClient {
     37class SecItemShimProxy : private CoreIPC::Connection::QueueClient {
    3838WTF_MAKE_NONCOPYABLE(SecItemShimProxy);
    3939public:
    4040    static SecItemShimProxy& shared();
     41
     42    void initializeConnection(CoreIPC::Connection*);
    4143
    4244private:
  • trunk/Source/WebKit2/WebProcess/Plugins/PluginProcessConnectionManager.cpp

    r142644 r142656  
    4949PluginProcessConnectionManager::~PluginProcessConnectionManager()
    5050{
     51}
     52
     53void PluginProcessConnectionManager::initializeConnection(CoreIPC::Connection* connection)
     54{
     55    connection->addQueueClient(this);
    5156}
    5257
  • trunk/Source/WebKit2/WebProcess/Plugins/PluginProcessConnectionManager.h

    r142540 r142656  
    3939// Manages plug-in process connections for the given web process.
    4040
    41 namespace CoreIPC {
    42     class Connection;
    43 }
    44 
    4541namespace WebKit {
    4642
    4743class PluginProcessConnection;
    4844       
    49 class PluginProcessConnectionManager : public CoreIPC::Connection::QueueClient {
     45class PluginProcessConnectionManager : private CoreIPC::Connection::QueueClient {
    5046    WTF_MAKE_NONCOPYABLE(PluginProcessConnectionManager);
    5147public:
    5248    PluginProcessConnectionManager();
    5349    ~PluginProcessConnectionManager();
     50
     51    void initializeConnection(CoreIPC::Connection*);
    5452
    5553    PluginProcessConnection* getPluginProcessConnection(const String& pluginPath, PluginProcess::Type);
  • trunk/Source/WebKit2/WebProcess/WebPage/EventDispatcher.cpp

    r141820 r142656  
    7373}
    7474#endif
     75
     76void EventDispatcher::initializeConnection(CoreIPC::Connection* connection)
     77{
     78    connection->addQueueClient(this);
     79}
    7580
    7681void EventDispatcher::didReceiveMessageOnConnectionWorkQueue(CoreIPC::Connection* connection, OwnPtr<CoreIPC::MessageDecoder>& decoder)
  • trunk/Source/WebKit2/WebProcess/WebPage/EventDispatcher.h

    r141820 r142656  
    4747#endif
    4848
    49 class EventDispatcher : public CoreIPC::Connection::QueueClient {
     49class EventDispatcher : private CoreIPC::Connection::QueueClient {
    5050    WTF_MAKE_NONCOPYABLE(EventDispatcher);
    5151
     
    5858    void removeScrollingTreeForPage(WebPage*);
    5959#endif
     60
     61    void initializeConnection(CoreIPC::Connection*);
    6062
    6163private:
  • trunk/Source/WebKit2/WebProcess/WebProcess.cpp

    r142651 r142656  
    206206
    207207    connection->setShouldExitOnSyncMessageSendFailure(true);
    208     connection->addQueueClient(&m_eventDispatcher);
     208
     209    m_eventDispatcher.initializeConnection(connection);
    209210
    210211#if ENABLE(PLUGIN_PROCESS)
    211     connection->addQueueClient(&m_pluginProcessConnectionManager);
     212    m_pluginProcessConnectionManager.initializeConnection(connection);
    212213#endif
    213214
    214215#if USE(SECURITY_FRAMEWORK)
    215     connection->addQueueClient(&SecItemShim::shared());
     216    SecItemShim::shared().initializeConnection(connection);
    216217#endif
    217218
Note: See TracChangeset for help on using the changeset viewer.