Title: [178425] trunk/Source/WebKit2
Revision
178425
Author
[email protected]
Date
2015-01-14 10:39:03 -0800 (Wed, 14 Jan 2015)

Log Message

Add willOpen and didClose member functions to WebProcessLifetimeObserver
https://bugs.webkit.org/show_bug.cgi?id=140449

Reviewed by Andreas Kling.

* UIProcess/VisitedLinkProvider.cpp:
(WebKit::VisitedLinkProvider::addVisitedLinkHash):
(WebKit::VisitedLinkProvider::webProcessWillOpenConnection):
(WebKit::VisitedLinkProvider::webProcessDidCloseConnection):
* UIProcess/VisitedLinkProvider.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::WebPageProxy):
(WebKit::WebPageProxy::close):
* UIProcess/WebProcessLifetimeObserver.cpp:
(WebKit::WebProcessLifetimeObserver::addWebPage):
(WebKit::WebProcessLifetimeObserver::removeWebPage):
* UIProcess/WebProcessLifetimeObserver.h:
(WebKit::WebProcessLifetimeObserver::webProcessWillOpenConnection):
(WebKit::WebProcessLifetimeObserver::webProcessDidCloseConnection):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (178424 => 178425)


--- trunk/Source/WebKit2/ChangeLog	2015-01-14 18:25:44 UTC (rev 178424)
+++ trunk/Source/WebKit2/ChangeLog	2015-01-14 18:39:03 UTC (rev 178425)
@@ -1,3 +1,25 @@
+2015-01-14  Anders Carlsson  <[email protected]>
+
+        Add willOpen and didClose member functions to WebProcessLifetimeObserver
+        https://bugs.webkit.org/show_bug.cgi?id=140449
+
+        Reviewed by Andreas Kling.
+
+        * UIProcess/VisitedLinkProvider.cpp:
+        (WebKit::VisitedLinkProvider::addVisitedLinkHash):
+        (WebKit::VisitedLinkProvider::webProcessWillOpenConnection):
+        (WebKit::VisitedLinkProvider::webProcessDidCloseConnection):
+        * UIProcess/VisitedLinkProvider.h:
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::WebPageProxy):
+        (WebKit::WebPageProxy::close):
+        * UIProcess/WebProcessLifetimeObserver.cpp:
+        (WebKit::WebProcessLifetimeObserver::addWebPage):
+        (WebKit::WebProcessLifetimeObserver::removeWebPage):
+        * UIProcess/WebProcessLifetimeObserver.h:
+        (WebKit::WebProcessLifetimeObserver::webProcessWillOpenConnection):
+        (WebKit::WebProcessLifetimeObserver::webProcessDidCloseConnection):
+
 2015-01-14  Dan Bernstein  <[email protected]>
 
         Added availability annotations to some modern Cocoa SPI.

Modified: trunk/Source/WebKit2/UIProcess/VisitedLinkProvider.cpp (178424 => 178425)


--- trunk/Source/WebKit2/UIProcess/VisitedLinkProvider.cpp	2015-01-14 18:25:44 UTC (rev 178424)
+++ trunk/Source/WebKit2/UIProcess/VisitedLinkProvider.cpp	2015-01-14 18:39:03 UTC (rev 178425)
@@ -91,6 +91,14 @@
     process.removeMessageReceiver(Messages::VisitedLinkProvider::messageReceiverName(), m_identifier);
 }
 
+void VisitedLinkProvider::addVisitedLinkHash(LinkHash linkHash)
+{
+    m_pendingVisitedLinks.add(linkHash);
+
+    if (!m_pendingVisitedLinksTimer.isActive())
+        m_pendingVisitedLinksTimer.startOneShot(0);
+}
+
 void VisitedLinkProvider::removeAll()
 {
     m_pendingVisitedLinksTimer.stop();
@@ -105,12 +113,14 @@
     }
 }
 
-void VisitedLinkProvider::addVisitedLinkHash(LinkHash linkHash)
+void VisitedLinkProvider::webProcessWillOpenConnection(WebProcessProxy&, IPC::Connection&)
 {
-    m_pendingVisitedLinks.add(linkHash);
+    // FIXME: Implement.
+}
 
-    if (!m_pendingVisitedLinksTimer.isActive())
-        m_pendingVisitedLinksTimer.startOneShot(0);
+void VisitedLinkProvider::webProcessDidCloseConnection(WebProcessProxy&, IPC::Connection&)
+{
+    // FIXME: Implement.
 }
 
 void VisitedLinkProvider::addVisitedLinkHashFromPage(uint64_t pageID, LinkHash linkHash)

Modified: trunk/Source/WebKit2/UIProcess/VisitedLinkProvider.h (178424 => 178425)


