Title: [167738] trunk/Source/WebKit2
Revision
167738
Author
benja...@webkit.org
Date
2014-04-23 19:37:05 -0700 (Wed, 23 Apr 2014)

Log Message

[iOS][WK2] Image and text documents sometime gets the webpage viewport configuration
https://bugs.webkit.org/show_bug.cgi?id=132099

Patch by Benjamin Poulain <bpoul...@apple.com> on 2014-04-23
Reviewed by Tim Horton.

When didReceiveMobileDocType(), if the doctype was not XHTML mobile, we were setting
the viewport configuration to webpageParameters(). This is obviously not correct for
Image and Text documents.

This patch moves the code deciding the default configuration out of WebPage::didCommitLoad()
and use it from WebPage::didCommitLoad() and WebPage::didReceiveMobileDocType().

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::didCommitLoad):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::didReceiveMobileDocType):
(WebKit::WebPage::resetViewportDefaultConfiguration):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (167737 => 167738)


--- trunk/Source/WebKit2/ChangeLog	2014-04-24 02:25:08 UTC (rev 167737)
+++ trunk/Source/WebKit2/ChangeLog	2014-04-24 02:37:05 UTC (rev 167738)
@@ -1,5 +1,26 @@
 2014-04-23  Benjamin Poulain  <bpoul...@apple.com>
 
+        [iOS][WK2] Image and text documents sometime gets the webpage viewport configuration
+        https://bugs.webkit.org/show_bug.cgi?id=132099
+
+        Reviewed by Tim Horton.
+
+        When didReceiveMobileDocType(), if the doctype was not XHTML mobile, we were setting
+        the viewport configuration to webpageParameters(). This is obviously not correct for
+        Image and Text documents.
+
+        This patch moves the code deciding the default configuration out of WebPage::didCommitLoad()
+        and use it from WebPage::didCommitLoad() and WebPage::didReceiveMobileDocType().
+
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::didCommitLoad):
+        * WebProcess/WebPage/WebPage.h:
+        * WebProcess/WebPage/ios/WebPageIOS.mm:
+        (WebKit::WebPage::didReceiveMobileDocType):
+        (WebKit::WebPage::resetViewportDefaultConfiguration):
+
+2014-04-23  Benjamin Poulain  <bpoul...@apple.com>
+
         [iOS][WK2] Fix a few mistakes affecting the initial layout and the initial unobscured rect
         https://bugs.webkit.org/show_bug.cgi?id=132093
         <rdar://problem/16703237>

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (167737 => 167738)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2014-04-24 02:25:08 UTC (rev 167737)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2014-04-24 02:37:05 UTC (rev 167738)
@@ -4254,14 +4254,7 @@
 
     WebProcess::shared().eventDispatcher().clearQueuedTouchEventsForPage(*this);
 
-    Document* document = frame->coreFrame()->document();
-    if (document->isImageDocument())
-        m_viewportConfiguration.setDefaultConfiguration(ViewportConfiguration::imageDocumentParameters());
-    else if (document->isTextDocument())
-        m_viewportConfiguration.setDefaultConfiguration(ViewportConfiguration::textDocumentParameters());
-    else
-        m_viewportConfiguration.setDefaultConfiguration(ViewportConfiguration::webpageParameters());
-
+    resetViewportDefaultConfiguration(frame);
     m_viewportConfiguration.setViewportArguments(ViewportArguments());
     m_viewportConfiguration.setContentsSize(IntSize());
     viewportConfigurationChanged();

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (167737 => 167738)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h	2014-04-24 02:25:08 UTC (rev 167737)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h	2014-04-24 02:37:05 UTC (rev 167738)
@@ -698,7 +698,6 @@
     void setViewportConfigurationMinimumLayoutSize(const WebCore::FloatSize&);
     void setMinimumLayoutSizeForMinimalUI(const WebCore::FloatSize&);
     void dynamicViewportSizeUpdate(const WebCore::FloatSize& minimumLayoutSize, const WebCore::FloatRect& targetExposedContentRect, const WebCore::FloatRect& targetUnobscuredRect, double scale);
-    void viewportConfigurationChanged();
     void updateVisibleContentRects(const VisibleContentRectUpdateInfo&);
     bool scaleWasSetByUIProcess() const { return m_scaleWasSetByUIProcess; }
     void willStartUserTriggeredZooming();
@@ -802,6 +801,9 @@
     void didReceiveSyncWebPageMessage(IPC::Connection*, IPC::MessageDecoder&, std::unique_ptr<IPC::MessageEncoder>&);
 
 #if PLATFORM(IOS)
+    void resetViewportDefaultConfiguration(WebFrame* mainFrame);
+    void viewportConfigurationChanged();
+
     static void convertSelectionRectsToRootView(WebCore::FrameView*, Vector<WebCore::SelectionRect>&);
     PassRefPtr<WebCore::Range> rangeForWebSelectionAtPosition(const WebCore::IntPoint&, const WebCore::VisiblePosition&, SelectionFlags&);
     PassRefPtr<WebCore::Range> rangeForBlockAtPoint(const WebCore::IntPoint&);

Modified: trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm (167737 => 167738)


--- trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm	2014-04-24 02:25:08 UTC (rev 167737)
+++ trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm	2014-04-24 02:37:05 UTC (rev 167738)
@@ -134,7 +134,7 @@
     if (isMobileDoctype)
         m_viewportConfiguration.setDefaultConfiguration(ViewportConfiguration::xhtmlMobileParameters());
     else
-        m_viewportConfiguration.setDefaultConfiguration(ViewportConfiguration::webpageParameters());
+        resetViewportDefaultConfiguration(m_mainFrame.get());
 }
 
 double WebPage::minimumPageScaleFactor() const
@@ -1919,6 +1919,22 @@
         send(Messages::WebPageProxy::DynamicViewportUpdateChangedTarget(scale, roundedUnobscuredContentRect.location()));
 }
 
+void WebPage::resetViewportDefaultConfiguration(WebFrame* frame)
+{
+    if (!frame) {
+        m_viewportConfiguration.setDefaultConfiguration(ViewportConfiguration::webpageParameters());
+        return;
+    }
+
+    Document* document = frame->coreFrame()->document();
+    if (document->isImageDocument())
+        m_viewportConfiguration.setDefaultConfiguration(ViewportConfiguration::imageDocumentParameters());
+    else if (document->isTextDocument())
+        m_viewportConfiguration.setDefaultConfiguration(ViewportConfiguration::textDocumentParameters());
+    else
+        m_viewportConfiguration.setDefaultConfiguration(ViewportConfiguration::webpageParameters());
+}
+
 void WebPage::viewportConfigurationChanged()
 {
     setFixedLayoutSize(m_viewportConfiguration.layoutSize());
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to