| Index: components/history/core/browser/top_sites_backend.cc
|
| diff --git a/chrome/browser/history/top_sites_backend.cc b/components/history/core/browser/top_sites_backend.cc
|
| similarity index 70%
|
| rename from chrome/browser/history/top_sites_backend.cc
|
| rename to components/history/core/browser/top_sites_backend.cc
|
| index fdecd1c869ef93b657aa09365ea803e89e31f791..37b721bf7fea205a403e6dc113ae9230e26a2212 100644
|
| --- a/chrome/browser/history/top_sites_backend.cc
|
| +++ b/components/history/core/browser/top_sites_backend.cc
|
| @@ -2,80 +2,72 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "chrome/browser/history/top_sites_backend.h"
|
| +#include "components/history/core/browser/top_sites_backend.h"
|
|
|
| #include "base/bind.h"
|
| #include "base/bind_helpers.h"
|
| #include "base/files/file_path.h"
|
| +#include "base/location.h"
|
| #include "base/memory/ref_counted.h"
|
| +#include "base/single_thread_task_runner.h"
|
| #include "base/task/cancelable_task_tracker.h"
|
| -#include "chrome/browser/history/top_sites_database.h"
|
| -#include "content/public/browser/browser_thread.h"
|
| +#include "components/history/core/browser/top_sites_database.h"
|
| #include "sql/connection.h"
|
|
|
| -using content::BrowserThread;
|
| -
|
| namespace history {
|
|
|
| -TopSitesBackend::TopSitesBackend()
|
| - : db_(new TopSitesDatabase()) {
|
| +TopSitesBackend::TopSitesBackend(
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& db_task_runner)
|
| + : db_(new TopSitesDatabase()), db_task_runner_(db_task_runner) {
|
| + DCHECK(db_task_runner_);
|
| }
|
|
|
| void TopSitesBackend::Init(const base::FilePath& path) {
|
| db_path_ = path;
|
| - BrowserThread::PostTask(
|
| - BrowserThread::DB, FROM_HERE,
|
| - base::Bind(&TopSitesBackend::InitDBOnDBThread, this, path));
|
| + db_task_runner_->PostTask(
|
| + FROM_HERE, base::Bind(&TopSitesBackend::InitDBOnDBThread, this, path));
|
| }
|
|
|
| void TopSitesBackend::Shutdown() {
|
| - BrowserThread::PostTask(
|
| - BrowserThread::DB, FROM_HERE,
|
| - base::Bind(&TopSitesBackend::ShutdownDBOnDBThread, this));
|
| + db_task_runner_->PostTask(
|
| + FROM_HERE, base::Bind(&TopSitesBackend::ShutdownDBOnDBThread, this));
|
| }
|
|
|
| void TopSitesBackend::GetMostVisitedThumbnails(
|
| const GetMostVisitedThumbnailsCallback& callback,
|
| base::CancelableTaskTracker* tracker) {
|
| scoped_refptr<MostVisitedThumbnails> thumbnails = new MostVisitedThumbnails();
|
| -
|
| tracker->PostTaskAndReply(
|
| - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB).get(),
|
| - FROM_HERE,
|
| - base::Bind(&TopSitesBackend::GetMostVisitedThumbnailsOnDBThread,
|
| - this,
|
| + db_task_runner_.get(), FROM_HERE,
|
| + base::Bind(&TopSitesBackend::GetMostVisitedThumbnailsOnDBThread, this,
|
| thumbnails),
|
| base::Bind(callback, thumbnails));
|
| }
|
|
|
| void TopSitesBackend::UpdateTopSites(const TopSitesDelta& delta) {
|
| - BrowserThread::PostTask(
|
| - BrowserThread::DB, FROM_HERE,
|
| + db_task_runner_->PostTask(
|
| + FROM_HERE,
|
| base::Bind(&TopSitesBackend::UpdateTopSitesOnDBThread, this, delta));
|
| }
|
|
|
| void TopSitesBackend::SetPageThumbnail(const MostVisitedURL& url,
|
| int url_rank,
|
| const Images& thumbnail) {
|
| - BrowserThread::PostTask(
|
| - BrowserThread::DB, FROM_HERE,
|
| - base::Bind(&TopSitesBackend::SetPageThumbnailOnDBThread, this, url,
|
| - url_rank, thumbnail));
|
| + db_task_runner_->PostTask(
|
| + FROM_HERE, base::Bind(&TopSitesBackend::SetPageThumbnailOnDBThread, this,
|
| + url, url_rank, thumbnail));
|
| }
|
|
|
| void TopSitesBackend::ResetDatabase() {
|
| - BrowserThread::PostTask(
|
| - BrowserThread::DB, FROM_HERE,
|
| + db_task_runner_->PostTask(
|
| + FROM_HERE,
|
| base::Bind(&TopSitesBackend::ResetDatabaseOnDBThread, this, db_path_));
|
| }
|
|
|
| void TopSitesBackend::DoEmptyRequest(const base::Closure& reply,
|
| base::CancelableTaskTracker* tracker) {
|
| - tracker->PostTaskAndReply(
|
| - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB).get(),
|
| - FROM_HERE,
|
| - base::Bind(&base::DoNothing),
|
| - reply);
|
| + tracker->PostTaskAndReply(db_task_runner_.get(), FROM_HERE,
|
| + base::Bind(&base::DoNothing), reply);
|
| }
|
|
|
| TopSitesBackend::~TopSitesBackend() {
|
| @@ -84,7 +76,8 @@ TopSitesBackend::~TopSitesBackend() {
|
| }
|
|
|
| void TopSitesBackend::InitDBOnDBThread(const base::FilePath& path) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
|
| +
|
| + DCHECK(db_task_runner_->BelongsToCurrentThread());
|
| if (!db_->Init(path)) {
|
| LOG(ERROR) << "Failed to initialize database.";
|
| db_.reset();
|
| @@ -92,13 +85,13 @@ void TopSitesBackend::InitDBOnDBThread(const base::FilePath& path) {
|
| }
|
|
|
| void TopSitesBackend::ShutdownDBOnDBThread() {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
|
| + DCHECK(db_task_runner_->BelongsToCurrentThread());
|
| db_.reset();
|
| }
|
|
|
| void TopSitesBackend::GetMostVisitedThumbnailsOnDBThread(
|
| scoped_refptr<MostVisitedThumbnails> thumbnails) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
|
| + DCHECK(db_task_runner_->BelongsToCurrentThread());
|
|
|
| if (db_) {
|
| db_->GetPageThumbnails(&(thumbnails->most_visited),
|
| @@ -130,7 +123,7 @@ void TopSitesBackend::SetPageThumbnailOnDBThread(const MostVisitedURL& url,
|
| }
|
|
|
| void TopSitesBackend::ResetDatabaseOnDBThread(const base::FilePath& file_path) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
|
| + DCHECK(db_task_runner_->BelongsToCurrentThread());
|
| db_.reset(NULL);
|
| sql::Connection::Delete(db_path_);
|
| db_.reset(new TopSitesDatabase());
|
|
|