12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- // Copyright (c) 2012 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 PRINTING_PRINT_DIALOG_LINUX_INTERFACE_H_
- #define PRINTING_PRINT_DIALOG_LINUX_INTERFACE_H_
- #include <memory>
- #include <string>
- #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<PrintSettings> 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_
|