[webkit-changes] [WebKit/WebKit] 55195d: [UnifiedPDF] Scrollbars don't show

Simon Fraser noreply at github.com
Wed Dec 20 08:38:18 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 55195d817a86c40943811d2e3dd5d3b7ca10c76c
      https://github.com/WebKit/WebKit/commit/55195d817a86c40943811d2e3dd5d3b7ca10c76c
  Author: Simon Fraser <simon.fraser at apple.com>
  Date:   2023-12-20 (Wed, 20 Dec 2023)

  Changed paths:
    M LayoutTests/compositing/plugins/pdf/pdf-scrolling-tree-dynamic-expected.txt
    M LayoutTests/compositing/plugins/pdf/pdf-scrolling-tree-dynamic.html
    M LayoutTests/compositing/plugins/pdf/pdf-scrolling-tree-expected.txt
    M LayoutTests/compositing/plugins/pdf/pdf-scrolling-tree.html
    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/Plugins/PluginView.cpp

  Log Message:
  -----------
  [UnifiedPDF] Scrollbars don't show
https://bugs.webkit.org/show_bug.cgi?id=266644
rdar://119848161

Reviewed by Tim Horton.

Fix the UnifiedPDFPlugin to display scrollbars. This involves:

1. Making layers for scrollbars, via `layerForVerticalScrollbar()` and friends.
   Implement `viewRelativeVerticalScrollbarRect()` etc in the base class to share
   code related to scrollbar geometry. In the non-UI-side compositing configuration,
   those scrollbar layers are painted into via `UnifiedPDFPlugin::paintContents()`.

2. Make a m_overflowControlsContainer layer to host the overflow controls layers,
   which makes it easier to ensure that scrollbars are always above the content.

3. `UnifiedPDFPlugin::updateLayout()` takes scrollbars into account when
   doing layout, potentially doing two passes when they change as a result of layout.

4. Respond to changes between overlay and legacy scrollbars. This is handled
   by `UnifiedPDFPlugin::scrollbarStyleChanged()` which just updates layout,
   since scrollbars an affect the available space for the PDF content.

* LayoutTests/compositing/plugins/pdf/pdf-in-embed-expected.txt:
* LayoutTests/compositing/plugins/pdf/pdf-scrolling-tree-dynamic-expected.txt:
* LayoutTests/compositing/plugins/pdf/pdf-scrolling-tree-dynamic.html: The embed has to be small enough to trigger scrolling.
* LayoutTests/compositing/plugins/pdf/pdf-scrolling-tree-expected.txt:
* LayoutTests/compositing/plugins/pdf/pdf-scrolling-tree.html: The embed has to be small enough to trigger scrolling.
* Source/WebKit/WebProcess/Plugins/PDF/PDFPluginBase.h:
* Source/WebKit/WebProcess/Plugins/PDF/PDFPluginBase.mm:
(WebKit::PDFPluginBase::viewRelativeVerticalScrollbarRect const):
(WebKit::PDFPluginBase::viewRelativeHorizontalScrollbarRect const):
(WebKit::PDFPluginBase::viewRelativeScrollCornerRect const):
(WebKit::PDFPluginBase::updateScrollbars):
* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.h:
* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.mm:
(WebKit::UnifiedPDFPlugin::ensureLayers):
(WebKit::UnifiedPDFPlugin::updateLayerHierarchy):
(WebKit::UnifiedPDFPlugin::didChangeSettings):
(WebKit::UnifiedPDFPlugin::paintContents):
(WebKit::UnifiedPDFPlugin::availableContentsRect const):
(WebKit::UnifiedPDFPlugin::updateLayout):
(WebKit::UnifiedPDFPlugin::updateOverflowControlsLayers):
(WebKit::UnifiedPDFPlugin::positionOverflowControlsLayers):
(WebKit::UnifiedPDFPlugin::invalidateScrollbarRect):
(WebKit::UnifiedPDFPlugin::invalidateScrollCornerRect):
(WebKit::UnifiedPDFPlugin::layerForHorizontalScrollbar const):
(WebKit::UnifiedPDFPlugin::layerForVerticalScrollbar const):
(WebKit::UnifiedPDFPlugin::layerForScrollCorner const):
(WebKit::UnifiedPDFPlugin::scrollingMode const):
(WebKit::UnifiedPDFPlugin::scrollbarStyleChanged):
(WebKit::UnifiedPDFPlugin::updateScrollbars):
(WebKit::UnifiedPDFPlugin::updateScrollingExtents):
* Source/WebKit/WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::horizontalScrollbar):
(WebKit::PluginView::verticalScrollbar):

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




More information about the webkit-changes mailing list