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 |