| // Copyright 2019 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_ASH_PRINTING_USB_PRINTER_NOTIFICATION_CONTROLLER_H_ |
| #define CHROME_BROWSER_ASH_PRINTING_USB_PRINTER_NOTIFICATION_CONTROLLER_H_ |
| |
| #include <map> |
| #include <memory> |
| #include <string> |
| #include <vector> |
| |
| #include "chrome/browser/ash/printing/usb_printer_notification.h" |
| |
| class Profile; |
| |
| namespace chromeos { |
| class Printer; |
| } // namespace chromeos |
| |
| namespace ash { |
| |
| class UsbPrinterNotificationController { |
| public: |
| static std::unique_ptr<UsbPrinterNotificationController> Create( |
| Profile* profile); |
| |
| UsbPrinterNotificationController(const UsbPrinterNotificationController&) = |
| delete; |
| UsbPrinterNotificationController& operator=( |
| const UsbPrinterNotificationController&) = delete; |
| |
| virtual ~UsbPrinterNotificationController() = default; |
| |
| // Creates a notification for an ephemeral printer. This is a no-op if there |
| // is already an existing notification for |printer|. |
| virtual void ShowEphemeralNotification(const chromeos::Printer& printer) = 0; |
| |
| // Creates a notification for a saved printer. This is a no-op if there |
| // is already an existing notification for |printer|. |
| virtual void ShowSavedNotification(const chromeos::Printer& printer) = 0; |
| |
| // Creates a notification for a printer that needs configuration. This is a |
| // no-op if there is already an existing notification for |printer|. |
| virtual void ShowConfigurationNotification( |
| const chromeos::Printer& printer) = 0; |
| |
| // Closes the notification for |printer_id|. This is a no-op if the |
| // notification has already been closed by the user. |
| virtual void RemoveNotification(const std::string& printer_id) = 0; |
| |
| // Returns true if there is an existing notification for |printer_id|. |
| virtual bool IsNotificationDisplayed(const std::string& printer_id) const = 0; |
| |
| protected: |
| UsbPrinterNotificationController() = default; |
| }; |
| |
| } // namespace ash |
| |
| #endif // CHROME_BROWSER_ASH_PRINTING_USB_PRINTER_NOTIFICATION_CONTROLLER_H_ |