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

Unified Diff: chrome/browser/extensions/api/extension_action/browser_action_apitest.cc

Issue 11017046: Use LANCZOS3 resize algorithm to generate missing image reps for extension action icons. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 2 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
« no previous file with comments | « no previous file | chrome/browser/extensions/api/extension_action/extension_actions_api.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/extensions/api/extension_action/browser_action_apitest.cc
diff --git a/chrome/browser/extensions/api/extension_action/browser_action_apitest.cc b/chrome/browser/extensions/api/extension_action/browser_action_apitest.cc
index 181f39e84a5a93877bb0d0a54e1bdbd2ef6a3211..bc91c49b0caaecb763e18d6ae78eec67ea0034b9 100644
--- a/chrome/browser/extensions/api/extension_action/browser_action_apitest.cc
+++ b/chrome/browser/extensions/api/extension_action/browser_action_apitest.cc
@@ -30,6 +30,7 @@
#include "ui/base/resource/resource_bundle.h"
#include "ui/gfx/rect.h"
#include "ui/gfx/size.h"
+#include "ui/gfx/size_conversions.h"
#include "ui/gfx/image/image_skia.h"
#include "ui/gfx/image/image_skia_operations.h"
#include "ui/gfx/skia_util.h"
@@ -169,9 +170,6 @@ IN_PROC_BROWSER_TEST_F(BrowserActionApiTest, DynamicBrowserAction) {
EXPECT_GT(action_icon_current_id, action_icon_last_id);
action_icon_last_id = action_icon_current_id;
- EXPECT_FALSE(
- action_icon.ToImageSkia()->HasRepresentation(ui::SCALE_FACTOR_200P));
-
EXPECT_TRUE(ImagesAreEqualAtScale(
AddBackgroundForViews(*action_icon.ToImageSkia()),
*GetBrowserActionsBar().GetIcon(0).ToImageSkia(),
@@ -187,9 +185,6 @@ IN_PROC_BROWSER_TEST_F(BrowserActionApiTest, DynamicBrowserAction) {
EXPECT_GT(action_icon_current_id, action_icon_last_id);
action_icon_last_id = action_icon_current_id;
- EXPECT_FALSE(
- action_icon.ToImageSkia()->HasRepresentation(ui::SCALE_FACTOR_200P));
-
EXPECT_TRUE(ImagesAreEqualAtScale(
AddBackgroundForViews(*action_icon.ToImageSkia()),
*GetBrowserActionsBar().GetIcon(0).ToImageSkia(),
@@ -206,9 +201,6 @@ IN_PROC_BROWSER_TEST_F(BrowserActionApiTest, DynamicBrowserAction) {
EXPECT_GT(action_icon_current_id, action_icon_last_id);
action_icon_last_id = action_icon_current_id;
- EXPECT_TRUE(
- action_icon.ToImageSkia()->HasRepresentation(ui::SCALE_FACTOR_200P));
-
EXPECT_TRUE(ImagesAreEqualAtScale(
AddBackgroundForViews(*action_icon.ToImageSkia()),
*GetBrowserActionsBar().GetIcon(0).ToImageSkia(),
@@ -224,9 +216,6 @@ IN_PROC_BROWSER_TEST_F(BrowserActionApiTest, DynamicBrowserAction) {
EXPECT_GT(action_icon_current_id, action_icon_last_id);
action_icon_last_id = action_icon_current_id;
- EXPECT_TRUE(
- action_icon.ToImageSkia()->HasRepresentation(ui::SCALE_FACTOR_200P));
-
EXPECT_TRUE(ImagesAreEqualAtScale(
AddBackgroundForViews(*action_icon.ToImageSkia()),
*GetBrowserActionsBar().GetIcon(0).ToImageSkia(),
@@ -243,14 +232,24 @@ IN_PROC_BROWSER_TEST_F(BrowserActionApiTest, DynamicBrowserAction) {
EXPECT_GT(action_icon_current_id, action_icon_last_id);
action_icon_last_id = action_icon_current_id;
- EXPECT_FALSE(
- action_icon.ToImageSkia()->HasRepresentation(ui::SCALE_FACTOR_200P));
-
EXPECT_TRUE(ImagesAreEqualAtScale(
AddBackgroundForViews(*action_icon.ToImageSkia()),
*GetBrowserActionsBar().GetIcon(0).ToImageSkia(),
ui::SCALE_FACTOR_100P));
+ const float scale = ui::GetScaleFactorScale(ui::SCALE_FACTOR_200P);
+ const gfx::Size scaled_up_pixel_size = gfx::ToFlooredSize(
+ action_icon.ToImageSkia()->size().Scale(scale));
+
+ SkBitmap action_icon_scaled_up = skia::ImageOperations::Resize(
+ *action_icon.ToSkBitmap(), skia::ImageOperations::RESIZE_LANCZOS3,
+ scaled_up_pixel_size.width(), scaled_up_pixel_size.height());
+
+ const gfx::ImageSkia* action_icon_skia = action_icon.ToImageSkia();
+ EXPECT_TRUE(gfx::BitmapsAreEqual(
+ action_icon_scaled_up,
+ action_icon_skia->GetRepresentation(ui::SCALE_FACTOR_200P).sk_bitmap()));
+
// Tell the extension to update the icon using dictionary of paths, but
// setting only size 19.
GetBrowserActionsBar().Press(0);
@@ -262,9 +261,6 @@ IN_PROC_BROWSER_TEST_F(BrowserActionApiTest, DynamicBrowserAction) {
EXPECT_GT(action_icon_current_id, action_icon_last_id);
action_icon_last_id = action_icon_current_id;
- EXPECT_FALSE(
- action_icon.ToImageSkia()->HasRepresentation(ui::SCALE_FACTOR_200P));
-
EXPECT_TRUE(ImagesAreEqualAtScale(
AddBackgroundForViews(*action_icon.ToImageSkia()),
*GetBrowserActionsBar().GetIcon(0).ToImageSkia(),
@@ -277,23 +273,21 @@ IN_PROC_BROWSER_TEST_F(BrowserActionApiTest, DynamicBrowserAction) {
action_icon = icon_factory.GetIcon(0);
- const gfx::ImageSkia* action_icon_skia = action_icon.ToImageSkia();
-
- EXPECT_FALSE(action_icon_skia->HasRepresentation(ui::SCALE_FACTOR_100P));
- EXPECT_TRUE(action_icon_skia->HasRepresentation(ui::SCALE_FACTOR_200P));
-
action_icon_current_id = action_icon.ToSkBitmap()->getGenerationID();
EXPECT_GT(action_icon_current_id, action_icon_last_id);
action_icon_last_id = action_icon_current_id;
- EXPECT_TRUE(gfx::BitmapsAreEqual(
- *action_icon.ToSkBitmap(),
- action_icon_skia->GetRepresentation(ui::SCALE_FACTOR_200P).sk_bitmap()));
+ EXPECT_TRUE(ImagesAreEqualAtScale(
+ AddBackgroundForViews(*action_icon.ToImageSkia()),
+ *GetBrowserActionsBar().GetIcon(0).ToImageSkia(),
+ ui::SCALE_FACTOR_100P));
+#if !defined(TOOLKIT_GTK)
EXPECT_TRUE(ImagesAreEqualAtScale(
- AddBackgroundForViews(*action_icon_skia),
+ AddBackgroundForViews(*action_icon.ToImageSkia()),
*GetBrowserActionsBar().GetIcon(0).ToImageSkia(),
ui::SCALE_FACTOR_200P));
+#endif
// Try setting icon with empty dictionary of ImageData objects.
GetBrowserActionsBar().Press(0);
« no previous file with comments | « no previous file | chrome/browser/extensions/api/extension_action/extension_actions_api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698