Changeset 159982 in webkit


Ignore:
Timestamp:
Dec 2, 2013 4:43:27 PM (10 years ago)
Author:
weinig@apple.com
Message:

WebPageGroups should keep track of what processes they are being used by
https://bugs.webkit.org/show_bug.cgi?id=124556

Reviewed by Anders Carlsson.

  • UIProcess/WebContextUserMessageCoders.h:

(WebKit::WebContextUserMessageEncoder::encode):
(WebKit::WebContextUserMessageDecoder::decode):

  • UIProcess/WebPageGroup.cpp:

(WebKit::WebPageGroup::addProcess):
(WebKit::WebPageGroup::disconnectProcess):

  • UIProcess/WebPageGroup.h:

(WebKit::WebPageGroup::sendToAllProcessesInGroup):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::initializeWebPage):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::disconnect):
(WebKit::WebProcessProxy::webPageGroup):
(WebKit::WebProcessProxy::addWebPageGroup):

  • UIProcess/WebProcessProxy.h:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::webPageGroup):

Location:
trunk/Source/WebKit2
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r159981 r159982  
     12013-12-02  Sam Weinig  <sam@webkit.org>
     2
     3        WebPageGroups should keep track of what processes they are being used by
     4        https://bugs.webkit.org/show_bug.cgi?id=124556
     5
     6        Reviewed by Anders Carlsson.
     7
     8        * UIProcess/WebContextUserMessageCoders.h:
     9        (WebKit::WebContextUserMessageEncoder::encode):
     10        (WebKit::WebContextUserMessageDecoder::decode):
     11        * UIProcess/WebPageGroup.cpp:
     12        (WebKit::WebPageGroup::addProcess):
     13        (WebKit::WebPageGroup::disconnectProcess):
     14        * UIProcess/WebPageGroup.h:
     15        (WebKit::WebPageGroup::sendToAllProcessesInGroup):
     16        * UIProcess/WebPageProxy.cpp:
     17        (WebKit::WebPageProxy::initializeWebPage):
     18        * UIProcess/WebProcessProxy.cpp:
     19        (WebKit::WebProcessProxy::disconnect):
     20        (WebKit::WebProcessProxy::webPageGroup):
     21        (WebKit::WebProcessProxy::addWebPageGroup):
     22        * UIProcess/WebProcessProxy.h:
     23        * WebProcess/WebProcess.cpp:
     24        (WebKit::WebProcess::webPageGroup):
     25
    1262013-12-02  Anders Carlsson  <andersca@apple.com>
    227
  • trunk/Source/WebKit2/UIProcess/WebContextUserMessageCoders.h

    r159908 r159982  
    7777        case API::Object::Type::PageGroup: {
    7878            WebPageGroup* pageGroup = static_cast<WebPageGroup*>(m_root);
     79            if (pageGroup->addProcess(m_process))
     80                m_process.addWebPageGroup(*pageGroup);
    7981            encoder << pageGroup->data();
    8082            break;
     
    146148            if (!decoder.decode(pageGroupID))
    147149                return false;
    148             coder.m_root = WebPageGroup::get(pageGroupID);
     150            coder.m_root = coder.m_process.webPageGroup(pageGroupID);
    149151            break;
    150152        }
  • trunk/Source/WebKit2/UIProcess/WebPageGroup.cpp

    r159896 r159982  
    195195}
    196196
     197bool WebPageGroup::addProcess(WebProcessProxy& process)
     198{
     199    return m_processes.add(&process).isNewEntry;
     200}
     201
     202void WebPageGroup::disconnectProcess(WebProcessProxy& process)
     203{
     204    m_processes.remove(&process);
     205}
     206
    197207} // namespace WebKit
  • trunk/Source/WebKit2/UIProcess/WebPageGroup.h

    r159903 r159982  
    6666    void removeAllUserContent();
    6767
     68    bool addProcess(WebProcessProxy&);
     69    void disconnectProcess(WebProcessProxy&);
     70
    6871private:
    6972    template<typename T> void sendToAllProcessesInGroup(const T&, uint64_t destinationID);
     
    7275    mutable RefPtr<WebPreferences> m_preferences;
    7376    HashSet<WebPageProxy*> m_pages;
     77    HashSet<WebProcessProxy*> m_processes;
    7478};
    7579
     
    7781void WebPageGroup::sendToAllProcessesInGroup(const T& message, uint64_t destinationID)
    7882{
    79     HashSet<WebProcessProxy*> processesSeen;
    80 
    81     for (WebPageProxy* webPageProxy : m_pages) {
    82         WebProcessProxy& webProcessProxy = webPageProxy->process();
    83         if (!processesSeen.add(&webProcessProxy).isNewEntry)
    84             continue;
    85 
    86         if (webProcessProxy.canSendMessage())
    87             webProcessProxy.send(T(message), destinationID);
     83    for (auto webProcessProxy : m_processes) {
     84        if (webProcessProxy->canSendMessage())
     85            webProcessProxy->send(T(message), destinationID);
    8886    }
    8987}
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r159965 r159982  
    515515
    516516#if ENABLE(INSPECTOR_SERVER)
    517     if (m_pageGroup->preferences()->developerExtrasEnabled())
     517    if (pageGroup().preferences()->developerExtrasEnabled())
    518518        inspector()->enableRemoteInspection();
    519519#endif
    520520
     521    if (pageGroup().addProcess(process()))
     522        process().addWebPageGroup(pageGroup());
     523
    521524    initializeCreationParameters();
    522     m_process->send(Messages::WebProcess::CreateWebPage(m_pageID, m_creationParameters), 0);
     525    process().send(Messages::WebProcess::CreateWebPage(m_pageID, m_creationParameters), 0);
    523526
    524527#if ENABLE(PAGE_VISIBILITY_API)
    525     m_process->send(Messages::WebPage::SetVisibilityState(m_visibilityState, /* isInitialState */ true), m_pageID);
     528    process().send(Messages::WebPage::SetVisibilityState(m_visibilityState, /* isInitialState */ true), m_pageID);
    526529#elif ENABLE(HIDDEN_PAGE_DOM_TIMER_THROTTLING)
    527     m_process->send(Messages::WebPage::SetVisibilityState(isViewVisible() ? PageVisibilityStateVisible : PageVisibilityStateHidden, /* isInitialState */ true), m_pageID);
     530    process().send(Messages::WebPage::SetVisibilityState(isViewVisible() ? PageVisibilityStateVisible : PageVisibilityStateHidden, /* isInitialState */ true), m_pageID);
    528531#endif
    529532
    530533#if PLATFORM(MAC)
    531     m_process->send(Messages::WebPage::SetSmartInsertDeleteEnabled(m_isSmartInsertDeleteEnabled), m_pageID);
     534    process().send(Messages::WebPage::SetSmartInsertDeleteEnabled(m_isSmartInsertDeleteEnabled), m_pageID);
    532535#endif
    533536}
  • trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp

    r159903 r159982  
    3838#include "WebNavigationDataStore.h"
    3939#include "WebNotificationManagerProxy.h"
     40#include "WebPageGroup.h"
    4041#include "WebPageProxy.h"
    4142#include "WebPluginSiteDataManager.h"
     
    145146    Vector<RefPtr<WebFrameProxy>> frames;
    146147    copyValuesToVector(m_frameMap, frames);
    147 
    148     for (size_t i = 0, size = frames.size(); i < size; ++i)
    149         frames[i]->disconnect();
     148    for (auto frame : frames)
     149        frame->disconnect();
    150150    m_frameMap.clear();
     151
     152    Vector<WebPageGroup*> pageGroups;
     153    copyValuesToVector(m_pageGroups, pageGroups);
     154    for (auto pageGroup : pageGroups)
     155        pageGroup->disconnectProcess(*this);
     156    m_pageGroups.clear();
    151157
    152158    if (m_downloadProxyMap)
     
    208214    copyValuesToVector(m_pageMap, result);
    209215    return result;
     216}
     217
     218WebPageGroup* WebProcessProxy::webPageGroup(uint64_t pageGroupID)
     219{
     220    if (!HashMap<uint64_t, WebPageGroup*>::isValidKey(pageGroupID))
     221        return nullptr;
     222
     223    return m_pageGroups.get(pageGroupID);
     224}
     225
     226void WebProcessProxy::addWebPageGroup(WebPageGroup& pageGroup)
     227{
     228    m_pageGroups.add(pageGroup.pageGroupID(), &pageGroup);
    210229}
    211230
  • trunk/Source/WebKit2/UIProcess/WebProcessProxy.h

    r159903 r159982  
    8383    Vector<WebPageProxy*> pages() const;
    8484
     85    WebPageGroup* webPageGroup(uint64_t pageGroupID);
     86    void addWebPageGroup(WebPageGroup&);
     87
    8588    WebBackForwardListItem* webBackForwardItem(uint64_t itemID) const;
    8689
     
    195198    WebFrameProxyMap m_frameMap;
    196199    WebBackForwardListItemMap m_backForwardListItemMap;
     200    HashMap<uint64_t, WebPageGroup*> m_pageGroups;
    197201
    198202    OwnPtr<DownloadProxyMap> m_downloadProxyMap;
  • trunk/Source/WebKit2/WebProcess/WebProcess.cpp

    r159765 r159982  
    722722WebPageGroupProxy* WebProcess::webPageGroup(const WebPageGroupData& pageGroupData)
    723723{
    724     HashMap<uint64_t, RefPtr<WebPageGroupProxy>>::AddResult result = m_pageGroupMap.add(pageGroupData.pageGroupID, nullptr);
     724    auto result = m_pageGroupMap.add(pageGroupData.pageGroupID, nullptr);
    725725    if (result.isNewEntry) {
    726726        ASSERT(!result.iterator->value);
Note: See TracChangeset for help on using the changeset viewer.