Title: [206626] trunk
Revision
206626
Author
n_w...@apple.com
Date
2016-09-29 17:38:18 -0700 (Thu, 29 Sep 2016)

Log Message

AX: iOS: Tapping <input> in Safari zooms in a bit when page has max scale = 1
https://bugs.webkit.org/show_bug.cgi?id=162471

Reviewed by Simon Fraser.

Source/WebCore:

If the author has defined a maximum scale, we should honor that when keyboard focus moves
to a text field, instead of using the forceAlwaysUserScalableMaximumScale.

Tests: fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale.html
       fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-user-scalable-no.html
       fast/forms/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale.html

* page/ViewportConfiguration.cpp:
(WebCore::ViewportConfiguration::allowsUserScaling):
(WebCore::ViewportConfiguration::allowsUserScalingIgnoringAlwaysScalable):
(WebCore::ViewportConfiguration::allowsUserScalingIgnoringForceAlwaysScaling): Deleted.
* page/ViewportConfiguration.h:
(WebCore::ViewportConfiguration::maximumScaleIgnoringAlwaysScalable):
(WebCore::ViewportConfiguration::maximumScale): Deleted.

Source/WebKit2:

* Shared/AssistedNodeInformation.cpp:
(WebKit::AssistedNodeInformation::encode):
(WebKit::AssistedNodeInformation::decode):
* Shared/AssistedNodeInformation.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _displayFormNodeInputView]):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::maximumPageScaleFactorIgnoringAlwaysScalable):
(WebKit::WebPage::getAssistedNodeInformation):

LayoutTests:

Moved focus input related tests to the right place.

* fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale-expected.txt: Added.
* fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale.html: Added.
* fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-user-scalable-no-expected.txt: Added.
* fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-user-scalable-no.html: Added.
* fast/forms/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale-expected.txt: Added.
* fast/forms/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale.html: Added.
* fast/viewport/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale-expected.txt: Removed.
* fast/viewport/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale.html: Removed.
* fast/viewport/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale-expected.txt: Removed.
* fast/viewport/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale.html: Removed.

Modified Paths

Added Paths

Removed Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (206625 => 206626)


--- trunk/LayoutTests/ChangeLog	2016-09-30 00:15:27 UTC (rev 206625)
+++ trunk/LayoutTests/ChangeLog	2016-09-30 00:38:18 UTC (rev 206626)
@@ -1,3 +1,23 @@
+2016-09-29  Nan Wang  <n_w...@apple.com>
+
+        AX: iOS: Tapping <input> in Safari zooms in a bit when page has max scale = 1
+        https://bugs.webkit.org/show_bug.cgi?id=162471
+
+        Reviewed by Simon Fraser.
+
+        Moved focus input related tests to the right place.
+
+        * fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale-expected.txt: Added.
+        * fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale.html: Added.
+        * fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-user-scalable-no-expected.txt: Added.
+        * fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-user-scalable-no.html: Added.
+        * fast/forms/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale-expected.txt: Added.
+        * fast/forms/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale.html: Added.
+        * fast/viewport/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale-expected.txt: Removed.
+        * fast/viewport/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale.html: Removed.
+        * fast/viewport/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale-expected.txt: Removed.
+        * fast/viewport/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale.html: Removed.
+
 2016-09-29  Chris Dumez  <cdu...@apple.com>
 
         [iOS] Update Touch constructor test to cover clientX / clientY attributes

Copied: trunk/LayoutTests/fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale-expected.txt (from rev 206621, trunk/LayoutTests/fast/viewport/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale-expected.txt) (0 => 206626)


--- trunk/LayoutTests/fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale-expected.txt	2016-09-30 00:38:18 UTC (rev 206626)
@@ -0,0 +1,13 @@
+
+This test has to run in iOS WebKitTestRunner.
+
+This tests that even though force user scalable = true, we won't scale if a text field gets focus and the page has maximum-scale=1
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Zoom scale is: 1
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Copied: trunk/LayoutTests/fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale.html (from rev 206621, trunk/LayoutTests/fast/viewport/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale.html) (0 => 206626)


