// Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef PRINTING_PRINT_DIALOG_LINUX_INTERFACE_H_ #define PRINTING_PRINT_DIALOG_LINUX_INTERFACE_H_ #include #include #include "printing/printing_context_linux.h" #include "ui/gfx/native_widget_types.h" namespace printing { class MetafilePlayer; class PrintSettings; // An interface for Linux printing dialogs. Classes that live outside of // printing/ can implement this interface and get threading requirements // correct without exposing those requirements to printing/. class PrintDialogLinuxInterface { public: // Tell the dialog to use the default print setting. virtual void UseDefaultSettings() = 0; // Updates the dialog to use `settings`. Only used when printing without the // system print dialog. E.g. for Print Preview. virtual void UpdateSettings(std::unique_ptr settings) = 0; // Shows the dialog and handles the response with `callback`. Only used when // printing with the native print dialog. virtual void ShowDialog( gfx::NativeView parent_view, bool has_selection, PrintingContextLinux::PrintSettingsCallback callback) = 0; // Prints the document named `document_name` contained in `metafile`. // Called from the print worker thread. Once called, the // PrintDialogLinuxInterface instance should not be reused. virtual void PrintDocument(const MetafilePlayer& metafile, const std::u16string& document_name) = 0; // Releases the caller's ownership of the PrintDialogLinuxInterface. When // called, the caller must not access the PrintDialogLinuxInterface // afterwards, and vice versa. virtual void ReleaseDialog() = 0; protected: virtual ~PrintDialogLinuxInterface() = default; }; } // namespace printing #endif // PRINTING_PRINT_DIALOG_LINUX_INTERFACE_H_