| // Copyright 2014 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_EXTENSIONS_SYSTEM_DISPLAY_DISPLAY_INFO_PROVIDER_CHROMEOS_H_ |
| #define CHROME_BROWSER_EXTENSIONS_SYSTEM_DISPLAY_DISPLAY_INFO_PROVIDER_CHROMEOS_H_ |
| |
| #include <map> |
| #include <memory> |
| |
| #include "base/memory/weak_ptr.h" |
| #include "chromeos/crosapi/mojom/cros_display_config.mojom.h" |
| #include "extensions/browser/display_info_provider_base.h" |
| #include "mojo/public/cpp/bindings/associated_receiver.h" |
| #include "mojo/public/cpp/bindings/pending_remote.h" |
| #include "mojo/public/cpp/bindings/remote.h" |
| |
| namespace extensions { |
| |
| class DisplayInfoProviderChromeOS |
| : public DisplayInfoProviderBase, |
| public crosapi::mojom::CrosDisplayConfigObserver { |
| public: |
| explicit DisplayInfoProviderChromeOS( |
| mojo::PendingRemote<crosapi::mojom::CrosDisplayConfigController> |
| display_config); |
| |
| DisplayInfoProviderChromeOS(const DisplayInfoProviderChromeOS&) = delete; |
| DisplayInfoProviderChromeOS& operator=(const DisplayInfoProviderChromeOS&) = |
| delete; |
| |
| ~DisplayInfoProviderChromeOS() override; |
| |
| // DisplayInfoProvider implementation. |
| void SetDisplayProperties( |
| const std::string& display_id, |
| const api::system_display::DisplayProperties& properties, |
| ErrorCallback callback) override; |
| void SetDisplayLayout(const DisplayLayoutList& layouts, |
| ErrorCallback callback) override; |
| void EnableUnifiedDesktop(bool enable) override; |
| void GetAllDisplaysInfo( |
| bool single_unified, |
| base::OnceCallback<void(DisplayUnitInfoList result)> callback) override; |
| void GetDisplayLayout( |
| base::OnceCallback<void(DisplayLayoutList result)> callback) override; |
| bool OverscanCalibrationStart(const std::string& id) override; |
| bool OverscanCalibrationAdjust( |
| const std::string& id, |
| const api::system_display::Insets& delta) override; |
| bool OverscanCalibrationReset(const std::string& id) override; |
| bool OverscanCalibrationComplete(const std::string& id) override; |
| void ShowNativeTouchCalibration(const std::string& id, |
| ErrorCallback callback) override; |
| bool StartCustomTouchCalibration(const std::string& id) override; |
| bool CompleteCustomTouchCalibration( |
| const api::system_display::TouchCalibrationPairQuad& pairs, |
| const api::system_display::Bounds& bounds) override; |
| bool ClearTouchCalibration(const std::string& id) override; |
| void SetMirrorMode(const api::system_display::MirrorModeInfo& info, |
| ErrorCallback callback) override; |
| void StartObserving() override; |
| void StopObserving() override; |
| |
| // crosapi::mojom::CrosDisplayConfigObserver |
| void OnDisplayConfigChanged() override; |
| |
| private: |
| void CallSetDisplayLayoutInfo( |
| crosapi::mojom::DisplayLayoutInfoPtr layout_info, |
| ErrorCallback callback, |
| crosapi::mojom::DisplayLayoutInfoPtr cur_info); |
| void CallGetDisplayUnitInfoList( |
| bool single_unified, |
| base::OnceCallback<void(DisplayUnitInfoList result)> callback, |
| crosapi::mojom::DisplayLayoutInfoPtr layout); |
| void OnGetDisplayUnitInfoList( |
| crosapi::mojom::DisplayLayoutInfoPtr layout, |
| base::OnceCallback<void(DisplayUnitInfoList)> callback, |
| std::vector<crosapi::mojom::DisplayUnitInfoPtr> info_list); |
| void CallTouchCalibration(const std::string& id, |
| crosapi::mojom::DisplayConfigOperation op, |
| crosapi::mojom::TouchCalibrationPtr calibration, |
| ErrorCallback callback); |
| |
| mojo::Remote<crosapi::mojom::CrosDisplayConfigController> |
| cros_display_config_; |
| mojo::AssociatedReceiver<crosapi::mojom::CrosDisplayConfigObserver> |
| cros_display_config_observer_receiver_{this}; |
| std::string touch_calibration_target_id_; |
| base::WeakPtrFactory<DisplayInfoProviderChromeOS> weak_ptr_factory_{this}; |
| }; |
| |
| } // namespace extensions |
| |
| #endif // CHROME_BROWSER_EXTENSIONS_SYSTEM_DISPLAY_DISPLAY_INFO_PROVIDER_CHROMEOS_H_ |