Index: chrome/browser/tab_contents/thumbnail_generator_unittest.cc |
diff --git a/chrome/browser/tab_contents/thumbnail_generator_unittest.cc b/chrome/browser/tab_contents/thumbnail_generator_unittest.cc |
index 787873c6a00a8eda24a741ac39b7c8b7c4669f1c..7c7f60185df41131651fbaf014d9dc73315a4fd5 100644 |
--- a/chrome/browser/tab_contents/thumbnail_generator_unittest.cc |
+++ b/chrome/browser/tab_contents/thumbnail_generator_unittest.cc |
@@ -11,6 +11,7 @@ |
#include "chrome/common/notification_service.h" |
#include "chrome/common/render_messages.h" |
#include "chrome/test/testing_profile.h" |
+#include "gfx/canvas_skia.h" |
#include "skia/ext/platform_canvas.h" |
#include "testing/gtest/include/gtest/gtest.h" |
#include "third_party/skia/include/core/SkColorPriv.h" |
@@ -178,3 +179,102 @@ TEST_F(ThumbnailGeneratorTest, QuickShow) { |
} |
#endif |
+ |
+TEST(ThumbnailGeneratorSimpleTest, CalculateBoringScore_Empty) { |
+ SkBitmap bitmap; |
+ EXPECT_DOUBLE_EQ(1.0, ThumbnailGenerator::CalculateBoringScore(&bitmap)); |
+} |
+ |
+TEST(ThumbnailGeneratorSimpleTest, CalculateBoringScore_SingleColor) { |
+ const SkColor kBlack = SkColorSetRGB(0, 0, 0); |
+ const gfx::Size kSize(20, 10); |
+ gfx::CanvasSkia canvas(kSize.width(), kSize.height(), true); |
+ // Fill all pixesl in black. |
+ canvas.FillRectInt(kBlack, 0, 0, kSize.width(), kSize.height()); |
+ |
+ SkBitmap bitmap = canvas.getTopPlatformDevice().accessBitmap(false); |
+ // The thumbnail should deserve the highest boring score. |
+ EXPECT_DOUBLE_EQ(1.0, ThumbnailGenerator::CalculateBoringScore(&bitmap)); |
+} |
+ |
+TEST(ThumbnailGeneratorSimpleTest, CalculateBoringScore_TwoColors) { |
+ const SkColor kBlack = SkColorSetRGB(0, 0, 0); |
+ const SkColor kWhite = SkColorSetRGB(0xFF, 0xFF, 0xFF); |
+ const gfx::Size kSize(20, 10); |
+ |
+ gfx::CanvasSkia canvas(kSize.width(), kSize.height(), true); |
+ // Fill all pixesl in black. |
+ canvas.FillRectInt(kBlack, 0, 0, kSize.width(), kSize.height()); |
+ // Fill the left half pixels in white. |
+ canvas.FillRectInt(kWhite, 0, 0, kSize.width() / 2, kSize.height()); |
+ |
+ SkBitmap bitmap = canvas.getTopPlatformDevice().accessBitmap(false); |
+ ASSERT_EQ(kSize.width(), bitmap.width()); |
+ ASSERT_EQ(kSize.height(), bitmap.height()); |
+ // The thumbnail should be less boring because two colors are used. |
+ EXPECT_DOUBLE_EQ(0.5, ThumbnailGenerator::CalculateBoringScore(&bitmap)); |
+} |
+ |
+TEST(ThumbnailGeneratorSimpleTest, GetClippedBitmap_TallerThanWide) { |
+ // The input bitmap is vertically long. |
+ gfx::CanvasSkia canvas(40, 90, true); |
+ const SkBitmap bitmap = canvas.getTopPlatformDevice().accessBitmap(false); |
+ |
+ // The desired size is square. |
+ ThumbnailGenerator::ClipResult clip_result = ThumbnailGenerator::kNotClipped; |
+ SkBitmap clipped_bitmap = ThumbnailGenerator::GetClippedBitmap( |
+ bitmap, 10, 10, &clip_result); |
+ // The clipped bitmap should be square. |
+ EXPECT_EQ(40, clipped_bitmap.width()); |
+ EXPECT_EQ(40, clipped_bitmap.height()); |
+ // The input was taller than wide. |
+ EXPECT_EQ(ThumbnailGenerator::kTallerThanWide, clip_result); |
+} |
+ |
+TEST(ThumbnailGeneratorSimpleTest, GetClippedBitmap_WiderThanTall) { |
+ // The input bitmap is horizontally long. |
+ gfx::CanvasSkia canvas(90, 40, true); |
+ const SkBitmap bitmap = canvas.getTopPlatformDevice().accessBitmap(false); |
+ |
+ // The desired size is square. |
+ ThumbnailGenerator::ClipResult clip_result = ThumbnailGenerator::kNotClipped; |
+ SkBitmap clipped_bitmap = ThumbnailGenerator::GetClippedBitmap( |
+ bitmap, 10, 10, &clip_result); |
+ // The clipped bitmap should be square. |
+ EXPECT_EQ(40, clipped_bitmap.width()); |
+ EXPECT_EQ(40, clipped_bitmap.height()); |
+ // The input was wider than tall. |
+ EXPECT_EQ(ThumbnailGenerator::kWiderThanTall, clip_result); |
+} |
+ |
+TEST(ThumbnailGeneratorSimpleTest, GetClippedBitmap_NotClipped) { |
+ // The input bitmap is square. |
+ gfx::CanvasSkia canvas(40, 40, true); |
+ const SkBitmap bitmap = canvas.getTopPlatformDevice().accessBitmap(false); |
+ |
+ // The desired size is square. |
+ ThumbnailGenerator::ClipResult clip_result = ThumbnailGenerator::kNotClipped; |
+ SkBitmap clipped_bitmap = ThumbnailGenerator::GetClippedBitmap( |
+ bitmap, 10, 10, &clip_result); |
+ // The clipped bitmap should be square. |
+ EXPECT_EQ(40, clipped_bitmap.width()); |
+ EXPECT_EQ(40, clipped_bitmap.height()); |
+ // There was no need to clip. |
+ EXPECT_EQ(ThumbnailGenerator::kNotClipped, clip_result); |
+} |
+ |
+TEST(ThumbnailGeneratorSimpleTest, GetClippedBitmap_NonSquareOutput) { |
+ // The input bitmap is square. |
+ gfx::CanvasSkia canvas(40, 40, true); |
+ const SkBitmap bitmap = canvas.getTopPlatformDevice().accessBitmap(false); |
+ |
+ // The desired size is horizontally long. |
+ ThumbnailGenerator::ClipResult clip_result = ThumbnailGenerator::kNotClipped; |
+ SkBitmap clipped_bitmap = ThumbnailGenerator::GetClippedBitmap( |
+ bitmap, 20, 10, &clip_result); |
+ // The clipped bitmap should have the same aspect ratio of the desired size. |
+ EXPECT_EQ(40, clipped_bitmap.width()); |
+ EXPECT_EQ(20, clipped_bitmap.height()); |
+ // The input was taller than wide. |
+ EXPECT_EQ(ThumbnailGenerator::kTallerThanWide, clip_result); |
+} |