// Copyright 2024 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_PDF_RENDERER_PDF_OCR_HELPER_H_ #define COMPONENTS_PDF_RENDERER_PDF_OCR_HELPER_H_ #include <vector> #include "base/containers/queue.h" #include "base/memory/weak_ptr.h" #include "base/sequence_checker.h" #include "content/public/renderer/render_frame_observer.h" #include "mojo/public/cpp/bindings/remote.h" #include "pdf/accessibility_structs.h" #include "services/screen_ai/public/mojom/screen_ai_service.mojom.h" #include "ui/accessibility/ax_node_id_forward.h" #include "ui/accessibility/ax_tree_update.h" namespace chrome_pdf { class PdfAccessibilityImageFetcher; } // namespace chrome_pdf namespace content { class RenderFrame; } // namespace content namespace pdf { // These values are persisted to logs. Entries should not be renumbered and // numeric values should never be reused. // LINT.IfChange(PdfOcrRequestStatus) enum class PdfOcrRequestStatus { … }; // LINT.ThenChange(/tools/metrics/histograms/metadata/accessibility/enums.xml:PdfOcrRequestStatus) // Used for storing OCR requests either before performing an OCR job, or after // the results have been received. This is for scheduling the work in another // task in batches in order to unblock the user from reading a partially // OCRed PDF, and in order to avoid sending all the images to the OCR Helper // at once, in case the PDF is closed halfway through the OCR process. struct PdfOcrRequest { … }; // Manages the connection to the OCR Service via Mojo, and ensures that // requests are sent in order and that responses are batched. class PdfOcrHelper : public content::RenderFrameObserver { … }; } // namespace pdf #endif // COMPONENTS_PDF_RENDERER_PDF_OCR_HELPER_H_