--- trunk/Source/WebKit2/UIProcess/VisitedLinkProvider.h	2015-01-14 18:25:44 UTC (rev 178424)
+++ trunk/Source/WebKit2/UIProcess/VisitedLinkProvider.h	2015-01-14 18:39:03 UTC (rev 178425)
@@ -59,6 +59,10 @@
     // IPC::MessageReceiver
     virtual void didReceiveMessage(IPC::Connection&, IPC::MessageDecoder&) override;
 
+    // WebProcessLifetimeObserver
+    virtual void webProcessWillOpenConnection(WebProcessProxy&, IPC::Connection&) override;
+    virtual void webProcessDidCloseConnection(WebProcessProxy&, IPC::Connection&) override;
+
     void addVisitedLinkHashFromPage(uint64_t pageID, WebCore::LinkHash);
 
     void pendingVisitedLinksTimerFired();

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (178424 => 178425)


--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2015-01-14 18:25:44 UTC (rev 178424)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2015-01-14 18:39:03 UTC (rev 178425)
@@ -380,6 +380,8 @@
     , m_viewStateChangeWantsSynchronousReply(false)
     , m_isPlayingAudio(false)
 {
+    m_webProcessLifetimeTracker.addObserver(m_visitedLinkProvider);
+
     m_websiteDataStore->addWebPage(*this);
 
     if (m_process->state() == WebProcessProxy::State::Running) {
@@ -708,6 +710,8 @@
     m_contextMenuClient.initialize(0);
 #endif
 
+    m_webProcessLifetimeTracker.pageWasInvalidated();
+
     m_process->send(Messages::WebPage::Close(), m_pageID);
     m_process->removeWebPage(m_pageID);
     m_process->removeMessageReceiver(Messages::WebPageProxy::messageReceiverName(), m_pageID);
@@ -715,8 +719,6 @@
     m_process->processPool().supplement<WebNotificationManagerProxy>()->clearNotifications(this);
 
     m_websiteDataStore->removeWebPage(*this);
-
-    m_webProcessLifetimeTracker.pageWasInvalidated();
 }
 
 bool WebPageProxy::tryClose()

Modified: trunk/Source/WebKit2/UIProcess/WebProcessLifetimeObserver.cpp (178424 => 178425)


--- trunk/Source/WebKit2/UIProcess/WebProcessLifetimeObserver.cpp	2015-01-14 18:25:44 UTC (rev 178424)
+++ trunk/Source/WebKit2/UIProcess/WebProcessLifetimeObserver.cpp	2015-01-14 18:39:03 UTC (rev 178425)
@@ -41,12 +41,24 @@
 
 void WebProcessLifetimeObserver::addWebPage(WebPageProxy& webPageProxy)
 {
-    ASSERT(webPageProxy.process().state() == WebProcessProxy::State::Running);
+    auto& process = webPageProxy.process();
+
+    ASSERT(process.state() == WebProcessProxy::State::Running);
+
+    if (m_processes.add(&process).isNewEntry)
+        webProcessWillOpenConnection(process, *process.connection());
 }
 
 void WebProcessLifetimeObserver::removeWebPage(WebPageProxy& webPageProxy)
 {
-    ASSERT(webPageProxy.isClosed() || webPageProxy.process().state() != WebProcessProxy::State::Running);
+    auto& process = webPageProxy.process();
+
+    // FIXME: This should assert that the page is either closed or that the process is no longer running,
+    // but we have to make sure that removeWebPage is called after the connection has been removed in that case.
+    ASSERT(m_processes.contains(&process));
+
+    if (m_processes.remove(&process))
+        webProcessDidCloseConnection(process, *process.connection());
 }
 
 }

Modified: trunk/Source/WebKit2/UIProcess/WebProcessLifetimeObserver.h (178424 => 178425)


--- trunk/Source/WebKit2/UIProcess/WebProcessLifetimeObserver.h	2015-01-14 18:25:44 UTC (rev 178424)
+++ trunk/Source/WebKit2/UIProcess/WebProcessLifetimeObserver.h	2015-01-14 18:39:03 UTC (rev 178425)
@@ -26,6 +26,12 @@
 #ifndef WebProcessLifetimeObserver_h
 #define WebProcessLifetimeObserver_h
 
+#include <wtf/HashCountedSet.h>
+
+namespace IPC {
+class Connection;
+}
+
 namespace WebKit {
 
 class WebPageProxy;
@@ -40,6 +46,10 @@
     void removeWebPage(WebPageProxy&);
 
 private:
+    virtual void webProcessWillOpenConnection(WebProcessProxy&, IPC::Connection&) { }
+    virtual void webProcessDidCloseConnection(WebProcessProxy&, IPC::Connection&) { }
+
+    HashCountedSet<WebProcessProxy*> m_processes;
 };
 
 }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to