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

Side by Side Diff: chrome/browser/favicon/favicon_handler_unittest.cc

Issue 10870022: Change FaviconData to be able to return data for multiple bitmaps for same icon URL (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 4 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/memory/scoped_ptr.h" 5 #include "base/memory/scoped_ptr.h"
6 #include "chrome/browser/favicon/favicon_handler.h" 6 #include "chrome/browser/favicon/favicon_handler.h"
7 #include "chrome/browser/profiles/profile.h" 7 #include "chrome/browser/profiles/profile.h"
8 #include "chrome/test/base/chrome_render_view_host_test_harness.h" 8 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
9 #include "content/public/browser/invalidate_type.h" 9 #include "content/public/browser/invalidate_type.h"
10 #include "content/public/browser/navigation_entry.h" 10 #include "content/public/browser/navigation_entry.h"
(...skipping 26 matching lines...) Expand all
37 } 37 }
38 } 38 }
39 39
40 // Fill the given data buffer with valid png data. 40 // Fill the given data buffer with valid png data.
41 void FillBitmap(int w, int h, std::vector<unsigned char>* output) { 41 void FillBitmap(int w, int h, std::vector<unsigned char>* output) {
42 SkBitmap bitmap; 42 SkBitmap bitmap;
43 FillDataToBitmap(w, h, &bitmap); 43 FillDataToBitmap(w, h, &bitmap);
44 gfx::PNGCodec::EncodeBGRASkBitmap(bitmap, false, output); 44 gfx::PNGCodec::EncodeBGRASkBitmap(bitmap, false, output);
45 } 45 }
46 46
47 void SetFaviconDataWithOneBitmap(const GURL& icon_url,
48 history::IconType icon_type,
49 bool expired,
50 history::FaviconData* favicon_data) {
51 scoped_refptr<base::RefCountedBytes> data(new base::RefCountedBytes());
52 FillBitmap(gfx::kFaviconSize, gfx::kFaviconSize, &data->data());
53 history::FaviconBitmapData favicon_bitmap_data;
54 favicon_bitmap_data.expired = expired;
55 favicon_bitmap_data.bitmap_data = data;
56 favicon_bitmap_data.pixel_size = gfx::Size();
57
58 favicon_data->known_icon = true;
59 favicon_data->icon_type = icon_type;
60 favicon_data->icon_url = icon_url;
61 favicon_data->bitmaps.clear();
62 favicon_data->bitmaps.push_back(favicon_bitmap_data);
63 }
64
65 void SetFaviconDataWithOneBitmap(const GURL& icon_url,
66 history::FaviconData* favicon_data) {
67 SetFaviconDataWithOneBitmap(icon_url, history::FAVICON, false /* expired */,
68 favicon_data);
69 }
70
47 // This class is used to save the download request for verifying with test case. 71 // This class is used to save the download request for verifying with test case.
48 // It also will be used to invoke the onDidDownload callback. 72 // It also will be used to invoke the onDidDownload callback.
49 class DownloadHandler { 73 class DownloadHandler {
50 public: 74 public:
51 explicit DownloadHandler(TestFaviconHandler* favicon_helper) 75 explicit DownloadHandler(TestFaviconHandler* favicon_helper)
52 : favicon_helper_(favicon_helper), 76 : favicon_helper_(favicon_helper),
53 failed_(false) { 77 failed_(false) {
54 } 78 }
55 79
56 virtual ~DownloadHandler() { 80 virtual ~DownloadHandler() {
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 const FaviconService::FaviconDataCallback& callback) 127 const FaviconService::FaviconDataCallback& callback)
104 : page_url_(page_url), 128 : page_url_(page_url),
105 icon_url_(icon_url), 129 icon_url_(icon_url),
106 icon_type_(icon_type), 130 icon_type_(icon_type),
107 callback_(callback) { 131 callback_(callback) {
108 } 132 }
109 133
110 HistoryRequestHandler(const GURL& page_url, 134 HistoryRequestHandler(const GURL& page_url,
111 const GURL& icon_url, 135 const GURL& icon_url,
112 int icon_type, 136 int icon_type,
113 const std::vector<unsigned char>& image_data, 137 const std::vector<unsigned char>& bitmap_data,
114 const FaviconService::FaviconDataCallback& callback) 138 const FaviconService::FaviconDataCallback& callback)
115 : page_url_(page_url), 139 : page_url_(page_url),
116 icon_url_(icon_url), 140 icon_url_(icon_url),
117 icon_type_(icon_type), 141 icon_type_(icon_type),
118 image_data_(image_data), 142 bitmap_data_(bitmap_data),
119 callback_(callback) { 143 callback_(callback) {
120 } 144 }
121 145
122 virtual ~HistoryRequestHandler() {} 146 virtual ~HistoryRequestHandler() {}
123 void InvokeCallback(); 147 void InvokeCallback();
124 148
125 const GURL page_url_; 149 const GURL page_url_;
126 const GURL icon_url_; 150 const GURL icon_url_;
127 const int icon_type_; 151 const int icon_type_;
128 const std::vector<unsigned char> image_data_; 152 const std::vector<unsigned char> bitmap_data_;
129 history::FaviconData favicon_data_; 153 history::FaviconData favicon_data_;
130 FaviconService::FaviconDataCallback callback_; 154 FaviconService::FaviconDataCallback callback_;
131 155
132 private: 156 private:
133 DISALLOW_COPY_AND_ASSIGN(HistoryRequestHandler); 157 DISALLOW_COPY_AND_ASSIGN(HistoryRequestHandler);
134 }; 158 };
135 159
136 } // namespace 160 } // namespace
137 161
138 162
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 } 270 }
247 271
248 virtual int DownloadFavicon(const GURL& image_url, int image_size) OVERRIDE { 272 virtual int DownloadFavicon(const GURL& image_url, int image_size) OVERRIDE {
249 download_id_++; 273 download_id_++;
250 download_handler_->AddDownload(download_id_, image_url, image_size); 274 download_handler_->AddDownload(download_id_, image_url, image_size);
251 return download_id_; 275 return download_id_;
252 } 276 }
253 277
254 virtual void SetHistoryFavicon(const GURL& page_url, 278 virtual void SetHistoryFavicon(const GURL& page_url,
255 const GURL& icon_url, 279 const GURL& icon_url,
256 const std::vector<unsigned char>& image_data, 280 const std::vector<unsigned char>& bitmap_data,
257 history::IconType icon_type) OVERRIDE { 281 history::IconType icon_type) OVERRIDE {
258 history_handler_.reset(new HistoryRequestHandler( 282 history_handler_.reset(new HistoryRequestHandler(
259 page_url, icon_url,icon_type, image_data, 283 page_url, icon_url,icon_type, bitmap_data,
260 FaviconService::FaviconDataCallback())); 284 FaviconService::FaviconDataCallback()));
261 } 285 }
262 286
263 virtual FaviconService* GetFaviconService() OVERRIDE { 287 virtual FaviconService* GetFaviconService() OVERRIDE {
264 // Just give none NULL value, so overridden methods can be hit. 288 // Just give none NULL value, so overridden methods can be hit.
265 return (FaviconService*)(1); 289 return (FaviconService*)(1);
266 } 290 }
267 291
268 virtual bool ShouldSaveFavicon(const GURL& url) OVERRIDE { 292 virtual bool ShouldSaveFavicon(const GURL& url) OVERRIDE {
269 return true; 293 return true;
(...skipping 14 matching lines...) Expand all
284 scoped_ptr<DownloadHandler> download_handler_; 308 scoped_ptr<DownloadHandler> download_handler_;
285 scoped_ptr<HistoryRequestHandler> history_handler_; 309 scoped_ptr<HistoryRequestHandler> history_handler_;
286 310
287 DISALLOW_COPY_AND_ASSIGN(TestFaviconHandler); 311 DISALLOW_COPY_AND_ASSIGN(TestFaviconHandler);
288 }; 312 };
289 313
290 namespace { 314 namespace {
291 315
292 void HistoryRequestHandler::InvokeCallback() { 316 void HistoryRequestHandler::InvokeCallback() {
293 if (!callback_.is_null()) 317 if (!callback_.is_null())
294 callback_.Run(0, favicon_data_); 318 callback_.Run(0, favicon_data_, std::vector<GURL>());
295 } 319 }
296 320
297 void DownloadHandler::InvokeCallback() { 321 void DownloadHandler::InvokeCallback() {
298 SkBitmap bitmap; 322 SkBitmap bitmap;
299 int bitmap_size = (download_->image_size > 0) ? 323 int bitmap_size = (download_->image_size > 0) ?
300 download_->image_size : gfx::kFaviconSize; 324 download_->image_size : gfx::kFaviconSize;
301 FillDataToBitmap(bitmap_size, bitmap_size, &bitmap); 325 FillDataToBitmap(bitmap_size, bitmap_size, &bitmap);
302 gfx::Image image(bitmap); 326 gfx::Image image(bitmap);
303 favicon_helper_->OnDidDownloadFavicon( 327 favicon_helper_->OnDidDownloadFavicon(
304 download_->download_id, download_->image_url, failed_, image, 328 download_->download_id, download_->image_url, failed_, image,
(...skipping 14 matching lines...) Expand all
319 &delegate, FaviconHandler::FAVICON); 343 &delegate, FaviconHandler::FAVICON);
320 344
321 helper.FetchFavicon(page_url); 345 helper.FetchFavicon(page_url);
322 HistoryRequestHandler* history_handler = helper.history_handler(); 346 HistoryRequestHandler* history_handler = helper.history_handler();
323 // Ensure the data given to history is correct. 347 // Ensure the data given to history is correct.
324 ASSERT_TRUE(history_handler); 348 ASSERT_TRUE(history_handler);
325 EXPECT_EQ(page_url, history_handler->page_url_); 349 EXPECT_EQ(page_url, history_handler->page_url_);
326 EXPECT_EQ(GURL(), history_handler->icon_url_); 350 EXPECT_EQ(GURL(), history_handler->icon_url_);
327 EXPECT_EQ(history::FAVICON, history_handler->icon_type_); 351 EXPECT_EQ(history::FAVICON, history_handler->icon_type_);
328 352
329 // Set valid icon data. 353 SetFaviconDataWithOneBitmap(icon_url, &history_handler->favicon_data_);
330 history_handler->favicon_data_.known_icon = true;
331 history_handler->favicon_data_.icon_type = history::FAVICON;
332 history_handler->favicon_data_.expired = false;
333 history_handler->favicon_data_.icon_url = icon_url;
334 scoped_refptr<base::RefCountedBytes> data = new base::RefCountedBytes();
335 FillBitmap(gfx::kFaviconSize, gfx::kFaviconSize, &data->data());
336 history_handler->favicon_data_.image_data = data;
337 354
338 // Send history response. 355 // Send history response.
339 history_handler->InvokeCallback(); 356 history_handler->InvokeCallback();
340 // Verify FaviconHandler status 357 // Verify FaviconHandler status
341 EXPECT_TRUE(helper.GetEntry()->GetFavicon().valid); 358 EXPECT_TRUE(helper.GetEntry()->GetFavicon().valid);
342 EXPECT_EQ(icon_url, helper.GetEntry()->GetFavicon().url); 359 EXPECT_EQ(icon_url, helper.GetEntry()->GetFavicon().url);
343 360
344 // Simulates update favicon url. 361 // Simulates update favicon url.
345 std::vector<FaviconURL> urls; 362 std::vector<FaviconURL> urls;
346 urls.push_back(FaviconURL(icon_url, FaviconURL::FAVICON)); 363 urls.push_back(FaviconURL(icon_url, FaviconURL::FAVICON));
(...skipping 21 matching lines...) Expand all
368 385
369 helper.FetchFavicon(page_url); 386 helper.FetchFavicon(page_url);
370 HistoryRequestHandler* history_handler = helper.history_handler(); 387 HistoryRequestHandler* history_handler = helper.history_handler();
371 // Ensure the data given to history is correct. 388 // Ensure the data given to history is correct.
372 ASSERT_TRUE(history_handler); 389 ASSERT_TRUE(history_handler);
373 EXPECT_EQ(page_url, history_handler->page_url_); 390 EXPECT_EQ(page_url, history_handler->page_url_);
374 EXPECT_EQ(GURL(), history_handler->icon_url_); 391 EXPECT_EQ(GURL(), history_handler->icon_url_);
375 EXPECT_EQ(history::FAVICON, history_handler->icon_type_); 392 EXPECT_EQ(history::FAVICON, history_handler->icon_type_);
376 393
377 // Set icon data expired 394 // Set icon data expired
378 history_handler->favicon_data_.known_icon = true; 395 SetFaviconDataWithOneBitmap(icon_url, history::FAVICON, true /* expired */,
379 history_handler->favicon_data_.icon_type = history::FAVICON; 396 &history_handler->favicon_data_);
380 history_handler->favicon_data_.expired = true;
381 history_handler->favicon_data_.icon_url = icon_url;
382 // Send history response. 397 // Send history response.
383 history_handler->InvokeCallback(); 398 history_handler->InvokeCallback();
384 // Verify FaviconHandler status 399 // Verify FaviconHandler status
385 EXPECT_TRUE(helper.GetEntry()->GetFavicon().valid); 400 EXPECT_TRUE(helper.GetEntry()->GetFavicon().valid);
386 EXPECT_EQ(icon_url, helper.GetEntry()->GetFavicon().url); 401 EXPECT_EQ(icon_url, helper.GetEntry()->GetFavicon().url);
387 402
388 // Simulates update favicon url. 403 // Simulates update favicon url.
389 std::vector<FaviconURL> urls; 404 std::vector<FaviconURL> urls;
390 urls.push_back(FaviconURL(icon_url, FaviconURL::FAVICON)); 405 urls.push_back(FaviconURL(icon_url, FaviconURL::FAVICON));
391 helper.OnUpdateFaviconURL(0, urls); 406 helper.OnUpdateFaviconURL(0, urls);
(...skipping 16 matching lines...) Expand all
408 helper.set_history_handler(NULL); 423 helper.set_history_handler(NULL);
409 424
410 // Smulates download done. 425 // Smulates download done.
411 download_handler->InvokeCallback(); 426 download_handler->InvokeCallback();
412 427
413 // New icon should be saved to history backend and navigation entry. 428 // New icon should be saved to history backend and navigation entry.
414 history_handler = helper.history_handler(); 429 history_handler = helper.history_handler();
415 ASSERT_TRUE(history_handler); 430 ASSERT_TRUE(history_handler);
416 EXPECT_EQ(icon_url, history_handler->icon_url_); 431 EXPECT_EQ(icon_url, history_handler->icon_url_);
417 EXPECT_EQ(FaviconURL::FAVICON, history_handler->icon_type_); 432 EXPECT_EQ(FaviconURL::FAVICON, history_handler->icon_type_);
418 EXPECT_LT(0U, history_handler->image_data_.size()); 433 EXPECT_LT(0U, history_handler->bitmap_data_.size());
419 EXPECT_EQ(page_url, history_handler->page_url_); 434 EXPECT_EQ(page_url, history_handler->page_url_);
420 435
421 // Verify NavigationEntry. 436 // Verify NavigationEntry.
422 EXPECT_EQ(icon_url, helper.GetEntry()->GetFavicon().url); 437 EXPECT_EQ(icon_url, helper.GetEntry()->GetFavicon().url);
423 EXPECT_TRUE(helper.GetEntry()->GetFavicon().valid); 438 EXPECT_TRUE(helper.GetEntry()->GetFavicon().valid);
424 EXPECT_FALSE(helper.GetEntry()->GetFavicon().image.IsEmpty()); 439 EXPECT_FALSE(helper.GetEntry()->GetFavicon().image.IsEmpty());
425 } 440 }
426 441
427 TEST_F(FaviconHandlerTest, UpdateAndDownloadFavicon) { 442 TEST_F(FaviconHandlerTest, UpdateAndDownloadFavicon) {
428 const GURL page_url("http://www.google.com"); 443 const GURL page_url("http://www.google.com");
429 const GURL icon_url("http://www.google.com/favicon"); 444 const GURL icon_url("http://www.google.com/favicon");
430 const GURL new_icon_url("http://www.google.com/new_favicon"); 445 const GURL new_icon_url("http://www.google.com/new_favicon");
431 446
432 TestFaviconHandlerDelegate delegate(contents()); 447 TestFaviconHandlerDelegate delegate(contents());
433 Profile* profile = Profile::FromBrowserContext( 448 Profile* profile = Profile::FromBrowserContext(
434 contents()->GetBrowserContext()); 449 contents()->GetBrowserContext());
435 TestFaviconHandler helper(page_url, profile, 450 TestFaviconHandler helper(page_url, profile,
436 &delegate, FaviconHandler::FAVICON); 451 &delegate, FaviconHandler::FAVICON);
437 452
438 helper.FetchFavicon(page_url); 453 helper.FetchFavicon(page_url);
439 HistoryRequestHandler* history_handler = helper.history_handler(); 454 HistoryRequestHandler* history_handler = helper.history_handler();
440 // Ensure the data given to history is correct. 455 // Ensure the data given to history is correct.
441 ASSERT_TRUE(history_handler); 456 ASSERT_TRUE(history_handler);
442 EXPECT_EQ(page_url, history_handler->page_url_); 457 EXPECT_EQ(page_url, history_handler->page_url_);
443 EXPECT_EQ(GURL(), history_handler->icon_url_); 458 EXPECT_EQ(GURL(), history_handler->icon_url_);
444 EXPECT_EQ(history::FAVICON, history_handler->icon_type_); 459 EXPECT_EQ(history::FAVICON, history_handler->icon_type_);
445 460
446 // Set valid icon data. 461 // Set valid icon data.
447 history_handler->favicon_data_.known_icon = true; 462 SetFaviconDataWithOneBitmap(icon_url, &history_handler->favicon_data_);
448 history_handler->favicon_data_.icon_type = history::FAVICON;
449 history_handler->favicon_data_.expired = false;
450 history_handler->favicon_data_.icon_url = icon_url;
451 scoped_refptr<base::RefCountedBytes> data = new base::RefCountedBytes();
452 FillBitmap(gfx::kFaviconSize, gfx::kFaviconSize, &data->data());
453 history_handler->favicon_data_.image_data = data;
454 463
455 // Send history response. 464 // Send history response.
456 history_handler->InvokeCallback(); 465 history_handler->InvokeCallback();
457 // Verify FaviconHandler status. 466 // Verify FaviconHandler status.
458 EXPECT_TRUE(helper.GetEntry()->GetFavicon().valid); 467 EXPECT_TRUE(helper.GetEntry()->GetFavicon().valid);
459 EXPECT_EQ(icon_url, helper.GetEntry()->GetFavicon().url); 468 EXPECT_EQ(icon_url, helper.GetEntry()->GetFavicon().url);
460 469
461 // Reset the history_handler to verify whether new icon is requested from 470 // Reset the history_handler to verify whether new icon is requested from
462 // history. 471 // history.
463 helper.set_history_handler(NULL); 472 helper.set_history_handler(NULL);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
498 helper.set_history_handler(NULL); 507 helper.set_history_handler(NULL);
499 508
500 // Smulates download done. 509 // Smulates download done.
501 download_handler->InvokeCallback(); 510 download_handler->InvokeCallback();
502 511
503 // New icon should be saved to history backend and navigation entry. 512 // New icon should be saved to history backend and navigation entry.
504 history_handler = helper.history_handler(); 513 history_handler = helper.history_handler();
505 ASSERT_TRUE(history_handler); 514 ASSERT_TRUE(history_handler);
506 EXPECT_EQ(new_icon_url, history_handler->icon_url_); 515 EXPECT_EQ(new_icon_url, history_handler->icon_url_);
507 EXPECT_EQ(FaviconURL::FAVICON, history_handler->icon_type_); 516 EXPECT_EQ(FaviconURL::FAVICON, history_handler->icon_type_);
508 EXPECT_LT(0U, history_handler->image_data_.size()); 517 EXPECT_LT(0U, history_handler->bitmap_data_.size());
509 EXPECT_EQ(page_url, history_handler->page_url_); 518 EXPECT_EQ(page_url, history_handler->page_url_);
510 519
511 // Verify NavigationEntry. 520 // Verify NavigationEntry.
512 EXPECT_EQ(new_icon_url, helper.GetEntry()->GetFavicon().url); 521 EXPECT_EQ(new_icon_url, helper.GetEntry()->GetFavicon().url);
513 EXPECT_TRUE(helper.GetEntry()->GetFavicon().valid); 522 EXPECT_TRUE(helper.GetEntry()->GetFavicon().valid);
514 EXPECT_FALSE(helper.GetEntry()->GetFavicon().image.IsEmpty()); 523 EXPECT_FALSE(helper.GetEntry()->GetFavicon().image.IsEmpty());
515 } 524 }
516 525
517 TEST_F(FaviconHandlerTest, UpdateFavicon) { 526 TEST_F(FaviconHandlerTest, UpdateFavicon) {
518 const GURL page_url("http://www.google.com"); 527 const GURL page_url("http://www.google.com");
519 const GURL icon_url("http://www.google.com/favicon"); 528 const GURL icon_url("http://www.google.com/favicon");
520 const GURL new_icon_url("http://www.google.com/new_favicon"); 529 const GURL new_icon_url("http://www.google.com/new_favicon");
521 530
522 TestFaviconHandlerDelegate delegate(contents()); 531 TestFaviconHandlerDelegate delegate(contents());
523 Profile* profile = Profile::FromBrowserContext( 532 Profile* profile = Profile::FromBrowserContext(
524 contents()->GetBrowserContext()); 533 contents()->GetBrowserContext());
525 TestFaviconHandler helper(page_url, profile, 534 TestFaviconHandler helper(page_url, profile,
526 &delegate, FaviconHandler::FAVICON); 535 &delegate, FaviconHandler::FAVICON);
527 536
528 helper.FetchFavicon(page_url); 537 helper.FetchFavicon(page_url);
529 HistoryRequestHandler* history_handler = helper.history_handler(); 538 HistoryRequestHandler* history_handler = helper.history_handler();
530 // Ensure the data given to history is correct. 539 // Ensure the data given to history is correct.
531 ASSERT_TRUE(history_handler); 540 ASSERT_TRUE(history_handler);
532 EXPECT_EQ(page_url, history_handler->page_url_); 541 EXPECT_EQ(page_url, history_handler->page_url_);
533 EXPECT_EQ(GURL(), history_handler->icon_url_); 542 EXPECT_EQ(GURL(), history_handler->icon_url_);
534 EXPECT_EQ(history::FAVICON, history_handler->icon_type_); 543 EXPECT_EQ(history::FAVICON, history_handler->icon_type_);
535 544
536 // Set valid icon data. 545 SetFaviconDataWithOneBitmap(icon_url, &history_handler->favicon_data_);
537 history_handler->favicon_data_.known_icon = true;
538 history_handler->favicon_data_.icon_type = history::FAVICON;
539 history_handler->favicon_data_.expired = false;
540 history_handler->favicon_data_.icon_url = icon_url;
541 scoped_refptr<base::RefCountedBytes> data = new base::RefCountedBytes();
542 FillBitmap(gfx::kFaviconSize, gfx::kFaviconSize, &data->data());
543 history_handler->favicon_data_.image_data = data;
544 546
545 // Send history response. 547 // Send history response.
546 history_handler->InvokeCallback(); 548 history_handler->InvokeCallback();
547 // Verify FaviconHandler status. 549 // Verify FaviconHandler status.
548 EXPECT_TRUE(helper.GetEntry()->GetFavicon().valid); 550 EXPECT_TRUE(helper.GetEntry()->GetFavicon().valid);
549 EXPECT_EQ(icon_url, helper.GetEntry()->GetFavicon().url); 551 EXPECT_EQ(icon_url, helper.GetEntry()->GetFavicon().url);
550 552
551 // Reset the history_handler to verify whether new icon is requested from 553 // Reset the history_handler to verify whether new icon is requested from
552 // history. 554 // history.
553 helper.set_history_handler(NULL); 555 helper.set_history_handler(NULL);
(...skipping 12 matching lines...) Expand all
566 ASSERT_EQ(new_icon_url, helper.GetEntry()->GetFavicon().url); 568 ASSERT_EQ(new_icon_url, helper.GetEntry()->GetFavicon().url);
567 569
568 // Favicon should be requested from history. 570 // Favicon should be requested from history.
569 history_handler = helper.history_handler(); 571 history_handler = helper.history_handler();
570 ASSERT_TRUE(history_handler); 572 ASSERT_TRUE(history_handler);
571 EXPECT_EQ(new_icon_url, history_handler->icon_url_); 573 EXPECT_EQ(new_icon_url, history_handler->icon_url_);
572 EXPECT_EQ(FaviconURL::FAVICON, history_handler->icon_type_); 574 EXPECT_EQ(FaviconURL::FAVICON, history_handler->icon_type_);
573 EXPECT_EQ(page_url, history_handler->page_url_); 575 EXPECT_EQ(page_url, history_handler->page_url_);
574 576
575 // Simulate find icon. 577 // Simulate find icon.
576 history_handler->favicon_data_.known_icon = true; 578 SetFaviconDataWithOneBitmap(new_icon_url, &history_handler->favicon_data_);
577 history_handler->favicon_data_.icon_type = history::FAVICON;
578 history_handler->favicon_data_.expired = false;
579 history_handler->favicon_data_.icon_url = new_icon_url;
580 history_handler->favicon_data_.image_data = data;
581 history_handler->InvokeCallback(); 579 history_handler->InvokeCallback();
582 580
583 // Shouldn't request download favicon 581 // Shouldn't request download favicon
584 EXPECT_FALSE(helper.download_handler()->HasDownload()); 582 EXPECT_FALSE(helper.download_handler()->HasDownload());
585 583
586 // Verify the favicon status. 584 // Verify the favicon status.
587 EXPECT_EQ(new_icon_url, helper.GetEntry()->GetFavicon().url); 585 EXPECT_EQ(new_icon_url, helper.GetEntry()->GetFavicon().url);
588 EXPECT_TRUE(helper.GetEntry()->GetFavicon().valid); 586 EXPECT_TRUE(helper.GetEntry()->GetFavicon().valid);
589 EXPECT_FALSE(helper.GetEntry()->GetFavicon().image.IsEmpty()); 587 EXPECT_FALSE(helper.GetEntry()->GetFavicon().image.IsEmpty());
590 } 588 }
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
670 // Favicon should be requested from history. 668 // Favicon should be requested from history.
671 history_handler = helper.history_handler(); 669 history_handler = helper.history_handler();
672 ASSERT_TRUE(history_handler); 670 ASSERT_TRUE(history_handler);
673 EXPECT_EQ(new_icon_url, history_handler->icon_url_); 671 EXPECT_EQ(new_icon_url, history_handler->icon_url_);
674 EXPECT_EQ(FaviconURL::TOUCH_ICON, history_handler->icon_type_); 672 EXPECT_EQ(FaviconURL::TOUCH_ICON, history_handler->icon_type_);
675 EXPECT_EQ(page_url, history_handler->page_url_); 673 EXPECT_EQ(page_url, history_handler->page_url_);
676 674
677 // Reset download handler 675 // Reset download handler
678 download_handler->Reset(); 676 download_handler->Reset();
679 677
680 // Smulates getting a expired icon from history. 678 // Simulates getting a expired icon from history.
681 history_handler->favicon_data_.known_icon = true; 679 SetFaviconDataWithOneBitmap(new_icon_url, history::TOUCH_ICON,
682 history_handler->favicon_data_.icon_type = history::TOUCH_ICON; 680 true /* expired */, &history_handler->favicon_data_);
683 history_handler->favicon_data_.expired = true;
684 history_handler->favicon_data_.icon_url = new_icon_url;
685 scoped_refptr<base::RefCountedBytes> data = new base::RefCountedBytes();
686 FillBitmap(gfx::kFaviconSize, gfx::kFaviconSize, &data->data());
687 history_handler->favicon_data_.image_data = data;
688 history_handler->InvokeCallback(); 681 history_handler->InvokeCallback();
689 682
690 // Verify the download request. 683 // Verify the download request.
691 EXPECT_TRUE(helper.download_handler()->HasDownload()); 684 EXPECT_TRUE(helper.download_handler()->HasDownload());
692 EXPECT_EQ(new_icon_url, download_handler->GetImageUrl()); 685 EXPECT_EQ(new_icon_url, download_handler->GetImageUrl());
693 EXPECT_EQ(0, download_handler->GetImageSize()); 686 EXPECT_EQ(0, download_handler->GetImageSize());
694 687
695 helper.set_history_handler(NULL); 688 helper.set_history_handler(NULL);
696 689
697 // Simulates icon being downloaded. 690 // Simulates icon being downloaded.
698 download_handler->InvokeCallback(); 691 download_handler->InvokeCallback();
699 692
700 // New icon should be saved to history backend. 693 // New icon should be saved to history backend.
701 history_handler = helper.history_handler(); 694 history_handler = helper.history_handler();
702 ASSERT_TRUE(history_handler); 695 ASSERT_TRUE(history_handler);
703 EXPECT_EQ(new_icon_url, history_handler->icon_url_); 696 EXPECT_EQ(new_icon_url, history_handler->icon_url_);
704 EXPECT_EQ(FaviconURL::TOUCH_ICON, history_handler->icon_type_); 697 EXPECT_EQ(FaviconURL::TOUCH_ICON, history_handler->icon_type_);
705 EXPECT_LT(0U, history_handler->image_data_.size()); 698 EXPECT_LT(0U, history_handler->bitmap_data_.size());
706 EXPECT_EQ(page_url, history_handler->page_url_); 699 EXPECT_EQ(page_url, history_handler->page_url_);
707 } 700 }
708 701
709 TEST_F(FaviconHandlerTest, UpdateDuringDownloading) { 702 TEST_F(FaviconHandlerTest, UpdateDuringDownloading) {
710 const GURL page_url("http://www.google.com"); 703 const GURL page_url("http://www.google.com");
711 const GURL icon_url("http://www.google.com/favicon"); 704 const GURL icon_url("http://www.google.com/favicon");
712 const GURL new_icon_url("http://www.google.com/new_favicon"); 705 const GURL new_icon_url("http://www.google.com/new_favicon");
713 706
714 TestFaviconHandlerDelegate delegate(contents()); 707 TestFaviconHandlerDelegate delegate(contents());
715 Profile* profile = Profile::FromBrowserContext( 708 Profile* profile = Profile::FromBrowserContext(
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
800 download_handler->InvokeCallback(); 793 download_handler->InvokeCallback();
801 // The downloaded icon should be thrown away as there is favicon update. 794 // The downloaded icon should be thrown away as there is favicon update.
802 EXPECT_FALSE(helper.history_handler()); 795 EXPECT_FALSE(helper.history_handler());
803 796
804 download_handler->Reset(); 797 download_handler->Reset();
805 798
806 // Simulates getting the icon from history. 799 // Simulates getting the icon from history.
807 scoped_ptr<HistoryRequestHandler> handler; 800 scoped_ptr<HistoryRequestHandler> handler;
808 handler.reset(new HistoryRequestHandler(page_url, latest_icon_url, 801 handler.reset(new HistoryRequestHandler(page_url, latest_icon_url,
809 history::TOUCH_ICON, callback)); 802 history::TOUCH_ICON, callback));
810 handler->favicon_data_.known_icon = true; 803 SetFaviconDataWithOneBitmap(latest_icon_url, history::TOUCH_ICON,
811 handler->favicon_data_.expired = false; 804 false /* expired */, &handler->favicon_data_);
812 handler->favicon_data_.icon_type = history::TOUCH_ICON;
813 handler->favicon_data_.icon_url = latest_icon_url;
814 scoped_refptr<base::RefCountedBytes> data = new base::RefCountedBytes();
815 FillBitmap(gfx::kFaviconSize, gfx::kFaviconSize, &data->data());
816 handler->favicon_data_.image_data = data;
817
818 handler->InvokeCallback(); 805 handler->InvokeCallback();
819 806
820 // No download request. 807 // No download request.
821 EXPECT_FALSE(download_handler->HasDownload()); 808 EXPECT_FALSE(download_handler->HasDownload());
822 } 809 }
823 810
824 TEST_F(FaviconHandlerTest, MultipleFavicon) { 811 TEST_F(FaviconHandlerTest, MultipleFavicon) {
825 const GURL page_url("http://www.google.com"); 812 const GURL page_url("http://www.google.com");
826 const GURL icon_url("http://www.google.com/favicon"); 813 const GURL icon_url("http://www.google.com/favicon");
827 const GURL icon_url_small("http://www.google.com/favicon_small"); 814 const GURL icon_url_small("http://www.google.com/favicon_small");
828 const GURL icon_url_large("http://www.google.com/favicon_large"); 815 const GURL icon_url_large("http://www.google.com/favicon_large");
829 const GURL icon_url_preferred1("http://www.google.com/favicon_preferred1"); 816 const GURL icon_url_preferred1("http://www.google.com/favicon_preferred1");
830 const GURL icon_url_preferred2("http://www.google.com/favicon_preferred2"); 817 const GURL icon_url_preferred2("http://www.google.com/favicon_preferred2");
831 818
832 TestFaviconHandlerDelegate delegate(contents()); 819 TestFaviconHandlerDelegate delegate(contents());
833 Profile* profile = Profile::FromBrowserContext( 820 Profile* profile = Profile::FromBrowserContext(
834 contents()->GetBrowserContext()); 821 contents()->GetBrowserContext());
835 TestFaviconHandler handler(page_url, profile, 822 TestFaviconHandler handler(page_url, profile,
836 &delegate, FaviconHandler::FAVICON); 823 &delegate, FaviconHandler::FAVICON);
837 824
838 handler.FetchFavicon(page_url); 825 handler.FetchFavicon(page_url);
839 HistoryRequestHandler* history_handler = handler.history_handler(); 826 HistoryRequestHandler* history_handler = handler.history_handler();
840 827
841 // Set valid icon data. 828 SetFaviconDataWithOneBitmap(icon_url, &history_handler->favicon_data_);
842 history_handler->favicon_data_.known_icon = true;
843 history_handler->favicon_data_.icon_type = history::FAVICON;
844 history_handler->favicon_data_.expired = false;
845 history_handler->favicon_data_.icon_url = icon_url;
846 scoped_refptr<base::RefCountedBytes> data = new base::RefCountedBytes();
847 FillBitmap(gfx::kFaviconSize, gfx::kFaviconSize, &data->data());
848 history_handler->favicon_data_.image_data = data;
849 829
850 // Send history response. 830 // Send history response.
851 history_handler->InvokeCallback(); 831 history_handler->InvokeCallback();
852 832
853 // Simulates update with the different favicon url. 833 // Simulates update with the different favicon url.
854 std::vector<FaviconURL> urls; 834 std::vector<FaviconURL> urls;
855 // Note: the code will stop making requests when an icon matching the 835 // Note: the code will stop making requests when an icon matching the
856 // preferred size is found, so icon_url_preferred must be last. 836 // preferred size is found, so icon_url_preferred must be last.
857 urls.push_back(FaviconURL(icon_url_small, FaviconURL::FAVICON)); 837 urls.push_back(FaviconURL(icon_url_small, FaviconURL::FAVICON));
858 urls.push_back(FaviconURL(icon_url_large, FaviconURL::FAVICON)); 838 urls.push_back(FaviconURL(icon_url_large, FaviconURL::FAVICON));
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
908 TestFaviconHandlerDelegate delegate(contents()); 888 TestFaviconHandlerDelegate delegate(contents());
909 Profile* profile = Profile::FromBrowserContext( 889 Profile* profile = Profile::FromBrowserContext(
910 contents()->GetBrowserContext()); 890 contents()->GetBrowserContext());
911 TestFaviconHandler handler(page_url, profile, 891 TestFaviconHandler handler(page_url, profile,
912 &delegate, FaviconHandler::FAVICON); 892 &delegate, FaviconHandler::FAVICON);
913 893
914 handler.FetchFavicon(page_url); 894 handler.FetchFavicon(page_url);
915 HistoryRequestHandler* history_handler = handler.history_handler(); 895 HistoryRequestHandler* history_handler = handler.history_handler();
916 896
917 // Set valid icon data. 897 // Set valid icon data.
918 history_handler->favicon_data_.known_icon = true; 898 SetFaviconDataWithOneBitmap(icon_url, &history_handler->favicon_data_);
919 history_handler->favicon_data_.icon_type = history::FAVICON; 899 history_handler->favicon_data_.known_icon = false;
920 history_handler->favicon_data_.expired = false;
921 history_handler->favicon_data_.icon_url = icon_url;
922 scoped_refptr<base::RefCountedBytes> data = new base::RefCountedBytes();
923 FillBitmap(gfx::kFaviconSize, gfx::kFaviconSize, &data->data());
924 history_handler->favicon_data_.image_data = data;
925 900
926 // Send history response. 901 // Send history response.
927 history_handler->InvokeCallback(); 902 history_handler->InvokeCallback();
928 903
929 // Simulates update with the different favicon url. 904 // Simulates update with the different favicon url.
930 std::vector<FaviconURL> urls; 905 std::vector<FaviconURL> urls;
931 // Note: the code will stop making requests when an icon matching the 906 // Note: the code will stop making requests when an icon matching the
932 // preferred size is found, so icon_url_preferred must be last. 907 // preferred size is found, so icon_url_preferred must be last.
933 urls.push_back(FaviconURL(icon_url_preferred1, FaviconURL::FAVICON)); 908 urls.push_back(FaviconURL(icon_url_preferred1, FaviconURL::FAVICON));
934 urls.push_back(FaviconURL(icon_url_large, FaviconURL::FAVICON)); 909 urls.push_back(FaviconURL(icon_url_large, FaviconURL::FAVICON));
(...skipping 14 matching lines...) Expand all
949 924
950 // Verify correct icon size chosen. 925 // Verify correct icon size chosen.
951 EXPECT_EQ(icon_url_preferred1, handler.GetEntry()->GetFavicon().url); 926 EXPECT_EQ(icon_url_preferred1, handler.GetEntry()->GetFavicon().url);
952 EXPECT_TRUE(handler.GetEntry()->GetFavicon().valid); 927 EXPECT_TRUE(handler.GetEntry()->GetFavicon().valid);
953 EXPECT_FALSE(handler.GetEntry()->GetFavicon().image.IsEmpty()); 928 EXPECT_FALSE(handler.GetEntry()->GetFavicon().image.IsEmpty());
954 EXPECT_EQ(gfx::kFaviconSize, 929 EXPECT_EQ(gfx::kFaviconSize,
955 handler.GetEntry()->GetFavicon().image.ToSkBitmap()->width()); 930 handler.GetEntry()->GetFavicon().image.ToSkBitmap()->width());
956 } 931 }
957 932
958 } // namespace. 933 } // namespace.
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698