| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/extensions/image_loader.h" | 5 #include "chrome/browser/extensions/image_loader.h" |
| 6 | 6 |
| 7 #include "base/json/json_file_value_serializer.h" | 7 #include "base/json/json_file_value_serializer.h" |
| 8 #include "base/message_loop.h" | 8 #include "base/message_loop.h" |
| 9 #include "base/path_service.h" | 9 #include "base/path_service.h" |
| 10 #include "chrome/common/chrome_notification_types.h" | 10 #include "chrome/common/chrome_notification_types.h" |
| 11 #include "chrome/common/chrome_paths.h" | 11 #include "chrome/common/chrome_paths.h" |
| 12 #include "chrome/common/extensions/api/icons/icons_handler.h" |
| 12 #include "chrome/common/extensions/extension.h" | 13 #include "chrome/common/extensions/extension.h" |
| 13 #include "chrome/common/extensions/extension_constants.h" | 14 #include "chrome/common/extensions/extension_constants.h" |
| 14 #include "chrome/common/extensions/extension_icon_set.h" | 15 #include "chrome/common/extensions/extension_icon_set.h" |
| 15 #include "chrome/common/extensions/extension_resource.h" | 16 #include "chrome/common/extensions/extension_resource.h" |
| 16 #include "content/public/browser/notification_service.h" | 17 #include "content/public/browser/notification_service.h" |
| 17 #include "content/public/test/test_browser_thread.h" | 18 #include "content/public/test/test_browser_thread.h" |
| 18 #include "grit/component_extension_resources.h" | 19 #include "grit/component_extension_resources.h" |
| 19 #include "testing/gtest/include/gtest/gtest.h" | 20 #include "testing/gtest/include/gtest/gtest.h" |
| 20 #include "third_party/skia/include/core/SkBitmap.h" | 21 #include "third_party/skia/include/core/SkBitmap.h" |
| 21 #include "ui/gfx/image/image.h" | 22 #include "ui/gfx/image/image.h" |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 105 content::TestBrowserThread file_thread_; | 106 content::TestBrowserThread file_thread_; |
| 106 content::TestBrowserThread io_thread_; | 107 content::TestBrowserThread io_thread_; |
| 107 }; | 108 }; |
| 108 | 109 |
| 109 // Tests loading an image works correctly. | 110 // Tests loading an image works correctly. |
| 110 TEST_F(ImageLoaderTest, LoadImage) { | 111 TEST_F(ImageLoaderTest, LoadImage) { |
| 111 scoped_refptr<Extension> extension(CreateExtension( | 112 scoped_refptr<Extension> extension(CreateExtension( |
| 112 "image_loading_tracker", Extension::INVALID)); | 113 "image_loading_tracker", Extension::INVALID)); |
| 113 ASSERT_TRUE(extension.get() != NULL); | 114 ASSERT_TRUE(extension.get() != NULL); |
| 114 | 115 |
| 115 ExtensionResource image_resource = | 116 ExtensionResource image_resource = extensions::IconsInfo::GetIconResource( |
| 116 extension->GetIconResource(extension_misc::EXTENSION_ICON_SMALLISH, | 117 extension, |
| 117 ExtensionIconSet::MATCH_EXACTLY); | 118 extension_misc::EXTENSION_ICON_SMALLISH, |
| 119 ExtensionIconSet::MATCH_EXACTLY); |
| 118 gfx::Size max_size(extension_misc::EXTENSION_ICON_SMALLISH, | 120 gfx::Size max_size(extension_misc::EXTENSION_ICON_SMALLISH, |
| 119 extension_misc::EXTENSION_ICON_SMALLISH); | 121 extension_misc::EXTENSION_ICON_SMALLISH); |
| 120 ImageLoader loader; | 122 ImageLoader loader; |
| 121 loader.LoadImageAsync(extension.get(), | 123 loader.LoadImageAsync(extension.get(), |
| 122 image_resource, | 124 image_resource, |
| 123 max_size, | 125 max_size, |
| 124 base::Bind(&ImageLoaderTest::OnImageLoaded, | 126 base::Bind(&ImageLoaderTest::OnImageLoaded, |
| 125 base::Unretained(this))); | 127 base::Unretained(this))); |
| 126 | 128 |
| 127 // The image isn't cached, so we should not have received notification. | 129 // The image isn't cached, so we should not have received notification. |
| 128 EXPECT_EQ(0, image_loaded_count()); | 130 EXPECT_EQ(0, image_loaded_count()); |
| 129 | 131 |
| 130 WaitForImageLoad(); | 132 WaitForImageLoad(); |
| 131 | 133 |
| 132 // We should have gotten the image. | 134 // We should have gotten the image. |
| 133 EXPECT_EQ(1, image_loaded_count()); | 135 EXPECT_EQ(1, image_loaded_count()); |
| 134 | 136 |
| 135 // Check that the image was loaded. | 137 // Check that the image was loaded. |
| 136 EXPECT_EQ(extension_misc::EXTENSION_ICON_SMALLISH, | 138 EXPECT_EQ(extension_misc::EXTENSION_ICON_SMALLISH, |
| 137 image_.ToSkBitmap()->width()); | 139 image_.ToSkBitmap()->width()); |
| 138 } | 140 } |
| 139 | 141 |
| 140 // Tests deleting an extension while waiting for the image to load doesn't cause | 142 // Tests deleting an extension while waiting for the image to load doesn't cause |
| 141 // problems. | 143 // problems. |
| 142 TEST_F(ImageLoaderTest, DeleteExtensionWhileWaitingForCache) { | 144 TEST_F(ImageLoaderTest, DeleteExtensionWhileWaitingForCache) { |
| 143 scoped_refptr<Extension> extension(CreateExtension( | 145 scoped_refptr<Extension> extension(CreateExtension( |
| 144 "image_loading_tracker", Extension::INVALID)); | 146 "image_loading_tracker", Extension::INVALID)); |
| 145 ASSERT_TRUE(extension.get() != NULL); | 147 ASSERT_TRUE(extension.get() != NULL); |
| 146 | 148 |
| 147 ExtensionResource image_resource = | 149 ExtensionResource image_resource = extensions::IconsInfo::GetIconResource( |
| 148 extension->GetIconResource(extension_misc::EXTENSION_ICON_SMALLISH, | 150 extension, |
| 149 ExtensionIconSet::MATCH_EXACTLY); | 151 extension_misc::EXTENSION_ICON_SMALLISH, |
| 152 ExtensionIconSet::MATCH_EXACTLY); |
| 150 gfx::Size max_size(extension_misc::EXTENSION_ICON_SMALLISH, | 153 gfx::Size max_size(extension_misc::EXTENSION_ICON_SMALLISH, |
| 151 extension_misc::EXTENSION_ICON_SMALLISH); | 154 extension_misc::EXTENSION_ICON_SMALLISH); |
| 152 ImageLoader loader; | 155 ImageLoader loader; |
| 153 std::set<int> sizes; | 156 std::set<int> sizes; |
| 154 sizes.insert(extension_misc::EXTENSION_ICON_SMALLISH); | 157 sizes.insert(extension_misc::EXTENSION_ICON_SMALLISH); |
| 155 loader.LoadImageAsync(extension.get(), | 158 loader.LoadImageAsync(extension.get(), |
| 156 image_resource, | 159 image_resource, |
| 157 max_size, | 160 max_size, |
| 158 base::Bind(&ImageLoaderTest::OnImageLoaded, | 161 base::Bind(&ImageLoaderTest::OnImageLoaded, |
| 159 base::Unretained(this))); | 162 base::Unretained(this))); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 187 // Tests loading multiple dimensions of the same image. | 190 // Tests loading multiple dimensions of the same image. |
| 188 TEST_F(ImageLoaderTest, MultipleImages) { | 191 TEST_F(ImageLoaderTest, MultipleImages) { |
| 189 scoped_refptr<Extension> extension(CreateExtension( | 192 scoped_refptr<Extension> extension(CreateExtension( |
| 190 "image_loading_tracker", Extension::INVALID)); | 193 "image_loading_tracker", Extension::INVALID)); |
| 191 ASSERT_TRUE(extension.get() != NULL); | 194 ASSERT_TRUE(extension.get() != NULL); |
| 192 | 195 |
| 193 std::vector<ImageLoader::ImageRepresentation> info_list; | 196 std::vector<ImageLoader::ImageRepresentation> info_list; |
| 194 int sizes[] = {extension_misc::EXTENSION_ICON_SMALLISH, | 197 int sizes[] = {extension_misc::EXTENSION_ICON_SMALLISH, |
| 195 extension_misc::EXTENSION_ICON_BITTY}; | 198 extension_misc::EXTENSION_ICON_BITTY}; |
| 196 for (size_t i = 0; i < arraysize(sizes); ++i) { | 199 for (size_t i = 0; i < arraysize(sizes); ++i) { |
| 197 ExtensionResource resource = | 200 ExtensionResource resource = extensions::IconsInfo::GetIconResource( |
| 198 extension->GetIconResource(sizes[i], ExtensionIconSet::MATCH_EXACTLY); | 201 extension, sizes[i], ExtensionIconSet::MATCH_EXACTLY); |
| 199 info_list.push_back(ImageLoader::ImageRepresentation( | 202 info_list.push_back(ImageLoader::ImageRepresentation( |
| 200 resource, | 203 resource, |
| 201 ImageLoader::ImageRepresentation::RESIZE_WHEN_LARGER, | 204 ImageLoader::ImageRepresentation::RESIZE_WHEN_LARGER, |
| 202 gfx::Size(sizes[i], sizes[i]), | 205 gfx::Size(sizes[i], sizes[i]), |
| 203 ui::SCALE_FACTOR_NONE)); | 206 ui::SCALE_FACTOR_NONE)); |
| 204 } | 207 } |
| 205 | 208 |
| 206 ImageLoader loader; | 209 ImageLoader loader; |
| 207 loader.LoadImagesAsync(extension.get(), info_list, | 210 loader.LoadImagesAsync(extension.get(), info_list, |
| 208 base::Bind(&ImageLoaderTest::OnImageLoaded, | 211 base::Bind(&ImageLoaderTest::OnImageLoaded, |
| (...skipping 21 matching lines...) Expand all Loading... |
| 230 EXPECT_EQ(extension_misc::EXTENSION_ICON_SMALLISH, | 233 EXPECT_EQ(extension_misc::EXTENSION_ICON_SMALLISH, |
| 231 img_rep2->pixel_width()); | 234 img_rep2->pixel_width()); |
| 232 } | 235 } |
| 233 | 236 |
| 234 // Tests IsComponentExtensionResource function. | 237 // Tests IsComponentExtensionResource function. |
| 235 TEST_F(ImageLoaderTest, IsComponentExtensionResource) { | 238 TEST_F(ImageLoaderTest, IsComponentExtensionResource) { |
| 236 scoped_refptr<Extension> extension(CreateExtension( | 239 scoped_refptr<Extension> extension(CreateExtension( |
| 237 "file_manager", Extension::COMPONENT)); | 240 "file_manager", Extension::COMPONENT)); |
| 238 ASSERT_TRUE(extension.get() != NULL); | 241 ASSERT_TRUE(extension.get() != NULL); |
| 239 | 242 |
| 240 ExtensionResource resource = | 243 ExtensionResource resource = extensions::IconsInfo::GetIconResource( |
| 241 extension->GetIconResource(extension_misc::EXTENSION_ICON_BITTY, | 244 extension, |
| 242 ExtensionIconSet::MATCH_EXACTLY); | 245 extension_misc::EXTENSION_ICON_BITTY, |
| 246 ExtensionIconSet::MATCH_EXACTLY); |
| 243 | 247 |
| 244 #if defined(FILE_MANAGER_EXTENSION) | 248 #if defined(FILE_MANAGER_EXTENSION) |
| 245 int resource_id; | 249 int resource_id; |
| 246 ASSERT_EQ(true, | 250 ASSERT_EQ(true, |
| 247 ImageLoader::IsComponentExtensionResource(extension->path(), | 251 ImageLoader::IsComponentExtensionResource(extension->path(), |
| 248 resource.relative_path(), | 252 resource.relative_path(), |
| 249 &resource_id)); | 253 &resource_id)); |
| 250 ASSERT_EQ(IDR_FILE_MANAGER_ICON_16, resource_id); | 254 ASSERT_EQ(IDR_FILE_MANAGER_ICON_16, resource_id); |
| 251 #endif | 255 #endif |
| 252 } | 256 } |
| OLD | NEW |