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

Unified Diff: chrome/browser/extensions/image_loading_tracker_unittest.cc

Issue 10701087: chromeos: Fix pixelated icons in app list and launcher (part 2) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: add more tests Created 8 years, 5 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/extensions/image_loading_tracker_unittest.cc
diff --git a/chrome/browser/extensions/image_loading_tracker_unittest.cc b/chrome/browser/extensions/image_loading_tracker_unittest.cc
index 54d1958ec2f4e69cce927653e45a256b299c7c6c..2f7aa406ad35bb04cfa299b8d65d33ecf8b43706 100644
--- a/chrome/browser/extensions/image_loading_tracker_unittest.cc
+++ b/chrome/browser/extensions/image_loading_tracker_unittest.cc
@@ -2,10 +2,13 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "chrome/browser/extensions/image_loading_tracker.h"
+
+#include <algorithm>
+
#include "base/json/json_file_value_serializer.h"
#include "base/message_loop.h"
#include "base/path_service.h"
-#include "chrome/browser/extensions/image_loading_tracker.h"
#include "chrome/common/chrome_notification_types.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/extensions/extension.h"
@@ -197,14 +200,17 @@ TEST_F(ImageLoadingTrackerTest, MultipleImages) {
"image_loading_tracker", Extension::INVALID));
ASSERT_TRUE(extension.get() != NULL);
- std::vector<ImageLoadingTracker::ImageInfo> info_list;
+ std::vector<ImageLoadingTracker::ImageRepInfo> info_list;
int sizes[] = {ExtensionIconSet::EXTENSION_ICON_SMALLISH,
ExtensionIconSet::EXTENSION_ICON_BITTY};
for (size_t i = 0; i < arraysize(sizes); ++i) {
ExtensionResource resource =
extension->GetIconResource(sizes[i], ExtensionIconSet::MATCH_EXACTLY);
- info_list.push_back(ImageLoadingTracker::ImageInfo(
- resource, gfx::Size(sizes[i], sizes[i])));
+ info_list.push_back(ImageLoadingTracker::ImageRepInfo(
+ resource,
+ ImageLoadingTracker::ImageRepInfo::RESIZE_WHEN_LARGER,
+ gfx::Size(sizes[i], sizes[i]),
+ ui::SCALE_FACTOR_NONE));
}
ImageLoadingTracker loader(this);
@@ -253,3 +259,108 @@ TEST_F(ImageLoadingTrackerTest, IsComponentExtensionResource) {
ASSERT_EQ(IDR_FILE_MANAGER_ICON_16, resource_id);
#endif
}
+
+// Tests loading image that supports DIP.
+TEST_F(ImageLoadingTrackerTest, LoadImageSkia) {
+ scoped_refptr<Extension> extension(CreateExtension(
+ "image_loading_tracker", Extension::INVALID));
+ ASSERT_TRUE(extension.get() != NULL);
+
+ ImageLoadingTracker loader(this);
+ loader.LoadImageSkia(extension,
+ ExtensionIconSet::EXTENSION_ICON_BITTY,
+ ExtensionIconSet::MATCH_SMALLER,
+ gfx::Size(ExtensionIconSet::EXTENSION_ICON_BITTY,
+ ExtensionIconSet::EXTENSION_ICON_BITTY),
+ ImageLoadingTracker::DONT_CACHE);
+
+ // Observer's OnImageLoaded is called before LoadImageSkia returns.
+ EXPECT_EQ(1, image_loaded_count());
+
+ // No representations in |image_| yet.
+ std::vector<gfx::ImageSkiaRep> image_reps =
+ image_.ToImageSkia()->image_reps();
+ ASSERT_EQ(0u, image_reps.size());
+
+ // Gets representation for a scale factor.
+ image_.ToImageSkia()->GetRepresentation(ui::SCALE_FACTOR_100P);
+ WaitForImageLoad();
+ EXPECT_EQ(1, image_loaded_count());
+
+ gfx::ImageSkiaRep image_rep =
+ image_.ToImageSkia()->GetRepresentation(ui::SCALE_FACTOR_100P);
+ EXPECT_EQ(ExtensionIconSet::EXTENSION_ICON_BITTY,
+ image_rep.pixel_width());
+
+ // Gets representation for an additional scale factor.
+ image_.ToImageSkia()->GetRepresentation(ui::SCALE_FACTOR_200P);
+ WaitForImageLoad();
+ EXPECT_EQ(1, image_loaded_count());
+
+ image_rep = image_.ToImageSkia()->GetRepresentation(ui::SCALE_FACTOR_200P);
+ EXPECT_EQ(ExtensionIconSet::EXTENSION_ICON_SMALL,
+ image_rep.pixel_width());
+}
+
+// Tests LoadImageSkia with a non-existent resource.
+TEST_F(ImageLoadingTrackerTest, LoadImageSkiaBadResource) {
+ scoped_refptr<Extension> extension(CreateExtension(
+ "image_loading_tracker", Extension::INVALID));
+ ASSERT_TRUE(extension.get() != NULL);
+
+ ImageLoadingTracker loader(this);
+ loader.LoadImageSkia(extension,
+ ExtensionIconSet::EXTENSION_ICON_GIGANTOR,
+ ExtensionIconSet::MATCH_BIGGER,
+ gfx::Size(ExtensionIconSet::EXTENSION_ICON_GIGANTOR,
+ ExtensionIconSet::EXTENSION_ICON_GIGANTOR),
+ ImageLoadingTracker::DONT_CACHE);
+
+ // Observer's OnImageLoaded is called before LoadImageSkia returns.
+ EXPECT_EQ(1, image_loaded_count());
+
+ EXPECT_TRUE(image_.IsEmpty());
+}
+
+// Tests LoadImageSkia with a resource that does not have 2x.
+TEST_F(ImageLoadingTrackerTest, LoadImageSkiaMissing2x) {
+ scoped_refptr<Extension> extension(CreateExtension(
+ "image_loading_tracker", Extension::INVALID));
+ ASSERT_TRUE(extension.get() != NULL);
+
+ ImageLoadingTracker loader(this);
+ loader.LoadImageSkia(extension,
+ ExtensionIconSet::EXTENSION_ICON_SMALLISH,
+ ExtensionIconSet::MATCH_BIGGER,
+ gfx::Size(ExtensionIconSet::EXTENSION_ICON_SMALLISH,
+ ExtensionIconSet::EXTENSION_ICON_SMALLISH),
+ ImageLoadingTracker::DONT_CACHE);
+
+ // Observer's OnImageLoaded is called before LoadImageSkia returns.
+ EXPECT_EQ(1, image_loaded_count());
+
+ // Gets representation for 1x.
+ image_.ToImageSkia()->GetRepresentation(ui::SCALE_FACTOR_100P);
+ WaitForImageLoad();
+ EXPECT_EQ(1, image_loaded_count());
+
+ gfx::ImageSkiaRep image_rep =
+ image_.ToImageSkia()->GetRepresentation(ui::SCALE_FACTOR_100P);
+ EXPECT_EQ(ExtensionIconSet::EXTENSION_ICON_SMALLISH,
+ image_rep.pixel_width());
+
+ // Get representation for 2x.
+ image_.ToImageSkia()->GetRepresentation(ui::SCALE_FACTOR_200P);
+
+ // Resource does not exist and OnImageLoaded is notified before above
+ // GetRepresentation returns.
+ EXPECT_EQ(1, image_loaded_count());
+
+ image_rep = image_.ToImageSkia()->GetRepresentation(ui::SCALE_FACTOR_200P);
+
+ // 1x representation would be returned since there is no 2x resource.
+ EXPECT_EQ(ui::SCALE_FACTOR_100P, image_rep.scale_factor());
+ EXPECT_EQ(ExtensionIconSet::EXTENSION_ICON_SMALLISH,
+ image_rep.pixel_width());
+}
+

Powered by Google App Engine
This is Rietveld 408576698