--- trunk/LayoutTests/fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale.html	                        (rev 0)
+++ trunk/LayoutTests/fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale.html	2016-09-30 00:38:18 UTC (rev 206626)
@@ -0,0 +1,45 @@
+<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true ] -->
+<html>
+<head>
+<script src=""
+<meta name="viewport" content="width=device-width, maximum-scale=1">
+<script id="ui-script" type="text/plain">
+    (function() {
+        uiController.didEndZoomingCallback = function() {
+            uiController.uiScriptComplete(uiController.zoomScale);
+        };
+        
+        uiController.singleTapAtPoint(10, 10, function() {});
+    })();
+</script></head>
+
+<body _onload_="runTest();">
+<input type="text" id="textfield">
+<p id="result">This test has to run in iOS WebKitTestRunner.</p>
+
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+    description("This tests that even though force user scalable = true, we won't scale if a text field gets focus and the page has maximum-scale=1");
+
+    if (window.testRunner) {
+        window.jsTestIsAsync = true;
+        testRunner.setIgnoresViewportScaleLimits(true);
+    }
+
+    function runTest()
+    {
+        if (testRunner.runUIScript) {
+            var uiScript = document.getElementById('ui-script').text;
+            testRunner.runUIScript(document.getElementById('ui-script').text, function(result) {
+                debug("Zoom scale is: " + result);
+                finishJSTest();
+            });
+        }
+    }
+</script>
+
+<script src=""
+</body>
+</html>

Copied: trunk/LayoutTests/fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-user-scalable-no-expected.txt (from rev 206621, trunk/LayoutTests/fast/viewport/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale-expected.txt) (0 => 206626)


--- trunk/LayoutTests/fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-user-scalable-no-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-user-scalable-no-expected.txt	2016-09-30 00:38:18 UTC (rev 206626)
@@ -0,0 +1,13 @@
+
+This test has to run in iOS WebKitTestRunner.
+
+This tests that even though force user scalable = true, we won't scale if a text field gets focus and the page has user-scalable=no
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Zoom scale is: 1
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Copied: trunk/LayoutTests/fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-user-scalable-no.html (from rev 206621, trunk/LayoutTests/fast/viewport/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale.html) (0 => 206626)


--- trunk/LayoutTests/fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-user-scalable-no.html	                        (rev 0)
+++ trunk/LayoutTests/fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-user-scalable-no.html	2016-09-30 00:38:18 UTC (rev 206626)
@@ -0,0 +1,45 @@
+<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true ] -->
+<html>
+<head>
+<script src=""
+<meta name="viewport" content="width=device-width, user-scalable=no">
+<script id="ui-script" type="text/plain">
+    (function() {
+        uiController.didEndZoomingCallback = function() {
+            uiController.uiScriptComplete(uiController.zoomScale);
+        };
+        
+        uiController.singleTapAtPoint(10, 10, function() {});
+    })();
+</script></head>
+
+<body _onload_="runTest();">
+<input type="text" id="textfield">
+<p id="result">This test has to run in iOS WebKitTestRunner.</p>
+
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+    description("This tests that even though force user scalable = true, we won't scale if a text field gets focus and the page has user-scalable=no");
+
+    if (window.testRunner) {
+        window.jsTestIsAsync = true;
+        testRunner.setIgnoresViewportScaleLimits(true);
+    }
+
+    function runTest()
+    {
+        if (testRunner.runUIScript) {
+            var uiScript = document.getElementById('ui-script').text;
+            testRunner.runUIScript(document.getElementById('ui-script').text, function(result) {
+                debug("Zoom scale is: " + result);
+                finishJSTest();
+            });
+        }
+    }
+</script>
+
+<script src=""
+</body>
+</html>

Copied: trunk/LayoutTests/fast/forms/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale-expected.txt (from rev 206621, trunk/LayoutTests/fast/viewport/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale-expected.txt) (0 => 206626)


--- trunk/LayoutTests/fast/forms/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/forms/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale-expected.txt	2016-09-30 00:38:18 UTC (rev 206626)
@@ -0,0 +1,13 @@
+
+This test has to run in iOS WebKitTestRunner.
+
+This tests that when the author does not define a scale or set user-scalable=no, that zooming in on focused nodes changes the scale.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Zoom scale is: 1.45
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Copied: trunk/LayoutTests/fast/forms/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale.html (from rev 206621, trunk/LayoutTests/fast/viewport/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale.html) (0 => 206626)


--- trunk/LayoutTests/fast/forms/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale.html	                        (rev 0)
+++ trunk/LayoutTests/fast/forms/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale.html	2016-09-30 00:38:18 UTC (rev 206626)
@@ -0,0 +1,47 @@
+<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true ] -->
+<html>
+<head>
+<script src=""
+<meta name="viewport">
+<script id="ui-script" type="text/plain">
+    (function() {
+        uiController.didEndZoomingCallback = function() {
+            uiController.uiScriptComplete(uiController.zoomScale);
+        };
+        
+        uiController.singleTapAtPoint(10, 10, function() {});
+    })();
+</script></head>
+
+<body _onload_="runTest();">
+<input type="text" id="textfield">
+<p id="result">This test has to run in iOS WebKitTestRunner.</p>
+
+
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+    description("This tests that when the author does not define a scale or set user-scalable=no, that zooming in on focused nodes changes the scale.");
+
+    if (window.testRunner) {
+        window.jsTestIsAsync = true;
+        testRunner.setIgnoresViewportScaleLimits(true);
+    }
+
+    function runTest()
+    {
+        if (testRunner.runUIScript) {
+            var uiScript = document.getElementById('ui-script').text;;
+            document.getElementById("textfield").focus();
+            testRunner.runUIScript(document.getElementById('ui-script').text, function(result) {
+                debug("Zoom scale is: " + Number(result).toFixed(2));
+                finishJSTest();
+            });
+        }
+    }
+</script>
+
+<script src=""
+</body>
+</html>

Deleted: trunk/LayoutTests/fast/viewport/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale-expected.txt (206625 => 206626)


--- trunk/LayoutTests/fast/viewport/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale-expected.txt	2016-09-30 00:15:27 UTC (rev 206625)
+++ trunk/LayoutTests/fast/viewport/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale-expected.txt	2016-09-30 00:38:18 UTC (rev 206626)
@@ -1,13 +0,0 @@
-This test has to run in iOS WebKitTestRunner.
-
-
-This tests that even though force user scalable = true, we won't scale if a text field gets focus by default.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-Maximum zoom scale was: 1
-PASS successfullyParsed is true
-
-TEST COMPLETE
-

Deleted: trunk/LayoutTests/fast/viewport/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale.html (206625 => 206626)


--- trunk/LayoutTests/fast/viewport/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale.html	2016-09-30 00:15:27 UTC (rev 206625)
+++ trunk/LayoutTests/fast/viewport/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale.html	2016-09-30 00:38:18 UTC (rev 206626)
@@ -1,44 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<script src=""
-<meta name="viewport" content="width=device-width, maximum-scale=1">
-<script id="ui-script" type="text/plain">
-    (function() {
-       uiController.uiScriptComplete(uiController.zoomScale);
-    })();
-</script></head>
-
-<body _onload_="runTest();">
-<p id="result">This test has to run in iOS WebKitTestRunner.</p>
-
-<input type="text" id="textfield">
-
-<p id="description"></p>
-<div id="console"></div>
-
-<script>
-    description("This tests that even though force user scalable = true, we won't scale if a text field gets focus by default.");
-
-    if (window.testRunner) {
-        window.jsTestIsAsync = true;
-        testRunner.setIgnoresViewportScaleLimits(true);
-    }
-
-    function runTest()
-    {
-        if (testRunner.runUIScript) {
-            var uiScript = document.getElementById('ui-script').text;
-            testRunner.setIgnoresViewportScaleLimits(false);
-            document.getElementById("textfield").focus();
-            testRunner.runUIScript(document.getElementById('ui-script').text, function(result) {
-                debug("Maximum zoom scale was: " + result);
-                finishJSTest();
-            });
-        }
-    }
-</script>
-
-<script src=""
-</body>
-</html>

Deleted: trunk/LayoutTests/fast/viewport/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale-expected.txt (206625 => 206626)


--- trunk/LayoutTests/fast/viewport/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale-expected.txt	2016-09-30 00:15:27 UTC (rev 206625)
+++ trunk/LayoutTests/fast/viewport/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale-expected.txt	2016-09-30 00:38:18 UTC (rev 206626)
@@ -1,13 +0,0 @@
-This test has to run in iOS WebKitTestRunner.
-
-
-This tests that when the author does not define a scale or width, that zooming in on focused nodes changes the scale.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-Maximum zoom scale was: 0.33
-PASS successfullyParsed is true
-
-TEST COMPLETE
-

