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

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

Issue 25050005: Refactored loading of applications / extensions icons. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 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
Index: chrome/browser/extensions/image_loader_unittest.cc
diff --git a/chrome/browser/extensions/image_loader_unittest.cc b/chrome/browser/extensions/image_loader_unittest.cc
index 05cea06db4661170d1b80a0ae35488fb1421e6fb..b1320d33a819848b5d43eef36135fccd63fe3d67 100644
--- a/chrome/browser/extensions/image_loader_unittest.cc
+++ b/chrome/browser/extensions/image_loader_unittest.cc
@@ -34,7 +34,6 @@ class ImageLoaderTest : public testing::Test {
public:
ImageLoaderTest()
: image_loaded_count_(0),
- quit_in_image_loaded_(false),
ui_thread_(BrowserThread::UI, &ui_loop_),
file_thread_(BrowserThread::FILE),
io_thread_(BrowserThread::IO) {
@@ -42,15 +41,18 @@ class ImageLoaderTest : public testing::Test {
void OnImageLoaded(const gfx::Image& image) {
image_loaded_count_++;
- if (quit_in_image_loaded_)
- base::MessageLoop::current()->Quit();
+ base::MessageLoop::current()->Quit();
image_ = image;
}
+ void OnImageURLLoaded(const GURL& url) {
+ image_loaded_count_++;
+ base::MessageLoop::current()->Quit();
+ url_ = url;
+ }
+
void WaitForImageLoad() {
- quit_in_image_loaded_ = true;
base::MessageLoop::current()->Run();
- quit_in_image_loaded_ = false;
}
int image_loaded_count() {
@@ -94,7 +96,10 @@ class ImageLoaderTest : public testing::Test {
Extension::NO_FLAGS, &error);
}
+ // Holds the image loaded by the test.
gfx::Image image_;
+ // Holds the data url retrieved by the test.
+ GURL url_;
private:
virtual void SetUp() OVERRIDE {
@@ -104,7 +109,6 @@ class ImageLoaderTest : public testing::Test {
}
int image_loaded_count_;
- bool quit_in_image_loaded_;
base::MessageLoop ui_loop_;
content::TestBrowserThread ui_thread_;
content::TestBrowserThread file_thread_;
@@ -123,7 +127,7 @@ TEST_F(ImageLoaderTest, LoadImage) {
ExtensionIconSet::MATCH_EXACTLY);
gfx::Size max_size(extension_misc::EXTENSION_ICON_SMALLISH,
extension_misc::EXTENSION_ICON_SMALLISH);
- ImageLoader loader;
+ ImageLoader loader(NULL);
loader.LoadImageAsync(extension.get(),
image_resource,
max_size,
@@ -156,7 +160,7 @@ TEST_F(ImageLoaderTest, DeleteExtensionWhileWaitingForCache) {
ExtensionIconSet::MATCH_EXACTLY);
gfx::Size max_size(extension_misc::EXTENSION_ICON_SMALLISH,
extension_misc::EXTENSION_ICON_SMALLISH);
- ImageLoader loader;
+ ImageLoader loader(NULL);
std::set<int> sizes;
sizes.insert(extension_misc::EXTENSION_ICON_SMALLISH);
loader.LoadImageAsync(extension.get(),
@@ -210,7 +214,7 @@ TEST_F(ImageLoaderTest, MultipleImages) {
ui::SCALE_FACTOR_NONE));
}
- ImageLoader loader;
+ ImageLoader loader(NULL);
loader.LoadImagesAsync(extension.get(), info_list,
base::Bind(&ImageLoaderTest::OnImageLoaded,
base::Unretained(this)));
@@ -258,3 +262,126 @@ TEST_F(ImageLoaderTest, IsComponentExtensionResource) {
ASSERT_EQ(IDR_FILE_MANAGER_ICON_16, resource_id);
#endif
}
+
+// Tests loading an image works correctly.
+TEST_F(ImageLoaderTest, LoadIcon) {
+ scoped_refptr<Extension> extension(CreateExtension(
+ "image_loading_tracker", Manifest::INVALID_LOCATION));
+ ASSERT_TRUE(extension.get() != NULL);
+
+ ImageLoader loader(NULL);
+ loader.LoadExtensionIconAsync(extension.get(),
+ extension_misc::EXTENSION_ICON_SMALLISH,
+ ExtensionIconSet::MATCH_BIGGER,
+ false,
+ base::Bind(&ImageLoaderTest::OnImageLoaded,
+ base::Unretained(this)));
+
+ // The image isn't cached, so we should not have received notification.
+ EXPECT_EQ(0, image_loaded_count());
+
+ WaitForImageLoad();
+
+ // We should have gotten the image.
+ EXPECT_EQ(1, image_loaded_count());
+
+ // Check that the image was loaded.
+ EXPECT_EQ(extension_misc::EXTENSION_ICON_SMALLISH,
+ image_.ToSkBitmap()->width());
+}
+
+// Tests loading an icon in grayscale works correctly.
+TEST_F(ImageLoaderTest, LoadIconGrayscale) {
+ scoped_refptr<Extension> extension(CreateExtension(
+ "image_loading_tracker", Manifest::INVALID_LOCATION));
+ ASSERT_TRUE(extension.get() != NULL);
+
+ ImageLoader loader(NULL);
+ loader.LoadExtensionIconAsync(extension.get(),
+ extension_misc::EXTENSION_ICON_SMALLISH,
+ ExtensionIconSet::MATCH_BIGGER,
+ true,
+ base::Bind(&ImageLoaderTest::OnImageLoaded,
+ base::Unretained(this)));
+
+ // The image isn't cached, so we should not have received notification.
+ EXPECT_EQ(0, image_loaded_count());
+
+ WaitForImageLoad();
+
+ // We should have gotten the image.
+ EXPECT_EQ(1, image_loaded_count());
+
+ // Check that the image was loaded.
+ EXPECT_EQ(extension_misc::EXTENSION_ICON_SMALLISH,
+ image_.ToSkBitmap()->width());
+}
+
+// Tests loading an icon URL works correctly.
+TEST_F(ImageLoaderTest, LoadIconURL) {
+ scoped_refptr<Extension> extension(CreateExtension(
+ "image_loading_tracker", Manifest::INVALID_LOCATION));
+ ASSERT_TRUE(extension.get() != NULL);
+
+ ImageLoader loader(NULL);
+ loader.LoadExtensionIconDataURLAsync(
+ extension.get(),
+ extension_misc::EXTENSION_ICON_SMALLISH,
+ ExtensionIconSet::MATCH_BIGGER,
+ true,
+ base::Bind(&ImageLoaderTest::OnImageURLLoaded, base::Unretained(this)));
+
+ // The image isn't cached, so we should not have received notification.
+ EXPECT_EQ(0, image_loaded_count());
+
+ WaitForImageLoad();
+
+ // We should have gotten the image.
+ EXPECT_EQ(1, image_loaded_count());
+}
+
+// Tests loading the default icon works correctly.
+TEST_F(ImageLoaderTest, LoadDefaultIcon) {
+ ImageLoader loader(NULL);
+ loader.LoadExtensionIconAsync(
+ NULL,
+ -1,
+ ExtensionIconSet::MATCH_BIGGER,
+ false,
+ base::Bind(&ImageLoaderTest::OnImageLoaded, base::Unretained(this)));
+
+ // The image isn't cached, so we should not have received notification.
+ EXPECT_EQ(0, image_loaded_count());
+
+ WaitForImageLoad();
+
+ // We should have gotten the image.
+ EXPECT_EQ(1, image_loaded_count());
+}
+
+// Tests loading the icon of an extension without icon works correctly.
+TEST_F(ImageLoaderTest, LoadExtensionWithoutIcon) {
+ scoped_refptr<Extension> extension(CreateExtension(
+ "default_image_loading_tracker", Manifest::INVALID_LOCATION));
+ ASSERT_TRUE(extension.get() != NULL);
+
+ ImageLoader loader(NULL);
+ loader.LoadExtensionIconAsync(extension.get(),
+ extension_misc::EXTENSION_ICON_SMALLISH,
+ ExtensionIconSet::MATCH_BIGGER,
+ false,
+ base::Bind(&ImageLoaderTest::OnImageLoaded,
+ base::Unretained(this)));
+
+ // The image isn't cached, so we should not have received notification.
+ EXPECT_EQ(0, image_loaded_count());
+
+ WaitForImageLoad();
+
+ // We should have gotten the image.
+ EXPECT_EQ(1, image_loaded_count());
+
+ // Check that the image was loaded.
+ EXPECT_EQ(extension_misc::EXTENSION_ICON_SMALLISH,
+ image_.ToSkBitmap()->width());
+}
« no previous file with comments | « chrome/browser/extensions/image_loader_factory.cc ('k') | chrome/browser/ui/webui/extensions/extension_icon_source.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698