// Copyright 2015 The Chromium Authors
// 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 <memory>
#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 {
// Lifetime: WebView
class AwPrintManager : public printing::PrintManager,
public content::WebContentsUserData<AwPrintManager> {
public:
AwPrintManager(const AwPrintManager&) = delete;
AwPrintManager& operator=(const AwPrintManager&) = delete;
~AwPrintManager() override;
static void BindPrintManagerHost(
mojo::PendingAssociatedReceiver<printing::mojom::PrintManagerHost>
receiver,
content::RenderFrameHost* rfh);
// printing::PrintManager:
void PdfWritingDone(int page_count) override;
bool PrintNow();
// Updates the parameters for printing.
void UpdateParam(std::unique_ptr<printing::PrintSettings> settings,
int file_descriptor,
PdfWritingDoneCallback callback);
private:
friend class content::WebContentsUserData<AwPrintManager>;
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<printing::PrintSettings> 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_