| Index: ui/gfx/icon_util_unittest.cc
|
| diff --git a/ui/gfx/icon_util_unittest.cc b/ui/gfx/icon_util_unittest.cc
|
| index d72c2cc9651279121195d70b1d8670eb7f628f80..ffb98649da1b6421bc4ff4091097e1fa9cd0e7e3 100644
|
| --- a/ui/gfx/icon_util_unittest.cc
|
| +++ b/ui/gfx/icon_util_unittest.cc
|
| @@ -28,6 +28,8 @@ static const char kTempIconFilename[] = "temp_test_icon.ico";
|
|
|
| class IconUtilTest : public testing::Test {
|
| public:
|
| + using ScopedHICON = base::win::ScopedHICON;
|
| +
|
| void SetUp() override {
|
| gfx::RegisterPathProvider();
|
| ASSERT_TRUE(PathService::Get(gfx::DIR_TEST_DATA, &test_data_directory_));
|
| @@ -41,15 +43,16 @@ class IconUtilTest : public testing::Test {
|
|
|
| // Given a file name for an .ico file and an image dimensions, this
|
| // function loads the icon and returns an HICON handle.
|
| - HICON LoadIconFromFile(const base::FilePath& filename,
|
| - int width, int height) {
|
| + ScopedHICON LoadIconFromFile(const base::FilePath& filename,
|
| + int width,
|
| + int height) {
|
| HICON icon = static_cast<HICON>(LoadImage(NULL,
|
| filename.value().c_str(),
|
| IMAGE_ICON,
|
| width,
|
| height,
|
| LR_LOADTRANSPARENT | LR_LOADFROMFILE));
|
| - return icon;
|
| + return ScopedHICON(icon);
|
| }
|
|
|
| SkBitmap CreateBlackSkBitmap(int width, int height) {
|
| @@ -87,11 +90,8 @@ void IconUtilTest::CheckAllIconSizes(const base::FilePath& icon_filename,
|
| }
|
|
|
| // First, use the Windows API to load the icon, a basic validity test.
|
| - HICON icon = LoadIconFromFile(icon_filename, kSmallIconWidth,
|
| - kSmallIconHeight);
|
| - EXPECT_NE(static_cast<HICON>(NULL), icon);
|
| - if (icon != NULL)
|
| - ::DestroyIcon(icon);
|
| + EXPECT_TRUE(LoadIconFromFile(icon_filename, kSmallIconWidth, kSmallIconHeight)
|
| + .is_valid());
|
|
|
| // Read the file completely into memory.
|
| std::string icon_data;
|
| @@ -145,14 +145,13 @@ TEST_F(IconUtilTest, TestIconToBitmapInvalidParameters) {
|
| base::FilePath icon_filename =
|
| test_data_directory_.AppendASCII(kSmallIconName);
|
| gfx::Size icon_size(kSmallIconWidth, kSmallIconHeight);
|
| - HICON icon = LoadIconFromFile(icon_filename,
|
| - icon_size.width(),
|
| - icon_size.height());
|
| - ASSERT_TRUE(icon != NULL);
|
| + ScopedHICON icon(
|
| + LoadIconFromFile(icon_filename, icon_size.width(), icon_size.height()));
|
| + ASSERT_TRUE(icon.is_valid());
|
|
|
| // Invalid size parameter.
|
| gfx::Size invalid_icon_size(kSmallIconHeight, 0);
|
| - EXPECT_EQ(IconUtil::CreateSkBitmapFromHICON(icon, invalid_icon_size),
|
| + EXPECT_EQ(IconUtil::CreateSkBitmapFromHICON(icon.get(), invalid_icon_size),
|
| static_cast<SkBitmap*>(NULL));
|
|
|
| // Invalid icon.
|
| @@ -161,38 +160,37 @@ TEST_F(IconUtilTest, TestIconToBitmapInvalidParameters) {
|
|
|
| // The following code should succeed.
|
| scoped_ptr<SkBitmap> bitmap;
|
| - bitmap.reset(IconUtil::CreateSkBitmapFromHICON(icon, icon_size));
|
| + bitmap.reset(IconUtil::CreateSkBitmapFromHICON(icon.get(), icon_size));
|
| EXPECT_NE(bitmap.get(), static_cast<SkBitmap*>(NULL));
|
| - ::DestroyIcon(icon);
|
| }
|
|
|
| // The following test case makes sure IconUtil::CreateHICONFromSkBitmap fails
|
| // gracefully when called with invalid input parameters.
|
| TEST_F(IconUtilTest, TestBitmapToIconInvalidParameters) {
|
| - HICON icon = NULL;
|
| + ScopedHICON icon;
|
| scoped_ptr<SkBitmap> bitmap;
|
|
|
| // Wrong bitmap format.
|
| bitmap.reset(new SkBitmap);
|
| ASSERT_NE(bitmap.get(), static_cast<SkBitmap*>(NULL));
|
| bitmap->setInfo(SkImageInfo::MakeA8(kSmallIconWidth, kSmallIconHeight));
|
| - icon = IconUtil::CreateHICONFromSkBitmap(*bitmap);
|
| - EXPECT_EQ(icon, static_cast<HICON>(NULL));
|
| + icon = IconUtil::CreateHICONFromSkBitmap(*bitmap).Pass();
|
| + EXPECT_FALSE(icon.is_valid());
|
|
|
| // Invalid bitmap size.
|
| bitmap.reset(new SkBitmap);
|
| ASSERT_NE(bitmap.get(), static_cast<SkBitmap*>(NULL));
|
| bitmap->setInfo(SkImageInfo::MakeN32Premul(0, 0));
|
| - icon = IconUtil::CreateHICONFromSkBitmap(*bitmap);
|
| - EXPECT_EQ(icon, static_cast<HICON>(NULL));
|
| + icon = IconUtil::CreateHICONFromSkBitmap(*bitmap).Pass();
|
| + EXPECT_FALSE(icon.is_valid());
|
|
|
| // Valid bitmap configuration but no pixels allocated.
|
| bitmap.reset(new SkBitmap);
|
| ASSERT_NE(bitmap.get(), static_cast<SkBitmap*>(NULL));
|
| bitmap->setInfo(SkImageInfo::MakeN32Premul(kSmallIconWidth,
|
| kSmallIconHeight));
|
| - icon = IconUtil::CreateHICONFromSkBitmap(*bitmap);
|
| - EXPECT_TRUE(icon == NULL);
|
| + icon = IconUtil::CreateHICONFromSkBitmap(*bitmap).Pass();
|
| + EXPECT_FALSE(icon.is_valid());
|
| }
|
|
|
| // The following test case makes sure IconUtil::CreateIconFileFromImageFamily
|
| @@ -275,30 +273,28 @@ TEST_F(IconUtilTest, TestCreateSkBitmapFromHICON) {
|
| base::FilePath small_icon_filename = test_data_directory_.AppendASCII(
|
| kSmallIconName);
|
| gfx::Size small_icon_size(kSmallIconWidth, kSmallIconHeight);
|
| - HICON small_icon = LoadIconFromFile(small_icon_filename,
|
| - small_icon_size.width(),
|
| - small_icon_size.height());
|
| - ASSERT_NE(small_icon, static_cast<HICON>(NULL));
|
| - bitmap.reset(IconUtil::CreateSkBitmapFromHICON(small_icon, small_icon_size));
|
| + ScopedHICON small_icon(LoadIconFromFile(
|
| + small_icon_filename, small_icon_size.width(), small_icon_size.height()));
|
| + ASSERT_TRUE(small_icon.is_valid());
|
| + bitmap.reset(
|
| + IconUtil::CreateSkBitmapFromHICON(small_icon.get(), small_icon_size));
|
| ASSERT_NE(bitmap.get(), static_cast<SkBitmap*>(NULL));
|
| EXPECT_EQ(bitmap->width(), small_icon_size.width());
|
| EXPECT_EQ(bitmap->height(), small_icon_size.height());
|
| EXPECT_EQ(bitmap->colorType(), kN32_SkColorType);
|
| - ::DestroyIcon(small_icon);
|
|
|
| base::FilePath large_icon_filename = test_data_directory_.AppendASCII(
|
| kLargeIconName);
|
| gfx::Size large_icon_size(kLargeIconWidth, kLargeIconHeight);
|
| - HICON large_icon = LoadIconFromFile(large_icon_filename,
|
| - large_icon_size.width(),
|
| - large_icon_size.height());
|
| - ASSERT_NE(large_icon, static_cast<HICON>(NULL));
|
| - bitmap.reset(IconUtil::CreateSkBitmapFromHICON(large_icon, large_icon_size));
|
| + ScopedHICON large_icon(LoadIconFromFile(
|
| + large_icon_filename, large_icon_size.width(), large_icon_size.height()));
|
| + ASSERT_TRUE(large_icon.is_valid());
|
| + bitmap.reset(
|
| + IconUtil::CreateSkBitmapFromHICON(large_icon.get(), large_icon_size));
|
| ASSERT_NE(bitmap.get(), static_cast<SkBitmap*>(NULL));
|
| EXPECT_EQ(bitmap->width(), large_icon_size.width());
|
| EXPECT_EQ(bitmap->height(), large_icon_size.height());
|
| EXPECT_EQ(bitmap->colorType(), kN32_SkColorType);
|
| - ::DestroyIcon(large_icon);
|
| }
|
|
|
| // This test case makes sure that when an HICON is created from an SkBitmap,
|
| @@ -306,10 +302,10 @@ TEST_F(IconUtilTest, TestCreateSkBitmapFromHICON) {
|
| // dimensions color depth etc.
|
| TEST_F(IconUtilTest, TestBasicCreateHICONFromSkBitmap) {
|
| SkBitmap bitmap = CreateBlackSkBitmap(kSmallIconWidth, kSmallIconHeight);
|
| - HICON icon = IconUtil::CreateHICONFromSkBitmap(bitmap);
|
| - EXPECT_NE(icon, static_cast<HICON>(NULL));
|
| + ScopedHICON icon(IconUtil::CreateHICONFromSkBitmap(bitmap));
|
| + EXPECT_TRUE(icon.is_valid());
|
| ICONINFO icon_info;
|
| - ASSERT_TRUE(::GetIconInfo(icon, &icon_info));
|
| + ASSERT_TRUE(GetIconInfo(icon.get(), &icon_info));
|
| EXPECT_TRUE(icon_info.fIcon);
|
|
|
| // Now that have the icon information, we should obtain the specification of
|
| @@ -336,7 +332,6 @@ TEST_F(IconUtilTest, TestBasicCreateHICONFromSkBitmap) {
|
| EXPECT_EQ(bitmap_info.bmiHeader.biPlanes, 1);
|
| EXPECT_EQ(bitmap_info.bmiHeader.biBitCount, 32);
|
| ::ReleaseDC(NULL, hdc);
|
| - ::DestroyIcon(icon);
|
| }
|
|
|
| // This test case makes sure that CreateIconFileFromImageFamily creates a
|
|
|