1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- // Copyright 2021 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 ASH_SYSTEM_PCIE_PERIPHERAL_PCIE_PERIPHERAL_NOTIFICATION_CONTROLLER_H_
- #define ASH_SYSTEM_PCIE_PERIPHERAL_PCIE_PERIPHERAL_NOTIFICATION_CONTROLLER_H_
- #include "ash/ash_export.h"
- #include "ash/components/peripheral_notification/peripheral_notification_manager.h"
- class PrefRegistrySimple;
- namespace message_center {
- class MessageCenter;
- } // namespace message_center
- namespace ash {
- // Manages showing notifications for Pciguard and TypeC daemon events.
- // We display a CRITICAL notification if a guest user is attempting to use a
- // Thunderbolt-only peripheral, which we prevent due to security risks with
- // direct memory accessing. Other WARNING notifications are used to inform users
- // that their peripherals may not be working due to data access protection
- // enabled in OS Settings.
- class ASH_EXPORT PciePeripheralNotificationController
- : public PeripheralNotificationManager::Observer {
- public:
- explicit PciePeripheralNotificationController(
- message_center::MessageCenter* message_center);
- PciePeripheralNotificationController(
- const PciePeripheralNotificationController&) = delete;
- PciePeripheralNotificationController& operator=(
- const PciePeripheralNotificationController&) = delete;
- ~PciePeripheralNotificationController() override;
- static void RegisterProfilePrefs(PrefRegistrySimple* registry);
- // Call when PeripheralNotificationManager is initialized so that this
- // class can start observering requests for notifications.
- void OnPeripheralNotificationManagerInitialized();
- // chromeos::PciePeripheral::Observer
- void OnLimitedPerformancePeripheralReceived() override;
- void OnGuestModeNotificationReceived(bool is_thunderbolt_only) override;
- void OnPeripheralBlockedReceived() override;
- void OnBillboardDeviceConnected() override;
- // Call to show a notification to indicate that the recently plugged in
- // Thunderbolt/USB4 peripheral performance is limited.
- void NotifyLimitedPerformance();
- // Call to show a notification to indicate to the Guest user of the current
- // state of their Thunderbolt/USB4 peripheral.
- void NotifyGuestModeNotification(bool is_thunderbolt_only);
- // Call to show a notification to indicate to the user that their
- // Thunderbolt/USB4 peripheral is not allowed due to security reasons.
- void NotifyPeripheralBlockedNotification();
- // Call to show a notification that a billboard device that was connected
- // is not supported by the board.
- void NotifyBillboardDevice();
- // Stubs from usb peripheral notification controller
- void OnInvalidDpCableWarning() override {}
- void OnInvalidUSB4ValidTBTCableWarning() override {}
- void OnInvalidUSB4CableWarning() override {}
- void OnInvalidTBTCableWarning() override {}
- void OnSpeedLimitingCableWarning() override {}
- private:
- friend class PciePeripheralNotificationControllerTest;
- // MessageCenter for adding notifications.
- message_center::MessageCenter* const message_center_;
- };
- } // namespace ash
- #endif // ASH_SYSTEM_PCIE_PERIPHERAL_PCIE_PERIPHERAL_NOTIFICATION_CONTROLLER_H_
|