|  | // Copyright 2019 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 CONTENT_BROWSER_THEME_HELPER_H_ | 
|  | #define CONTENT_BROWSER_THEME_HELPER_H_ | 
|  |  | 
|  | #include "base/macros.h" | 
|  | #include "base/no_destructor.h" | 
|  | #include "base/scoped_observer.h" | 
|  | #include "content/common/renderer.mojom-forward.h" | 
|  | #include "ui/native_theme/native_theme.h" | 
|  | #include "ui/native_theme/native_theme_observer.h" | 
|  |  | 
|  | namespace content { | 
|  |  | 
|  | // This class is used to monitor system color info changes and to notify the | 
|  | // renderer processes. | 
|  | class ThemeHelper : public ui::NativeThemeObserver { | 
|  | public: | 
|  | static ThemeHelper* GetInstance(); | 
|  |  | 
|  | void SendSystemColorInfo(mojom::Renderer* renderer) const; | 
|  |  | 
|  | private: | 
|  | friend class base::NoDestructor<ThemeHelper>; | 
|  | ThemeHelper(); | 
|  | ~ThemeHelper() override; | 
|  |  | 
|  | // Overridden from ui::NativeThemeObserver: | 
|  | void OnNativeThemeUpdated(ui::NativeTheme* updated_theme) override; | 
|  |  | 
|  | ScopedObserver<ui::NativeTheme, ui::NativeThemeObserver> theme_observer_; | 
|  |  | 
|  | DISALLOW_COPY_AND_ASSIGN(ThemeHelper); | 
|  | }; | 
|  |  | 
|  | }  // namespace content | 
|  |  | 
|  | #endif  // CONTENT_BROWSER_THEME_HELPER_H_ |