Title: [182084] trunk/Source/WebKit2
Revision
182084
Author
[email protected]
Date
2015-03-27 15:01:54 -0700 (Fri, 27 Mar 2015)

Log Message

WebProcessProxy should not retain WebBackForwardListItems forever.
<https://webkit.org/b/143152>
<rdar://problem/19925709>

Reviewed by Anders Carlsson.

Have WebProcessProxy actually forget about a WebBackForwardListItem after it's removed from
the WebBackForwardList.

This ensures that we don't accumulate too many of these objects, which can get quite large
due to the session state encoded in them.

We already have graceful handling of the case where an incoming IPC message references
a removed back/forward list item.

* UIProcess/WebBackForwardList.cpp:
(WebKit::WebBackForwardList::didRemoveItem):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::backForwardRemovedItem):
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::removeBackForwardItem):
* UIProcess/WebProcessProxy.h:

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (182083 => 182084)


--- trunk/Source/WebKit2/ChangeLog	2015-03-27 21:56:35 UTC (rev 182083)
+++ trunk/Source/WebKit2/ChangeLog	2015-03-27 22:01:54 UTC (rev 182084)
@@ -1,3 +1,28 @@
+2015-03-27  Andreas Kling  <[email protected]>
+
+        WebProcessProxy should not retain WebBackForwardListItems forever.
+        <https://webkit.org/b/143152>
+        <rdar://problem/19925709>
+
+        Reviewed by Anders Carlsson.
+
+        Have WebProcessProxy actually forget about a WebBackForwardListItem after it's removed from
+        the WebBackForwardList.
+
+        This ensures that we don't accumulate too many of these objects, which can get quite large
+        due to the session state encoded in them.
+
+        We already have graceful handling of the case where an incoming IPC message references
+        a removed back/forward list item.
+
+        * UIProcess/WebBackForwardList.cpp:
+        (WebKit::WebBackForwardList::didRemoveItem):
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::backForwardRemovedItem):
+        * UIProcess/WebProcessProxy.cpp:
+        (WebKit::WebProcessProxy::removeBackForwardItem):
+        * UIProcess/WebProcessProxy.h:
+
 2015-03-27  Simon Fraser  <[email protected]>
 
         Use the correct timebase to log scrollperf blank pixel counts on iOS

Modified: trunk/Source/WebKit2/UIProcess/WebBackForwardList.cpp (182083 => 182084)


--- trunk/Source/WebKit2/UIProcess/WebBackForwardList.cpp	2015-03-27 21:56:35 UTC (rev 182083)
+++ trunk/Source/WebKit2/UIProcess/WebBackForwardList.cpp	2015-03-27 22:01:54 UTC (rev 182084)
@@ -436,7 +436,6 @@
 
 void WebBackForwardList::didRemoveItem(WebBackForwardListItem& backForwardListItem)
 {
-    // FIXME: This should really also delete the item from the map.
     m_page->backForwardRemovedItem(backForwardListItem.itemID());
 
 #if PLATFORM(COCOA)

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (182083 => 182084)


--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2015-03-27 21:56:35 UTC (rev 182083)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2015-03-27 22:01:54 UTC (rev 182084)
@@ -5125,6 +5125,7 @@
 
 void WebPageProxy::backForwardRemovedItem(uint64_t itemID)
 {
+    m_process->removeBackForwardItem(itemID);
     m_process->send(Messages::WebPage::DidRemoveBackForwardItem(itemID), m_pageID);
 }
 

Modified: trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp (182083 => 182084)


--- trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp	2015-03-27 21:56:35 UTC (rev 182083)
+++ trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp	2015-03-27 22:01:54 UTC (rev 182084)
@@ -292,6 +292,11 @@
     m_backForwardListItemMap.set(item->itemID(), item);
 }
 
+void WebProcessProxy::removeBackForwardItem(uint64_t itemID)
+{
+    m_backForwardListItemMap.remove(itemID);
+}
+
 void WebProcessProxy::assumeReadAccessToBaseURL(const String& urlString)
 {
     URL url(URL(), urlString);

Modified: trunk/Source/WebKit2/UIProcess/WebProcessProxy.h (182083 => 182084)


--- trunk/Source/WebKit2/UIProcess/WebProcessProxy.h	2015-03-27 21:56:35 UTC (rev 182083)
+++ trunk/Source/WebKit2/UIProcess/WebProcessProxy.h	2015-03-27 22:01:54 UTC (rev 182084)
@@ -107,6 +107,7 @@
     void updateTextCheckerState();
 
     void registerNewWebBackForwardListItem(WebBackForwardListItem*);
+    void removeBackForwardItem(uint64_t);
 
     void willAcquireUniversalFileReadSandboxExtension() { m_mayHaveUniversalFileReadSandboxExtension = true; }
     void assumeReadAccessToBaseURL(const String&);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to