[webkit-changes] [WebKit/WebKit] 8992ea: [UnifiedPDF][iOS] PDF sometimes appears zoomed in ...

Sammy Gill noreply at github.com
Wed Oct 16 10:26:18 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 8992eaa3fbdf4b0f158c5dfdf114d7437e8cb9a7
      https://github.com/WebKit/WebKit/commit/8992eaa3fbdf4b0f158c5dfdf114d7437e8cb9a7
  Author: Sammy Gill <sammy.gill at apple.com>
  Date:   2024-10-16 (Wed, 16 Oct 2024)

  Changed paths:
    M Source/WebKit/WebProcess/Plugins/PluginView.cpp
    M Source/WebKit/WebProcess/WebPage/WebPage.h
    M Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm

  Log Message:
  -----------
  [UnifiedPDF][iOS] PDF sometimes appears zoomed in and at wrong scroll position.
https://bugs.webkit.org/show_bug.cgi?id=281352
rdar://136502394

Reviewed by Abrar Rahman Protyasha.

Every now and then when a PDF is loaded, it may appear at the wrong scale (zoomed in) and
also at the wrong scroll position (top left). In 284976 at main, we attempted to address this
by creating a plugin-specific viewport configuration as we were supplying incorrect
dimensions to the content, which was causing the plugin to be sized incorrectly. This
solved the problem for the most part, but on occasion, the plugin would still get sized
incorrectly.

This is due to the fact that the following two events could occur in any order under
certain circumstances:

- Setting the viewport configuration to the plugin-specific one
- The PDF being installed in the plugin, which results in us computing an initial scale based off the PDF geometry and plugin size

When the PDF is installed after the viewport configuration is set properly, then the
document loads and appears just fine. However, when the document is first installed, then
we compute a document-fitting scale based off the incorrect plugin size and do not recover
after the viewport configuration changes since we do not automatically adjust the
document-fitting scale by default.

To hopefully set the viewport configuration before the PluginView is created and the plugin
is initialized, let's make 2 changes:

1.) Stop trying to change the configuration after the plugin has been initialized. It is
possible that the document was installed, and we could have computed a scale using incorrect
geometry, so this is too late.
2.) In WebPage::resetViewportDefaultConfiguration, check to see if the document is a
PluginDocument instead of whether a main frame plugin exists. When the web page is notified
that the load has been committed and it resets the viewport default configuration, we
should be able to take advantage of the fact that we should have a PluginDocument at this
point.

* Source/WebKit/WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::setParent):
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::resetViewportDefaultConfiguration):
(WebKit::WebPage::didInitializePlugin): Deleted.

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



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list