| 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 "components/history/core/browser/top_sites_backend.h" | 5 #include "components/history/core/browser/top_sites_backend.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
| 10 #include "base/location.h" | 10 #include "base/location.h" |
| (...skipping 29 matching lines...) Expand all Loading... |
| 40 const GetMostVisitedThumbnailsCallback& callback, | 40 const GetMostVisitedThumbnailsCallback& callback, |
| 41 base::CancelableTaskTracker* tracker) { | 41 base::CancelableTaskTracker* tracker) { |
| 42 scoped_refptr<MostVisitedThumbnails> thumbnails = new MostVisitedThumbnails(); | 42 scoped_refptr<MostVisitedThumbnails> thumbnails = new MostVisitedThumbnails(); |
| 43 tracker->PostTaskAndReply( | 43 tracker->PostTaskAndReply( |
| 44 db_task_runner_.get(), FROM_HERE, | 44 db_task_runner_.get(), FROM_HERE, |
| 45 base::Bind(&TopSitesBackend::GetMostVisitedThumbnailsOnDBThread, this, | 45 base::Bind(&TopSitesBackend::GetMostVisitedThumbnailsOnDBThread, this, |
| 46 thumbnails), | 46 thumbnails), |
| 47 base::Bind(callback, thumbnails)); | 47 base::Bind(callback, thumbnails)); |
| 48 } | 48 } |
| 49 | 49 |
| 50 void TopSitesBackend::UpdateTopSites(const TopSitesDelta& delta) { | 50 void TopSitesBackend::UpdateTopSites(const TopSitesDelta& delta, bool startup) { |
| 51 db_task_runner_->PostTask( | 51 db_task_runner_->PostTask( |
| 52 FROM_HERE, | 52 FROM_HERE, |
| 53 base::Bind(&TopSitesBackend::UpdateTopSitesOnDBThread, this, delta)); | 53 base::Bind(&TopSitesBackend::UpdateTopSitesOnDBThread, this, delta, |
| 54 startup)); |
| 54 } | 55 } |
| 55 | 56 |
| 56 void TopSitesBackend::SetPageThumbnail(const MostVisitedURL& url, | 57 void TopSitesBackend::SetPageThumbnail(const MostVisitedURL& url, |
| 57 int url_rank, | 58 int url_rank, |
| 58 const Images& thumbnail) { | 59 const Images& thumbnail) { |
| 59 db_task_runner_->PostTask( | 60 db_task_runner_->PostTask( |
| 60 FROM_HERE, base::Bind(&TopSitesBackend::SetPageThumbnailOnDBThread, this, | 61 FROM_HERE, base::Bind(&TopSitesBackend::SetPageThumbnailOnDBThread, this, |
| 61 url, url_rank, thumbnail)); | 62 url, url_rank, thumbnail)); |
| 62 } | 63 } |
| 63 | 64 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 94 void TopSitesBackend::GetMostVisitedThumbnailsOnDBThread( | 95 void TopSitesBackend::GetMostVisitedThumbnailsOnDBThread( |
| 95 scoped_refptr<MostVisitedThumbnails> thumbnails) { | 96 scoped_refptr<MostVisitedThumbnails> thumbnails) { |
| 96 DCHECK(db_task_runner_->BelongsToCurrentThread()); | 97 DCHECK(db_task_runner_->BelongsToCurrentThread()); |
| 97 | 98 |
| 98 if (db_) { | 99 if (db_) { |
| 99 db_->GetPageThumbnails(&(thumbnails->most_visited), | 100 db_->GetPageThumbnails(&(thumbnails->most_visited), |
| 100 &(thumbnails->url_to_images_map)); | 101 &(thumbnails->url_to_images_map)); |
| 101 } | 102 } |
| 102 } | 103 } |
| 103 | 104 |
| 104 void TopSitesBackend::UpdateTopSitesOnDBThread(const TopSitesDelta& delta) { | 105 void TopSitesBackend::UpdateTopSitesOnDBThread(const TopSitesDelta& delta, |
| 106 bool startup) { |
| 105 TRACE_EVENT0("startup", "history::TopSitesBackend::UpdateTopSitesOnDBThread"); | 107 TRACE_EVENT0("startup", "history::TopSitesBackend::UpdateTopSitesOnDBThread"); |
| 106 | 108 |
| 107 if (!db_) | 109 if (!db_) |
| 108 return; | 110 return; |
| 109 | 111 |
| 110 // TODO(yiyaoliu): Remove the histogram and related code when crbug/223430 is | 112 // TODO(yiyaoliu): Remove the histogram and related code when crbug/223430 is |
| 111 // fixed. | 113 // fixed. |
| 112 base::TimeTicks begin_time = base::TimeTicks::Now(); | 114 base::TimeTicks begin_time = base::TimeTicks::Now(); |
| 113 | 115 |
| 114 for (size_t i = 0; i < delta.deleted.size(); ++i) | 116 for (size_t i = 0; i < delta.deleted.size(); ++i) |
| 115 db_->RemoveURL(delta.deleted[i]); | 117 db_->RemoveURL(delta.deleted[i]); |
| 116 | 118 |
| 117 for (size_t i = 0; i < delta.added.size(); ++i) | 119 for (size_t i = 0; i < delta.added.size(); ++i) |
| 118 db_->SetPageThumbnail(delta.added[i].url, delta.added[i].rank, Images()); | 120 db_->SetPageThumbnail(delta.added[i].url, delta.added[i].rank, Images()); |
| 119 | 121 |
| 120 for (size_t i = 0; i < delta.moved.size(); ++i) | 122 for (size_t i = 0; i < delta.moved.size(); ++i) |
| 121 db_->UpdatePageRank(delta.moved[i].url, delta.moved[i].rank); | 123 db_->UpdatePageRank(delta.moved[i].url, delta.moved[i].rank); |
| 122 | 124 |
| 123 UMA_HISTOGRAM_TIMES("History.UpdateTopSitesOnDBThreadTime", | 125 if (startup) { |
| 124 base::TimeTicks::Now() - begin_time); | 126 UMA_HISTOGRAM_TIMES("History.UpdateTopSitesOnDBThreadTime.Startup", |
| 127 base::TimeTicks::Now() - begin_time); |
| 128 } else { |
| 129 UMA_HISTOGRAM_TIMES("History.UpdateTopSitesOnDBThreadTime", |
| 130 base::TimeTicks::Now() - begin_time); |
| 131 } |
| 125 } | 132 } |
| 126 | 133 |
| 127 void TopSitesBackend::SetPageThumbnailOnDBThread(const MostVisitedURL& url, | 134 void TopSitesBackend::SetPageThumbnailOnDBThread(const MostVisitedURL& url, |
| 128 int url_rank, | 135 int url_rank, |
| 129 const Images& thumbnail) { | 136 const Images& thumbnail) { |
| 130 if (!db_) | 137 if (!db_) |
| 131 return; | 138 return; |
| 132 | 139 |
| 133 db_->SetPageThumbnail(url, url_rank, thumbnail); | 140 db_->SetPageThumbnail(url, url_rank, thumbnail); |
| 134 } | 141 } |
| 135 | 142 |
| 136 void TopSitesBackend::ResetDatabaseOnDBThread(const base::FilePath& file_path) { | 143 void TopSitesBackend::ResetDatabaseOnDBThread(const base::FilePath& file_path) { |
| 137 DCHECK(db_task_runner_->BelongsToCurrentThread()); | 144 DCHECK(db_task_runner_->BelongsToCurrentThread()); |
| 138 db_.reset(NULL); | 145 db_.reset(NULL); |
| 139 sql::Connection::Delete(db_path_); | 146 sql::Connection::Delete(db_path_); |
| 140 db_.reset(new TopSitesDatabase()); | 147 db_.reset(new TopSitesDatabase()); |
| 141 InitDBOnDBThread(db_path_); | 148 InitDBOnDBThread(db_path_); |
| 142 } | 149 } |
| 143 | 150 |
| 144 } // namespace history | 151 } // namespace history |
| OLD | NEW |