Changeset 160727 in webkit


Ignore:
Timestamp:
Dec 17, 2013 1:30:06 PM (10 years ago)
Author:
andersca@apple.com
Message:

Back out r159982
https://bugs.webkit.org/show_bug.cgi?id=125870
<rdar://problem/15598485>

Reviewed by Dan Bernstein.

Looks like r159982 caused intermittent crashes. Back it out for now.

  • UIProcess/WebContextUserMessageCoders.h:

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

  • UIProcess/WebPageGroup.cpp:
  • UIProcess/WebPageGroup.h:

(WebKit::WebPageGroup::sendToAllProcessesInGroup):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::initializeWebPage):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::disconnect):

  • UIProcess/WebProcessProxy.h:
Location:
trunk/Source/WebKit2
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r160718 r160727  
     12013-12-17  Anders Carlsson  <andersca@apple.com>
     2
     3        Back out r159982
     4        https://bugs.webkit.org/show_bug.cgi?id=125870
     5        <rdar://problem/15598485>
     6
     7        Reviewed by Dan Bernstein.
     8
     9        Looks like r159982 caused intermittent crashes. Back it out for now.
     10
     11        * UIProcess/WebContextUserMessageCoders.h:
     12        (WebKit::WebContextUserMessageEncoder::encode):
     13        (WebKit::WebContextUserMessageDecoder::decode):
     14        * UIProcess/WebPageGroup.cpp:
     15        * UIProcess/WebPageGroup.h:
     16        (WebKit::WebPageGroup::sendToAllProcessesInGroup):
     17        * UIProcess/WebPageProxy.cpp:
     18        (WebKit::WebPageProxy::initializeWebPage):
     19        * UIProcess/WebProcessProxy.cpp:
     20        (WebKit::WebProcessProxy::disconnect):
     21        * UIProcess/WebProcessProxy.h:
     22
    1232013-12-17  Dan Bernstein  <mitz@apple.com>
    224
  • trunk/Source/WebKit2/UIProcess/WebContextUserMessageCoders.h

    r159982 r160727  
    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);
    8179            encoder << pageGroup->data();
    8280            break;
     
    148146            if (!decoder.decode(pageGroupID))
    149147                return false;
    150             coder.m_root = coder.m_process.webPageGroup(pageGroupID);
     148            coder.m_root = WebPageGroup::get(pageGroupID);
    151149            break;
    152150        }
  • trunk/Source/WebKit2/UIProcess/WebPageGroup.cpp

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

    r160384 r160727  
    6666    void removeAllUserContent();
    6767
    68     bool addProcess(WebProcessProxy&);
    69     void disconnectProcess(WebProcessProxy&);
    70 
    7168private:
    7269    template<typename T> void sendToAllProcessesInGroup(const T&, uint64_t destinationID);
     
    7572    mutable RefPtr<WebPreferences> m_preferences;
    7673    HashSet<WebPageProxy*> m_pages;
    77     HashSet<WebProcessProxy*> m_processes;
    7874};
    7975
     
    8177void WebPageGroup::sendToAllProcessesInGroup(const T& message, uint64_t destinationID)
    8278{
    83     for (auto webProcessProxy : m_processes) {
    84         if (webProcessProxy->canSendMessage())
    85             webProcessProxy->send(T(message), destinationID);
     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);
    8688    }
    8789}
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r160696 r160727  
    518518#endif
    519519
    520     if (pageGroup().addProcess(process()))
    521         process().addWebPageGroup(pageGroup());
    522 
    523520    initializeCreationParameters();
    524521    process().send(Messages::WebProcess::CreateWebPage(m_pageID, m_creationParameters), 0);
  • trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp

    r160378 r160727  
    4040#include "WebNavigationDataStore.h"
    4141#include "WebNotificationManagerProxy.h"
    42 #include "WebPageGroup.h"
    4342#include "WebPageProxy.h"
    4443#include "WebPluginSiteDataManager.h"
     
    148147    Vector<RefPtr<WebFrameProxy>> frames;
    149148    copyValuesToVector(m_frameMap, frames);
    150     for (auto frame : frames)
    151         frame->disconnect();
     149
     150    for (size_t i = 0, size = frames.size(); i < size; ++i)
     151        frames[i]->disconnect();
    152152    m_frameMap.clear();
    153 
    154     Vector<WebPageGroup*> pageGroups;
    155     copyValuesToVector(m_pageGroups, pageGroups);
    156     for (auto pageGroup : pageGroups)
    157         pageGroup->disconnectProcess(*this);
    158     m_pageGroups.clear();
    159153
    160154    if (m_downloadProxyMap)
     
    216210    copyValuesToVector(m_pageMap, result);
    217211    return result;
    218 }
    219 
    220 WebPageGroup* WebProcessProxy::webPageGroup(uint64_t pageGroupID)
    221 {
    222     if (!HashMap<uint64_t, WebPageGroup*>::isValidKey(pageGroupID))
    223         return nullptr;
    224 
    225     return m_pageGroups.get(pageGroupID);
    226 }
    227 
    228 void WebProcessProxy::addWebPageGroup(WebPageGroup& pageGroup)
    229 {
    230     m_pageGroups.add(pageGroup.pageGroupID(), &pageGroup);
    231212}
    232213
  • trunk/Source/WebKit2/UIProcess/WebProcessProxy.h

    r160378 r160727  
    8383    Vector<WebPageProxy*> pages() const;
    8484
    85     WebPageGroup* webPageGroup(uint64_t pageGroupID);
    86     void addWebPageGroup(WebPageGroup&);
    87 
    8885    WebBackForwardListItem* webBackForwardItem(uint64_t itemID) const;
    8986
     
    200197    WebFrameProxyMap m_frameMap;
    201198    WebBackForwardListItemMap m_backForwardListItemMap;
    202     HashMap<uint64_t, WebPageGroup*> m_pageGroups;
    203199
    204200    OwnPtr<DownloadProxyMap> m_downloadProxyMap;
Note: See TracChangeset for help on using the changeset viewer.