Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(17)

Side by Side Diff: components/history/core/browser/top_sites_backend.cc

Issue 870063002: Componentize TopSites, TopSitesBackend, TopSitesDatabase (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@815983002
Patch Set: Fix typo Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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_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/memory/ref_counted.h" 11 #include "base/memory/ref_counted.h"
12 #include "base/single_thread_task_runner.h"
11 #include "base/task/cancelable_task_tracker.h" 13 #include "base/task/cancelable_task_tracker.h"
12 #include "chrome/browser/history/top_sites_database.h" 14 #include "components/history/core/browser/top_sites_database.h"
13 #include "content/public/browser/browser_thread.h"
14 #include "sql/connection.h" 15 #include "sql/connection.h"
15 16
16 using content::BrowserThread;
17
18 namespace history { 17 namespace history {
19 18
20 TopSitesBackend::TopSitesBackend() 19 TopSitesBackend::TopSitesBackend(
21 : db_(new TopSitesDatabase()) { 20 const scoped_refptr<base::SingleThreadTaskRunner>& db_task_runner)
21 : db_(new TopSitesDatabase()), db_task_runner_(db_task_runner) {
22 DCHECK(db_task_runner_);
22 } 23 }
23 24
24 void TopSitesBackend::Init(const base::FilePath& path) { 25 void TopSitesBackend::Init(const base::FilePath& path) {
25 db_path_ = path; 26 db_path_ = path;
26 BrowserThread::PostTask( 27 db_task_runner_->PostTask(
27 BrowserThread::DB, FROM_HERE, 28 FROM_HERE, base::Bind(&TopSitesBackend::InitDBOnDBThread, this, path));
28 base::Bind(&TopSitesBackend::InitDBOnDBThread, this, path));
29 } 29 }
30 30
31 void TopSitesBackend::Shutdown() { 31 void TopSitesBackend::Shutdown() {
32 BrowserThread::PostTask( 32 db_task_runner_->PostTask(
33 BrowserThread::DB, FROM_HERE, 33 FROM_HERE, base::Bind(&TopSitesBackend::ShutdownDBOnDBThread, this));
34 base::Bind(&TopSitesBackend::ShutdownDBOnDBThread, this));
35 } 34 }
36 35
37 void TopSitesBackend::GetMostVisitedThumbnails( 36 void TopSitesBackend::GetMostVisitedThumbnails(
38 const GetMostVisitedThumbnailsCallback& callback, 37 const GetMostVisitedThumbnailsCallback& callback,
39 base::CancelableTaskTracker* tracker) { 38 base::CancelableTaskTracker* tracker) {
40 scoped_refptr<MostVisitedThumbnails> thumbnails = new MostVisitedThumbnails(); 39 scoped_refptr<MostVisitedThumbnails> thumbnails = new MostVisitedThumbnails();
41
42 tracker->PostTaskAndReply( 40 tracker->PostTaskAndReply(
43 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB).get(), 41 db_task_runner_.get(), FROM_HERE,
44 FROM_HERE, 42 base::Bind(&TopSitesBackend::GetMostVisitedThumbnailsOnDBThread, this,
45 base::Bind(&TopSitesBackend::GetMostVisitedThumbnailsOnDBThread,
46 this,
47 thumbnails), 43 thumbnails),
48 base::Bind(callback, thumbnails)); 44 base::Bind(callback, thumbnails));
49 } 45 }
50 46
51 void TopSitesBackend::UpdateTopSites(const TopSitesDelta& delta) { 47 void TopSitesBackend::UpdateTopSites(const TopSitesDelta& delta) {
52 BrowserThread::PostTask( 48 db_task_runner_->PostTask(
53 BrowserThread::DB, FROM_HERE, 49 FROM_HERE,
54 base::Bind(&TopSitesBackend::UpdateTopSitesOnDBThread, this, delta)); 50 base::Bind(&TopSitesBackend::UpdateTopSitesOnDBThread, this, delta));
55 } 51 }
56 52
57 void TopSitesBackend::SetPageThumbnail(const MostVisitedURL& url, 53 void TopSitesBackend::SetPageThumbnail(const MostVisitedURL& url,
58 int url_rank, 54 int url_rank,
59 const Images& thumbnail) { 55 const Images& thumbnail) {
60 BrowserThread::PostTask( 56 db_task_runner_->PostTask(
61 BrowserThread::DB, FROM_HERE, 57 FROM_HERE, base::Bind(&TopSitesBackend::SetPageThumbnailOnDBThread, this,
62 base::Bind(&TopSitesBackend::SetPageThumbnailOnDBThread, this, url, 58 url, url_rank, thumbnail));
63 url_rank, thumbnail));
64 } 59 }
65 60
66 void TopSitesBackend::ResetDatabase() { 61 void TopSitesBackend::ResetDatabase() {
67 BrowserThread::PostTask( 62 db_task_runner_->PostTask(
68 BrowserThread::DB, FROM_HERE, 63 FROM_HERE,
69 base::Bind(&TopSitesBackend::ResetDatabaseOnDBThread, this, db_path_)); 64 base::Bind(&TopSitesBackend::ResetDatabaseOnDBThread, this, db_path_));
70 } 65 }
71 66
72 void TopSitesBackend::DoEmptyRequest(const base::Closure& reply, 67 void TopSitesBackend::DoEmptyRequest(const base::Closure& reply,
73 base::CancelableTaskTracker* tracker) { 68 base::CancelableTaskTracker* tracker) {
74 tracker->PostTaskAndReply( 69 tracker->PostTaskAndReply(db_task_runner_.get(), FROM_HERE,
75 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB).get(), 70 base::Bind(&base::DoNothing), reply);
76 FROM_HERE,
77 base::Bind(&base::DoNothing),
78 reply);
79 } 71 }
80 72
81 TopSitesBackend::~TopSitesBackend() { 73 TopSitesBackend::~TopSitesBackend() {
82 DCHECK(!db_); // Shutdown should have happened first (which results in 74 DCHECK(!db_); // Shutdown should have happened first (which results in
83 // nulling out db). 75 // nulling out db).
84 } 76 }
85 77
86 void TopSitesBackend::InitDBOnDBThread(const base::FilePath& path) { 78 void TopSitesBackend::InitDBOnDBThread(const base::FilePath& path) {
87 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); 79 DCHECK(db_task_runner_->BelongsToCurrentThread());
88 if (!db_->Init(path)) { 80 if (!db_->Init(path)) {
89 LOG(ERROR) << "Failed to initialize database."; 81 LOG(ERROR) << "Failed to initialize database.";
90 db_.reset(); 82 db_.reset();
91 } 83 }
92 } 84 }
93 85
94 void TopSitesBackend::ShutdownDBOnDBThread() { 86 void TopSitesBackend::ShutdownDBOnDBThread() {
95 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); 87 DCHECK(db_task_runner_->BelongsToCurrentThread());
96 db_.reset(); 88 db_.reset();
97 } 89 }
98 90
99 void TopSitesBackend::GetMostVisitedThumbnailsOnDBThread( 91 void TopSitesBackend::GetMostVisitedThumbnailsOnDBThread(
100 scoped_refptr<MostVisitedThumbnails> thumbnails) { 92 scoped_refptr<MostVisitedThumbnails> thumbnails) {
101 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); 93 DCHECK(db_task_runner_->BelongsToCurrentThread());
102 94
103 if (db_) { 95 if (db_) {
104 db_->GetPageThumbnails(&(thumbnails->most_visited), 96 db_->GetPageThumbnails(&(thumbnails->most_visited),
105 &(thumbnails->url_to_images_map)); 97 &(thumbnails->url_to_images_map));
106 } 98 }
107 } 99 }
108 100
109 void TopSitesBackend::UpdateTopSitesOnDBThread(const TopSitesDelta& delta) { 101 void TopSitesBackend::UpdateTopSitesOnDBThread(const TopSitesDelta& delta) {
110 if (!db_) 102 if (!db_)
111 return; 103 return;
(...skipping 11 matching lines...) Expand all
123 void TopSitesBackend::SetPageThumbnailOnDBThread(const MostVisitedURL& url, 115 void TopSitesBackend::SetPageThumbnailOnDBThread(const MostVisitedURL& url,
124 int url_rank, 116 int url_rank,
125 const Images& thumbnail) { 117 const Images& thumbnail) {
126 if (!db_) 118 if (!db_)
127 return; 119 return;
128 120
129 db_->SetPageThumbnail(url, url_rank, thumbnail); 121 db_->SetPageThumbnail(url, url_rank, thumbnail);
130 } 122 }
131 123
132 void TopSitesBackend::ResetDatabaseOnDBThread(const base::FilePath& file_path) { 124 void TopSitesBackend::ResetDatabaseOnDBThread(const base::FilePath& file_path) {
133 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); 125 DCHECK(db_task_runner_->BelongsToCurrentThread());
134 db_.reset(NULL); 126 db_.reset(NULL);
135 sql::Connection::Delete(db_path_); 127 sql::Connection::Delete(db_path_);
136 db_.reset(new TopSitesDatabase()); 128 db_.reset(new TopSitesDatabase());
137 InitDBOnDBThread(db_path_); 129 InitDBOnDBThread(db_path_);
138 } 130 }
139 131
140 } // namespace history 132 } // namespace history
OLDNEW
« no previous file with comments | « components/history/core/browser/top_sites_backend.h ('k') | components/history/core/browser/top_sites_database.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698