[webkit-changes] [WebKit/WebKit] cbf8b3: Unified PDF plugin contents do not scroll

Tim Horton noreply at github.com
Tue Nov 7 16:13:58 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: cbf8b324d90f14ca4483446c751202a6e40b86a8
      https://github.com/WebKit/WebKit/commit/cbf8b324d90f14ca4483446c751202a6e40b86a8
  Author: Tim Horton <timothy_horton at apple.com>
  Date:   2023-11-07 (Tue, 07 Nov 2023)

  Changed paths:
    M Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.h
    M Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm
    M Source/WebKit/WebProcess/Plugins/PDF/PDFPluginBase.h
    M Source/WebKit/WebProcess/Plugins/PDF/PDFPluginBase.mm
    M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.h
    M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.mm
    M Source/WebKit/WebProcess/WebPage/WebFrame.cpp
    M Source/WebKit/WebProcess/WebPage/WebFrame.h

  Log Message:
  -----------
  Unified PDF plugin contents do not scroll
https://bugs.webkit.org/show_bug.cgi?id=264359

Reviewed by Simon Fraser.

Hoist PDFPlugin ScrollableArea implementation to PDFPluginBase.

* Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.h:
* Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:
(WebKit::PDFPlugin::installPDFDocument):
(WebKit::PDFPlugin::attemptToUnlockPDF):
(WebKit::PDFPlugin::isLocked const):
(WebKit::PDFPlugin::handleMouseEvent):
(WebKit::PDFPlugin::snapshot):
Add and adopt isLocked().

(WebKit::PDFPlugin::contentsSize const):
(WebKit::PDFPlugin::firstPageHeight const):
Add methods to pull the contents and first page sizes instead of depending
on recomputing them at various times.

(WebKit::PDFPlugin::geometryDidChange):
(WebKit::PDFPlugin::updatePDFHUDLocation):
Rename calculateSizes() to updatePDFHUDLocation() since that's the last thing it does.

(WebKit::PDFPlugin::didChangeScrollOffset):
(WebKit::PDFPlugin::notifyContentScaleFactorChanged):
(WebKit::PDFPlugin::notifyDisplayModeChanged):
(WebKit::PDFPlugin::convertFromScrollbarToContainingView const): Deleted.
(WebKit::PDFPlugin::convertFromContainingViewToScrollbar const): Deleted.
(WebKit::PDFPlugin::debugDescription const): Deleted.
(WebKit::PDFPlugin::scrollCornerRect const): Deleted.
(WebKit::PDFPlugin::enclosingScrollableArea const): Deleted.
(WebKit::PDFPlugin::scrollableAreaBoundingBox const): Deleted.
(WebKit::PDFPlugin::isActive const): Deleted.
(WebKit::PDFPlugin::forceUpdateScrollbarsOnMainThreadForPerformanceTesting const): Deleted.
(WebKit::PDFPlugin::scrollPosition const): Deleted.
(WebKit::PDFPlugin::minimumScrollPosition const): Deleted.
(WebKit::PDFPlugin::maximumScrollPosition const): Deleted.
(WebKit::PDFPlugin::scrollbarStyleChanged): Deleted.
(WebKit::PDFPlugin::deviceScaleFactor const): Deleted.
(WebKit::PDFPlugin::calculateSizes): Deleted.
(WebKit::PDFPlugin::willDetachRenderer): Deleted.
(WebKit::PDFPlugin::updateControlTints): Deleted.
(WebKit::PDFPlugin::setScrollOffset): Deleted.
Move ScrollableArea implementation to PDFPluginBase.

(WebKit::PDFPlugin::updateScrollbars):
(WebKit::PDFPlugin::createScrollbar):
(WebKit::PDFPlugin::destroyScrollbar):
Keep scrollbar *layer* code in PDFPlugin.

* Source/WebKit/WebProcess/Plugins/PDF/PDFPluginBase.h:
(WebKit::PDFPluginBase::scrollPositionForTesting const):
(WebKit::PDFPluginBase::willDetachRenderer): Deleted.
(WebKit::PDFPluginBase::updateControlTints): Deleted.

(WebKit::PDFPluginBase::wantsWheelEvents const):
Turn on wantsWheelEvents, since both subclasses do.

* Source/WebKit/WebProcess/Plugins/PDF/PDFPluginBase.mm:
(WebKit::PDFPluginBase::updateControlTints):
(WebKit::PDFPluginBase::scrollCornerRect const):
(WebKit::PDFPluginBase::enclosingScrollableArea const):
(WebKit::PDFPluginBase::scrollableAreaBoundingBox const):
(WebKit::PDFPluginBase::setScrollOffset):
(WebKit::PDFPluginBase::isActive const):
(WebKit::PDFPluginBase::forceUpdateScrollbarsOnMainThreadForPerformanceTesting const):
(WebKit::PDFPluginBase::scrollPosition const):
(WebKit::PDFPluginBase::minimumScrollPosition const):
(WebKit::PDFPluginBase::maximumScrollPosition const):
(WebKit::PDFPluginBase::deviceScaleFactor const):
(WebKit::PDFPluginBase::scrollbarStyleChanged):
(WebKit::PDFPluginBase::convertFromScrollbarToContainingView const):
(WebKit::PDFPluginBase::convertFromContainingViewToScrollbar const):
(WebKit::PDFPluginBase::debugDescription const):
(WebKit::PDFPluginBase::willDetachRenderer):
(WebKit::PDFPluginBase::updateScrollbars):
(WebKit::PDFPluginBase::createScrollbar):
(WebKit::PDFPluginBase::destroyScrollbar):
Hoist ScrollableArea implementation to here from PDFPlugin.

* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.h:
* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.mm:
(WebKit::UnifiedPDFPlugin::installPDFDocument):
(WebKit::UnifiedPDFPlugin::geometryDidChange):
(WebKit::UnifiedPDFPlugin::updateLayout):
Fold updateLayout/updateLayerHierarchy into updateLayout(), and also update scrollbars from there.

(WebKit::UnifiedPDFPlugin::scheduleRenderingUpdate):
Added; triggers a layer flush.

(WebKit::UnifiedPDFPlugin::isLocked const):
(WebKit::UnifiedPDFPlugin::contentsSize const):
(WebKit::UnifiedPDFPlugin::firstPageHeight const):
Implement these new getters.

(WebKit::UnifiedPDFPlugin::didChangeScrollOffset):
Move the contents layer around (for now) when the scroll offset changes.

(WebKit::UnifiedPDFPlugin::invalidateScrollbarRect):
(WebKit::UnifiedPDFPlugin::invalidateScrollCornerRect):
For now, ignor scrollbar invalidation; we don't have scrollbar layers yet.

(WebKit::UnifiedPDFPlugin::handleWheelEvent):
Pass wheel events to ScrollableArea.

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




More information about the webkit-changes mailing list