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

Unified Diff: ui/gfx/icon_util_unittest.cc

Issue 854713003: More old files deletion. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Fix tryjobs? Created 5 years, 11 months 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
« no previous file with comments | « ui/gfx/icon_util.cc ('k') | ui/gfx/icon_util_unittests.ico » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gfx/icon_util_unittest.cc
diff --git a/ui/gfx/icon_util_unittest.cc b/ui/gfx/icon_util_unittest.cc
deleted file mode 100644
index 280c25f41082760849e6567acc2759f0299657a0..0000000000000000000000000000000000000000
--- a/ui/gfx/icon_util_unittest.cc
+++ /dev/null
@@ -1,432 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ui/gfx/icon_util.h"
-
-#include "base/files/file_util.h"
-#include "base/files/scoped_temp_dir.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/path_service.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/skia/include/core/SkBitmap.h"
-#include "ui/gfx/gfx_paths.h"
-#include "ui/gfx/icon_util_unittests_resource.h"
-#include "ui/gfx/image/image.h"
-#include "ui/gfx/image/image_family.h"
-#include "ui/gfx/size.h"
-
-namespace {
-
-static const char kSmallIconName[] = "icon_util/16_X_16_icon.ico";
-static const char kLargeIconName[] = "icon_util/128_X_128_icon.ico";
-static const char kTempIconFilename[] = "temp_test_icon.ico";
-
-} // namespace
-
-class IconUtilTest : public testing::Test {
- public:
- virtual void SetUp() override {
- gfx::RegisterPathProvider();
- ASSERT_TRUE(PathService::Get(gfx::DIR_TEST_DATA, &test_data_directory_));
- temp_directory_.CreateUniqueTempDir();
- }
-
- static const int kSmallIconWidth = 16;
- static const int kSmallIconHeight = 16;
- static const int kLargeIconWidth = 128;
- static const int kLargeIconHeight = 128;
-
- // 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) {
- HICON icon = static_cast<HICON>(LoadImage(NULL,
- filename.value().c_str(),
- IMAGE_ICON,
- width,
- height,
- LR_LOADTRANSPARENT | LR_LOADFROMFILE));
- return icon;
- }
-
- SkBitmap CreateBlackSkBitmap(int width, int height) {
- SkBitmap bitmap;
- bitmap.allocN32Pixels(width, height);
- // Setting the pixels to transparent-black.
- memset(bitmap.getPixels(), 0, width * height * 4);
- return bitmap;
- }
-
- // Loads an .ico file from |icon_filename| and asserts that it contains all of
- // the expected icon sizes up to and including |max_icon_size|, and no other
- // icons. If |max_icon_size| >= 256, this tests for a 256x256 PNG icon entry.
- void CheckAllIconSizes(const base::FilePath& icon_filename,
- int max_icon_size);
-
- protected:
- // The root directory for test files. This should be treated as read-only.
- base::FilePath test_data_directory_;
-
- // Directory for creating files by this test.
- base::ScopedTempDir temp_directory_;
-};
-
-void IconUtilTest::CheckAllIconSizes(const base::FilePath& icon_filename,
- int max_icon_size) {
- ASSERT_TRUE(base::PathExists(icon_filename));
-
- // Determine how many icons to expect, based on |max_icon_size|.
- int expected_num_icons = 0;
- for (size_t i = 0; i < IconUtil::kNumIconDimensions; ++i) {
- if (IconUtil::kIconDimensions[i] > max_icon_size)
- break;
- ++expected_num_icons;
- }
-
- // 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);
-
- // Read the file completely into memory.
- std::string icon_data;
- ASSERT_TRUE(base::ReadFileToString(icon_filename, &icon_data));
- ASSERT_GE(icon_data.length(), sizeof(IconUtil::ICONDIR));
-
- // Ensure that it has exactly the expected number and sizes of icons, in the
- // expected order. This matches each entry of the loaded file's icon directory
- // with the corresponding element of kIconDimensions.
- // Also extracts the 256x256 entry as png_entry.
- const IconUtil::ICONDIR* icon_dir =
- reinterpret_cast<const IconUtil::ICONDIR*>(icon_data.data());
- EXPECT_EQ(expected_num_icons, icon_dir->idCount);
- ASSERT_GE(IconUtil::kNumIconDimensions, icon_dir->idCount);
- ASSERT_GE(icon_data.length(),
- sizeof(IconUtil::ICONDIR) +
- icon_dir->idCount * sizeof(IconUtil::ICONDIRENTRY));
- const IconUtil::ICONDIRENTRY* png_entry = NULL;
- for (size_t i = 0; i < icon_dir->idCount; ++i) {
- const IconUtil::ICONDIRENTRY* entry = &icon_dir->idEntries[i];
- // Mod 256 because as a special case in ICONDIRENTRY, the value 0 represents
- // a width or height of 256.
- int expected_size = IconUtil::kIconDimensions[i] % 256;
- EXPECT_EQ(expected_size, static_cast<int>(entry->bWidth));
- EXPECT_EQ(expected_size, static_cast<int>(entry->bHeight));
- if (entry->bWidth == 0 && entry->bHeight == 0) {
- EXPECT_EQ(NULL, png_entry);
- png_entry = entry;
- }
- }
-
- if (max_icon_size >= 256) {
- ASSERT_TRUE(png_entry);
-
- // Convert the PNG entry data back to a SkBitmap to ensure it's valid.
- ASSERT_GE(icon_data.length(),
- png_entry->dwImageOffset + png_entry->dwBytesInRes);
- const unsigned char* png_bytes = reinterpret_cast<const unsigned char*>(
- icon_data.data() + png_entry->dwImageOffset);
- gfx::Image image = gfx::Image::CreateFrom1xPNGBytes(
- png_bytes, png_entry->dwBytesInRes);
- SkBitmap bitmap = image.AsBitmap();
- EXPECT_EQ(256, bitmap.width());
- EXPECT_EQ(256, bitmap.height());
- }
-}
-
-// The following test case makes sure IconUtil::SkBitmapFromHICON fails
-// gracefully when called with invalid input parameters.
-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);
-
- // Invalid size parameter.
- gfx::Size invalid_icon_size(kSmallIconHeight, 0);
- EXPECT_EQ(IconUtil::CreateSkBitmapFromHICON(icon, invalid_icon_size),
- static_cast<SkBitmap*>(NULL));
-
- // Invalid icon.
- EXPECT_EQ(IconUtil::CreateSkBitmapFromHICON(NULL, icon_size),
- static_cast<SkBitmap*>(NULL));
-
- // The following code should succeed.
- scoped_ptr<SkBitmap> bitmap;
- bitmap.reset(IconUtil::CreateSkBitmapFromHICON(icon, 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;
- 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));
-
- // 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));
-
- // 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);
-}
-
-// The following test case makes sure IconUtil::CreateIconFileFromImageFamily
-// fails gracefully when called with invalid input parameters.
-TEST_F(IconUtilTest, TestCreateIconFileInvalidParameters) {
- scoped_ptr<SkBitmap> bitmap;
- gfx::ImageFamily image_family;
- base::FilePath valid_icon_filename = temp_directory_.path().AppendASCII(
- kTempIconFilename);
- base::FilePath invalid_icon_filename = temp_directory_.path().AppendASCII(
- "<>?.ico");
-
- // Wrong bitmap format.
- bitmap.reset(new SkBitmap);
- ASSERT_NE(bitmap.get(), static_cast<SkBitmap*>(NULL));
- // Must allocate pixels or else ImageSkia will ignore the bitmap and just
- // return an empty image.
- bitmap->allocPixels(SkImageInfo::MakeA8(kSmallIconWidth, kSmallIconHeight));
- memset(bitmap->getPixels(), 0, bitmap->width() * bitmap->height());
- image_family.Add(gfx::Image::CreateFrom1xBitmap(*bitmap));
- EXPECT_FALSE(IconUtil::CreateIconFileFromImageFamily(image_family,
- valid_icon_filename));
- EXPECT_FALSE(base::PathExists(valid_icon_filename));
-
- // Invalid bitmap size.
- image_family.clear();
- bitmap.reset(new SkBitmap);
- ASSERT_NE(bitmap.get(), static_cast<SkBitmap*>(NULL));
- bitmap->allocPixels(SkImageInfo::MakeN32Premul(0, 0));
- image_family.Add(gfx::Image::CreateFrom1xBitmap(*bitmap));
- EXPECT_FALSE(IconUtil::CreateIconFileFromImageFamily(image_family,
- valid_icon_filename));
- EXPECT_FALSE(base::PathExists(valid_icon_filename));
-
- // Bitmap with no allocated pixels.
- image_family.clear();
- bitmap.reset(new SkBitmap);
- ASSERT_NE(bitmap.get(), static_cast<SkBitmap*>(NULL));
- bitmap->setInfo(SkImageInfo::MakeN32Premul(kSmallIconWidth,
- kSmallIconHeight));
- image_family.Add(gfx::Image::CreateFrom1xBitmap(*bitmap));
- EXPECT_FALSE(IconUtil::CreateIconFileFromImageFamily(image_family,
- valid_icon_filename));
- EXPECT_FALSE(base::PathExists(valid_icon_filename));
-
- // Invalid file name.
- image_family.clear();
- bitmap->allocPixels();
- // Setting the pixels to black.
- memset(bitmap->getPixels(), 0, bitmap->width() * bitmap->height() * 4);
- image_family.Add(gfx::Image::CreateFrom1xBitmap(*bitmap));
- EXPECT_FALSE(IconUtil::CreateIconFileFromImageFamily(image_family,
- invalid_icon_filename));
- EXPECT_FALSE(base::PathExists(invalid_icon_filename));
-}
-
-// This test case makes sure IconUtil::CreateIconFileFromImageFamily fails if
-// the image family is empty or invalid.
-TEST_F(IconUtilTest, TestCreateIconFileEmptyImageFamily) {
- base::FilePath icon_filename = temp_directory_.path().AppendASCII(
- kTempIconFilename);
-
- // Empty image family.
- EXPECT_FALSE(IconUtil::CreateIconFileFromImageFamily(gfx::ImageFamily(),
- icon_filename));
- EXPECT_FALSE(base::PathExists(icon_filename));
-
- // Image family with only an empty image.
- gfx::ImageFamily image_family;
- image_family.Add(gfx::Image());
- EXPECT_FALSE(IconUtil::CreateIconFileFromImageFamily(image_family,
- icon_filename));
- EXPECT_FALSE(base::PathExists(icon_filename));
-}
-
-// This test case makes sure that when we load an icon from disk and convert
-// the HICON into a bitmap, the bitmap has the expected format and dimensions.
-TEST_F(IconUtilTest, TestCreateSkBitmapFromHICON) {
- scoped_ptr<SkBitmap> bitmap;
- 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));
- 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));
- 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,
-// the returned handle is valid and refers to an icon with the expected
-// 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));
- ICONINFO icon_info;
- ASSERT_TRUE(::GetIconInfo(icon, &icon_info));
- EXPECT_TRUE(icon_info.fIcon);
-
- // Now that have the icon information, we should obtain the specification of
- // the icon's bitmap and make sure it matches the specification of the
- // SkBitmap we started with.
- //
- // The bitmap handle contained in the icon information is a handle to a
- // compatible bitmap so we need to call ::GetDIBits() in order to retrieve
- // the bitmap's header information.
- BITMAPINFO bitmap_info;
- ::ZeroMemory(&bitmap_info, sizeof(BITMAPINFO));
- bitmap_info.bmiHeader.biSize = sizeof(BITMAPINFO);
- HDC hdc = ::GetDC(NULL);
- int result = ::GetDIBits(hdc,
- icon_info.hbmColor,
- 0,
- kSmallIconWidth,
- NULL,
- &bitmap_info,
- DIB_RGB_COLORS);
- ASSERT_GT(result, 0);
- EXPECT_EQ(bitmap_info.bmiHeader.biWidth, kSmallIconWidth);
- EXPECT_EQ(bitmap_info.bmiHeader.biHeight, kSmallIconHeight);
- 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
-// valid .ico file given an ImageFamily, and appropriately creates all icon
-// sizes from the given input.
-TEST_F(IconUtilTest, TestCreateIconFileFromImageFamily) {
- gfx::ImageFamily image_family;
- base::FilePath icon_filename =
- temp_directory_.path().AppendASCII(kTempIconFilename);
-
- // Test with only a 16x16 icon. Should only scale up to 48x48.
- image_family.Add(gfx::Image::CreateFrom1xBitmap(
- CreateBlackSkBitmap(kSmallIconWidth, kSmallIconHeight)));
- ASSERT_TRUE(IconUtil::CreateIconFileFromImageFamily(image_family,
- icon_filename));
- CheckAllIconSizes(icon_filename, 48);
-
- // Test with a 48x48 icon. Should only scale down.
- image_family.Add(gfx::Image::CreateFrom1xBitmap(CreateBlackSkBitmap(48, 48)));
- ASSERT_TRUE(IconUtil::CreateIconFileFromImageFamily(image_family,
- icon_filename));
- CheckAllIconSizes(icon_filename, 48);
-
- // Test with a 64x64 icon. Should scale up to 256x256.
- image_family.Add(gfx::Image::CreateFrom1xBitmap(CreateBlackSkBitmap(64, 64)));
- ASSERT_TRUE(IconUtil::CreateIconFileFromImageFamily(image_family,
- icon_filename));
- CheckAllIconSizes(icon_filename, 256);
-
- // Test with a 256x256 icon. Should include the 256x256 in the output.
- image_family.Add(gfx::Image::CreateFrom1xBitmap(
- CreateBlackSkBitmap(256, 256)));
- ASSERT_TRUE(IconUtil::CreateIconFileFromImageFamily(image_family,
- icon_filename));
- CheckAllIconSizes(icon_filename, 256);
-
- // Test with a 49x49 icon. Should scale up to 256x256, but exclude the
- // original 49x49 representation from the output.
- image_family.clear();
- image_family.Add(gfx::Image::CreateFrom1xBitmap(CreateBlackSkBitmap(49, 49)));
- ASSERT_TRUE(IconUtil::CreateIconFileFromImageFamily(image_family,
- icon_filename));
- CheckAllIconSizes(icon_filename, 256);
-
- // Test with a non-square 16x32 icon. Should scale up to 48, but exclude the
- // original 16x32 representation from the output.
- image_family.clear();
- image_family.Add(gfx::Image::CreateFrom1xBitmap(CreateBlackSkBitmap(16, 32)));
- ASSERT_TRUE(IconUtil::CreateIconFileFromImageFamily(image_family,
- icon_filename));
- CheckAllIconSizes(icon_filename, 48);
-
- // Test with a non-square 32x49 icon. Should scale up to 256, but exclude the
- // original 32x49 representation from the output.
- image_family.Add(gfx::Image::CreateFrom1xBitmap(CreateBlackSkBitmap(32, 49)));
- ASSERT_TRUE(IconUtil::CreateIconFileFromImageFamily(image_family,
- icon_filename));
- CheckAllIconSizes(icon_filename, 256);
-
- // Test with an empty and non-empty image.
- // The empty image should be ignored.
- image_family.clear();
- image_family.Add(gfx::Image());
- image_family.Add(gfx::Image::CreateFrom1xBitmap(CreateBlackSkBitmap(16, 16)));
- ASSERT_TRUE(IconUtil::CreateIconFileFromImageFamily(image_family,
- icon_filename));
- CheckAllIconSizes(icon_filename, 48);
-}
-
-TEST_F(IconUtilTest, TestCreateSkBitmapFromIconResource48x48) {
- HMODULE module = GetModuleHandle(NULL);
- scoped_ptr<SkBitmap> bitmap(
- IconUtil::CreateSkBitmapFromIconResource(module, IDR_MAINFRAME, 48));
- ASSERT_TRUE(bitmap.get());
- EXPECT_EQ(48, bitmap->width());
- EXPECT_EQ(48, bitmap->height());
-}
-
-TEST_F(IconUtilTest, TestCreateSkBitmapFromIconResource256x256) {
- HMODULE module = GetModuleHandle(NULL);
- scoped_ptr<SkBitmap> bitmap(
- IconUtil::CreateSkBitmapFromIconResource(module, IDR_MAINFRAME, 256));
- ASSERT_TRUE(bitmap.get());
- EXPECT_EQ(256, bitmap->width());
- EXPECT_EQ(256, bitmap->height());
-}
-
-// This tests that kNumIconDimensionsUpToMediumSize has the correct value.
-TEST_F(IconUtilTest, TestNumIconDimensionsUpToMediumSize) {
- ASSERT_LE(IconUtil::kNumIconDimensionsUpToMediumSize,
- IconUtil::kNumIconDimensions);
- EXPECT_EQ(IconUtil::kMediumIconSize,
- IconUtil::kIconDimensions[
- IconUtil::kNumIconDimensionsUpToMediumSize - 1]);
-}
« no previous file with comments | « ui/gfx/icon_util.cc ('k') | ui/gfx/icon_util_unittests.ico » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698