// 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 CHROMEOS_LACROS_NATIVE_THEME_CACHE_H_ #define CHROMEOS_LACROS_NATIVE_THEME_CACHE_H_ #include "chromeos/crosapi/mojom/native_theme.mojom.h" #include "mojo/public/cpp/bindings/receiver.h" namespace chromeos { // This instance connects to ash-chrome, listens to native theme info changes, // and caches the info for later synchronous reads using getters. class COMPONENT_EXPORT(CHROMEOS_LACROS) NativeThemeCache : public crosapi::mojom::NativeThemeInfoObserver { public: explicit NativeThemeCache(const crosapi::mojom::NativeThemeInfo& info); NativeThemeCache(const NativeThemeCache&) = delete; NativeThemeCache& operator=(const NativeThemeCache&) = delete; ~NativeThemeCache() override; // Start observing native theme info changes in ash-chrome. // This is a post-construction step to decouple from LacrosService. void Start(); private: // crosapi::mojom::NativeThemeInfoObserver: void OnNativeThemeInfoChanged( crosapi::mojom::NativeThemeInfoPtr info) override; void SetNativeThemeInfo(); // Cached native theme info. crosapi::mojom::NativeThemeInfoPtr info_; // Receives mojo messages from ash-chromem (under Streaming mode). mojo::Receiver receiver_{this}; }; } // namespace chromeos #endif // CHROMEOS_LACROS_NATIVE_THEME_CACHE_H_