Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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_impl.h" | 5 #include "chrome/browser/history/top_sites_impl.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 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 121 } | 121 } |
| 122 | 122 |
| 123 void TopSitesImpl::Init(const base::FilePath& db_name) { | 123 void TopSitesImpl::Init(const base::FilePath& db_name) { |
| 124 // Create the backend here, rather than in the constructor, so that | 124 // Create the backend here, rather than in the constructor, so that |
| 125 // unit tests that do not need the backend can run without a problem. | 125 // unit tests that do not need the backend can run without a problem. |
| 126 backend_ = new TopSitesBackend; | 126 backend_ = new TopSitesBackend; |
| 127 backend_->Init(db_name); | 127 backend_->Init(db_name); |
| 128 backend_->GetMostVisitedThumbnails( | 128 backend_->GetMostVisitedThumbnails( |
| 129 base::Bind(&TopSitesImpl::OnGotMostVisitedThumbnails, | 129 base::Bind(&TopSitesImpl::OnGotMostVisitedThumbnails, |
| 130 base::Unretained(this)), | 130 base::Unretained(this)), |
| 131 &cancelable_task_tracker_); | 131 &backend_task_tracker_); |
| 132 } | 132 } |
| 133 | 133 |
| 134 bool TopSitesImpl::SetPageThumbnail(const GURL& url, | 134 bool TopSitesImpl::SetPageThumbnail(const GURL& url, |
| 135 const gfx::Image& thumbnail, | 135 const gfx::Image& thumbnail, |
| 136 const ThumbnailScore& score) { | 136 const ThumbnailScore& score) { |
| 137 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 137 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 138 | 138 |
| 139 if (!loaded_) { | 139 if (!loaded_) { |
| 140 // TODO(sky): I need to cache these and apply them after the load | 140 // TODO(sky): I need to cache these and apply them after the load |
| 141 // completes. | 141 // completes. |
| (...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 371 } | 371 } |
| 372 ResetThreadSafeCache(); | 372 ResetThreadSafeCache(); |
| 373 NotifyTopSitesChanged(); | 373 NotifyTopSitesChanged(); |
| 374 } | 374 } |
| 375 | 375 |
| 376 void TopSitesImpl::Shutdown() { | 376 void TopSitesImpl::Shutdown() { |
| 377 profile_ = NULL; | 377 profile_ = NULL; |
| 378 // Cancel all requests so that the service doesn't callback to us after we've | 378 // Cancel all requests so that the service doesn't callback to us after we've |
| 379 // invoked Shutdown (this could happen if we have a pending request and | 379 // invoked Shutdown (this could happen if we have a pending request and |
| 380 // Shutdown is invoked). | 380 // Shutdown is invoked). |
| 381 history_consumer_.CancelAllRequests(); | 381 history_task_tracker_.TryCancelAll(); |
| 382 backend_task_tracker_.TryCancelAll(); | |
| 382 backend_->Shutdown(); | 383 backend_->Shutdown(); |
| 383 } | 384 } |
| 384 | 385 |
| 385 // static | 386 // static |
| 386 void TopSitesImpl::DiffMostVisited(const MostVisitedURLList& old_list, | 387 void TopSitesImpl::DiffMostVisited(const MostVisitedURLList& old_list, |
| 387 const MostVisitedURLList& new_list, | 388 const MostVisitedURLList& new_list, |
| 388 TopSitesDelta* delta) { | 389 TopSitesDelta* delta) { |
| 389 | 390 |
| 390 // Add all the old URLs for quick lookup. This maps URLs to the corresponding | 391 // Add all the old URLs for quick lookup. This maps URLs to the corresponding |
| 391 // index in the input. | 392 // index in the input. |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 437 | 438 |
| 438 // Any member without the special marker in the all_old_urls list means that | 439 // Any member without the special marker in the all_old_urls list means that |
| 439 // there wasn't a "new" URL that mapped to it, so it was deleted. | 440 // there wasn't a "new" URL that mapped to it, so it was deleted. |
| 440 for (std::map<GURL, size_t>::const_iterator i = all_old_urls.begin(); | 441 for (std::map<GURL, size_t>::const_iterator i = all_old_urls.begin(); |
| 441 i != all_old_urls.end(); ++i) { | 442 i != all_old_urls.end(); ++i) { |
| 442 if (i->second != kAlreadyFoundMarker) | 443 if (i->second != kAlreadyFoundMarker) |
| 443 delta->deleted.push_back(old_list[i->second]); | 444 delta->deleted.push_back(old_list[i->second]); |
| 444 } | 445 } |
| 445 } | 446 } |
| 446 | 447 |
| 447 CancelableRequestProvider::Handle TopSitesImpl::StartQueryForMostVisited() { | 448 base::CancelableTaskTracker::TaskId TopSitesImpl::StartQueryForMostVisited() { |
| 448 DCHECK(loaded_); | 449 DCHECK(loaded_); |
| 449 if (!profile_) | 450 if (!profile_) |
| 450 return 0; | 451 return base::CancelableTaskTracker::kBadTaskId; |
| 451 | 452 |
| 452 HistoryService* hs = HistoryServiceFactory::GetForProfile( | 453 HistoryService* hs = HistoryServiceFactory::GetForProfile( |
| 453 profile_, Profile::EXPLICIT_ACCESS); | 454 profile_, Profile::EXPLICIT_ACCESS); |
| 454 // |hs| may be null during unit tests. | 455 // |hs| may be null during unit tests. |
| 455 if (hs) { | 456 if (hs) { |
| 456 return hs->QueryMostVisitedURLs( | 457 return hs->QueryMostVisitedURLs( |
| 457 num_results_to_request_from_history(), | 458 num_results_to_request_from_history(), |
| 458 kDaysOfHistory, | 459 kDaysOfHistory, |
| 459 base::Bind(&TopSitesImpl::OnTopSitesAvailableFromHistory, | 460 base::Bind(&TopSitesImpl::OnTopSitesAvailableFromHistory, |
| 460 base::Unretained(this)), | 461 base::Unretained(this)), |
| 461 &cancelable_task_tracker_); | 462 &history_task_tracker_); |
|
blundell
2014/07/03 08:29:12
is this a bugfix?
sdefresne
2014/07/22 14:29:06
This is unnecessary and removed.
| |
| 462 } | 463 } |
| 463 return 0; | 464 return base::CancelableTaskTracker::kBadTaskId; |
| 464 } | 465 } |
| 465 | 466 |
| 466 bool TopSitesImpl::IsKnownURL(const GURL& url) { | 467 bool TopSitesImpl::IsKnownURL(const GURL& url) { |
| 467 return loaded_ && cache_->IsKnownURL(url); | 468 return loaded_ && cache_->IsKnownURL(url); |
| 468 } | 469 } |
| 469 | 470 |
| 470 const std::string& TopSitesImpl::GetCanonicalURLString(const GURL& url) const { | 471 const std::string& TopSitesImpl::GetCanonicalURLString(const GURL& url) const { |
| 471 return cache_->GetCanonicalURL(url).spec(); | 472 return cache_->GetCanonicalURL(url).spec(); |
| 472 } | 473 } |
| 473 | 474 |
| (...skipping 455 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 929 base::TimeDelta::FromSeconds(kUpdateIntervalSecs)); | 930 base::TimeDelta::FromSeconds(kUpdateIntervalSecs)); |
| 930 } | 931 } |
| 931 | 932 |
| 932 void TopSitesImpl::OnTopSitesAvailableFromHistory( | 933 void TopSitesImpl::OnTopSitesAvailableFromHistory( |
| 933 const MostVisitedURLList* pages) { | 934 const MostVisitedURLList* pages) { |
| 934 DCHECK(pages); | 935 DCHECK(pages); |
| 935 SetTopSites(*pages); | 936 SetTopSites(*pages); |
| 936 } | 937 } |
| 937 | 938 |
| 938 } // namespace history | 939 } // namespace history |
| OLD | NEW |