| Index: ash/common/wallpaper/wallpaper_controller.cc
|
| diff --git a/ash/common/wallpaper/wallpaper_controller.cc b/ash/common/wallpaper/wallpaper_controller.cc
|
| index d1b23e276bf7cd4108002542dbe59ca57c7c9bb2..d3671db05911b63e57e008b2444f8fac078a6919 100644
|
| --- a/ash/common/wallpaper/wallpaper_controller.cc
|
| +++ b/ash/common/wallpaper/wallpaper_controller.cc
|
| @@ -21,6 +21,7 @@
|
| #include "base/command_line.h"
|
| #include "base/logging.h"
|
| #include "base/task_runner.h"
|
| +#include "components/wallpaper/wallpaper_color_cache.h"
|
| #include "components/wallpaper/wallpaper_color_calculator.h"
|
| #include "components/wallpaper/wallpaper_resizer.h"
|
| #include "ui/display/manager/managed_display_info.h"
|
| @@ -71,6 +72,7 @@ WallpaperController::WallpaperController(
|
| const scoped_refptr<base::TaskRunner>& task_runner)
|
| : locked_(false),
|
| wallpaper_mode_(WALLPAPER_NONE),
|
| + color_cache_(nullptr),
|
| prominent_color_(SK_ColorTRANSPARENT),
|
| wallpaper_reload_delay_(kWallpaperReloadDelayMs),
|
| task_runner_(task_runner) {
|
| @@ -245,6 +247,12 @@ void WallpaperController::OpenSetWallpaperPage() {
|
| }
|
| }
|
|
|
| +void WallpaperController::SetWallpaperColorCache(
|
| + wallpaper::WallpaperColorCache* color_cache) {
|
| + CHECK(!color_cache_);
|
| + color_cache_ = color_cache;
|
| +}
|
| +
|
| void WallpaperController::SetWallpaperPicker(mojom::WallpaperPickerPtr picker) {
|
| wallpaper_picker_ = std::move(picker);
|
| }
|
| @@ -263,6 +271,12 @@ void WallpaperController::OnWallpaperResized() {
|
|
|
| void WallpaperController::OnColorCalculationComplete() {
|
| const SkColor color = color_calculator_->prominent_color();
|
| +
|
| + if (color_cache_) {
|
| + // TODO(bruthig): GetWallpaperOriginalImageId() is insufficient!!
|
| + color_cache_->SetColor(GetWallpaperOriginalImageId(), color);
|
| + }
|
| +
|
| color_calculator_.reset();
|
| SetProminentColor(color);
|
| }
|
| @@ -353,6 +367,17 @@ void WallpaperController::CalculateWallpaperColors() {
|
| if (color_calculator_)
|
| color_calculator_->RemoveObserver(this);
|
|
|
| + color_calculator_.reset();
|
| +
|
| + if (color_cache_) {
|
| + SkColor color;
|
| + // TODO(bruthig): GetWallpaperOriginalImageId() is insufficient!!
|
| + if (color_cache_->GetColor(GetWallpaperOriginalImageId(), &color)) {
|
| + SetProminentColor(color);
|
| + return;
|
| + }
|
| + }
|
| +
|
| color_calculator_ = base::MakeUnique<wallpaper::WallpaperColorCalculator>(
|
| GetWallpaper(), luma, saturation, task_runner_);
|
| color_calculator_->AddObserver(this);
|
|
|