Commit 2b368a1e authored by nancy's avatar nancy Committed by Commit Bot

Remove arc app icon loder.

AppServiceAppIconLoader is used to replace ArcAppIconLoader to load app
icons for all apps.

BUG=1016159

Change-Id: I8889a7931127a83e6da48ab23878a9ba284aa303
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2084190Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Nancy Wang <nancylingwang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#746480}
parent d35923c2
...@@ -3676,8 +3676,6 @@ jumbo_static_library("ui") { ...@@ -3676,8 +3676,6 @@ jumbo_static_library("ui") {
"app_list/arc/arc_app_icon.h", "app_list/arc/arc_app_icon.h",
"app_list/arc/arc_app_icon_descriptor.cc", "app_list/arc/arc_app_icon_descriptor.cc",
"app_list/arc/arc_app_icon_descriptor.h", "app_list/arc/arc_app_icon_descriptor.h",
"app_list/arc/arc_app_icon_loader.cc",
"app_list/arc/arc_app_icon_loader.h",
"app_list/arc/arc_app_launcher.cc", "app_list/arc/arc_app_launcher.cc",
"app_list/arc/arc_app_launcher.h", "app_list/arc/arc_app_launcher.h",
"app_list/arc/arc_app_list_prefs.cc", "app_list/arc/arc_app_list_prefs.cc",
......
// Copyright (c) 2016 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.
#include "chrome/browser/ui/app_list/arc/arc_app_icon_loader.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h"
#include "chrome/browser/ui/app_list/arc/arc_app_utils.h"
#include "ui/gfx/image/image_skia_operations.h"
ArcAppIconLoader::ArcAppIconLoader(Profile* profile,
int icon_size_in_dip,
AppIconLoaderDelegate* delegate)
: AppIconLoader(profile, icon_size_in_dip, delegate),
arc_prefs_(ArcAppListPrefs::Get(profile)) {
DCHECK(arc_prefs_);
arc_prefs_->AddObserver(this);
}
ArcAppIconLoader::~ArcAppIconLoader() {
arc_prefs_->RemoveObserver(this);
}
bool ArcAppIconLoader::CanLoadImageForApp(const std::string& app_id) {
if (icon_map_.find(app_id) != icon_map_.end())
return true;
return arc::IsArcItem(profile(), app_id);
}
void ArcAppIconLoader::FetchImage(const std::string& app_id) {
if (icon_map_.find(app_id) != icon_map_.end())
return; // Already loading the image.
// Note, ARC icon is available only for 48x48 dips. In case
// |icon_size_in_dip_| differs from this size, re-scale is required.
std::unique_ptr<ArcAppIcon> icon =
std::make_unique<ArcAppIcon>(profile(), app_id, icon_size_in_dip(), this);
icon->LoadSupportedScaleFactors();
icon_map_[app_id] = std::move(icon);
UpdateImage(app_id);
}
void ArcAppIconLoader::ClearImage(const std::string& app_id) {
icon_map_.erase(app_id);
}
void ArcAppIconLoader::UpdateImage(const std::string& app_id) {
AppIDToIconMap::iterator it = icon_map_.find(app_id);
if (it == icon_map_.end())
return;
gfx::ImageSkia image = it->second->image_skia();
DCHECK_EQ(icon_size_in_dip(), image.width());
DCHECK_EQ(icon_size_in_dip(), image.height());
std::unique_ptr<ArcAppListPrefs::AppInfo> app_info =
arc_prefs_->GetApp(app_id);
if (app_info && app_info->suspended) {
image =
gfx::ImageSkiaOperations::CreateHSLShiftedImage(image, {-1, 0, 0.6});
}
delegate()->OnAppImageUpdated(app_id, image);
}
void ArcAppIconLoader::OnIconUpdated(ArcAppIcon* icon) {
UpdateImage(icon->app_id());
}
void ArcAppIconLoader::OnAppStatesChanged(
const std::string& app_id,
const ArcAppListPrefs::AppInfo& app_info) {
AppIDToIconMap::const_iterator it = icon_map_.find(app_id);
if (it == icon_map_.end())
return;
UpdateImage(app_id);
}
void ArcAppIconLoader::OnAppIconUpdated(
const std::string& app_id,
const ArcAppIconDescriptor& descriptor) {
if (descriptor.dip_size != icon_size_in_dip())
return;
AppIDToIconMap::const_iterator it = icon_map_.find(app_id);
if (it == icon_map_.end())
return;
it->second->LoadForScaleFactor(descriptor.scale_factor);
}
// Copyright (c) 2016 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 CHROME_BROWSER_UI_APP_LIST_ARC_ARC_APP_ICON_LOADER_H_
#define CHROME_BROWSER_UI_APP_LIST_ARC_ARC_APP_ICON_LOADER_H_
#include <map>
#include <memory>
#include <string>
#include "base/macros.h"
#include "chrome/browser/ui/app_icon_loader.h"
#include "chrome/browser/ui/app_list/arc/arc_app_icon.h"
#include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h"
class Profile;
// ARC++ icon provider for the apps. It can support multiple ARC++ apps. This
// observes apps changes and updates icons accordingly.
class ArcAppIconLoader : public AppIconLoader,
public ArcAppListPrefs::Observer,
public ArcAppIcon::Observer {
public:
ArcAppIconLoader(Profile* profile,
int icon_size_in_dip,
AppIconLoaderDelegate* delegate);
~ArcAppIconLoader() override;
// Overrides AppIconLoader:
bool CanLoadImageForApp(const std::string& app_id) override;
void FetchImage(const std::string& id) override;
void ClearImage(const std::string& id) override;
void UpdateImage(const std::string& id) override;
// Overrides ArcAppListPrefs::Observer:
void OnAppStatesChanged(const std::string& app_id,
const ArcAppListPrefs::AppInfo& app_info) override;
void OnAppIconUpdated(const std::string& id,
const ArcAppIconDescriptor& descriptor) override;
// Overrides ArcAppIcon::Observer:
void OnIconUpdated(ArcAppIcon* icon) override;
private:
using AppIDToIconMap = std::map<std::string, std::unique_ptr<ArcAppIcon>>;
// Unowned pointer.
ArcAppListPrefs* const arc_prefs_;
AppIDToIconMap icon_map_;
DISALLOW_COPY_AND_ASSIGN(ArcAppIconLoader);
};
#endif // CHROME_BROWSER_UI_APP_LIST_ARC_ARC_APP_ICON_LOADER_H_
...@@ -44,7 +44,6 @@ ...@@ -44,7 +44,6 @@
#include "chrome/browser/ui/app_list/app_service/app_service_app_item.h" #include "chrome/browser/ui/app_list/app_service/app_service_app_item.h"
#include "chrome/browser/ui/app_list/app_service/app_service_app_model_builder.h" #include "chrome/browser/ui/app_list/app_service/app_service_app_model_builder.h"
#include "chrome/browser/ui/app_list/arc/arc_app_icon.h" #include "chrome/browser/ui/app_list/arc/arc_app_icon.h"
#include "chrome/browser/ui/app_list/arc/arc_app_icon_loader.h"
#include "chrome/browser/ui/app_list/arc/arc_app_launcher.h" #include "chrome/browser/ui/app_list/arc/arc_app_launcher.h"
#include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h" #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h"
#include "chrome/browser/ui/app_list/arc/arc_app_list_prefs_factory.h" #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs_factory.h"
......
...@@ -37,7 +37,6 @@ ...@@ -37,7 +37,6 @@
#include "chrome/browser/ui/app_list/app_list_client_impl.h" #include "chrome/browser/ui/app_list/app_list_client_impl.h"
#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" #include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h"
#include "chrome/browser/ui/app_list/app_service/app_service_app_icon_loader.h" #include "chrome/browser/ui/app_list/app_service/app_service_app_icon_loader.h"
#include "chrome/browser/ui/app_list/arc/arc_app_icon_loader.h"
#include "chrome/browser/ui/app_list/arc/arc_app_utils.h" #include "chrome/browser/ui/app_list/arc/arc_app_utils.h"
#include "chrome/browser/ui/app_list/md_icon_normalizer.h" #include "chrome/browser/ui/app_list/md_icon_normalizer.h"
#include "chrome/browser/ui/apps/app_info_dialog.h" #include "chrome/browser/ui/apps/app_info_dialog.h"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment