Title: [188659] trunk/Source/WebCore
Revision
188659
Author
bfulg...@apple.com
Date
2015-08-19 16:06:03 -0700 (Wed, 19 Aug 2015)

Log Message

Scrollable area container is not properly cleared when page is going into the PageCache
https://bugs.webkit.org/show_bug.cgi?id=148182
<rdar://problem/21969170>

Reviewed by Dean Jackson.

Must be tested manually going back and forth in history several times.

* history/CachedFrame.cpp:
(WebCore::CachedFrame::CachedFrame): Clear the cached ScrollableAreas from the FrameView.
* page/FrameView.cpp:
(WebCore::FrameView::clearScrollableAreas): Added.
* page/FrameView.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (188658 => 188659)


--- trunk/Source/WebCore/ChangeLog	2015-08-19 23:04:52 UTC (rev 188658)
+++ trunk/Source/WebCore/ChangeLog	2015-08-19 23:06:03 UTC (rev 188659)
@@ -1,3 +1,19 @@
+2015-08-19  Brent Fulgham  <bfulg...@apple.com>
+
+        Scrollable area container is not properly cleared when page is going into the PageCache
+        https://bugs.webkit.org/show_bug.cgi?id=148182
+        <rdar://problem/21969170>
+
+        Reviewed by Dean Jackson.
+
+        Must be tested manually going back and forth in history several times.
+
+        * history/CachedFrame.cpp:
+        (WebCore::CachedFrame::CachedFrame): Clear the cached ScrollableAreas from the FrameView.
+        * page/FrameView.cpp:
+        (WebCore::FrameView::clearScrollableAreas): Added.
+        * page/FrameView.h:
+
 2015-08-19  Zalan Bujtas  <za...@apple.com>
 
         outline-style: auto leaves bits behind on strava's flyby view.

Modified: trunk/Source/WebCore/history/CachedFrame.cpp (188658 => 188659)


--- trunk/Source/WebCore/history/CachedFrame.cpp	2015-08-19 23:04:52 UTC (rev 188658)
+++ trunk/Source/WebCore/history/CachedFrame.cpp	2015-08-19 23:06:03 UTC (rev 188659)
@@ -177,6 +177,8 @@
     if (m_isComposited && PageCache::singleton().shouldClearBackingStores())
         frame.view()->clearBackingStores();
 
+    frame.view()->clearScrollableAreas();
+
     // documentWillSuspendForPageCache() can set up a layout timer on the FrameView, so clear timers after that.
     frame.clearTimers();
 

Modified: trunk/Source/WebCore/page/FrameView.cpp (188658 => 188659)


--- trunk/Source/WebCore/page/FrameView.cpp	2015-08-19 23:04:52 UTC (rev 188658)
+++ trunk/Source/WebCore/page/FrameView.cpp	2015-08-19 23:06:03 UTC (rev 188659)
@@ -4519,6 +4519,12 @@
     return m_scrollableAreas && m_scrollableAreas->contains(scrollableArea);
 }
 
+void FrameView::clearScrollableAreas()
+{
+    if (m_scrollableAreas)
+        m_scrollableAreas->clear();
+}
+
 void FrameView::scrollableAreaSetChanged()
 {
     if (auto* page = frame().page()) {

Modified: trunk/Source/WebCore/page/FrameView.h (188658 => 188659)


--- trunk/Source/WebCore/page/FrameView.h	2015-08-19 23:04:52 UTC (rev 188658)
+++ trunk/Source/WebCore/page/FrameView.h	2015-08-19 23:06:03 UTC (rev 188659)
@@ -458,6 +458,7 @@
     WEBCORE_EXPORT bool removeScrollableArea(ScrollableArea*);
     bool containsScrollableArea(ScrollableArea*) const;
     const ScrollableAreaSet* scrollableAreas() const { return m_scrollableAreas.get(); }
+    void clearScrollableAreas();
 
     virtual void removeChild(Widget&) override;
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to