Chromium Code Reviews| 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, |
| 51 const RecordHistogram record_or_not) { | |
| 51 db_task_runner_->PostTask( | 52 db_task_runner_->PostTask( |
| 52 FROM_HERE, | 53 FROM_HERE, |
| 53 base::Bind(&TopSitesBackend::UpdateTopSitesOnDBThread, this, delta)); | 54 base::Bind(&TopSitesBackend::UpdateTopSitesOnDBThread, this, delta, |
| 55 record_or_not)); | |
| 54 } | 56 } |
| 55 | 57 |
| 56 void TopSitesBackend::SetPageThumbnail(const MostVisitedURL& url, | 58 void TopSitesBackend::SetPageThumbnail(const MostVisitedURL& url, |
| 57 int url_rank, | 59 int url_rank, |
| 58 const Images& thumbnail) { | 60 const Images& thumbnail) { |
| 59 db_task_runner_->PostTask( | 61 db_task_runner_->PostTask( |
| 60 FROM_HERE, base::Bind(&TopSitesBackend::SetPageThumbnailOnDBThread, this, | 62 FROM_HERE, base::Bind(&TopSitesBackend::SetPageThumbnailOnDBThread, this, |
| 61 url, url_rank, thumbnail)); | 63 url, url_rank, thumbnail)); |
| 62 } | 64 } |
| 63 | 65 |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 94 void TopSitesBackend::GetMostVisitedThumbnailsOnDBThread( | 96 void TopSitesBackend::GetMostVisitedThumbnailsOnDBThread( |
| 95 scoped_refptr<MostVisitedThumbnails> thumbnails) { | 97 scoped_refptr<MostVisitedThumbnails> thumbnails) { |
| 96 DCHECK(db_task_runner_->BelongsToCurrentThread()); | 98 DCHECK(db_task_runner_->BelongsToCurrentThread()); |
| 97 | 99 |
| 98 if (db_) { | 100 if (db_) { |
| 99 db_->GetPageThumbnails(&(thumbnails->most_visited), | 101 db_->GetPageThumbnails(&(thumbnails->most_visited), |
| 100 &(thumbnails->url_to_images_map)); | 102 &(thumbnails->url_to_images_map)); |
| 101 } | 103 } |
| 102 } | 104 } |
| 103 | 105 |
| 104 void TopSitesBackend::UpdateTopSitesOnDBThread(const TopSitesDelta& delta) { | 106 void TopSitesBackend::UpdateTopSitesOnDBThread( |
| 107 const TopSitesDelta& delta, const RecordHistogram record_or_not) { | |
| 105 TRACE_EVENT0("startup", "history::TopSitesBackend::UpdateTopSitesOnDBThread"); | 108 TRACE_EVENT0("startup", "history::TopSitesBackend::UpdateTopSitesOnDBThread"); |
| 106 | 109 |
| 107 if (!db_) | 110 if (!db_) |
| 108 return; | 111 return; |
| 109 | 112 |
| 110 // TODO(yiyaoliu): Remove the histogram and related code when crbug/223430 is | |
| 111 // fixed. | |
| 112 base::TimeTicks begin_time = base::TimeTicks::Now(); | 113 base::TimeTicks begin_time = base::TimeTicks::Now(); |
| 113 | 114 |
| 114 for (size_t i = 0; i < delta.deleted.size(); ++i) | 115 for (size_t i = 0; i < delta.deleted.size(); ++i) |
| 115 db_->RemoveURL(delta.deleted[i]); | 116 db_->RemoveURL(delta.deleted[i]); |
| 116 | 117 |
| 117 for (size_t i = 0; i < delta.added.size(); ++i) | 118 for (size_t i = 0; i < delta.added.size(); ++i) |
| 118 db_->SetPageThumbnail(delta.added[i].url, delta.added[i].rank, Images()); | 119 db_->SetPageThumbnail(delta.added[i].url, delta.added[i].rank, Images()); |
| 119 | 120 |
| 120 for (size_t i = 0; i < delta.moved.size(); ++i) | 121 for (size_t i = 0; i < delta.moved.size(); ++i) |
| 121 db_->UpdatePageRank(delta.moved[i].url, delta.moved[i].rank); | 122 db_->UpdatePageRank(delta.moved[i].url, delta.moved[i].rank); |
| 122 | 123 |
| 123 UMA_HISTOGRAM_TIMES("History.UpdateTopSitesOnDBThreadTime", | 124 if (record_or_not == RECORD_HISTOGRAM_YES) { |
| 124 base::TimeTicks::Now() - begin_time); | 125 UMA_HISTOGRAM_TIMES("History.UpdateTopSitesOnDBThread_Startup_Time", |
|
sky
2015/04/17 15:07:02
This name is a bit misleading too. Maybe something
yao
2015/04/17 15:42:51
Done.
| |
| 126 base::TimeTicks::Now() - begin_time); | |
| 127 } | |
| 125 } | 128 } |
| 126 | 129 |
| 127 void TopSitesBackend::SetPageThumbnailOnDBThread(const MostVisitedURL& url, | 130 void TopSitesBackend::SetPageThumbnailOnDBThread(const MostVisitedURL& url, |
| 128 int url_rank, | 131 int url_rank, |
| 129 const Images& thumbnail) { | 132 const Images& thumbnail) { |
| 130 if (!db_) | 133 if (!db_) |
| 131 return; | 134 return; |
| 132 | 135 |
| 133 db_->SetPageThumbnail(url, url_rank, thumbnail); | 136 db_->SetPageThumbnail(url, url_rank, thumbnail); |
| 134 } | 137 } |
| 135 | 138 |
| 136 void TopSitesBackend::ResetDatabaseOnDBThread(const base::FilePath& file_path) { | 139 void TopSitesBackend::ResetDatabaseOnDBThread(const base::FilePath& file_path) { |
| 137 DCHECK(db_task_runner_->BelongsToCurrentThread()); | 140 DCHECK(db_task_runner_->BelongsToCurrentThread()); |
| 138 db_.reset(NULL); | 141 db_.reset(NULL); |
| 139 sql::Connection::Delete(db_path_); | 142 sql::Connection::Delete(db_path_); |
| 140 db_.reset(new TopSitesDatabase()); | 143 db_.reset(new TopSitesDatabase()); |
| 141 InitDBOnDBThread(db_path_); | 144 InitDBOnDBThread(db_path_); |
| 142 } | 145 } |
| 143 | 146 |
| 144 } // namespace history | 147 } // namespace history |
| OLD | NEW |