| 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 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 | 43 |
| 44 namespace history { | 44 namespace history { |
| 45 | 45 |
| 46 // How many top sites to store in the cache. | 46 // How many top sites to store in the cache. |
| 47 static const size_t kTopSitesNumber = 20; | 47 static const size_t kTopSitesNumber = 20; |
| 48 | 48 |
| 49 // Max number of temporary images we'll cache. See comment above | 49 // Max number of temporary images we'll cache. See comment above |
| 50 // temp_images_ for details. | 50 // temp_images_ for details. |
| 51 static const size_t kMaxTempTopImages = 8; | 51 static const size_t kMaxTempTopImages = 8; |
| 52 | 52 |
| 53 static const size_t kTopSitesShown = 8; | |
| 54 static const int kDaysOfHistory = 90; | 53 static const int kDaysOfHistory = 90; |
| 55 // Time from startup to first HistoryService query. | 54 // Time from startup to first HistoryService query. |
| 56 static const int64 kUpdateIntervalSecs = 15; | 55 static const int64 kUpdateIntervalSecs = 15; |
| 57 // Intervals between requests to HistoryService. | 56 // Intervals between requests to HistoryService. |
| 58 static const int64 kMinUpdateIntervalMinutes = 1; | 57 static const int64 kMinUpdateIntervalMinutes = 1; |
| 59 static const int64 kMaxUpdateIntervalMinutes = 60; | 58 static const int64 kMaxUpdateIntervalMinutes = 60; |
| 60 | 59 |
| 61 const TopSites::PrepopulatedPage kPrepopulatedPages[] = { | 60 const TopSites::PrepopulatedPage kPrepopulatedPages[] = { |
| 62 { IDS_CHROME_WELCOME_URL, IDS_NEW_TAB_CHROME_WELCOME_PAGE_TITLE, | 61 { IDS_CHROME_WELCOME_URL, IDS_NEW_TAB_CHROME_WELCOME_PAGE_TITLE, |
| 63 IDR_PRODUCT_LOGO_16, IDR_NEWTAB_CHROME_WELCOME_PAGE_THUMBNAIL, | 62 IDR_PRODUCT_LOGO_16, IDR_NEWTAB_CHROME_WELCOME_PAGE_THUMBNAIL, |
| (...skipping 662 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 726 } | 725 } |
| 727 | 726 |
| 728 void TopSites::ApplyBlacklistAndPinnedURLs(const MostVisitedURLList& urls, | 727 void TopSites::ApplyBlacklistAndPinnedURLs(const MostVisitedURLList& urls, |
| 729 MostVisitedURLList* out) { | 728 MostVisitedURLList* out) { |
| 730 MostVisitedURLList urls_copy; | 729 MostVisitedURLList urls_copy; |
| 731 for (size_t i = 0; i < urls.size(); i++) { | 730 for (size_t i = 0; i < urls.size(); i++) { |
| 732 if (!IsBlacklisted(urls[i].url)) | 731 if (!IsBlacklisted(urls[i].url)) |
| 733 urls_copy.push_back(urls[i]); | 732 urls_copy.push_back(urls[i]); |
| 734 } | 733 } |
| 735 | 734 |
| 736 for (size_t pinned_index = 0; pinned_index < kTopSitesShown; pinned_index++) { | 735 for (size_t pinned_index = 0; pinned_index < kTopSitesNumber; |
| 736 pinned_index++) { |
| 737 GURL url; | 737 GURL url; |
| 738 bool found = GetPinnedURLAtIndex(pinned_index, &url); | 738 bool found = GetPinnedURLAtIndex(pinned_index, &url); |
| 739 if (!found) | 739 if (!found) |
| 740 continue; | 740 continue; |
| 741 | 741 |
| 742 DCHECK(!url.is_empty()); | 742 DCHECK(!url.is_empty()); |
| 743 int cur_index = IndexOf(urls_copy, url); | 743 int cur_index = IndexOf(urls_copy, url); |
| 744 MostVisitedURL tmp; | 744 MostVisitedURL tmp; |
| 745 if (cur_index < 0) { | 745 if (cur_index < 0) { |
| 746 // Pinned URL not in urls. | 746 // Pinned URL not in urls. |
| 747 tmp.url = url; | 747 tmp.url = url; |
| 748 } else { | 748 } else { |
| 749 tmp = urls_copy[cur_index]; | 749 tmp = urls_copy[cur_index]; |
| 750 urls_copy.erase(urls_copy.begin() + cur_index); | 750 urls_copy.erase(urls_copy.begin() + cur_index); |
| 751 } | 751 } |
| 752 if (pinned_index > out->size()) | 752 if (pinned_index > out->size()) |
| 753 out->resize(pinned_index); // Add empty URLs as fillers. | 753 out->resize(pinned_index); // Add empty URLs as fillers. |
| 754 out->insert(out->begin() + pinned_index, tmp); | 754 out->insert(out->begin() + pinned_index, tmp); |
| 755 } | 755 } |
| 756 | 756 |
| 757 // Add non-pinned URLs in the empty spots. | 757 // Add non-pinned URLs in the empty spots. |
| 758 size_t current_url = 0; // Index into the remaining URLs in urls_copy. | 758 size_t current_url = 0; // Index into the remaining URLs in urls_copy. |
| 759 for (size_t i = 0; i < kTopSitesShown && current_url < urls_copy.size(); | 759 for (size_t i = 0; i < kTopSitesNumber && current_url < urls_copy.size(); |
| 760 i++) { | 760 i++) { |
| 761 if (i == out->size()) { | 761 if (i == out->size()) { |
| 762 out->push_back(urls_copy[current_url]); | 762 out->push_back(urls_copy[current_url]); |
| 763 current_url++; | 763 current_url++; |
| 764 } else if (i < out->size()) { | 764 } else if (i < out->size()) { |
| 765 if ((*out)[i].url.is_empty()) { | 765 if ((*out)[i].url.is_empty()) { |
| 766 // Replace the filler | 766 // Replace the filler |
| 767 (*out)[i] = urls_copy[current_url]; | 767 (*out)[i] = urls_copy[current_url]; |
| 768 current_url++; | 768 current_url++; |
| 769 } | 769 } |
| (...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1030 SetTopSites(pages); | 1030 SetTopSites(pages); |
| 1031 | 1031 |
| 1032 // Used only in testing. | 1032 // Used only in testing. |
| 1033 content::NotificationService::current()->Notify( | 1033 content::NotificationService::current()->Notify( |
| 1034 chrome::NOTIFICATION_TOP_SITES_UPDATED, | 1034 chrome::NOTIFICATION_TOP_SITES_UPDATED, |
| 1035 content::Source<TopSites>(this), | 1035 content::Source<TopSites>(this), |
| 1036 content::Details<CancelableRequestProvider::Handle>(&handle)); | 1036 content::Details<CancelableRequestProvider::Handle>(&handle)); |
| 1037 } | 1037 } |
| 1038 | 1038 |
| 1039 } // namespace history | 1039 } // namespace history |
| OLD | NEW |