Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 36ed6c6840cc6882c1b4cb1dd5cc1c283757a597
      
https://github.com/WebKit/WebKit/commit/36ed6c6840cc6882c1b4cb1dd5cc1c283757a597
  Author: Wenson Hsieh <[email protected]>
  Date:   2022-11-08 (Tue, 08 Nov 2022)

  Changed paths:
    A 
LayoutTests/fast/viewport/ios/adjust-fixed-width-and-initial-scale-to-avoid-excessive-zooming-expected.txt
    A 
LayoutTests/fast/viewport/ios/adjust-fixed-width-and-initial-scale-to-avoid-excessive-zooming.html
    M Source/WebCore/page/ViewportConfiguration.cpp
    M Source/WebCore/page/ViewportConfiguration.h
    M Source/WebKit/WebProcess/WebPage/WebPage.cpp

  Log Message:
  -----------
  [iPadOS] Wikipedia pages are excessively zoomed in when viewed in an external 
display
https://bugs.webkit.org/show_bug.cgi?id=247636
rdar://99448942

Reviewed by Tim Horton.

When loading Wikipedia articles in an external display connected to iPad, the 
page dynamically sets
the meta viewport content string to `width=1000, initial-scale=3.6` (where the 
initial scale depends
on how wide the display is — in this example, 3600px wide). This leads to the 
contents of the
article being excessively zoomed, and difficult to read.

To mitigate this, we add a viewport sizing heuristic to cap the maximum initial 
scale of the page to
a much more reasonable value (somewhat arbitrarily chosen to be 1.2) in the 
case where both the
initial scale and viewport width are explicitly set. To keep this fixed-width 
viewport consistent
with the new initial scale, we also adjust the explicitly-specified viewport 
width as needed.

In the above example, this would turn the `width=1000, initial-scale=3.6` 
viewport specified by
Wikipedia into a `width=3000, initial-scale=1.2` viewport on an external 
display.

Test: 
fast/viewport/ios/adjust-fixed-width-and-initial-scale-to-avoid-excessive-zooming.html

* Source/WebCore/page/ViewportConfiguration.cpp:
(WebCore::viewportArgumentValueIsValid):
(WebCore::adjustViewportArgumentsToAvoidExcessiveZooming):
(WebCore::ViewportConfiguration::setViewportArguments):

Adjust viewport arguments after setting them, if needed.

(WebCore::ViewportConfiguration::description const):
* Source/WebCore/page/ViewportConfiguration.h:

Add the new policy bit.

(WebCore::ViewportConfiguration::setCanIgnoreViewportArgumentsToAvoidExcessiveZoom):
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::didCommitLoad):
(WebKit::WebPage::updateWebsitePolicies):

Set the above policy bit in the case where we're loading desktop-class content.

Canonical link: https://commits.webkit.org/256476@main


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to