Commit 8f871b2a authored by Alexey Baskakov's avatar Alexey Baskakov Committed by Commit Bot

WebApp: Make WebAppIconManager read icon methods const. Change callback.

Add proper constness.

Change ReadIconCallback signature to return `const SkBitmap&`.

These changes are required for the integration with AppService.

This code is disabled by default behind kDesktopPWAsWithoutExtensions
base feature.

Bug: 1029221
Change-Id: I4ec06716014686c607ea86da864efe017b0ad585
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1941458
Auto-Submit: Alexey Baskakov <loyso@chromium.org>
Commit-Queue: Eric Willigers <ericwilligers@chromium.org>
Reviewed-by: default avatarEric Willigers <ericwilligers@chromium.org>
Cr-Commit-Position: refs/heads/master@{#719903}
parent 6671b3f4
......@@ -124,7 +124,7 @@ const AppRegistrar& WebAppBrowserController::registrar() const {
return provider_.registrar();
}
void WebAppBrowserController::OnReadIcon(SkBitmap bitmap) {
void WebAppBrowserController::OnReadIcon(const SkBitmap& bitmap) {
if (bitmap.empty()) {
DLOG(ERROR) << "Failed to read icon for web app";
return;
......
......@@ -57,7 +57,7 @@ class WebAppBrowserController : public AppBrowserController {
private:
const AppRegistrar& registrar() const;
void OnReadIcon(SkBitmap bitmap);
void OnReadIcon(const SkBitmap& bitmap);
WebAppProvider& provider_;
mutable base::Optional<gfx::ImageSkia> app_icon_;
......
......@@ -24,17 +24,17 @@ class AppIconManager {
// Reads icon's bitmap for an app. Returns false if no IconInfo for
// |icon_size_in_px|. Returns empty SkBitmap in |callback| if IO error.
using ReadIconCallback = base::OnceCallback<void(SkBitmap)>;
using ReadIconCallback = base::OnceCallback<void(const SkBitmap&)>;
virtual bool ReadIcon(const AppId& app_id,
int icon_size_in_px,
ReadIconCallback callback) = 0;
ReadIconCallback callback) const = 0;
// Reads smallest icon with size at least |icon_size_in_px|.
// Returns false if there is no such icon.
// Returns empty SkBitmap in |callback| if IO error.
virtual bool ReadSmallestIcon(const AppId& app_id,
int icon_size_in_px,
ReadIconCallback callback) = 0;
ReadIconCallback callback) const = 0;
// Reads smallest icon, compressed as PNG with size at least
// |icon_size_in_px|. Returns false if there is no such icon. Returns empty
......@@ -44,7 +44,7 @@ class AppIconManager {
virtual bool ReadSmallestCompressedIcon(
const AppId& app_id,
int icon_size_in_px,
ReadCompressedIconCallback callback) = 0;
ReadCompressedIconCallback callback) const = 0;
private:
DISALLOW_COPY_AND_ASSIGN(AppIconManager);
......
......@@ -53,7 +53,7 @@ BookmarkAppIconManager::~BookmarkAppIconManager() = default;
bool BookmarkAppIconManager::ReadIcon(const web_app::AppId& app_id,
int icon_size_in_px,
ReadIconCallback callback) {
ReadIconCallback callback) const {
return ReadExtensionIcon(profile_, app_id, icon_size_in_px,
ExtensionIconSet::MATCH_EXACTLY,
std::move(callback));
......@@ -61,7 +61,7 @@ bool BookmarkAppIconManager::ReadIcon(const web_app::AppId& app_id,
bool BookmarkAppIconManager::ReadSmallestIcon(const web_app::AppId& app_id,
int icon_size_in_px,
ReadIconCallback callback) {
ReadIconCallback callback) const {
return ReadExtensionIcon(profile_, app_id, icon_size_in_px,
ExtensionIconSet::MATCH_BIGGER, std::move(callback));
}
......@@ -69,7 +69,7 @@ bool BookmarkAppIconManager::ReadSmallestIcon(const web_app::AppId& app_id,
bool BookmarkAppIconManager::ReadSmallestCompressedIcon(
const web_app::AppId& app_id,
int icon_size_in_px,
ReadCompressedIconCallback callback) {
ReadCompressedIconCallback callback) const {
NOTIMPLEMENTED();
return false;
}
......
......@@ -22,13 +22,14 @@ class BookmarkAppIconManager : public web_app::AppIconManager {
// AppIconManager:
bool ReadIcon(const web_app::AppId& app_id,
int icon_size_in_px,
ReadIconCallback callback) override;
ReadIconCallback callback) const override;
bool ReadSmallestIcon(const web_app::AppId& app_id,
int icon_size_in_px,
ReadIconCallback callback) override;
bool ReadSmallestCompressedIcon(const web_app::AppId& app_id,
int icon_size_in_px,
ReadCompressedIconCallback callback) override;
ReadIconCallback callback) const override;
bool ReadSmallestCompressedIcon(
const web_app::AppId& app_id,
int icon_size_in_px,
ReadCompressedIconCallback callback) const override;
private:
Profile* const profile_;
......
......@@ -260,7 +260,7 @@ void WebAppIconManager::DeleteData(AppId app_id, WriteDataCallback callback) {
bool WebAppIconManager::ReadIcon(const AppId& app_id,
int icon_size_in_px,
ReadIconCallback callback) {
ReadIconCallback callback) const {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
const WebApp* web_app = registrar_.GetAppById(app_id);
......@@ -279,7 +279,7 @@ bool WebAppIconManager::ReadIcon(const AppId& app_id,
bool WebAppIconManager::ReadSmallestIcon(const AppId& app_id,
int icon_size_in_px,
ReadIconCallback callback) {
ReadIconCallback callback) const {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
int best_size_in_px = 0;
......@@ -293,7 +293,7 @@ bool WebAppIconManager::ReadSmallestIcon(const AppId& app_id,
bool WebAppIconManager::ReadSmallestCompressedIcon(
const AppId& app_id,
int icon_size_in_px,
ReadCompressedIconCallback callback) {
ReadCompressedIconCallback callback) const {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
int best_size_in_px = 0;
......@@ -329,7 +329,7 @@ bool WebAppIconManager::FindBestSizeInPx(const AppId& app_id,
void WebAppIconManager::ReadIconInternal(const AppId& app_id,
int icon_size_in_px,
ReadIconCallback callback) {
ReadIconCallback callback) const {
base::PostTaskAndReplyWithResult(
FROM_HERE, kTaskTraits,
base::BindOnce(ReadIconBlocking, utils_->Clone(), web_apps_directory_,
......
......@@ -38,13 +38,14 @@ class WebAppIconManager : public AppIconManager {
// AppIconManager:
bool ReadIcon(const AppId& app_id,
int icon_size_in_px,
ReadIconCallback callback) override;
ReadIconCallback callback) const override;
bool ReadSmallestIcon(const AppId& app_id,
int icon_size_in_px,
ReadIconCallback callback) override;
bool ReadSmallestCompressedIcon(const AppId& app_id,
int icon_size_in_px,
ReadCompressedIconCallback callback) override;
ReadIconCallback callback) const override;
bool ReadSmallestCompressedIcon(
const AppId& app_id,
int icon_size_in_px,
ReadCompressedIconCallback callback) const override;
private:
bool FindBestSizeInPx(const AppId& app_id,
......@@ -53,7 +54,7 @@ class WebAppIconManager : public AppIconManager {
void ReadIconInternal(const AppId& app_id,
int icon_size_in_px,
ReadIconCallback callback);
ReadIconCallback callback) const;
const WebAppRegistrar& registrar_;
base::FilePath web_apps_directory_;
......
......@@ -150,7 +150,8 @@ TEST_F(WebAppIconManagerTest, WriteAndReadIcon) {
base::RunLoop run_loop;
const bool icon_requested = icon_manager().ReadIcon(
app_id, sizes_px[0], base::BindLambdaForTesting([&](SkBitmap bitmap) {
app_id, sizes_px[0],
base::BindLambdaForTesting([&](const SkBitmap& bitmap) {
EXPECT_FALSE(bitmap.empty());
EXPECT_EQ(colors[0], bitmap.getColor(0, 0));
run_loop.Quit();
......@@ -183,7 +184,8 @@ TEST_F(WebAppIconManagerTest, ReadIconFailed) {
base::RunLoop run_loop;
const bool icon_requested = icon_manager().ReadIcon(
app_id, icon_size_px, base::BindLambdaForTesting([&](SkBitmap bitmap) {
app_id, icon_size_px,
base::BindLambdaForTesting([&](const SkBitmap& bitmap) {
EXPECT_TRUE(bitmap.empty());
run_loop.Quit();
}));
......@@ -207,8 +209,9 @@ TEST_F(WebAppIconManagerTest, FindExact) {
{
const bool icon_requested = icon_manager().ReadIcon(
app_id, 40,
base::BindLambdaForTesting([&](SkBitmap bitmap) { NOTREACHED(); }));
app_id, 40, base::BindLambdaForTesting([&](const SkBitmap& bitmap) {
NOTREACHED();
}));
EXPECT_FALSE(icon_requested);
}
......@@ -216,7 +219,7 @@ TEST_F(WebAppIconManagerTest, FindExact) {
base::RunLoop run_loop;
const bool icon_requested = icon_manager().ReadIcon(
app_id, 20, base::BindLambdaForTesting([&](SkBitmap bitmap) {
app_id, 20, base::BindLambdaForTesting([&](const SkBitmap& bitmap) {
EXPECT_FALSE(bitmap.empty());
EXPECT_EQ(SK_ColorBLUE, bitmap.getColor(0, 0));
run_loop.Quit();
......@@ -242,8 +245,9 @@ TEST_F(WebAppIconManagerTest, FindSmallest) {
{
const bool icon_requested = icon_manager().ReadSmallestIcon(
app_id, 70,
base::BindLambdaForTesting([&](SkBitmap bitmap) { NOTREACHED(); }));
app_id, 70, base::BindLambdaForTesting([&](const SkBitmap& bitmap) {
NOTREACHED();
}));
EXPECT_FALSE(icon_requested);
}
......@@ -251,7 +255,7 @@ TEST_F(WebAppIconManagerTest, FindSmallest) {
base::RunLoop run_loop;
const bool icon_requested = icon_manager().ReadSmallestIcon(
app_id, 40, base::BindLambdaForTesting([&](SkBitmap bitmap) {
app_id, 40, base::BindLambdaForTesting([&](const SkBitmap& bitmap) {
EXPECT_FALSE(bitmap.empty());
EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(0, 0));
run_loop.Quit();
......@@ -265,7 +269,7 @@ TEST_F(WebAppIconManagerTest, FindSmallest) {
base::RunLoop run_loop;
const bool icon_requested = icon_manager().ReadSmallestIcon(
app_id, 20, base::BindLambdaForTesting([&](SkBitmap bitmap) {
app_id, 20, base::BindLambdaForTesting([&](const SkBitmap& bitmap) {
EXPECT_FALSE(bitmap.empty());
EXPECT_EQ(SK_ColorBLUE, bitmap.getColor(0, 0));
run_loop.Quit();
......
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