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

Side by Side Diff: chrome/browser/tab_contents/thumbnail_generator_unittest.cc

Issue 8122013: Allow CanvasSkia to bind to an existing SkCanvas. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: 1 more fix Created 9 years, 2 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/stringprintf.h" 6 #include "base/stringprintf.h"
7 #include "chrome/browser/history/top_sites.h" 7 #include "chrome/browser/history/top_sites.h"
8 #include "chrome/browser/tab_contents/thumbnail_generator.h" 8 #include "chrome/browser/tab_contents/thumbnail_generator.h"
9 #include "chrome/common/render_messages.h" 9 #include "chrome/common/render_messages.h"
10 #include "chrome/test/base/testing_profile.h" 10 #include "chrome/test/base/testing_profile.h"
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 EXPECT_DOUBLE_EQ(1.0, ThumbnailGenerator::CalculateBoringScore(&bitmap)); 214 EXPECT_DOUBLE_EQ(1.0, ThumbnailGenerator::CalculateBoringScore(&bitmap));
215 } 215 }
216 216
217 TEST_F(ThumbnailGeneratorSimpleTest, CalculateBoringScore_SingleColor) { 217 TEST_F(ThumbnailGeneratorSimpleTest, CalculateBoringScore_SingleColor) {
218 const SkColor kBlack = SkColorSetRGB(0, 0, 0); 218 const SkColor kBlack = SkColorSetRGB(0, 0, 0);
219 const gfx::Size kSize(20, 10); 219 const gfx::Size kSize(20, 10);
220 gfx::CanvasSkia canvas(kSize.width(), kSize.height(), true); 220 gfx::CanvasSkia canvas(kSize.width(), kSize.height(), true);
221 // Fill all pixesl in black. 221 // Fill all pixesl in black.
222 canvas.FillRectInt(kBlack, 0, 0, kSize.width(), kSize.height()); 222 canvas.FillRectInt(kBlack, 0, 0, kSize.width(), kSize.height());
223 223
224 SkBitmap bitmap = skia::GetTopDevice(canvas)->accessBitmap(false); 224 SkBitmap bitmap =
225 skia::GetTopDevice(*canvas.sk_canvas())->accessBitmap(false);
225 // The thumbnail should deserve the highest boring score. 226 // The thumbnail should deserve the highest boring score.
226 EXPECT_DOUBLE_EQ(1.0, ThumbnailGenerator::CalculateBoringScore(&bitmap)); 227 EXPECT_DOUBLE_EQ(1.0, ThumbnailGenerator::CalculateBoringScore(&bitmap));
227 } 228 }
228 229
229 TEST_F(ThumbnailGeneratorSimpleTest, CalculateBoringScore_TwoColors) { 230 TEST_F(ThumbnailGeneratorSimpleTest, CalculateBoringScore_TwoColors) {
230 const SkColor kBlack = SkColorSetRGB(0, 0, 0); 231 const SkColor kBlack = SkColorSetRGB(0, 0, 0);
231 const SkColor kWhite = SkColorSetRGB(0xFF, 0xFF, 0xFF); 232 const SkColor kWhite = SkColorSetRGB(0xFF, 0xFF, 0xFF);
232 const gfx::Size kSize(20, 10); 233 const gfx::Size kSize(20, 10);
233 234
234 gfx::CanvasSkia canvas(kSize.width(), kSize.height(), true); 235 gfx::CanvasSkia canvas(kSize.width(), kSize.height(), true);
235 // Fill all pixesl in black. 236 // Fill all pixesl in black.
236 canvas.FillRectInt(kBlack, 0, 0, kSize.width(), kSize.height()); 237 canvas.FillRectInt(kBlack, 0, 0, kSize.width(), kSize.height());
237 // Fill the left half pixels in white. 238 // Fill the left half pixels in white.
238 canvas.FillRectInt(kWhite, 0, 0, kSize.width() / 2, kSize.height()); 239 canvas.FillRectInt(kWhite, 0, 0, kSize.width() / 2, kSize.height());
239 240
240 SkBitmap bitmap = skia::GetTopDevice(canvas)->accessBitmap(false); 241 SkBitmap bitmap =
242 skia::GetTopDevice(*canvas.sk_canvas())->accessBitmap(false);
241 ASSERT_EQ(kSize.width(), bitmap.width()); 243 ASSERT_EQ(kSize.width(), bitmap.width());
242 ASSERT_EQ(kSize.height(), bitmap.height()); 244 ASSERT_EQ(kSize.height(), bitmap.height());
243 // The thumbnail should be less boring because two colors are used. 245 // The thumbnail should be less boring because two colors are used.
244 EXPECT_DOUBLE_EQ(0.5, ThumbnailGenerator::CalculateBoringScore(&bitmap)); 246 EXPECT_DOUBLE_EQ(0.5, ThumbnailGenerator::CalculateBoringScore(&bitmap));
245 } 247 }
246 248
247 TEST_F(ThumbnailGeneratorSimpleTest, GetClippedBitmap_TallerThanWide) { 249 TEST_F(ThumbnailGeneratorSimpleTest, GetClippedBitmap_TallerThanWide) {
248 // The input bitmap is vertically long. 250 // The input bitmap is vertically long.
249 gfx::CanvasSkia canvas(40, 90, true); 251 gfx::CanvasSkia canvas(40, 90, true);
250 const SkBitmap bitmap = skia::GetTopDevice(canvas)->accessBitmap(false); 252 SkBitmap bitmap =
253 skia::GetTopDevice(*canvas.sk_canvas())->accessBitmap(false);
251 254
252 // The desired size is square. 255 // The desired size is square.
253 ThumbnailGenerator::ClipResult clip_result = ThumbnailGenerator::kNotClipped; 256 ThumbnailGenerator::ClipResult clip_result = ThumbnailGenerator::kNotClipped;
254 SkBitmap clipped_bitmap = ThumbnailGenerator::GetClippedBitmap( 257 SkBitmap clipped_bitmap = ThumbnailGenerator::GetClippedBitmap(
255 bitmap, 10, 10, &clip_result); 258 bitmap, 10, 10, &clip_result);
256 // The clipped bitmap should be square. 259 // The clipped bitmap should be square.
257 EXPECT_EQ(40, clipped_bitmap.width()); 260 EXPECT_EQ(40, clipped_bitmap.width());
258 EXPECT_EQ(40, clipped_bitmap.height()); 261 EXPECT_EQ(40, clipped_bitmap.height());
259 // The input was taller than wide. 262 // The input was taller than wide.
260 EXPECT_EQ(ThumbnailGenerator::kTallerThanWide, clip_result); 263 EXPECT_EQ(ThumbnailGenerator::kTallerThanWide, clip_result);
261 } 264 }
262 265
263 TEST_F(ThumbnailGeneratorSimpleTest, GetClippedBitmap_WiderThanTall) { 266 TEST_F(ThumbnailGeneratorSimpleTest, GetClippedBitmap_WiderThanTall) {
264 // The input bitmap is horizontally long. 267 // The input bitmap is horizontally long.
265 gfx::CanvasSkia canvas(90, 40, true); 268 gfx::CanvasSkia canvas(90, 40, true);
266 const SkBitmap bitmap = skia::GetTopDevice(canvas)->accessBitmap(false); 269 SkBitmap bitmap =
270 skia::GetTopDevice(*canvas.sk_canvas())->accessBitmap(false);
267 271
268 // The desired size is square. 272 // The desired size is square.
269 ThumbnailGenerator::ClipResult clip_result = ThumbnailGenerator::kNotClipped; 273 ThumbnailGenerator::ClipResult clip_result = ThumbnailGenerator::kNotClipped;
270 SkBitmap clipped_bitmap = ThumbnailGenerator::GetClippedBitmap( 274 SkBitmap clipped_bitmap = ThumbnailGenerator::GetClippedBitmap(
271 bitmap, 10, 10, &clip_result); 275 bitmap, 10, 10, &clip_result);
272 // The clipped bitmap should be square. 276 // The clipped bitmap should be square.
273 EXPECT_EQ(40, clipped_bitmap.width()); 277 EXPECT_EQ(40, clipped_bitmap.width());
274 EXPECT_EQ(40, clipped_bitmap.height()); 278 EXPECT_EQ(40, clipped_bitmap.height());
275 // The input was wider than tall. 279 // The input was wider than tall.
276 EXPECT_EQ(ThumbnailGenerator::kWiderThanTall, clip_result); 280 EXPECT_EQ(ThumbnailGenerator::kWiderThanTall, clip_result);
277 } 281 }
278 282
279 TEST_F(ThumbnailGeneratorSimpleTest, GetClippedBitmap_NotClipped) { 283 TEST_F(ThumbnailGeneratorSimpleTest, GetClippedBitmap_NotClipped) {
280 // The input bitmap is square. 284 // The input bitmap is square.
281 gfx::CanvasSkia canvas(40, 40, true); 285 gfx::CanvasSkia canvas(40, 40, true);
282 const SkBitmap bitmap = skia::GetTopDevice(canvas)->accessBitmap(false); 286 SkBitmap bitmap =
287 skia::GetTopDevice(*canvas.sk_canvas())->accessBitmap(false);
283 288
284 // The desired size is square. 289 // The desired size is square.
285 ThumbnailGenerator::ClipResult clip_result = ThumbnailGenerator::kNotClipped; 290 ThumbnailGenerator::ClipResult clip_result = ThumbnailGenerator::kNotClipped;
286 SkBitmap clipped_bitmap = ThumbnailGenerator::GetClippedBitmap( 291 SkBitmap clipped_bitmap = ThumbnailGenerator::GetClippedBitmap(
287 bitmap, 10, 10, &clip_result); 292 bitmap, 10, 10, &clip_result);
288 // The clipped bitmap should be square. 293 // The clipped bitmap should be square.
289 EXPECT_EQ(40, clipped_bitmap.width()); 294 EXPECT_EQ(40, clipped_bitmap.width());
290 EXPECT_EQ(40, clipped_bitmap.height()); 295 EXPECT_EQ(40, clipped_bitmap.height());
291 // There was no need to clip. 296 // There was no need to clip.
292 EXPECT_EQ(ThumbnailGenerator::kNotClipped, clip_result); 297 EXPECT_EQ(ThumbnailGenerator::kNotClipped, clip_result);
293 } 298 }
294 299
295 TEST_F(ThumbnailGeneratorSimpleTest, GetClippedBitmap_NonSquareOutput) { 300 TEST_F(ThumbnailGeneratorSimpleTest, GetClippedBitmap_NonSquareOutput) {
296 // The input bitmap is square. 301 // The input bitmap is square.
297 gfx::CanvasSkia canvas(40, 40, true); 302 gfx::CanvasSkia canvas(40, 40, true);
298 const SkBitmap bitmap = skia::GetTopDevice(canvas)->accessBitmap(false); 303 SkBitmap bitmap =
304 skia::GetTopDevice(*canvas.sk_canvas())->accessBitmap(false);
299 305
300 // The desired size is horizontally long. 306 // The desired size is horizontally long.
301 ThumbnailGenerator::ClipResult clip_result = ThumbnailGenerator::kNotClipped; 307 ThumbnailGenerator::ClipResult clip_result = ThumbnailGenerator::kNotClipped;
302 SkBitmap clipped_bitmap = ThumbnailGenerator::GetClippedBitmap( 308 SkBitmap clipped_bitmap = ThumbnailGenerator::GetClippedBitmap(
303 bitmap, 20, 10, &clip_result); 309 bitmap, 20, 10, &clip_result);
304 // The clipped bitmap should have the same aspect ratio of the desired size. 310 // The clipped bitmap should have the same aspect ratio of the desired size.
305 EXPECT_EQ(40, clipped_bitmap.width()); 311 EXPECT_EQ(40, clipped_bitmap.width());
306 EXPECT_EQ(20, clipped_bitmap.height()); 312 EXPECT_EQ(20, clipped_bitmap.height());
307 // The input was taller than wide. 313 // The input was taller than wide.
308 EXPECT_EQ(ThumbnailGenerator::kTallerThanWide, clip_result); 314 EXPECT_EQ(ThumbnailGenerator::kTallerThanWide, clip_result);
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 good_score.good_clipping = true; 404 good_score.good_clipping = true;
399 good_score.boring_score = 0.0; 405 good_score.boring_score = 0.0;
400 good_score.load_completed = true; 406 good_score.load_completed = true;
401 top_sites->AddKnownURL(kGoodURL, good_score); 407 top_sites->AddKnownURL(kGoodURL, good_score);
402 408
403 // Should be false, as the existing thumbnail is good enough (i.e. don't 409 // Should be false, as the existing thumbnail is good enough (i.e. don't
404 // need to replace the existing thumbnail which is new and good). 410 // need to replace the existing thumbnail which is new and good).
405 EXPECT_FALSE(ThumbnailGenerator::ShouldUpdateThumbnail( 411 EXPECT_FALSE(ThumbnailGenerator::ShouldUpdateThumbnail(
406 &profile, top_sites.get(), kGoodURL)); 412 &profile, top_sites.get(), kGoodURL));
407 } 413 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698