Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(878)

Unified Diff: chrome/browser/ui/app_list/search/launcher_search/launcher_search_icon_image_loader.cc

Issue 1200543003: Migrate LauncherSearchResult to use SetBadgeIcon. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: CHECK -> DCHECK. Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/app_list/search/launcher_search/launcher_search_icon_image_loader.cc
diff --git a/chrome/browser/ui/app_list/search/launcher_search/extension_badged_icon_image.cc b/chrome/browser/ui/app_list/search/launcher_search/launcher_search_icon_image_loader.cc
similarity index 52%
rename from chrome/browser/ui/app_list/search/launcher_search/extension_badged_icon_image.cc
rename to chrome/browser/ui/app_list/search/launcher_search/launcher_search_icon_image_loader.cc
index 283354d3a174f93ca51d063bac09568a6cc016de..789a2d2e4c0cf72326bb6ba5cef009f1adede58f 100644
--- a/chrome/browser/ui/app_list/search/launcher_search/extension_badged_icon_image.cc
+++ b/chrome/browser/ui/app_list/search/launcher_search/launcher_search_icon_image_loader.cc
@@ -2,7 +2,7 @@
// 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/search/launcher_search/extension_badged_icon_image.h"
+#include "chrome/browser/ui/app_list/search/launcher_search/launcher_search_icon_image_loader.h"
#include "base/strings/string_util.h"
#include "chrome/browser/chromeos/launcher_search_provider/error_reporter.h"
@@ -19,42 +19,11 @@ const int kTruncatedIconUrlMaxSize = 100;
const char kWarningMessagePrefix[] =
"[chrome.launcherSearchProvider.setSearchResults]";
-class BadgedIconSource : public gfx::CanvasImageSource {
- public:
- BadgedIconSource(const gfx::ImageSkia& custom_icon,
- const gfx::ImageSkia& extension_icon,
- const gfx::Size& icon_size)
- : CanvasImageSource(icon_size, false),
- custom_icon_(custom_icon),
- extension_icon_(extension_icon) {}
-
- void Draw(gfx::Canvas* canvas) override {
- canvas->DrawImageInt(custom_icon_, 0, 0, custom_icon_.size().width(),
- custom_icon_.height(), 0, 0, size().width(),
- size().height(), true);
-
- // Badged icon size is 2/3 of custom icon.
- const int badge_dimension = size().width() * 2 / 3;
- const gfx::Size badge_size = gfx::Size(badge_dimension, badge_dimension);
- canvas->DrawImageInt(extension_icon_, 0, 0, extension_icon_.size().width(),
- extension_icon_.size().height(),
- size().width() - badge_size.width(),
- size().height() - badge_size.height(),
- badge_size.width(), badge_size.height(), true);
- }
-
- private:
- const gfx::ImageSkia custom_icon_;
- const gfx::ImageSkia extension_icon_;
-
- DISALLOW_COPY_AND_ASSIGN(BadgedIconSource);
-};
-
} // namespace
namespace app_list {
-ExtensionBadgedIconImage::ExtensionBadgedIconImage(
+LauncherSearchIconImageLoader::LauncherSearchIconImageLoader(
const GURL& icon_url,
Profile* profile,
const extensions::Extension* extension,
@@ -68,13 +37,16 @@ ExtensionBadgedIconImage::ExtensionBadgedIconImage(
error_reporter_(error_reporter.Pass()) {
}
-ExtensionBadgedIconImage::~ExtensionBadgedIconImage() {
+LauncherSearchIconImageLoader::~LauncherSearchIconImageLoader() {
}
-void ExtensionBadgedIconImage::LoadResources() {
- // Loads extension icon image.
+void LauncherSearchIconImageLoader::LoadResources() {
+ DCHECK(custom_icon_image_.isNull());
+
+ // Loads extension icon image and set it as main icon image.
extension_icon_image_ = LoadExtensionIcon();
- Update();
+ CHECK(!extension_icon_image_.isNull());
+ NotifyObserversIconImageChange();
// If valid icon_url is provided as chrome-extension scheme with the host of
// |extension|, load custom icon.
@@ -100,67 +72,83 @@ void ExtensionBadgedIconImage::LoadResources() {
LoadIconResourceFromExtension();
}
-void ExtensionBadgedIconImage::AddObserver(Observer* observer) {
+void LauncherSearchIconImageLoader::AddObserver(Observer* observer) {
observers_.insert(observer);
}
-void ExtensionBadgedIconImage::RemoveObserver(Observer* observer) {
+void LauncherSearchIconImageLoader::RemoveObserver(Observer* observer) {
observers_.erase(observer);
}
-const gfx::ImageSkia& ExtensionBadgedIconImage::GetIconImage() const {
- return badged_icon_image_;
+const gfx::ImageSkia& LauncherSearchIconImageLoader::GetIconImage() const {
+ // If no custom icon is supplied, return the extension icon.
+ if (custom_icon_image_.isNull())
+ return extension_icon_image_;
+
+ return custom_icon_image_;
}
-void ExtensionBadgedIconImage::OnExtensionIconChanged(
+const gfx::ImageSkia& LauncherSearchIconImageLoader::GetBadgeIconImage() const {
+ // If a custom icon is supplied, badge it with the extension icon.
+ if (!custom_icon_image_.isNull())
+ return extension_icon_image_;
+
+ return custom_icon_image_; // Returns as an empty image.
+}
+
+void LauncherSearchIconImageLoader::OnExtensionIconChanged(
const gfx::ImageSkia& image) {
+ CHECK(!image.isNull());
+
extension_icon_image_ = image;
- Update();
+
+ if (custom_icon_image_.isNull()) {
+ // When |custom_icon_image_| is not set, extension icon image will be shown
+ // as a main icon.
+ NotifyObserversIconImageChange();
+ } else {
+ // When |custom_icon_image_| is set, extension icon image will be shown as a
+ // badge icon.
+ NotifyObserversBadgeIconImageChange();
+ }
}
-void ExtensionBadgedIconImage::OnCustomIconLoaded(const gfx::ImageSkia& image) {
+void LauncherSearchIconImageLoader::OnCustomIconLoaded(
+ const gfx::ImageSkia& image) {
if (image.isNull()) {
std::vector<std::string> params;
params.push_back(kWarningMessagePrefix);
params.push_back(GetTruncatedIconUrl(kTruncatedIconUrlMaxSize));
error_reporter_->Warn(ReplaceStringPlaceholders(
"$1 Failed to load icon URL: $2", params, nullptr));
+
return;
}
+ const bool previously_unbadged = custom_icon_image_.isNull();
custom_icon_image_ = image;
- Update();
-}
+ NotifyObserversIconImageChange();
-void ExtensionBadgedIconImage::Update() {
- // If extension_icon_image is not available, return immediately.
- if (extension_icon_image_.isNull())
- return;
+ // If custom_icon_image_ is not set before, extension icon moves from main
+ // icon to badge icon. We need to notify badge icon image change after we set
+ // custom_icon_image_ to return proper image in GetBadgeIconImage method.
+ if (previously_unbadged)
+ NotifyObserversBadgeIconImageChange();
+}
- // When custom icon image is not available, simply use extension icon image
- // without badge.
- if (custom_icon_image_.isNull()) {
- SetIconImage(extension_icon_image_);
- return;
+void LauncherSearchIconImageLoader::NotifyObserversIconImageChange() {
+ for (auto* observer : observers_) {
+ observer->OnIconImageChanged(this);
}
-
- // Create badged icon image.
- gfx::ImageSkia badged_icon_image(
- new BadgedIconSource(custom_icon_image_, extension_icon_image_,
- icon_size_),
- icon_size_);
- SetIconImage(badged_icon_image);
}
-void ExtensionBadgedIconImage::SetIconImage(const gfx::ImageSkia& icon_image) {
- badged_icon_image_ = icon_image;
-
+void LauncherSearchIconImageLoader::NotifyObserversBadgeIconImageChange() {
for (auto* observer : observers_) {
- observer->OnIconImageChanged(this);
+ observer->OnBadgeIconImageChanged(this);
}
}
-std::string ExtensionBadgedIconImage::GetTruncatedIconUrl(
+std::string LauncherSearchIconImageLoader::GetTruncatedIconUrl(
const uint32 max_size) {
CHECK(max_size > 3);

Powered by Google App Engine
This is Rietveld 408576698