Deleted: trunk/LayoutTests/fast/viewport/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale.html (206625 => 206626)


--- trunk/LayoutTests/fast/viewport/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale.html	2016-09-30 00:15:27 UTC (rev 206625)
+++ trunk/LayoutTests/fast/viewport/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale.html	2016-09-30 00:38:18 UTC (rev 206626)
@@ -1,44 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<script src=""
-<meta name="viewport">
-<script id="ui-script" type="text/plain">
-    (function() {
-       uiController.uiScriptComplete(uiController.zoomScale);
-    })();
-</script></head>
-
-<body _onload_="runTest();">
-<p id="result">This test has to run in iOS WebKitTestRunner.</p>
-
-<input type="text" id="textfield">
-
-<p id="description"></p>
-<div id="console"></div>
-
-<script>
-    description("This tests that when the author does not define a scale or width, that zooming in on focused nodes changes the scale.");
-
-    if (window.testRunner) {
-        window.jsTestIsAsync = true;
-        testRunner.setIgnoresViewportScaleLimits(true);
-    }
-
-    function runTest()
-    {
-        if (testRunner.runUIScript) {
-            var uiScript = document.getElementById('ui-script').text;
-            testRunner.setIgnoresViewportScaleLimits(false);
-            document.getElementById("textfield").focus();
-            testRunner.runUIScript(document.getElementById('ui-script').text, function(result) {
-                debug("Maximum zoom scale was: " + Number(result).toFixed(2));
-                finishJSTest();
-            });
-        }
-    }
-</script>
-
-<script src=""
-</body>
-</html>

Modified: trunk/Source/WebCore/ChangeLog (206625 => 206626)


--- trunk/Source/WebCore/ChangeLog	2016-09-30 00:15:27 UTC (rev 206625)
+++ trunk/Source/WebCore/ChangeLog	2016-09-30 00:38:18 UTC (rev 206626)
@@ -1,3 +1,25 @@
+2016-09-29  Nan Wang  <n_w...@apple.com>
+
+        AX: iOS: Tapping <input> in Safari zooms in a bit when page has max scale = 1
+        https://bugs.webkit.org/show_bug.cgi?id=162471
+
+        Reviewed by Simon Fraser.
+
+        If the author has defined a maximum scale, we should honor that when keyboard focus moves
+        to a text field, instead of using the forceAlwaysUserScalableMaximumScale.
+
+        Tests: fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale.html
+               fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-user-scalable-no.html
+               fast/forms/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale.html
+
+        * page/ViewportConfiguration.cpp:
+        (WebCore::ViewportConfiguration::allowsUserScaling):
+        (WebCore::ViewportConfiguration::allowsUserScalingIgnoringAlwaysScalable):
+        (WebCore::ViewportConfiguration::allowsUserScalingIgnoringForceAlwaysScaling): Deleted.
+        * page/ViewportConfiguration.h:
+        (WebCore::ViewportConfiguration::maximumScaleIgnoringAlwaysScalable):
+        (WebCore::ViewportConfiguration::maximumScale): Deleted.
+
 2016-09-29  Alex Christensen  <achristen...@webkit.org>
 
         Fix syntax violation handling in IPv4 address parsing

Modified: trunk/Source/WebCore/page/ViewportConfiguration.cpp (206625 => 206626)


--- trunk/Source/WebCore/page/ViewportConfiguration.cpp	2016-09-30 00:15:27 UTC (rev 206625)
+++ trunk/Source/WebCore/page/ViewportConfiguration.cpp	2016-09-30 00:38:18 UTC (rev 206626)
@@ -209,10 +209,10 @@
 
 bool ViewportConfiguration::allowsUserScaling() const
 {
-    return m_forceAlwaysUserScalable || allowsUserScalingIgnoringForceAlwaysScaling();
+    return m_forceAlwaysUserScalable || allowsUserScalingIgnoringAlwaysScalable();
 }
     
-bool ViewportConfiguration::allowsUserScalingIgnoringForceAlwaysScaling() const
+bool ViewportConfiguration::allowsUserScalingIgnoringAlwaysScalable() const
 {
     return shouldIgnoreScalingConstraints() || m_configuration.allowsUserScaling;
 }

Modified: trunk/Source/WebCore/page/ViewportConfiguration.h (206625 => 206626)


