// Copyright 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef ANDROID_WEBVIEW_BROWSER_AW_PRINT_MANAGER_H_ #define ANDROID_WEBVIEW_BROWSER_AW_PRINT_MANAGER_H_ #include #include "components/printing/browser/print_manager.h" #include "components/printing/common/print.mojom-forward.h" #include "content/public/browser/web_contents_user_data.h" #include "printing/print_settings.h" namespace android_webview { class AwPrintManager : public printing::PrintManager, public content::WebContentsUserData { public: AwPrintManager(const AwPrintManager&) = delete; AwPrintManager& operator=(const AwPrintManager&) = delete; ~AwPrintManager() override; static void BindPrintManagerHost( mojo::PendingAssociatedReceiver receiver, content::RenderFrameHost* rfh); // printing::PrintManager: void PdfWritingDone(int page_count) override; bool PrintNow(); // Updates the parameters for printing. void UpdateParam(std::unique_ptr settings, int file_descriptor, PdfWritingDoneCallback callback); private: friend class content::WebContentsUserData; explicit AwPrintManager(content::WebContents* contents); // mojom::PrintManagerHost: void DidPrintDocument(printing::mojom::DidPrintDocumentParamsPtr params, DidPrintDocumentCallback callback) override; void GetDefaultPrintSettings( GetDefaultPrintSettingsCallback callback) override; void ScriptedPrint(printing::mojom::ScriptedPrintParamsPtr params, ScriptedPrintCallback callback) override; static void OnDidPrintDocumentWritingDone( const PdfWritingDoneCallback& callback, DidPrintDocumentCallback did_print_document_cb, uint32_t page_count); std::unique_ptr settings_; // The file descriptor into which the PDF of the document will be written. int fd_ = -1; WEB_CONTENTS_USER_DATA_KEY_DECL(); }; } // namespace android_webview #endif // ANDROID_WEBVIEW_BROWSER_AW_PRINT_MANAGER_H_