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.FirstUpdateTime", |
| 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 |