--- trunk/Source/WebCore/page/ViewportConfiguration.h	2016-09-30 00:15:27 UTC (rev 206625)
+++ trunk/Source/WebCore/page/ViewportConfiguration.h	2016-09-30 00:38:18 UTC (rev 206626)
@@ -92,8 +92,9 @@
     WEBCORE_EXPORT double initialScaleIgnoringContentSize() const;
     WEBCORE_EXPORT double minimumScale() const;
     double maximumScale() const { return m_forceAlwaysUserScalable ? forceAlwaysUserScalableMaximumScale : m_configuration.maximumScale; }
+    double maximumScaleIgnoringAlwaysScalable() const { return m_configuration.maximumScale; }
     WEBCORE_EXPORT bool allowsUserScaling() const;
-    WEBCORE_EXPORT bool allowsUserScalingIgnoringForceAlwaysScaling() const;
+    WEBCORE_EXPORT bool allowsUserScalingIgnoringAlwaysScalable() const;
     bool allowsShrinkToFit() const;
 
     WEBCORE_EXPORT static Parameters webpageParameters();

Modified: trunk/Source/WebKit2/ChangeLog (206625 => 206626)


--- trunk/Source/WebKit2/ChangeLog	2016-09-30 00:15:27 UTC (rev 206625)
+++ trunk/Source/WebKit2/ChangeLog	2016-09-30 00:38:18 UTC (rev 206626)
@@ -1,3 +1,21 @@
+2016-09-29  Nan Wang  <n_w...@apple.com>
+
+        AX: iOS: Tapping <input> in Safari zooms in a bit when page has max scale = 1
+        https://bugs.webkit.org/show_bug.cgi?id=162471
+
+        Reviewed by Simon Fraser.
+
+        * Shared/AssistedNodeInformation.cpp:
+        (WebKit::AssistedNodeInformation::encode):
+        (WebKit::AssistedNodeInformation::decode):
+        * Shared/AssistedNodeInformation.h:
+        * UIProcess/ios/WKContentViewInteraction.mm:
+        (-[WKContentView _displayFormNodeInputView]):
+        * WebProcess/WebPage/WebPage.h:
+        * WebProcess/WebPage/ios/WebPageIOS.mm:
+        (WebKit::WebPage::maximumPageScaleFactorIgnoringAlwaysScalable):
+        (WebKit::WebPage::getAssistedNodeInformation):
+
 2016-09-29  Daniel Bates  <daba...@apple.com>
 
         Mark NetworkLoad as final

Modified: trunk/Source/WebKit2/Shared/AssistedNodeInformation.cpp (206625 => 206626)


--- trunk/Source/WebKit2/Shared/AssistedNodeInformation.cpp	2016-09-30 00:15:27 UTC (rev 206625)
+++ trunk/Source/WebKit2/Shared/AssistedNodeInformation.cpp	2016-09-30 00:38:18 UTC (rev 206626)
@@ -66,6 +66,7 @@
     encoder << selectionRect;
     encoder << minimumScaleFactor;
     encoder << maximumScaleFactor;
+    encoder << maximumScaleFactorIgnoringAlwaysScalable;
     encoder << nodeFontSize;
     encoder << hasNextNode;
     encoder << hasPreviousNode;
@@ -79,7 +80,7 @@
     encoder << isMultiSelect;
     encoder << isReadOnly;
     encoder << allowsUserScaling;
-    encoder << allowsUserScalingIgnoringForceAlwaysScaling;
+    encoder << allowsUserScalingIgnoringAlwaysScalable;
     encoder << insideFixedPosition;
     encoder << value;
     encoder << valueAsNumber;
@@ -100,6 +101,9 @@
 
     if (!decoder.decode(result.maximumScaleFactor))
         return false;
+    
+    if (!decoder.decode(result.maximumScaleFactorIgnoringAlwaysScalable))
+        return false;
 
     if (!decoder.decode(result.nodeFontSize))
         return false;
@@ -140,7 +144,7 @@
     if (!decoder.decode(result.allowsUserScaling))
         return false;
     
-    if (!decoder.decode(result.allowsUserScalingIgnoringForceAlwaysScaling))
+    if (!decoder.decode(result.allowsUserScalingIgnoringAlwaysScalable))
         return false;
 
     if (!decoder.decode(result.insideFixedPosition))

Modified: trunk/Source/WebKit2/Shared/AssistedNodeInformation.h (206625 => 206626)


