diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-07-16 11:45:35 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-07-17 08:59:23 +0000 |
commit | 552906b0f222c5d5dd11b9fd73829d510980461a (patch) | |
tree | 3a11e6ed0538a81dd83b20cf3a4783e297f26d91 /chromium/ui/color/color_provider_manager.h | |
parent | 1b05827804eaf047779b597718c03e7d38344261 (diff) | |
download | qtwebengine-chromium-552906b0f222c5d5dd11b9fd73829d510980461a.tar.gz |
BASELINE: Update Chromium to 83.0.4103.122
Change-Id: Ie3a82f5bb0076eec2a7c6a6162326b4301ee291e
Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/ui/color/color_provider_manager.h')
-rw-r--r-- | chromium/ui/color/color_provider_manager.h | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/chromium/ui/color/color_provider_manager.h b/chromium/ui/color/color_provider_manager.h new file mode 100644 index 00000000000..7baa65e90f9 --- /dev/null +++ b/chromium/ui/color/color_provider_manager.h @@ -0,0 +1,65 @@ +// Copyright 2020 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 UI_COLOR_COLOR_PROVIDER_MANAGER_H_ +#define UI_COLOR_COLOR_PROVIDER_MANAGER_H_ + +#include <memory> +#include <tuple> + +#include "base/callback.h" +#include "base/component_export.h" +#include "base/containers/flat_map.h" + +namespace ui { + +class ColorProvider; + +// Manages and provides color providers. +// +// In most cases, use ColorProviderManager::Get() to obtain an instance to the +// manager and then call GetColorProviderFor() to get a ColorProvider. It is not +// necessary to construct a ColorProviderManager manually. +class COMPONENT_EXPORT(COLOR) ColorProviderManager { + public: + enum class ColorMode { + kLight, + kDark, + }; + enum class ContrastMode { + kNormal, + kHigh, + }; + using ColorProviderInitializer = + base::RepeatingCallback<void(ColorProvider*, ColorMode, ContrastMode)>; + + ColorProviderManager(const ColorProviderManager&) = delete; + ColorProviderManager& operator=(const ColorProviderManager&) = delete; + + static ColorProviderManager& Get(); + static void ResetForTesting(); + + // Sets the initializer for all ColorProviders returned from + // GetColorProviderFor(). + void SetColorProviderInitializer(ColorProviderInitializer initializer); + + // Returns a color provider for |color_mode| and |contrast_mode|, creating one + // if necessary. + ColorProvider* GetColorProviderFor(ColorMode color_mode, + ContrastMode contrast_mode); + + protected: + ColorProviderManager(); + virtual ~ColorProviderManager(); + + private: + using ColorProviderKey = std::tuple<ColorMode, ContrastMode>; + ColorProviderInitializer initializer_; + base::flat_map<ColorProviderKey, std::unique_ptr<ColorProvider>> + color_providers_; +}; + +} // namespace ui + +#endif // UI_COLOR_COLOR_PROVIDER_MANAGER_H_ |