blob: 93034ba8dc6052b8d22a97f1d86788877b61226b [file] [log] [blame]
// Copyright 2015 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/search/launcher_search/launcher_search_icon_image_loader_impl.h"
#include <utility>
#include <vector>
#include "base/memory/ptr_util.h"
#include "chrome/browser/extensions/extension_util.h"
#include "extensions/browser/image_loader.h"
#include "extensions/common/file_util.h"
#include "extensions/common/manifest_handlers/icons_handler.h"
namespace app_list {
LauncherSearchIconImageLoaderImpl::LauncherSearchIconImageLoaderImpl(
const GURL& custom_icon_url,
Profile* profile,
const extensions::Extension* extension,
const int icon_dimension,
std::unique_ptr<chromeos::launcher_search_provider::ErrorReporter>
error_reporter)
: LauncherSearchIconImageLoader(custom_icon_url,
profile,
extension,
icon_dimension,
std::move(error_reporter)) {}
LauncherSearchIconImageLoaderImpl::~LauncherSearchIconImageLoaderImpl() =
default;
const gfx::ImageSkia& LauncherSearchIconImageLoaderImpl::LoadExtensionIcon() {
extension_icon_image_ = base::WrapUnique(new extensions::IconImage(
profile_, extension_, extensions::IconsInfo::GetIcons(extension_),
icon_size_.width(), extensions::util::GetDefaultExtensionIcon(), this));
return extension_icon_image_->image_skia();
}
void LauncherSearchIconImageLoaderImpl::LoadIconResourceFromExtension() {
const base::FilePath& file_path =
extensions::file_util::ExtensionURLToRelativeFilePath(icon_url_);
const extensions::ExtensionResource& resource =
extension_->GetResource(file_path);
// Load image as scale factor 2.0 (crbug.com/490597).
std::vector<extensions::ImageLoader::ImageRepresentation> info_list;
info_list.push_back(extensions::ImageLoader::ImageRepresentation(
resource, extensions::ImageLoader::ImageRepresentation::ALWAYS_RESIZE,
gfx::Size(icon_size_.width() * 2, icon_size_.height() * 2),
ui::SCALE_FACTOR_200P));
extensions::ImageLoader::Get(profile_)->LoadImagesAsync(
extension_, info_list,
base::Bind(&LauncherSearchIconImageLoaderImpl::OnCustomIconImageLoaded,
this));
}
void LauncherSearchIconImageLoaderImpl::OnExtensionIconImageChanged(
extensions::IconImage* image) {
DCHECK_EQ(extension_icon_image_.get(), image);
OnExtensionIconChanged(extension_icon_image_->image_skia());
}
void LauncherSearchIconImageLoaderImpl::OnCustomIconImageLoaded(
const gfx::Image& image) {
OnCustomIconLoaded(image.AsImageSkia());
}
} // namespace app_list