From 2b2a4b0b170906dde32fa34c0505d6ec0a1fd403 Mon Sep 17 00:00:00 2001 From: Sammy Gill Date: Tue, 29 Oct 2024 06:23:42 -0700 Subject: [PATCH] [UnifiedPDF] PDFDocumentLayout::indexForPage should use equivalent PDFKit API. https://bugs.webkit.org/show_bug.cgi?id=282219 rdar://138139244 Reviewed by Aditya Keerthi. After some discussion it turns out that we should not have our own indexForPage implementation on top of other PDFKit APIs and instead we should just unconditionally adopt the equivalent API provided by PDFKit. This was causing some issues with find in certain PDFs and using [PDFDocument indexForPage] resolves these issues. * Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/PDFDocumentLayout.mm: (WebKit::PDFDocumentLayout::indexForPage const): Canonical link: https://commits.webkit.org/285823@main --- .../Plugins/PDF/UnifiedPDF/PDFDocumentLayout.mm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/PDFDocumentLayout.mm b/Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/PDFDocumentLayout.mm index a82a0b68ccb05..b0d3257b59b0a 100644 --- a/Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/PDFDocumentLayout.mm +++ b/Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/PDFDocumentLayout.mm @@ -81,11 +81,11 @@ auto PDFDocumentLayout::indexForPage(RetainPtr page) const -> std::optional { - for (PageIndex pageIndex = 0; pageIndex < [m_pdfDocument pageCount]; ++pageIndex) { - if (page == [m_pdfDocument pageAtIndex:pageIndex]) - return pageIndex; - } - return std::nullopt; + + auto pageIndex = [m_pdfDocument indexForPage:page.get()]; + if (pageIndex == NSNotFound) + return { }; + return pageIndex; } PDFDocumentLayout::PageIndex PDFDocumentLayout::nearestPageIndexForDocumentPoint(FloatPoint documentSpacePoint, const std::optional& visibleRow) const