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

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

Issue 1530403005: [Extensions] Fix install prompt icon bug (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years 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/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

Powered by Google App Engine
This is Rietveld 408576698