--- trunk/Source/WebKit2/Shared/AssistedNodeInformation.h	2016-09-30 00:15:27 UTC (rev 206625)
+++ trunk/Source/WebKit2/Shared/AssistedNodeInformation.h	2016-09-30 00:38:18 UTC (rev 206626)
@@ -91,6 +91,7 @@
     WebCore::IntRect selectionRect;
     double minimumScaleFactor { -INFINITY };
     double maximumScaleFactor { INFINITY };
+    double maximumScaleFactorIgnoringAlwaysScalable { INFINITY };
     double nodeFontSize { 0 };
     bool hasNextNode { false };
     bool hasPreviousNode { false };
@@ -99,7 +100,7 @@
     bool isMultiSelect { false };
     bool isReadOnly {false };
     bool allowsUserScaling { false };
-    bool allowsUserScalingIgnoringForceAlwaysScaling { false };
+    bool allowsUserScalingIgnoringAlwaysScalable { false };
     bool insideFixedPosition { false };
     WebAutocapitalizeType autocapitalizeType { WebAutocapitalizeTypeDefault };
     InputType elementType { InputType::None };

Modified: trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm (206625 => 206626)


--- trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm	2016-09-30 00:15:27 UTC (rev 206625)
+++ trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm	2016-09-30 00:38:18 UTC (rev 206626)
@@ -1102,8 +1102,8 @@
              selectionRect: _didAccessoryTabInitiateFocus ? IntRect() : _assistedNodeInformation.selectionRect
                   fontSize:_assistedNodeInformation.nodeFontSize
               minimumScale:_assistedNodeInformation.minimumScaleFactor
-              maximumScale:_assistedNodeInformation.maximumScaleFactor
-              allowScaling:(_assistedNodeInformation.allowsUserScalingIgnoringForceAlwaysScaling && !UICurrentUserInterfaceIdiomIsPad())
+              maximumScale:_assistedNodeInformation.maximumScaleFactorIgnoringAlwaysScalable
+              allowScaling:(_assistedNodeInformation.allowsUserScalingIgnoringAlwaysScalable && !UICurrentUserInterfaceIdiomIsPad())
                forceScroll:[self requiresAccessoryView]];
 
     _didAccessoryTabInitiateFocus = NO;

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (206625 => 206626)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h	2016-09-30 00:15:27 UTC (rev 206625)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h	2016-09-30 00:38:18 UTC (rev 206626)
@@ -518,6 +518,7 @@
 
     double minimumPageScaleFactor() const;
     double maximumPageScaleFactor() const;
+    double maximumPageScaleFactorIgnoringAlwaysScalable() const;
     bool allowsUserScaling() const;
     bool hasStablePageScaleFactor() const { return m_hasStablePageScaleFactor; }
 

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


--- trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm	2016-09-30 00:15:27 UTC (rev 206625)
+++ trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm	2016-09-30 00:38:18 UTC (rev 206626)
@@ -327,6 +327,13 @@
     return m_viewportConfiguration.maximumScale();
 }
 
+double WebPage::maximumPageScaleFactorIgnoringAlwaysScalable() const
+{
+    if (!m_viewportConfiguration.allowsUserScalingIgnoringAlwaysScalable())
+        return m_page->pageScaleFactor();
+    return m_viewportConfiguration.maximumScaleIgnoringAlwaysScalable();
+}
+
 bool WebPage::allowsUserScaling() const
 {
     return m_viewportConfiguration.allowsUserScaling();
@@ -2543,8 +2550,9 @@
 
     information.minimumScaleFactor = minimumPageScaleFactor();
     information.maximumScaleFactor = maximumPageScaleFactor();
+    information.maximumScaleFactorIgnoringAlwaysScalable = maximumPageScaleFactorIgnoringAlwaysScalable();
     information.allowsUserScaling = m_viewportConfiguration.allowsUserScaling();
-    information.allowsUserScalingIgnoringForceAlwaysScaling = m_viewportConfiguration.allowsUserScalingIgnoringForceAlwaysScaling();
+    information.allowsUserScalingIgnoringAlwaysScalable = m_viewportConfiguration.allowsUserScalingIgnoringAlwaysScalable();
     information.hasNextNode = hasAssistableElement(m_assistedNode.get(), *m_page, true);
     information.hasPreviousNode = hasAssistableElement(m_assistedNode.get(), *m_page, false);
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to