From d2c55fa8047e36a86ee0ddbb472ee2928fada23e Mon Sep 17 00:00:00 2001 From: Anthony Tseng Date: Tue, 19 Mar 2024 11:06:04 -0700 Subject: [PATCH] Share kMaxPreviewPages between PreviewPageTextExtractor and PdfToBitmapConverter --- browser/ai_chat/ai_chat_ui_browsertest.cc | 3 ++- browser/ui/webui/ai_chat/ai_chat_ui_page_handler.cc | 2 +- components/ai_chat/content/browser/page_content_fetcher.cc | 2 +- components/ai_chat/core/browser/constants.h | 2 ++ services/printing/pdf_to_bitmap_converter.cc | 5 +++++ services/printing/pdf_to_bitmap_converter.h | 1 + services/printing/public/mojom/pdf_to_bitmap_converter.mojom | 5 +++-- 7 files changed, 15 insertions(+), 5 deletions(-) diff --git a/browser/ai_chat/ai_chat_ui_browsertest.cc b/browser/ai_chat/ai_chat_ui_browsertest.cc index 01e1f6f3526..dce6bffdcb7 100644 --- a/browser/ai_chat/ai_chat_ui_browsertest.cc +++ b/browser/ai_chat/ai_chat_ui_browsertest.cc @@ -13,6 +13,7 @@ #include "brave/browser/ui/webui/ai_chat/ai_chat_ui.h" #include "brave/browser/ui/webui/ai_chat/ai_chat_ui_page_handler.h" #include "brave/components/ai_chat/content/browser/ai_chat_tab_helper.h" +#include "brave/components/ai_chat/core/browser/constants.h" #include "brave/components/constants/brave_paths.h" #include "brave/components/l10n/common/test/scoped_default_locale.h" #include "brave/components/text_recognition/common/buildflags/buildflags.h" @@ -191,7 +192,7 @@ IN_PROC_BROWSER_TEST_F(AIChatUIBrowserTest, PrintPreviewPagesLimit) { NavigateURL( https_server_.GetURL("docs.google.com", "/extra_long_canvas.html")); CreatePrintPreview(ai_chat_page_handler); - std::string expected_string(19, '\n'); + std::string expected_string(ai_chat::kMaxPreviewPages - 1, '\n'); base::StrAppend(&expected_string, {"This is the way."}); FetchPageContent(FROM_HERE, chat_tab_helper, expected_string); } diff --git a/browser/ui/webui/ai_chat/ai_chat_ui_page_handler.cc b/browser/ui/webui/ai_chat/ai_chat_ui_page_handler.cc index 0e99227581c..701cb156df7 100644 --- a/browser/ui/webui/ai_chat/ai_chat_ui_page_handler.cc +++ b/browser/ui/webui/ai_chat/ai_chat_ui_page_handler.cc @@ -524,7 +524,7 @@ void AIChatUIPageHandler::OnPreviewReady() { prefs->GetBoolean(::prefs::kPdfUseSkiaRendererEnabled)); } pdf_to_bitmap_converter_->GetBitmap( - std::move(pdf_region.region), + std::move(pdf_region.region), kMaxPreviewPages, base::BindOnce(&AIChatUIPageHandler::OnGetBitmaps, base::Unretained(this))); } diff --git a/components/ai_chat/content/browser/page_content_fetcher.cc b/components/ai_chat/content/browser/page_content_fetcher.cc index f7d0a3d506d..6e9a450517c 100644 --- a/components/ai_chat/content/browser/page_content_fetcher.cc +++ b/components/ai_chat/content/browser/page_content_fetcher.cc @@ -21,6 +21,7 @@ #include "base/task/bind_post_task.h" #include "base/task/single_thread_task_runner.h" #include "base/task/thread_pool.h" +#include "brave/components/ai_chat/core/browser/constants.h" #include "brave/components/ai_chat/core/common/mojom/page_content_extractor.mojom.h" #include "brave/components/l10n/common/locale_util.h" #include "brave/components/text_recognition/common/buildflags/buildflags.h" @@ -57,7 +58,6 @@ constexpr auto kScreenshotRetrievalHosts = { "twitter.com", }); -constexpr size_t kMaxPreviewPages = 20; #endif constexpr auto kVideoPageContentTypes = diff --git a/components/ai_chat/core/browser/constants.h b/components/ai_chat/core/browser/constants.h index 955c6d1323e..6cca9a13a87 100644 --- a/components/ai_chat/core/browser/constants.h +++ b/components/ai_chat/core/browser/constants.h @@ -17,6 +17,8 @@ base::span GetLocalizedStrings(); extern const base::fixed_flat_set kPrintPreviewRetrievalHosts; +constexpr uint8_t kMaxPreviewPages = 20; + } // namespace ai_chat #endif // BRAVE_COMPONENTS_AI_CHAT_CORE_BROWSER_CONSTANTS_H_ diff --git a/services/printing/pdf_to_bitmap_converter.cc b/services/printing/pdf_to_bitmap_converter.cc index f4c52cc3815..cec19338ab8 100644 --- a/services/printing/pdf_to_bitmap_converter.cc +++ b/services/printing/pdf_to_bitmap_converter.cc @@ -22,6 +22,7 @@ PdfToBitmapConverter::~PdfToBitmapConverter() = default; void PdfToBitmapConverter::GetBitmap( base::ReadOnlySharedMemoryRegion pdf_region, + std::optional max_pages, GetBitmapCallback callback) { // Decode memory region as PDF bytes. base::ReadOnlySharedMemoryMapping pdf_map = pdf_region.Map(); @@ -39,6 +40,10 @@ void PdfToBitmapConverter::GetBitmap( return; } + if (max_pages.has_value() && *max_pages < page_count) { + page_count = *max_pages; + } + std::vector bitmaps; for (int page_index = 0; page_index < page_count; page_index++) { std::optional page_size = diff --git a/services/printing/pdf_to_bitmap_converter.h b/services/printing/pdf_to_bitmap_converter.h index 1defe042bb5..4fea65585dc 100644 --- a/services/printing/pdf_to_bitmap_converter.h +++ b/services/printing/pdf_to_bitmap_converter.h @@ -23,6 +23,7 @@ class PdfToBitmapConverter : public printing::mojom::PdfToBitmapConverter { // printing::mojom::PdfToBitmapConverter: void GetBitmap(base::ReadOnlySharedMemoryRegion pdf_region, + std::optional max_pages, GetBitmapCallback callback) override; void SetUseSkiaRendererPolicy(bool use_skia) override; diff --git a/services/printing/public/mojom/pdf_to_bitmap_converter.mojom b/services/printing/public/mojom/pdf_to_bitmap_converter.mojom index e9c01372c3c..e6b2912b707 100644 --- a/services/printing/public/mojom/pdf_to_bitmap_converter.mojom +++ b/services/printing/public/mojom/pdf_to_bitmap_converter.mojom @@ -10,8 +10,9 @@ import "skia/public/mojom/bitmap.mojom"; import "ui/gfx/geometry/mojom/geometry.mojom"; interface PdfToBitmapConverter { - GetBitmap(mojo_base.mojom.ReadOnlySharedMemoryRegion pdf_region) - => (array? bitmap); + // If max_pages is provided, the converter will process at most max_pages + GetBitmap(mojo_base.mojom.ReadOnlySharedMemoryRegion pdf_region, + uint8? max_pages) => (array? bitmap); // Sets the status for enterprise policy `kPdfUseSkiaRendererEnabled`. It // should be called immediately once `mojom::PdfToBitmapConverter` remote