| // Copyright 2021 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROMECAST_BROWSER_CAST_FEATURE_UPDATE_OBSERVER_H_ |
| #define CHROMECAST_BROWSER_CAST_FEATURE_UPDATE_OBSERVER_H_ |
| |
| #include "base/values.h" |
| #include "chromecast/common/mojom/feature_update.mojom.h" |
| #include "mojo/public/cpp/bindings/receiver.h" |
| #include "mojo/public/cpp/bindings/remote.h" |
| |
| class PrefService; |
| |
| namespace chromecast { |
| |
| namespace external_service_support { |
| class ExternalConnector; |
| } // namespace external_service_support |
| |
| class CastFeatureUpdateObserver |
| : public chromecast::mojom::FeatureUpdateObserver { |
| public: |
| CastFeatureUpdateObserver( |
| external_service_support::ExternalConnector* connector, |
| PrefService* pref_service); |
| CastFeatureUpdateObserver(const CastFeatureUpdateObserver&) = delete; |
| CastFeatureUpdateObserver& operator=(const CastFeatureUpdateObserver&) = |
| delete; |
| ~CastFeatureUpdateObserver() override; |
| |
| private: |
| // chromecast::mojom::FeatureUpdateObserver implementation: |
| void OnFeaturesUpdated(base::Value::Dict features) override; |
| |
| void BindFeatureUpdateService(); |
| |
| external_service_support::ExternalConnector* const connector_; |
| PrefService* const pref_service_; |
| |
| mojo::Receiver<chromecast::mojom::FeatureUpdateObserver> receiver_{this}; |
| mojo::Remote<chromecast::mojom::FeatureUpdateService> feature_update_service_; |
| }; |
| |
| } // namespace chromecast |
| |
| #endif // CHROMECAST_BROWSER_CAST_FEATURE_UPDATE_OBSERVER_H_ |