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

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

Issue 10802066: Adds support for saving favicon size into history database. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Changes as requested by Sky and stevenjb 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::FaviconData* favicon_data) {
49 favicon_data->known_icon = true;
50 favicon_data->icon_type = history::FAVICON;
51 favicon_data->expired = false;
52
53 scoped_refptr<base::RefCountedBytes> data = new base::RefCountedBytes();
stevenjb 2012/08/15 22:59:18 nit: use constructor
54 FillBitmap(gfx::kFaviconSize, gfx::kFaviconSize, &data->data());
55 history::FaviconDataElement element;
56 element.bitmap_data = data;
57 element.pixel_size = gfx::Size();
58 element.icon_url = icon_url;
59 favicon_data->elements.push_back(element);
60 }
61
47 // This class is used to save the download request for verifying with test case. 62 // 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. 63 // It also will be used to invoke the onDidDownload callback.
49 class DownloadHandler { 64 class DownloadHandler {
50 public: 65 public:
51 explicit DownloadHandler(TestFaviconHandler* favicon_helper) 66 explicit DownloadHandler(TestFaviconHandler* favicon_helper)
52 : favicon_helper_(favicon_helper), 67 : favicon_helper_(favicon_helper),
53 failed_(false) { 68 failed_(false) {
54 } 69 }
55 70
56 virtual ~DownloadHandler() { 71 virtual ~DownloadHandler() {
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 const FaviconService::FaviconDataCallback& callback) 118 const FaviconService::FaviconDataCallback& callback)
104 : page_url_(page_url), 119 : page_url_(page_url),
105 icon_url_(icon_url), 120 icon_url_(icon_url),
106 icon_type_(icon_type), 121 icon_type_(icon_type),
107 callback_(callback) { 122 callback_(callback) {
108 } 123 }
109 124
110 HistoryRequestHandler(const GURL& page_url, 125 HistoryRequestHandler(const GURL& page_url,
111 const GURL& icon_url, 126 const GURL& icon_url,
112 int icon_type, 127 int icon_type,
113 const std::vector<unsigned char>& image_data, 128 const std::vector<unsigned char>& bitmap_data,
114 const FaviconService::FaviconDataCallback& callback) 129 const FaviconService::FaviconDataCallback& callback)
115 : page_url_(page_url), 130 : page_url_(page_url),
116 icon_url_(icon_url), 131 icon_url_(icon_url),
117 icon_type_(icon_type), 132 icon_type_(icon_type),
118 image_data_(image_data), 133 bitmap_data_(bitmap_data),
119 callback_(callback) { 134 callback_(callback) {
120 } 135 }
121 136
122 virtual ~HistoryRequestHandler() {} 137 virtual ~HistoryRequestHandler() {}
123 void InvokeCallback(); 138 void InvokeCallback();
124 139
125 const GURL page_url_; 140 const GURL page_url_;
126 const GURL icon_url_; 141 const GURL icon_url_;
127 const int icon_type_; 142 const int icon_type_;
128 const std::vector<unsigned char> image_data_; 143 const std::vector<unsigned char> bitmap_data_;
129 history::FaviconData favicon_data_; 144 history::FaviconData favicon_data_;
130 FaviconService::FaviconDataCallback callback_; 145 FaviconService::FaviconDataCallback callback_;
131 146
132 private: 147 private:
133 DISALLOW_COPY_AND_ASSIGN(HistoryRequestHandler); 148 DISALLOW_COPY_AND_ASSIGN(HistoryRequestHandler);
134 }; 149 };
135 150
136 } // namespace 151 } // namespace
137 152
138 153
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 } 261 }
247 262
248 virtual int DownloadFavicon(const GURL& image_url, int image_size) OVERRIDE { 263 virtual int DownloadFavicon(const GURL& image_url, int image_size) OVERRIDE {
249 download_id_++; 264 download_id_++;
250 download_handler_->AddDownload(download_id_, image_url, image_size); 265 download_handler_->AddDownload(download_id_, image_url, image_size);
251 return download_id_; 266 return download_id_;
252 } 267 }
253 268
254 virtual void SetHistoryFavicon(const GURL& page_url, 269 virtual void SetHistoryFavicon(const GURL& page_url,
255 const GURL& icon_url, 270 const GURL& icon_url,
256 const std::vector<unsigned char>& image_data, 271 const std::vector<unsigned char>& bitmap_data,
257 history::IconType icon_type) OVERRIDE { 272 history::IconType icon_type) OVERRIDE {
258 history_handler_.reset(new HistoryRequestHandler( 273 history_handler_.reset(new HistoryRequestHandler(
259 page_url, icon_url,icon_type, image_data, 274 page_url, icon_url,icon_type, bitmap_data,
260 FaviconService::FaviconDataCallback())); 275 FaviconService::FaviconDataCallback()));
261 } 276 }
262 277
263 virtual FaviconService* GetFaviconService() OVERRIDE { 278 virtual FaviconService* GetFaviconService() OVERRIDE {
264 // Just give none NULL value, so overridden methods can be hit. 279 // Just give none NULL value, so overridden methods can be hit.
265 return (FaviconService*)(1); 280 return (FaviconService*)(1);
266 } 281 }
267 282
268 virtual bool ShouldSaveFavicon(const GURL& url) OVERRIDE { 283 virtual bool ShouldSaveFavicon(const GURL& url) OVERRIDE {
269 return true; 284 return true;
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 &delegate, FaviconHandler::FAVICON); 333 &delegate, FaviconHandler::FAVICON);
319 334
320 helper.FetchFavicon(page_url); 335 helper.FetchFavicon(page_url);
321 HistoryRequestHandler* history_handler = helper.history_handler(); 336 HistoryRequestHandler* history_handler = helper.history_handler();
322 // Ensure the data given to history is correct. 337 // Ensure the data given to history is correct.
323 ASSERT_TRUE(history_handler); 338 ASSERT_TRUE(history_handler);
324 EXPECT_EQ(page_url, history_handler->page_url_); 339 EXPECT_EQ(page_url, history_handler->page_url_);
325 EXPECT_EQ(GURL(), history_handler->icon_url_); 340 EXPECT_EQ(GURL(), history_handler->icon_url_);
326 EXPECT_EQ(history::FAVICON, history_handler->icon_type_); 341 EXPECT_EQ(history::FAVICON, history_handler->icon_type_);
327 342
328 // Set valid icon data. 343 SetFaviconDataWithOneBitmap(icon_url, &history_handler->favicon_data_);
329 history_handler->favicon_data_.known_icon = true;
330 history_handler->favicon_data_.icon_type = history::FAVICON;
331 history_handler->favicon_data_.expired = false;
332 history_handler->favicon_data_.icon_url = icon_url;
333 scoped_refptr<base::RefCountedBytes> data = new base::RefCountedBytes();
334 FillBitmap(gfx::kFaviconSize, gfx::kFaviconSize, &data->data());
335 history_handler->favicon_data_.image_data = data;
336 344
337 // Send history response. 345 // Send history response.
338 history_handler->InvokeCallback(); 346 history_handler->InvokeCallback();
339 // Verify FaviconHandler status 347 // Verify FaviconHandler status
340 EXPECT_TRUE(helper.GetEntry()->GetFavicon().valid); 348 EXPECT_TRUE(helper.GetEntry()->GetFavicon().valid);
341 EXPECT_EQ(icon_url, helper.GetEntry()->GetFavicon().url); 349 EXPECT_EQ(icon_url, helper.GetEntry()->GetFavicon().url);
342 350
343 // Simulates update favicon url. 351 // Simulates update favicon url.
344 std::vector<FaviconURL> urls; 352 std::vector<FaviconURL> urls;
345 urls.push_back(FaviconURL(icon_url, FaviconURL::FAVICON)); 353 urls.push_back(FaviconURL(icon_url, FaviconURL::FAVICON));
(...skipping 24 matching lines...) Expand all
370 // Ensure the data given to history is correct. 378 // Ensure the data given to history is correct.
371 ASSERT_TRUE(history_handler); 379 ASSERT_TRUE(history_handler);
372 EXPECT_EQ(page_url, history_handler->page_url_); 380 EXPECT_EQ(page_url, history_handler->page_url_);
373 EXPECT_EQ(GURL(), history_handler->icon_url_); 381 EXPECT_EQ(GURL(), history_handler->icon_url_);
374 EXPECT_EQ(history::FAVICON, history_handler->icon_type_); 382 EXPECT_EQ(history::FAVICON, history_handler->icon_type_);
375 383
376 // Set icon data expired 384 // Set icon data expired
377 history_handler->favicon_data_.known_icon = true; 385 history_handler->favicon_data_.known_icon = true;
378 history_handler->favicon_data_.icon_type = history::FAVICON; 386 history_handler->favicon_data_.icon_type = history::FAVICON;
379 history_handler->favicon_data_.expired = true; 387 history_handler->favicon_data_.expired = true;
380 history_handler->favicon_data_.icon_url = icon_url; 388 history::FaviconDataElement element;
389 element.icon_url = icon_url;
390 history_handler->favicon_data_.elements.push_back(element);
381 // Send history response. 391 // Send history response.
382 history_handler->InvokeCallback(); 392 history_handler->InvokeCallback();
383 // Verify FaviconHandler status 393 // Verify FaviconHandler status
384 EXPECT_TRUE(helper.GetEntry()->GetFavicon().valid); 394 EXPECT_TRUE(helper.GetEntry()->GetFavicon().valid);
385 EXPECT_EQ(icon_url, helper.GetEntry()->GetFavicon().url); 395 EXPECT_EQ(icon_url, helper.GetEntry()->GetFavicon().url);
386 396
387 // Simulates update favicon url. 397 // Simulates update favicon url.
388 std::vector<FaviconURL> urls; 398 std::vector<FaviconURL> urls;
389 urls.push_back(FaviconURL(icon_url, FaviconURL::FAVICON)); 399 urls.push_back(FaviconURL(icon_url, FaviconURL::FAVICON));
390 helper.OnUpdateFaviconURL(0, urls); 400 helper.OnUpdateFaviconURL(0, urls);
(...skipping 16 matching lines...) Expand all
407 helper.set_history_handler(NULL); 417 helper.set_history_handler(NULL);
408 418
409 // Smulates download done. 419 // Smulates download done.
410 download_handler->InvokeCallback(); 420 download_handler->InvokeCallback();
411 421
412 // New icon should be saved to history backend and navigation entry. 422 // New icon should be saved to history backend and navigation entry.
413 history_handler = helper.history_handler(); 423 history_handler = helper.history_handler();
414 ASSERT_TRUE(history_handler); 424 ASSERT_TRUE(history_handler);
415 EXPECT_EQ(icon_url, history_handler->icon_url_); 425 EXPECT_EQ(icon_url, history_handler->icon_url_);
416 EXPECT_EQ(FaviconURL::FAVICON, history_handler->icon_type_); 426 EXPECT_EQ(FaviconURL::FAVICON, history_handler->icon_type_);
417 EXPECT_LT(0U, history_handler->image_data_.size()); 427 EXPECT_LT(0U, history_handler->bitmap_data_.size());
418 EXPECT_EQ(page_url, history_handler->page_url_); 428 EXPECT_EQ(page_url, history_handler->page_url_);
419 429
420 // Verify NavigationEntry. 430 // Verify NavigationEntry.
421 EXPECT_EQ(icon_url, helper.GetEntry()->GetFavicon().url); 431 EXPECT_EQ(icon_url, helper.GetEntry()->GetFavicon().url);
422 EXPECT_TRUE(helper.GetEntry()->GetFavicon().valid); 432 EXPECT_TRUE(helper.GetEntry()->GetFavicon().valid);
423 EXPECT_FALSE(helper.GetEntry()->GetFavicon().image.IsEmpty()); 433 EXPECT_FALSE(helper.GetEntry()->GetFavicon().image.IsEmpty());
424 } 434 }
425 435
426 TEST_F(FaviconHandlerTest, UpdateAndDownloadFavicon) { 436 TEST_F(FaviconHandlerTest, UpdateAndDownloadFavicon) {
427 const GURL page_url("http://www.google.com"); 437 const GURL page_url("http://www.google.com");
428 const GURL icon_url("http://www.google.com/favicon"); 438 const GURL icon_url("http://www.google.com/favicon");
429 const GURL new_icon_url("http://www.google.com/new_favicon"); 439 const GURL new_icon_url("http://www.google.com/new_favicon");
430 440
431 TestFaviconHandlerDelegate delegate(contents()); 441 TestFaviconHandlerDelegate delegate(contents());
432 Profile* profile = Profile::FromBrowserContext( 442 Profile* profile = Profile::FromBrowserContext(
433 contents()->GetBrowserContext()); 443 contents()->GetBrowserContext());
434 TestFaviconHandler helper(page_url, profile, 444 TestFaviconHandler helper(page_url, profile,
435 &delegate, FaviconHandler::FAVICON); 445 &delegate, FaviconHandler::FAVICON);
436 446
437 helper.FetchFavicon(page_url); 447 helper.FetchFavicon(page_url);
438 HistoryRequestHandler* history_handler = helper.history_handler(); 448 HistoryRequestHandler* history_handler = helper.history_handler();
439 // Ensure the data given to history is correct. 449 // Ensure the data given to history is correct.
440 ASSERT_TRUE(history_handler); 450 ASSERT_TRUE(history_handler);
441 EXPECT_EQ(page_url, history_handler->page_url_); 451 EXPECT_EQ(page_url, history_handler->page_url_);
442 EXPECT_EQ(GURL(), history_handler->icon_url_); 452 EXPECT_EQ(GURL(), history_handler->icon_url_);
443 EXPECT_EQ(history::FAVICON, history_handler->icon_type_); 453 EXPECT_EQ(history::FAVICON, history_handler->icon_type_);
444 454
445 // Set valid icon data. 455 SetFaviconDataWithOneBitmap(icon_url, &history_handler->favicon_data_);
446 history_handler->favicon_data_.known_icon = true;
447 history_handler->favicon_data_.icon_type = history::FAVICON;
448 history_handler->favicon_data_.expired = false;
449 history_handler->favicon_data_.icon_url = icon_url;
450 scoped_refptr<base::RefCountedBytes> data = new base::RefCountedBytes();
451 FillBitmap(gfx::kFaviconSize, gfx::kFaviconSize, &data->data());
452 history_handler->favicon_data_.image_data = data;
453 456
454 // Send history response. 457 // Send history response.
455 history_handler->InvokeCallback(); 458 history_handler->InvokeCallback();
456 // Verify FaviconHandler status. 459 // Verify FaviconHandler status.
457 EXPECT_TRUE(helper.GetEntry()->GetFavicon().valid); 460 EXPECT_TRUE(helper.GetEntry()->GetFavicon().valid);
458 EXPECT_EQ(icon_url, helper.GetEntry()->GetFavicon().url); 461 EXPECT_EQ(icon_url, helper.GetEntry()->GetFavicon().url);
459 462
460 // Reset the history_handler to verify whether new icon is requested from 463 // Reset the history_handler to verify whether new icon is requested from
461 // history. 464 // history.
462 helper.set_history_handler(NULL); 465 helper.set_history_handler(NULL);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
497 helper.set_history_handler(NULL); 500 helper.set_history_handler(NULL);
498 501
499 // Smulates download done. 502 // Smulates download done.
500 download_handler->InvokeCallback(); 503 download_handler->InvokeCallback();
501 504
502 // New icon should be saved to history backend and navigation entry. 505 // New icon should be saved to history backend and navigation entry.
503 history_handler = helper.history_handler(); 506 history_handler = helper.history_handler();
504 ASSERT_TRUE(history_handler); 507 ASSERT_TRUE(history_handler);
505 EXPECT_EQ(new_icon_url, history_handler->icon_url_); 508 EXPECT_EQ(new_icon_url, history_handler->icon_url_);
506 EXPECT_EQ(FaviconURL::FAVICON, history_handler->icon_type_); 509 EXPECT_EQ(FaviconURL::FAVICON, history_handler->icon_type_);
507 EXPECT_LT(0U, history_handler->image_data_.size()); 510 EXPECT_LT(0U, history_handler->bitmap_data_.size());
508 EXPECT_EQ(page_url, history_handler->page_url_); 511 EXPECT_EQ(page_url, history_handler->page_url_);
509 512
510 // Verify NavigationEntry. 513 // Verify NavigationEntry.
511 EXPECT_EQ(new_icon_url, helper.GetEntry()->GetFavicon().url); 514 EXPECT_EQ(new_icon_url, helper.GetEntry()->GetFavicon().url);
512 EXPECT_TRUE(helper.GetEntry()->GetFavicon().valid); 515 EXPECT_TRUE(helper.GetEntry()->GetFavicon().valid);
513 EXPECT_FALSE(helper.GetEntry()->GetFavicon().image.IsEmpty()); 516 EXPECT_FALSE(helper.GetEntry()->GetFavicon().image.IsEmpty());
514 } 517 }
515 518
516 TEST_F(FaviconHandlerTest, UpdateFavicon) { 519 TEST_F(FaviconHandlerTest, UpdateFavicon) {
517 const GURL page_url("http://www.google.com"); 520 const GURL page_url("http://www.google.com");
518 const GURL icon_url("http://www.google.com/favicon"); 521 const GURL icon_url("http://www.google.com/favicon");
519 const GURL new_icon_url("http://www.google.com/new_favicon"); 522 const GURL new_icon_url("http://www.google.com/new_favicon");
520 523
521 TestFaviconHandlerDelegate delegate(contents()); 524 TestFaviconHandlerDelegate delegate(contents());
522 Profile* profile = Profile::FromBrowserContext( 525 Profile* profile = Profile::FromBrowserContext(
523 contents()->GetBrowserContext()); 526 contents()->GetBrowserContext());
524 TestFaviconHandler helper(page_url, profile, 527 TestFaviconHandler helper(page_url, profile,
525 &delegate, FaviconHandler::FAVICON); 528 &delegate, FaviconHandler::FAVICON);
526 529
527 helper.FetchFavicon(page_url); 530 helper.FetchFavicon(page_url);
528 HistoryRequestHandler* history_handler = helper.history_handler(); 531 HistoryRequestHandler* history_handler = helper.history_handler();
529 // Ensure the data given to history is correct. 532 // Ensure the data given to history is correct.
530 ASSERT_TRUE(history_handler); 533 ASSERT_TRUE(history_handler);
531 EXPECT_EQ(page_url, history_handler->page_url_); 534 EXPECT_EQ(page_url, history_handler->page_url_);
532 EXPECT_EQ(GURL(), history_handler->icon_url_); 535 EXPECT_EQ(GURL(), history_handler->icon_url_);
533 EXPECT_EQ(history::FAVICON, history_handler->icon_type_); 536 EXPECT_EQ(history::FAVICON, history_handler->icon_type_);
534 537
535 // Set valid icon data. 538 SetFaviconDataWithOneBitmap(icon_url, &history_handler->favicon_data_);
536 history_handler->favicon_data_.known_icon = true;
537 history_handler->favicon_data_.icon_type = history::FAVICON;
538 history_handler->favicon_data_.expired = false;
539 history_handler->favicon_data_.icon_url = icon_url;
540 scoped_refptr<base::RefCountedBytes> data = new base::RefCountedBytes();
541 FillBitmap(gfx::kFaviconSize, gfx::kFaviconSize, &data->data());
542 history_handler->favicon_data_.image_data = data;
543 539
544 // Send history response. 540 // Send history response.
545 history_handler->InvokeCallback(); 541 history_handler->InvokeCallback();
546 // Verify FaviconHandler status. 542 // Verify FaviconHandler status.
547 EXPECT_TRUE(helper.GetEntry()->GetFavicon().valid); 543 EXPECT_TRUE(helper.GetEntry()->GetFavicon().valid);
548 EXPECT_EQ(icon_url, helper.GetEntry()->GetFavicon().url); 544 EXPECT_EQ(icon_url, helper.GetEntry()->GetFavicon().url);
549 545
550 // Reset the history_handler to verify whether new icon is requested from 546 // Reset the history_handler to verify whether new icon is requested from
551 // history. 547 // history.
552 helper.set_history_handler(NULL); 548 helper.set_history_handler(NULL);
(...skipping 15 matching lines...) Expand all
568 history_handler = helper.history_handler(); 564 history_handler = helper.history_handler();
569 ASSERT_TRUE(history_handler); 565 ASSERT_TRUE(history_handler);
570 EXPECT_EQ(new_icon_url, history_handler->icon_url_); 566 EXPECT_EQ(new_icon_url, history_handler->icon_url_);
571 EXPECT_EQ(FaviconURL::FAVICON, history_handler->icon_type_); 567 EXPECT_EQ(FaviconURL::FAVICON, history_handler->icon_type_);
572 EXPECT_EQ(page_url, history_handler->page_url_); 568 EXPECT_EQ(page_url, history_handler->page_url_);
573 569
574 // Simulate find icon. 570 // Simulate find icon.
575 history_handler->favicon_data_.known_icon = true; 571 history_handler->favicon_data_.known_icon = true;
576 history_handler->favicon_data_.icon_type = history::FAVICON; 572 history_handler->favicon_data_.icon_type = history::FAVICON;
577 history_handler->favicon_data_.expired = false; 573 history_handler->favicon_data_.expired = false;
578 history_handler->favicon_data_.icon_url = new_icon_url; 574 scoped_refptr<base::RefCountedBytes> data = new base::RefCountedBytes();
stevenjb 2012/08/15 22:59:18 nit: use constructor
579 history_handler->favicon_data_.image_data = data; 575 history::FaviconDataElement element;
576 element.bitmap_data = data;
577 element.icon_url = new_icon_url;
578 history_handler->favicon_data_.elements.push_back(element);
580 history_handler->InvokeCallback(); 579 history_handler->InvokeCallback();
581 580
582 // Shouldn't request download favicon 581 // Shouldn't request download favicon
583 EXPECT_FALSE(helper.download_handler()->HasDownload()); 582 EXPECT_FALSE(helper.download_handler()->HasDownload());
584 583
585 // Verify the favicon status. 584 // Verify the favicon status.
586 EXPECT_EQ(new_icon_url, helper.GetEntry()->GetFavicon().url); 585 EXPECT_EQ(new_icon_url, helper.GetEntry()->GetFavicon().url);
587 EXPECT_TRUE(helper.GetEntry()->GetFavicon().valid); 586 EXPECT_TRUE(helper.GetEntry()->GetFavicon().valid);
588 EXPECT_FALSE(helper.GetEntry()->GetFavicon().image.IsEmpty()); 587 EXPECT_FALSE(helper.GetEntry()->GetFavicon().image.IsEmpty());
589 } 588 }
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
673 EXPECT_EQ(FaviconURL::TOUCH_ICON, history_handler->icon_type_); 672 EXPECT_EQ(FaviconURL::TOUCH_ICON, history_handler->icon_type_);
674 EXPECT_EQ(page_url, history_handler->page_url_); 673 EXPECT_EQ(page_url, history_handler->page_url_);
675 674
676 // Reset download handler 675 // Reset download handler
677 download_handler->Reset(); 676 download_handler->Reset();
678 677
679 // Smulates getting a expired icon from history. 678 // Smulates getting a expired icon from history.
680 history_handler->favicon_data_.known_icon = true; 679 history_handler->favicon_data_.known_icon = true;
681 history_handler->favicon_data_.icon_type = history::TOUCH_ICON; 680 history_handler->favicon_data_.icon_type = history::TOUCH_ICON;
682 history_handler->favicon_data_.expired = true; 681 history_handler->favicon_data_.expired = true;
683 history_handler->favicon_data_.icon_url = new_icon_url;
684 scoped_refptr<base::RefCountedBytes> data = new base::RefCountedBytes(); 682 scoped_refptr<base::RefCountedBytes> data = new base::RefCountedBytes();
685 FillBitmap(gfx::kFaviconSize, gfx::kFaviconSize, &data->data()); 683 FillBitmap(gfx::kFaviconSize, gfx::kFaviconSize, &data->data());
686 history_handler->favicon_data_.image_data = data; 684 history::FaviconDataElement element;
685 element.bitmap_data = data;
686 element.icon_url = new_icon_url;
687 history_handler->favicon_data_.elements.push_back(element);
687 history_handler->InvokeCallback(); 688 history_handler->InvokeCallback();
688 689
689 // Verify the download request. 690 // Verify the download request.
690 EXPECT_TRUE(helper.download_handler()->HasDownload()); 691 EXPECT_TRUE(helper.download_handler()->HasDownload());
691 EXPECT_EQ(new_icon_url, download_handler->GetImageUrl()); 692 EXPECT_EQ(new_icon_url, download_handler->GetImageUrl());
692 EXPECT_EQ(0, download_handler->GetImageSize()); 693 EXPECT_EQ(0, download_handler->GetImageSize());
693 694
694 helper.set_history_handler(NULL); 695 helper.set_history_handler(NULL);
695 696
696 // Simulates icon being downloaded. 697 // Simulates icon being downloaded.
697 download_handler->InvokeCallback(); 698 download_handler->InvokeCallback();
698 699
699 // New icon should be saved to history backend. 700 // New icon should be saved to history backend.
700 history_handler = helper.history_handler(); 701 history_handler = helper.history_handler();
701 ASSERT_TRUE(history_handler); 702 ASSERT_TRUE(history_handler);
702 EXPECT_EQ(new_icon_url, history_handler->icon_url_); 703 EXPECT_EQ(new_icon_url, history_handler->icon_url_);
703 EXPECT_EQ(FaviconURL::TOUCH_ICON, history_handler->icon_type_); 704 EXPECT_EQ(FaviconURL::TOUCH_ICON, history_handler->icon_type_);
704 EXPECT_LT(0U, history_handler->image_data_.size()); 705 EXPECT_LT(0U, history_handler->bitmap_data_.size());
705 EXPECT_EQ(page_url, history_handler->page_url_); 706 EXPECT_EQ(page_url, history_handler->page_url_);
706 } 707 }
707 708
708 TEST_F(FaviconHandlerTest, UpdateDuringDownloading) { 709 TEST_F(FaviconHandlerTest, UpdateDuringDownloading) {
709 const GURL page_url("http://www.google.com"); 710 const GURL page_url("http://www.google.com");
710 const GURL icon_url("http://www.google.com/favicon"); 711 const GURL icon_url("http://www.google.com/favicon");
711 const GURL new_icon_url("http://www.google.com/new_favicon"); 712 const GURL new_icon_url("http://www.google.com/new_favicon");
712 713
713 TestFaviconHandlerDelegate delegate(contents()); 714 TestFaviconHandlerDelegate delegate(contents());
714 Profile* profile = Profile::FromBrowserContext( 715 Profile* profile = Profile::FromBrowserContext(
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
802 803
803 download_handler->Reset(); 804 download_handler->Reset();
804 805
805 // Simulates getting the icon from history. 806 // Simulates getting the icon from history.
806 scoped_ptr<HistoryRequestHandler> handler; 807 scoped_ptr<HistoryRequestHandler> handler;
807 handler.reset(new HistoryRequestHandler(page_url, latest_icon_url, 808 handler.reset(new HistoryRequestHandler(page_url, latest_icon_url,
808 history::TOUCH_ICON, callback)); 809 history::TOUCH_ICON, callback));
809 handler->favicon_data_.known_icon = true; 810 handler->favicon_data_.known_icon = true;
810 handler->favicon_data_.expired = false; 811 handler->favicon_data_.expired = false;
811 handler->favicon_data_.icon_type = history::TOUCH_ICON; 812 handler->favicon_data_.icon_type = history::TOUCH_ICON;
812 handler->favicon_data_.icon_url = latest_icon_url;
813 scoped_refptr<base::RefCountedBytes> data = new base::RefCountedBytes(); 813 scoped_refptr<base::RefCountedBytes> data = new base::RefCountedBytes();
814 FillBitmap(gfx::kFaviconSize, gfx::kFaviconSize, &data->data()); 814 FillBitmap(gfx::kFaviconSize, gfx::kFaviconSize, &data->data());
815 handler->favicon_data_.image_data = data; 815 history::FaviconDataElement element;
816 element.bitmap_data = data;
817 element.icon_url = latest_icon_url;
818 handler->favicon_data_.elements.push_back(element);
816 819
817 handler->InvokeCallback(); 820 handler->InvokeCallback();
818 821
819 // No download request. 822 // No download request.
820 EXPECT_FALSE(download_handler->HasDownload()); 823 EXPECT_FALSE(download_handler->HasDownload());
821 } 824 }
822 825
823 TEST_F(FaviconHandlerTest, MultipleFavicon) { 826 TEST_F(FaviconHandlerTest, MultipleFavicon) {
824 const GURL page_url("http://www.google.com"); 827 const GURL page_url("http://www.google.com");
825 const GURL icon_url("http://www.google.com/favicon"); 828 const GURL icon_url("http://www.google.com/favicon");
826 const GURL icon_url_small("http://www.google.com/favicon_small"); 829 const GURL icon_url_small("http://www.google.com/favicon_small");
827 const GURL icon_url_large("http://www.google.com/favicon_large"); 830 const GURL icon_url_large("http://www.google.com/favicon_large");
828 const GURL icon_url_preferred1("http://www.google.com/favicon_preferred1"); 831 const GURL icon_url_preferred1("http://www.google.com/favicon_preferred1");
829 const GURL icon_url_preferred2("http://www.google.com/favicon_preferred2"); 832 const GURL icon_url_preferred2("http://www.google.com/favicon_preferred2");
830 833
831 TestFaviconHandlerDelegate delegate(contents()); 834 TestFaviconHandlerDelegate delegate(contents());
832 Profile* profile = Profile::FromBrowserContext( 835 Profile* profile = Profile::FromBrowserContext(
833 contents()->GetBrowserContext()); 836 contents()->GetBrowserContext());
834 TestFaviconHandler handler(page_url, profile, 837 TestFaviconHandler handler(page_url, profile,
835 &delegate, FaviconHandler::FAVICON); 838 &delegate, FaviconHandler::FAVICON);
836 839
837 handler.FetchFavicon(page_url); 840 handler.FetchFavicon(page_url);
838 HistoryRequestHandler* history_handler = handler.history_handler(); 841 HistoryRequestHandler* history_handler = handler.history_handler();
839 842
840 // Set valid icon data. 843 SetFaviconDataWithOneBitmap(icon_url, &history_handler->favicon_data_);
841 history_handler->favicon_data_.known_icon = true;
842 history_handler->favicon_data_.icon_type = history::FAVICON;
843 history_handler->favicon_data_.expired = false;
844 history_handler->favicon_data_.icon_url = icon_url;
845 scoped_refptr<base::RefCountedBytes> data = new base::RefCountedBytes();
846 FillBitmap(gfx::kFaviconSize, gfx::kFaviconSize, &data->data());
847 history_handler->favicon_data_.image_data = data;
848 844
849 // Send history response. 845 // Send history response.
850 history_handler->InvokeCallback(); 846 history_handler->InvokeCallback();
851 847
852 // Simulates update with the different favicon url. 848 // Simulates update with the different favicon url.
853 std::vector<FaviconURL> urls; 849 std::vector<FaviconURL> urls;
854 // Note: the code will stop making requests when an icon matching the 850 // Note: the code will stop making requests when an icon matching the
855 // preferred size is found, so icon_url_preferred must be last. 851 // preferred size is found, so icon_url_preferred must be last.
856 urls.push_back(FaviconURL(icon_url_small, FaviconURL::FAVICON)); 852 urls.push_back(FaviconURL(icon_url_small, FaviconURL::FAVICON));
857 urls.push_back(FaviconURL(icon_url_large, FaviconURL::FAVICON)); 853 urls.push_back(FaviconURL(icon_url_large, FaviconURL::FAVICON));
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
906 902
907 TestFaviconHandlerDelegate delegate(contents()); 903 TestFaviconHandlerDelegate delegate(contents());
908 Profile* profile = Profile::FromBrowserContext( 904 Profile* profile = Profile::FromBrowserContext(
909 contents()->GetBrowserContext()); 905 contents()->GetBrowserContext());
910 TestFaviconHandler handler(page_url, profile, 906 TestFaviconHandler handler(page_url, profile,
911 &delegate, FaviconHandler::FAVICON); 907 &delegate, FaviconHandler::FAVICON);
912 908
913 handler.FetchFavicon(page_url); 909 handler.FetchFavicon(page_url);
914 HistoryRequestHandler* history_handler = handler.history_handler(); 910 HistoryRequestHandler* history_handler = handler.history_handler();
915 911
916 // Set valid icon data. 912 SetFaviconDataWithOneBitmap(icon_url, &history_handler->favicon_data_);
917 history_handler->favicon_data_.known_icon = true;
918 history_handler->favicon_data_.icon_type = history::FAVICON;
919 history_handler->favicon_data_.expired = false;
920 history_handler->favicon_data_.icon_url = icon_url;
921 scoped_refptr<base::RefCountedBytes> data = new base::RefCountedBytes();
922 FillBitmap(gfx::kFaviconSize, gfx::kFaviconSize, &data->data());
923 history_handler->favicon_data_.image_data = data;
924 913
925 // Send history response. 914 // Send history response.
926 history_handler->InvokeCallback(); 915 history_handler->InvokeCallback();
927 916
928 // Simulates update with the different favicon url. 917 // Simulates update with the different favicon url.
929 std::vector<FaviconURL> urls; 918 std::vector<FaviconURL> urls;
930 // Note: the code will stop making requests when an icon matching the 919 // Note: the code will stop making requests when an icon matching the
931 // preferred size is found, so icon_url_preferred must be last. 920 // preferred size is found, so icon_url_preferred must be last.
932 urls.push_back(FaviconURL(icon_url_preferred1, FaviconURL::FAVICON)); 921 urls.push_back(FaviconURL(icon_url_preferred1, FaviconURL::FAVICON));
933 urls.push_back(FaviconURL(icon_url_large, FaviconURL::FAVICON)); 922 urls.push_back(FaviconURL(icon_url_large, FaviconURL::FAVICON));
(...skipping 14 matching lines...) Expand all
948 937
949 // Verify correct icon size chosen. 938 // Verify correct icon size chosen.
950 EXPECT_EQ(icon_url_preferred1, handler.GetEntry()->GetFavicon().url); 939 EXPECT_EQ(icon_url_preferred1, handler.GetEntry()->GetFavicon().url);
951 EXPECT_TRUE(handler.GetEntry()->GetFavicon().valid); 940 EXPECT_TRUE(handler.GetEntry()->GetFavicon().valid);
952 EXPECT_FALSE(handler.GetEntry()->GetFavicon().image.IsEmpty()); 941 EXPECT_FALSE(handler.GetEntry()->GetFavicon().image.IsEmpty());
953 EXPECT_EQ(gfx::kFaviconSize, 942 EXPECT_EQ(gfx::kFaviconSize,
954 handler.GetEntry()->GetFavicon().image.ToSkBitmap()->width()); 943 handler.GetEntry()->GetFavicon().image.ToSkBitmap()->width());
955 } 944 }
956 945
957 } // namespace. 946 } // namespace.
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698