1 // Copyright 2014 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef PRINTING_PRINTING_CONTEXT_LINUX_H_
6 #define PRINTING_PRINTING_CONTEXT_LINUX_H_
11 #include "base/memory/raw_ptr.h"
12 #include "printing/mojom/print.mojom.h"
13 #include "printing/printing_context.h"
18 class PrintDialogLinuxInterface;
20 // PrintingContext with optional native UI for print dialog and pdf_paper_size.
21 class COMPONENT_EXPORT(PRINTING) PrintingContextLinux : public PrintingContext {
23 explicit PrintingContextLinux(Delegate* delegate);
24 PrintingContextLinux(const PrintingContextLinux&) = delete;
25 PrintingContextLinux& operator=(const PrintingContextLinux&) = delete;
26 ~PrintingContextLinux() override;
28 // Initializes with predefined settings.
29 void InitWithSettings(std::unique_ptr<PrintSettings> settings);
31 // PrintingContext implementation.
32 void AskUserForSettings(int max_pages,
35 PrintSettingsCallback callback) override;
36 gfx::Size GetPdfPaperSizeDeviceUnits() override;
37 mojom::ResultCode UseDefaultSettings() override;
38 mojom::ResultCode UpdatePrinterSettings(
39 const PrinterSettings& printer_settings) override;
40 mojom::ResultCode NewDocument(const std::u16string& document_name) override;
41 mojom::ResultCode PrintDocument(const MetafilePlayer& metafile,
42 const PrintSettings& settings,
43 uint32_t num_pages) override;
44 mojom::ResultCode DocumentDone() override;
45 void Cancel() override;
46 void ReleaseContext() override;
47 printing::NativeDrawingContext context() const override;
50 std::u16string document_name_;
51 raw_ptr<PrintDialogLinuxInterface> print_dialog_;
54 } // namespace printing
56 #endif // PRINTING_PRINTING_CONTEXT_LINUX_H_