| Index: components/history/core/browser/typed_url_data_type_controller.cc
|
| diff --git a/components/history/core/browser/typed_url_data_type_controller.cc b/components/history/core/browser/typed_url_data_type_controller.cc
|
| index 1063b54057ae5612220b61340a65d85c7b09e242..6d2592768a3c227f12c62cc99af54c133a528ebf 100644
|
| --- a/components/history/core/browser/typed_url_data_type_controller.cc
|
| +++ b/components/history/core/browser/typed_url_data_type_controller.cc
|
| @@ -4,6 +4,8 @@
|
|
|
| #include "components/history/core/browser/typed_url_data_type_controller.h"
|
|
|
| +#include <memory>
|
| +
|
| #include "base/bind.h"
|
| #include "base/callback.h"
|
| #include "base/metrics/histogram.h"
|
| @@ -21,16 +23,11 @@ namespace {
|
| // the tasks we want to run.
|
| class RunTaskOnHistoryThread : public history::HistoryDBTask {
|
| public:
|
| - explicit RunTaskOnHistoryThread(const base::Closure& task,
|
| - TypedUrlDataTypeController* dtc)
|
| - : task_(new base::Closure(task)), dtc_(dtc) {}
|
| + explicit RunTaskOnHistoryThread(const base::Closure& task)
|
| + : task_(new base::Closure(task)) {}
|
|
|
| bool RunOnDBThread(history::HistoryBackend* backend,
|
| history::HistoryDatabase* db) override {
|
| - // Set the backend, then release our reference before executing the task.
|
| - dtc_->SetBackend(backend);
|
| - dtc_ = NULL;
|
| -
|
| // Invoke the task, then free it immediately so we don't keep a reference
|
| // around all the way until DoneRunOnMainThread() is invoked back on the
|
| // main thread - we want to release references as soon as possible to avoid
|
| @@ -46,30 +43,23 @@ class RunTaskOnHistoryThread : public history::HistoryDBTask {
|
| ~RunTaskOnHistoryThread() override {}
|
|
|
| std::unique_ptr<base::Closure> task_;
|
| - scoped_refptr<TypedUrlDataTypeController> dtc_;
|
| };
|
|
|
| } // namespace
|
|
|
| TypedUrlDataTypeController::TypedUrlDataTypeController(
|
| - const scoped_refptr<base::SingleThreadTaskRunner>& ui_thread,
|
| - const base::Closure& error_callback,
|
| + const base::Closure& dump_stack,
|
| sync_driver::SyncClient* sync_client,
|
| const char* history_disabled_pref_name)
|
| - : NonUIDataTypeController(ui_thread, error_callback, sync_client),
|
| + : NonUIDataTypeController(syncer::TYPED_URLS, dump_stack, sync_client),
|
| history_disabled_pref_name_(history_disabled_pref_name),
|
| - backend_(NULL),
|
| sync_client_(sync_client) {
|
| pref_registrar_.Init(sync_client->GetPrefService());
|
| pref_registrar_.Add(
|
| history_disabled_pref_name_,
|
| base::Bind(
|
| &TypedUrlDataTypeController::OnSavingBrowserHistoryDisabledChanged,
|
| - base::Unretained(this)));
|
| -}
|
| -
|
| -syncer::ModelType TypedUrlDataTypeController::type() const {
|
| - return syncer::TYPED_URLS;
|
| + base::AsWeakPtr(this)));
|
| }
|
|
|
| syncer::ModelSafeGroup TypedUrlDataTypeController::model_safe_group() const {
|
| @@ -77,18 +67,13 @@ syncer::ModelSafeGroup TypedUrlDataTypeController::model_safe_group() const {
|
| }
|
|
|
| bool TypedUrlDataTypeController::ReadyForStart() const {
|
| - DCHECK(ui_thread()->BelongsToCurrentThread());
|
| + DCHECK(CalledOnValidThread());
|
| return !sync_client_->GetPrefService()->GetBoolean(
|
| history_disabled_pref_name_);
|
| }
|
|
|
| -void TypedUrlDataTypeController::SetBackend(history::HistoryBackend* backend) {
|
| - DCHECK(!ui_thread()->BelongsToCurrentThread());
|
| - backend_ = backend;
|
| -}
|
| -
|
| void TypedUrlDataTypeController::OnSavingBrowserHistoryDisabledChanged() {
|
| - DCHECK(ui_thread()->BelongsToCurrentThread());
|
| + DCHECK(CalledOnValidThread());
|
| if (sync_client_->GetPrefService()->GetBoolean(history_disabled_pref_name_)) {
|
| // We've turned off history persistence, so if we are running,
|
| // generate an unrecoverable error. This can be fixed by restarting
|
| @@ -96,8 +81,8 @@ void TypedUrlDataTypeController::OnSavingBrowserHistoryDisabledChanged() {
|
| if (state() != NOT_RUNNING && state() != STOPPING) {
|
| PostTaskOnBackendThread(
|
| FROM_HERE,
|
| - base::Bind(&DataTypeController::OnSingleDataTypeUnrecoverableError,
|
| - this,
|
| + base::Bind(&syncer::DataTypeErrorHandler::OnUnrecoverableError,
|
| + base::Passed(CreateErrorHandler()),
|
| syncer::SyncError(
|
| FROM_HERE, syncer::SyncError::DATATYPE_POLICY_ERROR,
|
| "History saving is now disabled by policy.", type())));
|
| @@ -108,11 +93,11 @@ void TypedUrlDataTypeController::OnSavingBrowserHistoryDisabledChanged() {
|
| bool TypedUrlDataTypeController::PostTaskOnBackendThread(
|
| const tracked_objects::Location& from_here,
|
| const base::Closure& task) {
|
| - DCHECK(ui_thread()->BelongsToCurrentThread());
|
| + DCHECK(CalledOnValidThread());
|
| history::HistoryService* history = sync_client_->GetHistoryService();
|
| if (history) {
|
| history->ScheduleDBTask(std::unique_ptr<history::HistoryDBTask>(
|
| - new RunTaskOnHistoryThread(task, this)),
|
| + new RunTaskOnHistoryThread(task)),
|
| &task_tracker_);
|
| return true;
|
| } else {
|
|
|