New MainFrame views should inherit fixed layout settings from existing MainFrame...
authorfsamuel@chromium.org <fsamuel@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 23 Aug 2011 19:21:05 +0000 (19:21 +0000)
committerfsamuel@chromium.org <fsamuel@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 23 Aug 2011 19:21:05 +0000 (19:21 +0000)
https://bugs.webkit.org/show_bug.cgi?id=66780

Fixed layout mode is set from WebViewImpl, but new main FrameViews are created on loading new pages. The new page's FrameView should get its
fixed layout settings from the current page.

Reviewed by Darin Fisher.

* src/WebFrameImpl.cpp:
(WebKit::WebFrameImpl::createFrameView):

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

Source/WebKit/chromium/ChangeLog
Source/WebKit/chromium/src/WebFrameImpl.cpp

index 7cbc17994f36ffe574621b11412c548b4e8e0ce3..e7356d52bef3fb3ec9319d303f8bfcdb3bffbc98 100644 (file)
@@ -1,3 +1,16 @@
+2011-08-23  Fady Samuel  <fsamuel@chromium.org>
+
+        New MainFrame views should inherit fixed layout settings from existing MainFrame view in Chromium.
+        https://bugs.webkit.org/show_bug.cgi?id=66780
+
+        Fixed layout mode is set from WebViewImpl, but new main FrameViews are created on loading new pages. The new page's FrameView should get its
+        fixed layout settings from the current page.
+
+        Reviewed by Darin Fisher.
+
+        * src/WebFrameImpl.cpp:
+        (WebKit::WebFrameImpl::createFrameView):
+
 2011-08-23  Matt Falkenhagen  <falken@chromium.org>
 
         [chromium] Update WebSettings to support per-script font settings
index 3e6f102452f9a5ff2f678f0da7f17376fb5e8181..1fb66da03257f950af65f6822649d03a724c3ded 100644 (file)
@@ -1979,8 +1979,15 @@ void WebFrameImpl::createFrameView()
     ASSERT(page->mainFrame());
 
     bool isMainFrame = m_frame == page->mainFrame();
-    if (isMainFrame && m_frame->view())
+    bool useFixedLayout = false;
+    IntSize fixedLayoutSize;
+    if (isMainFrame && m_frame->view()) {
         m_frame->view()->setParentVisible(false);
+        // Save the fixed layout information before destroying the
+        // existing FrameView of this frame.
+        useFixedLayout = m_frame->view()->useFixedLayout();
+        fixedLayoutSize = m_frame->view()->fixedLayoutSize();
+    }
 
     m_frame->setView(0);
 
@@ -2011,6 +2018,10 @@ void WebFrameImpl::createFrameView()
 #if ENABLE(GESTURE_RECOGNIZER)
     webView->resetGestureRecognizer();
 #endif
+
+    // Restore the saved fixed layout information.
+    view->setUseFixedLayout(useFixedLayout);
+    view->setFixedLayoutSize(fixedLayoutSize);
 }
 
 WebFrameImpl* WebFrameImpl::fromFrame(Frame* frame)