<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[243154] trunk/Source/WebKit</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/243154">243154</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2019-03-19 11:38:59 -0700 (Tue, 19 Mar 2019)</dd>
</dl>

<h3>Log Message</h3>
<pre>Unreviewed, rolling out <a href="http://trac.webkit.org/projects/webkit/changeset/243142">r243142</a>.

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</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebKitChangeLog">trunk/Source/WebKit/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitUIProcessProvisionalPageProxycpp">trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessProvisionalPageProxyh">trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessVisitedLinkStorecpp">trunk/Source/WebKit/UIProcess/VisitedLinkStore.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessWebPageProxycpp">trunk/Source/WebKit/UIProcess/WebPageProxy.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessWebPageProxyh">trunk/Source/WebKit/UIProcess/WebPageProxy.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessWebProcessProxycpp">trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessWebProcessProxyh">trunk/Source/WebKit/UIProcess/WebProcessProxy.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebKitChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/ChangeLog (243153 => 243154)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/ChangeLog    2019-03-19 18:25:21 UTC (rev 243153)
+++ trunk/Source/WebKit/ChangeLog       2019-03-19 18:38:59 UTC (rev 243154)
</span><span class="lines">@@ -1,3 +1,16 @@
</span><ins>+2019-03-19  Chris Dumez  <cdumez@apple.com>
+
+        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
+
</ins><span class="cx"> 2019-03-19  Daniel Bates  <dabates@apple.com>
</span><span class="cx"> 
</span><span class="cx">         [iOS] Focus not preserved when switching between tabs
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessProvisionalPageProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.cpp (243153 => 243154)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.cpp   2019-03-19 18:25:21 UTC (rev 243153)
+++ trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.cpp      2019-03-19 18:38:59 UTC (rev 243154)
</span><span class="lines">@@ -99,7 +99,6 @@
</span><span class="cx"> 
</span><span class="cx">     m_process->removeMessageReceiver(Messages::WebPageProxy::messageReceiverName(), m_page.pageID());
</span><span class="cx">     m_process->send(Messages::WebPage::Close(), m_page.pageID());
</span><del>-    m_process->removeVisitedLinkStoreUser(m_page.visitedLinkStore(), m_page.pageID());
</del><span class="cx"> 
</span><span class="cx">     RunLoop::main().dispatch([process = m_process.copyRef()] {
</span><span class="cx">         process->maybeShutDown();
</span><span class="lines">@@ -137,6 +136,21 @@
</span><span class="cx">     didFailProvisionalLoadForFrame(m_mainFrame->frameID(), { }, m_navigationID, m_provisionalLoadURL, error, UserData { }); // Will delete |this|.
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void ProvisionalPageProxy::processDidFinishLaunching()
+{
+    RELEASE_LOG_IF_ALLOWED(ProcessSwapping, "processDidFinishLaunching: pageID = %" PRIu64, m_page.pageID());
+    finishInitializingWebPageAfterProcessLaunch();
+}
+
+void ProvisionalPageProxy::finishInitializingWebPageAfterProcessLaunch()
+{
+    ASSERT(m_process->state() == WebProcessProxy::State::Running);
+
+    // FIXME: The WebPageProxy delays adding the visited link store until after the process has launched
+    // so the ProvisionalPageProxy does the same. However, do we really need to?
+    m_process->addVisitedLinkStore(m_page.visitedLinkStore());
+}
+
</ins><span class="cx"> void ProvisionalPageProxy::initializeWebPage()
</span><span class="cx"> {
</span><span class="cx">     m_drawingArea = m_page.pageClient().createDrawingAreaProxy(m_process);
</span><span class="lines">@@ -144,7 +158,9 @@
</span><span class="cx">     auto parameters = m_page.creationParameters(m_process, *m_drawingArea);
</span><span class="cx">     parameters.isProcessSwap = true;
</span><span class="cx">     m_process->send(Messages::WebProcess::CreateWebPage(m_page.pageID(), parameters), 0);
</span><del>-    m_process->addVisitedLinkStoreUser(m_page.visitedLinkStore(), m_page.pageID());
</del><ins>+
+    if (m_process->state() == WebProcessProxy::State::Running)
+        finishInitializingWebPageAfterProcessLaunch();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ProvisionalPageProxy::loadData(API::Navigation& navigation, const IPC::DataReference& data, const String& MIMEType, const String& encoding, const String& baseURL, API::Object* userData, Optional<WebsitePoliciesData>&& websitePolicies)
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessProvisionalPageProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.h (243153 => 243154)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.h     2019-03-19 18:25:21 UTC (rev 243153)
+++ trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.h        2019-03-19 18:38:59 UTC (rev 243154)
</span><span class="lines">@@ -79,6 +79,7 @@
</span><span class="cx">     void goToBackForwardItem(API::Navigation&, WebBackForwardListItem&, Optional<WebsitePoliciesData>&&);
</span><span class="cx">     void cancel();
</span><span class="cx"> 
</span><ins>+    void processDidFinishLaunching();
</ins><span class="cx">     void processDidTerminate();
</span><span class="cx">     void connectionWillOpen(IPC::Connection&);
</span><span class="cx"> 
</span><span class="lines">@@ -114,6 +115,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     void initializeWebPage();
</span><ins>+    void finishInitializingWebPageAfterProcessLaunch();
</ins><span class="cx"> 
</span><span class="cx">     WebPageProxy& m_page;
</span><span class="cx">     Ref<WebProcessProxy> m_process;
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessVisitedLinkStorecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/VisitedLinkStore.cpp (243153 => 243154)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/VisitedLinkStore.cpp       2019-03-19 18:25:21 UTC (rev 243153)
+++ trunk/Source/WebKit/UIProcess/VisitedLinkStore.cpp  2019-03-19 18:38:59 UTC (rev 243154)
</span><span class="lines">@@ -42,7 +42,10 @@
</span><span class="cx"> 
</span><span class="cx"> VisitedLinkStore::~VisitedLinkStore()
</span><span class="cx"> {
</span><del>-    RELEASE_ASSERT(m_processes.isEmpty());
</del><ins>+    for (WebProcessProxy* process : m_processes) {
+        process->removeMessageReceiver(Messages::VisitedLinkStore::messageReceiverName(), identifier());
+        process->didDestroyVisitedLinkStore(*this);
+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> VisitedLinkStore::VisitedLinkStore()
</span><span class="lines">@@ -53,7 +56,6 @@
</span><span class="cx"> void VisitedLinkStore::addProcess(WebProcessProxy& process)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(process.state() == WebProcessProxy::State::Running);
</span><del>-    ASSERT(!m_processes.contains(&process));
</del><span class="cx"> 
</span><span class="cx">     if (!m_processes.add(&process).isNewEntry)
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessWebPageProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (243153 => 243154)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp   2019-03-19 18:25:21 UTC (rev 243153)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp      2019-03-19 18:38:59 UTC (rev 243154)
</span><span class="lines">@@ -819,6 +819,7 @@
</span><span class="cx">         // when the process was provisional.
</span><span class="cx">         if (isProcessSwap != IsProcessSwap::Yes)
</span><span class="cx">             m_webProcessLifetimeTracker.webPageEnteringWebProcess(m_process);
</span><ins>+        processDidFinishLaunching();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     updateActivityState();
</span><span class="lines">@@ -957,9 +958,21 @@
</span><span class="cx"> 
</span><span class="cx">     process().send(Messages::WebProcess::CreateWebPage(m_pageID, creationParameters(m_process, *m_drawingArea)), 0);
</span><span class="cx"> 
</span><del>-    m_process->addVisitedLinkStoreUser(visitedLinkStore(), m_pageID);
</del><ins>+    m_needsToFinishInitializingWebPageAfterProcessLaunch = true;
+    finishInitializingWebPageAfterProcessLaunch();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void WebPageProxy::finishInitializingWebPageAfterProcessLaunch()
+{
+    if (!m_needsToFinishInitializingWebPageAfterProcessLaunch)
+        return;
+    if (m_process->state() != WebProcessProxy::State::Running)
+        return;
+
+    m_needsToFinishInitializingWebPageAfterProcessLaunch = false;
+    m_process->addVisitedLinkStore(m_visitedLinkStore);
+}
+
</ins><span class="cx"> void WebPageProxy::close()
</span><span class="cx"> {
</span><span class="cx">     if (m_isClosed)
</span><span class="lines">@@ -5100,6 +5113,12 @@
</span><span class="cx">     m_webProcessLifetimeTracker.webPageLeavingWebProcess(m_process);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void WebPageProxy::processDidFinishLaunching()
+{
+    ASSERT(m_process->state() == WebProcessProxy::State::Running);
+    finishInitializingWebPageAfterProcessLaunch();
+}
+
</ins><span class="cx"> #if ENABLE(NETSCAPE_PLUGIN_API)
</span><span class="cx"> void WebPageProxy::unavailablePluginButtonClicked(uint32_t opaquePluginUnavailabilityReason, const String& mimeType, const String& pluginURLString, const String& pluginspageAttributeURLString, const String& frameURLString, const String& pageURLString)
</span><span class="cx"> {
</span><span class="lines">@@ -6905,6 +6924,8 @@
</span><span class="cx">     m_hasRunningProcess = false;
</span><span class="cx">     m_isPageSuspended = false;
</span><span class="cx"> 
</span><ins>+    m_needsToFinishInitializingWebPageAfterProcessLaunch = false;
+
</ins><span class="cx">     m_editorState = EditorState();
</span><span class="cx">     m_cachedFontAttributesAtSelectionStart.reset();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessWebPageProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (243153 => 243154)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/WebPageProxy.h     2019-03-19 18:25:21 UTC (rev 243153)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h        2019-03-19 18:38:59 UTC (rev 243154)
</span><span class="lines">@@ -1233,6 +1233,8 @@
</span><span class="cx">     void connectionWillOpen(IPC::Connection&);
</span><span class="cx">     void webProcessWillShutDown();
</span><span class="cx"> 
</span><ins>+    void processDidFinishLaunching();
+
</ins><span class="cx">     void didSaveToPageCache();
</span><span class="cx">         
</span><span class="cx">     void setScrollPinningBehavior(WebCore::ScrollPinningBehavior);
</span><span class="lines">@@ -1972,6 +1974,8 @@
</span><span class="cx"> 
</span><span class="cx">     void didResignInputElementStrongPasswordAppearance(const UserData&);
</span><span class="cx"> 
</span><ins>+    void finishInitializingWebPageAfterProcessLaunch();
+
</ins><span class="cx">     void handleMessage(IPC::Connection&, const String& messageName, const UserData& messageBody);
</span><span class="cx">     void handleSynchronousMessage(IPC::Connection&, const String& messageName, const UserData& messageBody, UserData& returnUserData);
</span><span class="cx"> 
</span><span class="lines">@@ -2221,6 +2225,8 @@
</span><span class="cx">     // Whether it can run modal child web pages.
</span><span class="cx">     bool m_canRunModal { false };
</span><span class="cx"> 
</span><ins>+    bool m_needsToFinishInitializingWebPageAfterProcessLaunch { false };
+
</ins><span class="cx">     bool m_isInPrintingMode { false };
</span><span class="cx">     bool m_isPerformingDOMPrintOperation { false };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessWebProcessProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp (243153 => 243154)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp        2019-03-19 18:25:21 UTC (rev 243153)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp   2019-03-19 18:38:59 UTC (rev 243154)
</span><span class="lines">@@ -298,9 +298,9 @@
</span><span class="cx">         frame->webProcessWillShutDown();
</span><span class="cx">     m_frameMap.clear();
</span><span class="cx"> 
</span><del>-    for (auto* visitedLinkStore : m_visitedLinkStoresWithUsers.keys())
</del><ins>+    for (auto* visitedLinkStore : m_visitedLinkStores)
</ins><span class="cx">         visitedLinkStore->removeProcess(*this);
</span><del>-    m_visitedLinkStoresWithUsers.clear();
</del><ins>+    m_visitedLinkStores.clear();
</ins><span class="cx"> 
</span><span class="cx">     for (auto* webUserContentControllerProxy : m_webUserContentControllerProxies)
</span><span class="cx">         webUserContentControllerProxy->removeProcess(*this);
</span><span class="lines">@@ -392,40 +392,17 @@
</span><span class="cx">     if (endsUsingDataStore == EndsUsingDataStore::Yes)
</span><span class="cx">         m_processPool->pageEndUsingWebsiteDataStore(webPage.pageID(), webPage.websiteDataStore());
</span><span class="cx"> 
</span><del>-    removeVisitedLinkStoreUser(webPage.visitedLinkStore(), webPage.pageID());
-
</del><span class="cx">     updateBackgroundResponsivenessTimer();
</span><span class="cx"> 
</span><span class="cx">     maybeShutDown();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebProcessProxy::addVisitedLinkStoreUser(VisitedLinkStore& visitedLinkStore, uint64_t pageID)
</del><ins>+void WebProcessProxy::addVisitedLinkStore(VisitedLinkStore& store)
</ins><span class="cx"> {
</span><del>-    auto users = m_visitedLinkStoresWithUsers.ensure(&visitedLinkStore, [] {
-        return HashSet<uint64_t> { };
-    }).iterator->value;
-
-    ASSERT(!users.contains(pageID));
-    users.add(pageID);
-
-    if (users.size() == 1 && state() == State::Running)
-        visitedLinkStore.addProcess(*this);
</del><ins>+    m_visitedLinkStores.add(&store);
+    store.addProcess(*this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebProcessProxy::removeVisitedLinkStoreUser(VisitedLinkStore& visitedLinkStore, uint64_t pageID)
-{
-    auto it = m_visitedLinkStoresWithUsers.find(&visitedLinkStore);
-    if (it == m_visitedLinkStoresWithUsers.end())
-        return;
-
-    auto& users = it->value;
-    users.remove(pageID);
-    if (users.isEmpty()) {
-        m_visitedLinkStoresWithUsers.remove(it);
-        visitedLinkStore.removeProcess(*this);
-    }
-}
-
</del><span class="cx"> void WebProcessProxy::addWebUserContentControllerProxy(WebUserContentControllerProxy& proxy, WebPageCreationParameters& parameters)
</span><span class="cx"> {
</span><span class="cx">     m_webUserContentControllerProxies.add(&proxy);
</span><span class="lines">@@ -432,6 +409,12 @@
</span><span class="cx">     proxy.addProcess(*this, parameters);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void WebProcessProxy::didDestroyVisitedLinkStore(VisitedLinkStore& store)
+{
+    ASSERT(m_visitedLinkStores.contains(&store));
+    m_visitedLinkStores.remove(&store);
+}
+
</ins><span class="cx"> void WebProcessProxy::didDestroyWebUserContentControllerProxy(WebUserContentControllerProxy& proxy)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(m_webUserContentControllerProxies.contains(&proxy));
</span><span class="lines">@@ -756,14 +739,22 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    for (WebPageProxy* page : m_pageMap.values()) {
+        ASSERT(this == &page->process());
+        page->processDidFinishLaunching();
+    }
+
+    for (auto* provisionalPage : m_provisionalPages) {
+        ASSERT(this == &provisionalPage->process());
+        provisionalPage->processDidFinishLaunching();
+    }
+
+
</ins><span class="cx">     RELEASE_ASSERT(!m_webConnection);
</span><span class="cx">     m_webConnection = WebConnectionToWebProcess::create(this);
</span><span class="cx"> 
</span><span class="cx">     m_processPool->processDidFinishLaunching(this);
</span><span class="cx"> 
</span><del>-    for (auto* visitedLinkStore : m_visitedLinkStoresWithUsers.keys())
-        visitedLinkStore->addProcess(*this);
-
</del><span class="cx"> #if PLATFORM(IOS_FAMILY)
</span><span class="cx">     if (connection()) {
</span><span class="cx">         if (xpc_connection_t xpcConnection = connection()->xpcConnection())
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessWebProcessProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.h (243153 => 243154)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/WebProcessProxy.h  2019-03-19 18:25:21 UTC (rev 243153)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.h     2019-03-19 18:38:59 UTC (rev 243154)
</span><span class="lines">@@ -146,12 +146,9 @@
</span><span class="cx"> 
</span><span class="cx">     virtual bool isServiceWorkerProcess() const { return false; }
</span><span class="cx"> 
</span><del>-    void didCreateWebPageInProcess(uint64_t pageID);
-
-    void addVisitedLinkStoreUser(VisitedLinkStore&, uint64_t pageID);
-    void removeVisitedLinkStoreUser(VisitedLinkStore&, uint64_t pageID);
-
</del><ins>+    void addVisitedLinkStore(VisitedLinkStore&);
</ins><span class="cx">     void addWebUserContentControllerProxy(WebUserContentControllerProxy&, WebPageCreationParameters&);
</span><ins>+    void didDestroyVisitedLinkStore(VisitedLinkStore&);
</ins><span class="cx">     void didDestroyWebUserContentControllerProxy(WebUserContentControllerProxy&);
</span><span class="cx"> 
</span><span class="cx">     RefPtr<API::UserInitiatedAction> userInitiatedActivity(uint64_t);
</span><span class="lines">@@ -431,7 +428,7 @@
</span><span class="cx">     HashSet<ProvisionalPageProxy*> m_provisionalPages;
</span><span class="cx">     UserInitiatedActionMap m_userInitiatedActionMap;
</span><span class="cx"> 
</span><del>-    HashMap<VisitedLinkStore*, HashSet<uint64_t/* pageID */>> m_visitedLinkStoresWithUsers;
</del><ins>+    HashSet<VisitedLinkStore*> m_visitedLinkStores;
</ins><span class="cx">     HashSet<WebUserContentControllerProxy*> m_webUserContentControllerProxies;
</span><span class="cx"> 
</span><span class="cx">     int m_numberOfTimesSuddenTerminationWasDisabled;
</span></span></pre>
</div>
</div>

</body>
</html>