1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- // 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<crosapi::mojom::NativeThemeInfoObserver> receiver_{this};
- };
- } // namespace chromeos
- #endif // CHROMEOS_LACROS_NATIVE_THEME_CACHE_H_
|