Changeset 243154 in webkit


Ignore:
Timestamp:
Mar 19, 2019 11:38:59 AM (5 years ago)
Author:
Chris Dumez
Message:

Unreviewed, rolling out r243142.

Caused assertion hits in WK2 Debug

Reverted changeset:

"Spew: Unhandled web process message
'VisitedLinkTableController:VisitedLinkStateChanged'"
https://bugs.webkit.org/show_bug.cgi?id=194787
https://trac.webkit.org/changeset/243142

Location:
trunk/Source/WebKit
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r243153 r243154  
     12019-03-19  Chris Dumez  <cdumez@apple.com>
     2
     3        Unreviewed, rolling out r243142.
     4
     5        Caused assertion hits in WK2 Debug
     6
     7        Reverted changeset:
     8
     9        "Spew: Unhandled web process message
     10        'VisitedLinkTableController:VisitedLinkStateChanged'"
     11        https://bugs.webkit.org/show_bug.cgi?id=194787
     12        https://trac.webkit.org/changeset/243142
     13
    1142019-03-19  Daniel Bates  <dabates@apple.com>
    215
  • trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.cpp

    r243142 r243154  
    100100    m_process->removeMessageReceiver(Messages::WebPageProxy::messageReceiverName(), m_page.pageID());
    101101    m_process->send(Messages::WebPage::Close(), m_page.pageID());
    102     m_process->removeVisitedLinkStoreUser(m_page.visitedLinkStore(), m_page.pageID());
    103102
    104103    RunLoop::main().dispatch([process = m_process.copyRef()] {
     
    138137}
    139138
     139void ProvisionalPageProxy::processDidFinishLaunching()
     140{
     141    RELEASE_LOG_IF_ALLOWED(ProcessSwapping, "processDidFinishLaunching: pageID = %" PRIu64, m_page.pageID());
     142    finishInitializingWebPageAfterProcessLaunch();
     143}
     144
     145void ProvisionalPageProxy::finishInitializingWebPageAfterProcessLaunch()
     146{
     147    ASSERT(m_process->state() == WebProcessProxy::State::Running);
     148
     149    // FIXME: The WebPageProxy delays adding the visited link store until after the process has launched
     150    // so the ProvisionalPageProxy does the same. However, do we really need to?
     151    m_process->addVisitedLinkStore(m_page.visitedLinkStore());
     152}
     153
    140154void ProvisionalPageProxy::initializeWebPage()
    141155{
     
    145159    parameters.isProcessSwap = true;
    146160    m_process->send(Messages::WebProcess::CreateWebPage(m_page.pageID(), parameters), 0);
    147     m_process->addVisitedLinkStoreUser(m_page.visitedLinkStore(), m_page.pageID());
     161
     162    if (m_process->state() == WebProcessProxy::State::Running)
     163        finishInitializingWebPageAfterProcessLaunch();
    148164}
    149165
  • trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.h

    r243142 r243154  
    8080    void cancel();
    8181
     82    void processDidFinishLaunching();
    8283    void processDidTerminate();
    8384    void connectionWillOpen(IPC::Connection&);
     
    115116
    116117    void initializeWebPage();
     118    void finishInitializingWebPageAfterProcessLaunch();
    117119
    118120    WebPageProxy& m_page;
  • trunk/Source/WebKit/UIProcess/VisitedLinkStore.cpp

    r243142 r243154  
    4343VisitedLinkStore::~VisitedLinkStore()
    4444{
    45     RELEASE_ASSERT(m_processes.isEmpty());
     45    for (WebProcessProxy* process : m_processes) {
     46        process->removeMessageReceiver(Messages::VisitedLinkStore::messageReceiverName(), identifier());
     47        process->didDestroyVisitedLinkStore(*this);
     48    }
    4649}
    4750
     
    5457{
    5558    ASSERT(process.state() == WebProcessProxy::State::Running);
    56     ASSERT(!m_processes.contains(&process));
    5759
    5860    if (!m_processes.add(&process).isNewEntry)
  • trunk/Source/WebKit/UIProcess/WebPageProxy.cpp

    r243142 r243154  
    820820        if (isProcessSwap != IsProcessSwap::Yes)
    821821            m_webProcessLifetimeTracker.webPageEnteringWebProcess(m_process);
     822        processDidFinishLaunching();
    822823    }
    823824
     
    958959    process().send(Messages::WebProcess::CreateWebPage(m_pageID, creationParameters(m_process, *m_drawingArea)), 0);
    959960
    960     m_process->addVisitedLinkStoreUser(visitedLinkStore(), m_pageID);
     961    m_needsToFinishInitializingWebPageAfterProcessLaunch = true;
     962    finishInitializingWebPageAfterProcessLaunch();
     963}
     964
     965void WebPageProxy::finishInitializingWebPageAfterProcessLaunch()
     966{
     967    if (!m_needsToFinishInitializingWebPageAfterProcessLaunch)
     968        return;
     969    if (m_process->state() != WebProcessProxy::State::Running)
     970        return;
     971
     972    m_needsToFinishInitializingWebPageAfterProcessLaunch = false;
     973    m_process->addVisitedLinkStore(m_visitedLinkStore);
    961974}
    962975
     
    51015114}
    51025115
     5116void WebPageProxy::processDidFinishLaunching()
     5117{
     5118    ASSERT(m_process->state() == WebProcessProxy::State::Running);
     5119    finishInitializingWebPageAfterProcessLaunch();
     5120}
     5121
    51035122#if ENABLE(NETSCAPE_PLUGIN_API)
    51045123void WebPageProxy::unavailablePluginButtonClicked(uint32_t opaquePluginUnavailabilityReason, const String& mimeType, const String& pluginURLString, const String& pluginspageAttributeURLString, const String& frameURLString, const String& pageURLString)
     
    69056924    m_hasRunningProcess = false;
    69066925    m_isPageSuspended = false;
     6926
     6927    m_needsToFinishInitializingWebPageAfterProcessLaunch = false;
    69076928
    69086929    m_editorState = EditorState();
  • trunk/Source/WebKit/UIProcess/WebPageProxy.h

    r243142 r243154  
    12341234    void webProcessWillShutDown();
    12351235
     1236    void processDidFinishLaunching();
     1237
    12361238    void didSaveToPageCache();
    12371239       
     
    19731975    void didResignInputElementStrongPasswordAppearance(const UserData&);
    19741976
     1977    void finishInitializingWebPageAfterProcessLaunch();
     1978
    19751979    void handleMessage(IPC::Connection&, const String& messageName, const UserData& messageBody);
    19761980    void handleSynchronousMessage(IPC::Connection&, const String& messageName, const UserData& messageBody, UserData& returnUserData);
     
    22222226    bool m_canRunModal { false };
    22232227
     2228    bool m_needsToFinishInitializingWebPageAfterProcessLaunch { false };
     2229
    22242230    bool m_isInPrintingMode { false };
    22252231    bool m_isPerformingDOMPrintOperation { false };
  • trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp

    r243142 r243154  
    299299    m_frameMap.clear();
    300300
    301     for (auto* visitedLinkStore : m_visitedLinkStoresWithUsers.keys())
     301    for (auto* visitedLinkStore : m_visitedLinkStores)
    302302        visitedLinkStore->removeProcess(*this);
    303     m_visitedLinkStoresWithUsers.clear();
     303    m_visitedLinkStores.clear();
    304304
    305305    for (auto* webUserContentControllerProxy : m_webUserContentControllerProxies)
     
    393393        m_processPool->pageEndUsingWebsiteDataStore(webPage.pageID(), webPage.websiteDataStore());
    394394
    395     removeVisitedLinkStoreUser(webPage.visitedLinkStore(), webPage.pageID());
    396 
    397395    updateBackgroundResponsivenessTimer();
    398396
     
    400398}
    401399
    402 void WebProcessProxy::addVisitedLinkStoreUser(VisitedLinkStore& visitedLinkStore, uint64_t pageID)
    403 {
    404     auto users = m_visitedLinkStoresWithUsers.ensure(&visitedLinkStore, [] {
    405         return HashSet<uint64_t> { };
    406     }).iterator->value;
    407 
    408     ASSERT(!users.contains(pageID));
    409     users.add(pageID);
    410 
    411     if (users.size() == 1 && state() == State::Running)
    412         visitedLinkStore.addProcess(*this);
    413 }
    414 
    415 void WebProcessProxy::removeVisitedLinkStoreUser(VisitedLinkStore& visitedLinkStore, uint64_t pageID)
    416 {
    417     auto it = m_visitedLinkStoresWithUsers.find(&visitedLinkStore);
    418     if (it == m_visitedLinkStoresWithUsers.end())
    419         return;
    420 
    421     auto& users = it->value;
    422     users.remove(pageID);
    423     if (users.isEmpty()) {
    424         m_visitedLinkStoresWithUsers.remove(it);
    425         visitedLinkStore.removeProcess(*this);
    426     }
     400void WebProcessProxy::addVisitedLinkStore(VisitedLinkStore& store)
     401{
     402    m_visitedLinkStores.add(&store);
     403    store.addProcess(*this);
    427404}
    428405
     
    431408    m_webUserContentControllerProxies.add(&proxy);
    432409    proxy.addProcess(*this, parameters);
     410}
     411
     412void WebProcessProxy::didDestroyVisitedLinkStore(VisitedLinkStore& store)
     413{
     414    ASSERT(m_visitedLinkStores.contains(&store));
     415    m_visitedLinkStores.remove(&store);
    433416}
    434417
     
    757740    }
    758741
     742    for (WebPageProxy* page : m_pageMap.values()) {
     743        ASSERT(this == &page->process());
     744        page->processDidFinishLaunching();
     745    }
     746
     747    for (auto* provisionalPage : m_provisionalPages) {
     748        ASSERT(this == &provisionalPage->process());
     749        provisionalPage->processDidFinishLaunching();
     750    }
     751
     752
    759753    RELEASE_ASSERT(!m_webConnection);
    760754    m_webConnection = WebConnectionToWebProcess::create(this);
    761755
    762756    m_processPool->processDidFinishLaunching(this);
    763 
    764     for (auto* visitedLinkStore : m_visitedLinkStoresWithUsers.keys())
    765         visitedLinkStore->addProcess(*this);
    766757
    767758#if PLATFORM(IOS_FAMILY)
  • trunk/Source/WebKit/UIProcess/WebProcessProxy.h

    r243142 r243154  
    147147    virtual bool isServiceWorkerProcess() const { return false; }
    148148
    149     void didCreateWebPageInProcess(uint64_t pageID);
    150 
    151     void addVisitedLinkStoreUser(VisitedLinkStore&, uint64_t pageID);
    152     void removeVisitedLinkStoreUser(VisitedLinkStore&, uint64_t pageID);
    153 
     149    void addVisitedLinkStore(VisitedLinkStore&);
    154150    void addWebUserContentControllerProxy(WebUserContentControllerProxy&, WebPageCreationParameters&);
     151    void didDestroyVisitedLinkStore(VisitedLinkStore&);
    155152    void didDestroyWebUserContentControllerProxy(WebUserContentControllerProxy&);
    156153
     
    432429    UserInitiatedActionMap m_userInitiatedActionMap;
    433430
    434     HashMap<VisitedLinkStore*, HashSet<uint64_t/* pageID */>> m_visitedLinkStoresWithUsers;
     431    HashSet<VisitedLinkStore*> m_visitedLinkStores;
    435432    HashSet<WebUserContentControllerProxy*> m_webUserContentControllerProxies;
    436433
Note: See TracChangeset for help on using the changeset viewer.