| OLD | NEW |
| 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 "chrome/browser/history/top_sites.h" | 5 #include "chrome/browser/history/top_sites.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <set> | 8 #include <set> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 52 // temp_images_ for details. | 52 // temp_images_ for details. |
| 53 static const size_t kMaxTempTopImages = 8; | 53 static const size_t kMaxTempTopImages = 8; |
| 54 | 54 |
| 55 static const int kDaysOfHistory = 90; | 55 static const int kDaysOfHistory = 90; |
| 56 // Time from startup to first HistoryService query. | 56 // Time from startup to first HistoryService query. |
| 57 static const int64 kUpdateIntervalSecs = 15; | 57 static const int64 kUpdateIntervalSecs = 15; |
| 58 // Intervals between requests to HistoryService. | 58 // Intervals between requests to HistoryService. |
| 59 static const int64 kMinUpdateIntervalMinutes = 1; | 59 static const int64 kMinUpdateIntervalMinutes = 1; |
| 60 static const int64 kMaxUpdateIntervalMinutes = 60; | 60 static const int64 kMaxUpdateIntervalMinutes = 60; |
| 61 | 61 |
| 62 // Use 100 quality (highest quality) because we're very sensitive to |
| 63 // artifacts for these small sized, highly detailed images. |
| 64 static const int kTopSitesImageQuality = 100; |
| 65 |
| 62 const TopSites::PrepopulatedPage kPrepopulatedPages[] = { | 66 const TopSites::PrepopulatedPage kPrepopulatedPages[] = { |
| 63 { IDS_CHROME_WELCOME_URL, IDS_NEW_TAB_CHROME_WELCOME_PAGE_TITLE, | 67 { IDS_CHROME_WELCOME_URL, IDS_NEW_TAB_CHROME_WELCOME_PAGE_TITLE, |
| 64 IDR_PRODUCT_LOGO_16, IDR_NEWTAB_CHROME_WELCOME_PAGE_THUMBNAIL, | 68 IDR_PRODUCT_LOGO_16, IDR_NEWTAB_CHROME_WELCOME_PAGE_THUMBNAIL, |
| 65 SkColorSetRGB(0, 147, 60) }, | 69 SkColorSetRGB(0, 147, 60) }, |
| 66 { IDS_WEBSTORE_URL, IDS_NEW_TAB_CHROME_WELCOME_PAGE_TITLE, | 70 { IDS_WEBSTORE_URL, IDS_NEW_TAB_CHROME_WELCOME_PAGE_TITLE, |
| 67 IDR_WEBSTORE_ICON_16, IDR_NEWTAB_WEBSTORE_THUMBNAIL, | 71 IDR_WEBSTORE_ICON_16, IDR_NEWTAB_WEBSTORE_THUMBNAIL, |
| 68 SkColorSetRGB(63, 132, 197) } | 72 SkColorSetRGB(63, 132, 197) } |
| 69 }; | 73 }; |
| 70 | 74 |
| 71 namespace { | 75 namespace { |
| (...skipping 540 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 612 return true; | 616 return true; |
| 613 } | 617 } |
| 614 | 618 |
| 615 // static | 619 // static |
| 616 bool TopSites::EncodeBitmap(gfx::Image* bitmap, | 620 bool TopSites::EncodeBitmap(gfx::Image* bitmap, |
| 617 scoped_refptr<RefCountedBytes>* bytes) { | 621 scoped_refptr<RefCountedBytes>* bytes) { |
| 618 if (!bitmap) | 622 if (!bitmap) |
| 619 return false; | 623 return false; |
| 620 *bytes = new RefCountedBytes(); | 624 *bytes = new RefCountedBytes(); |
| 621 std::vector<unsigned char> data; | 625 std::vector<unsigned char> data; |
| 622 if (!gfx::JPEGEncodedDataFromImage(*bitmap, &data)) | 626 if (!gfx::JPEGEncodedDataFromImage(*bitmap, kTopSitesImageQuality, &data)) |
| 623 return false; | 627 return false; |
| 624 | 628 |
| 625 // As we're going to cache this data, make sure the vector is only as big as | 629 // As we're going to cache this data, make sure the vector is only as big as |
| 626 // it needs to be, as JPEGCodec::Encode() over-allocates data.capacity(). | 630 // it needs to be, as JPEGCodec::Encode() over-allocates data.capacity(). |
| 627 // (In a C++0x future, we can just call shrink_to_fit() in Encode()) | 631 // (In a C++0x future, we can just call shrink_to_fit() in Encode()) |
| 628 (*bytes)->data() = data; | 632 (*bytes)->data() = data; |
| 629 return true; | 633 return true; |
| 630 } | 634 } |
| 631 | 635 |
| 632 void TopSites::RemoveTemporaryThumbnailByURL(const GURL& url) { | 636 void TopSites::RemoveTemporaryThumbnailByURL(const GURL& url) { |
| (...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1032 SetTopSites(pages); | 1036 SetTopSites(pages); |
| 1033 | 1037 |
| 1034 // Used only in testing. | 1038 // Used only in testing. |
| 1035 content::NotificationService::current()->Notify( | 1039 content::NotificationService::current()->Notify( |
| 1036 chrome::NOTIFICATION_TOP_SITES_UPDATED, | 1040 chrome::NOTIFICATION_TOP_SITES_UPDATED, |
| 1037 content::Source<TopSites>(this), | 1041 content::Source<TopSites>(this), |
| 1038 content::Details<CancelableRequestProvider::Handle>(&handle)); | 1042 content::Details<CancelableRequestProvider::Handle>(&handle)); |
| 1039 } | 1043 } |
| 1040 | 1044 |
| 1041 } // namespace history | 1045 } // namespace history |
| OLD | NEW |