https://bugs.webkit.org/show_bug.cgi?id=29512
authorantti@apple.com <antti@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 19 Sep 2009 01:19:04 +0000 (01:19 +0000)
committerantti@apple.com <antti@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 19 Sep 2009 01:19:04 +0000 (01:19 +0000)
Don't recalculate style when restoring from the page cache

Patch by Antti Koivisto <antti@apple.com> on 2009-09-18
Reviewed by Maciej Stachowiak.

FrameLoaderClient::forceLayout() also forces style recalc. Instead call FrameView::forceLayout()
directly to update the scrollbars while keeping the existing style.

Makes back/forward really fast on complex pages (in cases where page cache works).

* loader/FrameLoader.cpp:
(WebCore::FrameLoader::commitProvisionalLoad):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@48545 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/loader/FrameLoader.cpp

index bba5daf..9e157be 100644 (file)
@@ -1,3 +1,18 @@
+2009-09-18  Antti Koivisto  <antti@apple.com>
+
+        Reviewed by Maciej Stachowiak.
+
+        https://bugs.webkit.org/show_bug.cgi?id=29512
+        Don't recalculate style when restoring from the page cache
+
+        FrameLoaderClient::forceLayout() also forces style recalc. Instead call FrameView::forceLayout() 
+        directly to update the scrollbars while keeping the existing style.
+        
+        Makes back/forward really fast on complex pages (in cases where page cache works).
+
+        * loader/FrameLoader.cpp:
+        (WebCore::FrameLoader::commitProvisionalLoad):
+
 2009-09-18  Oliver Hunt  <oliver@apple.com>
 
         Reviewed by Geoff Garen.
index 4321be0..0494847 100644 (file)
@@ -2900,7 +2900,7 @@ void FrameLoader::commitProvisionalLoad(PassRefPtr<CachedPage> prpCachedPage)
         m_frame->document()->documentDidBecomeActive();
         
         // Force a layout to update view size and thereby update scrollbars.
-        m_client->forceLayout();
+        m_frame->view()->forceLayout();
 
         const ResponseVector& responses = m_documentLoader->responses();
         size_t count = responses.size();