Chromium Code Reviews| Index: chrome/browser/extensions/extension_install_prompt_unittest.cc |
| diff --git a/chrome/browser/extensions/extension_install_prompt_unittest.cc b/chrome/browser/extensions/extension_install_prompt_unittest.cc |
| index 6911666fb86a230e293299192396e51722eabf3f..54cd1330fc943a7979b84d87d8978c0e35c2fe81 100644 |
| --- a/chrome/browser/extensions/extension_install_prompt_unittest.cc |
| +++ b/chrome/browser/extensions/extension_install_prompt_unittest.cc |
| @@ -9,12 +9,17 @@ |
| #include "base/run_loop.h" |
| #include "chrome/browser/extensions/extension_install_prompt.h" |
| #include "chrome/browser/extensions/extension_install_prompt_show_params.h" |
| +#include "chrome/browser/extensions/extension_service_test_with_install.h" |
| +#include "chrome/browser/extensions/extension_util.h" |
| #include "chrome/test/base/testing_profile.h" |
| #include "content/public/test/test_browser_thread_bundle.h" |
| #include "content/public/test/test_web_contents_factory.h" |
| +#include "extensions/browser/image_loader.h" |
| +#include "extensions/common/constants.h" |
| #include "extensions/common/extension.h" |
| #include "extensions/common/extension_builder.h" |
| #include "extensions/common/feature_switch.h" |
| +#include "extensions/common/manifest_handlers/icons_handler.h" |
| #include "extensions/common/permissions/api_permission.h" |
| #include "extensions/common/permissions/api_permission_set.h" |
| #include "extensions/common/permissions/manifest_permission_set.h" |
| @@ -22,11 +27,22 @@ |
| #include "extensions/common/url_pattern_set.h" |
| #include "extensions/common/value_builder.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| +#include "ui/gfx/skia_util.h" |
| namespace extensions { |
| namespace { |
| +void VerifyPromptIconCallback( |
| + const base::Closure& quit_closure, |
| + const SkBitmap& expected_bitmap, |
| + ExtensionInstallPromptShowParams* params, |
| + ExtensionInstallPrompt::Delegate* delegate, |
| + scoped_ptr<ExtensionInstallPrompt::Prompt> prompt) { |
| + EXPECT_TRUE(gfx::BitmapsAreEqual(prompt->icon().AsBitmap(), expected_bitmap)); |
| + quit_closure.Run(); |
| +} |
| + |
| void VerifyPromptPermissionsCallback( |
| const base::Closure& quit_closure, |
| size_t regular_permissions_count, |
| @@ -44,6 +60,13 @@ void VerifyPromptPermissionsCallback( |
| quit_closure.Run(); |
| } |
| +void SetImage(gfx::Image* image_out, |
| + const base::Closure& quit_closure, |
| + const gfx::Image& image_in) { |
| + *image_out = image_in; |
| + quit_closure.Run(); |
| +} |
| + |
| class ExtensionInstallPromptUnitTest : public testing::Test { |
| public: |
| ExtensionInstallPromptUnitTest() {} |
| @@ -161,4 +184,55 @@ TEST_F(ExtensionInstallPromptUnitTest, |
| run_loop.Run(); |
| } |
| +using ExtensionInstallPromptTestWithService = ExtensionServiceTestWithInstall; |
| + |
| +TEST_F(ExtensionInstallPromptTestWithService, ExtensionInstallPromptIconsTest) { |
| + InitializeEmptyExtensionService(); |
| + |
| + const Extension* extension = PackAndInstallCRX( |
| + data_dir().AppendASCII("simple_with_icon"), INSTALL_NEW); |
| + ASSERT_TRUE(extension); |
| + |
| + std::vector<ImageLoader::ImageRepresentation> image_rep( |
|
Devlin
2015/12/17 22:21:14
What a pain to look up an image! Maybe that's nex
asargent_no_longer_on_chrome
2015/12/17 22:40:40
Hmm, I guess it could be marginally better if you
Devlin
2015/12/21 17:07:33
Or it may be nice to have image loader do more of
|
| + 1, ImageLoader::ImageRepresentation( |
| + IconsInfo::GetIconResource(extension, |
| + extension_misc::EXTENSION_ICON_LARGE, |
| + ExtensionIconSet::MATCH_BIGGER), |
| + ImageLoader::ImageRepresentation::NEVER_RESIZE, gfx::Size(), |
| + ui::SCALE_FACTOR_100P)); |
| + base::RunLoop image_loop; |
| + gfx::Image image; |
| + ImageLoader::Get(browser_context()) |
| + ->LoadImagesAsync( |
| + extension, image_rep, |
| + base::Bind(&SetImage, &image, image_loop.QuitClosure())); |
| + image_loop.Run(); |
| + ASSERT_FALSE(image.IsEmpty()); |
| + content::TestWebContentsFactory factory; |
| + content::WebContents* web_contents = |
| + factory.CreateWebContents(browser_context()); |
| + { |
| + ExtensionInstallPrompt prompt(web_contents); |
| + base::RunLoop run_loop; |
| + prompt.ShowDialog(nullptr, // No delegate. |
| + extension, |
| + nullptr, // Force an icon fetch. |
| + base::Bind(&VerifyPromptIconCallback, |
| + run_loop.QuitClosure(), image.AsBitmap())); |
| + run_loop.Run(); |
| + } |
| + |
| + { |
| + ExtensionInstallPrompt prompt(web_contents); |
| + base::RunLoop run_loop; |
| + gfx::ImageSkia app_icon = util::GetDefaultAppIcon(); |
| + prompt.ShowDialog(nullptr, // No delegate. |
| + extension, |
| + app_icon.bitmap(), // Use a different icon. |
| + base::Bind(&VerifyPromptIconCallback, |
| + run_loop.QuitClosure(), *app_icon.bitmap())); |
| + run_loop.Run(); |
| + } |
| +} |
| + |
| } // namespace extensions |