network_detailed_view_controller.h 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. // Copyright 2022 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef ASH_SYSTEM_NETWORK_NETWORK_DETAILED_VIEW_CONTROLLER_H_
  5. #define ASH_SYSTEM_NETWORK_NETWORK_DETAILED_VIEW_CONTROLLER_H_
  6. #include <memory>
  7. #include <string>
  8. #include "ash/ash_export.h"
  9. #include "ash/public/cpp/bluetooth_config_service.h"
  10. #include "ash/system/network/network_detailed_network_view.h"
  11. #include "ash/system/network/network_detailed_view.h"
  12. #include "ash/system/network/network_list_view_controller.h"
  13. #include "ash/system/tray/detailed_view_delegate.h"
  14. #include "ash/system/unified/detailed_view_controller.h"
  15. #include "chromeos/services/bluetooth_config/public/mojom/cros_bluetooth_config.mojom.h"
  16. #include "chromeos/services/network_config/public/mojom/cros_network_config.mojom.h"
  17. #include "mojo/public/cpp/bindings/receiver.h"
  18. #include "mojo/public/cpp/bindings/remote.h"
  19. namespace views {
  20. class View;
  21. } // namespace views
  22. namespace ash {
  23. // This class encapsulates the logic to update the detailed Network device
  24. // page within the quick settings and translate user interaction with the
  25. // detailed view into Network state changes.
  26. class ASH_EXPORT NetworkDetailedViewController
  27. : public DetailedViewController,
  28. public NetworkDetailedNetworkView::Delegate,
  29. public chromeos::bluetooth_config::mojom::SystemPropertiesObserver {
  30. public:
  31. explicit NetworkDetailedViewController(
  32. UnifiedSystemTrayController* tray_controller);
  33. NetworkDetailedViewController(const NetworkDetailedViewController&) = delete;
  34. NetworkDetailedViewController& operator=(
  35. const NetworkDetailedViewController&) = delete;
  36. ~NetworkDetailedViewController() override;
  37. // DetailedViewControllerBase:
  38. views::View* CreateView() override;
  39. std::u16string GetAccessibleName() const override;
  40. private:
  41. // NetworkDetailedView::Delegate:
  42. void OnNetworkListItemSelected(
  43. const chromeos::network_config::mojom::NetworkStatePropertiesPtr& network)
  44. override;
  45. // NetworkDetailedNetworkView::Delegate:
  46. void OnMobileToggleClicked(bool new_state) override;
  47. void OnWifiToggleClicked(bool new_state) override;
  48. // chromeos::bluetooth_config::mojom::SystemPropertiesObserver:
  49. void OnPropertiesUpdated(
  50. chromeos::bluetooth_config::mojom::BluetoothSystemPropertiesPtr
  51. properties) override;
  52. TrayNetworkStateModel* const model_;
  53. const std::unique_ptr<DetailedViewDelegate> detailed_view_delegate_;
  54. bool waiting_to_initialize_bluetooth_ = false;
  55. mojo::Remote<chromeos::bluetooth_config::mojom::CrosBluetoothConfig>
  56. remote_cros_bluetooth_config_;
  57. mojo::Receiver<chromeos::bluetooth_config::mojom::SystemPropertiesObserver>
  58. cros_system_properties_observer_receiver_{this};
  59. chromeos::bluetooth_config::mojom::BluetoothSystemState
  60. bluetooth_system_state_ =
  61. chromeos::bluetooth_config::mojom::BluetoothSystemState::kUnavailable;
  62. NetworkDetailedNetworkView* network_detailed_view_ = nullptr;
  63. std::unique_ptr<NetworkListViewController> network_list_view_controller_;
  64. };
  65. } // namespace ash
  66. #endif // ASH_SYSTEM_NETWORK_NETWORK_DETAILED_VIEW_CONTROLLER_H_