Index: components/sync_sessions/session_data_type_controller.cc |
diff --git a/components/sync_sessions/session_data_type_controller.cc b/components/sync_sessions/session_data_type_controller.cc |
index b2a7abc6a751e5bc30872224a0f09a00c8e47622..5f88d4ec8a00da425846330a32ae5d42939c5792 100644 |
--- a/components/sync_sessions/session_data_type_controller.cc |
+++ b/components/sync_sessions/session_data_type_controller.cc |
@@ -4,6 +4,8 @@ |
#include "components/sync_sessions/session_data_type_controller.h" |
+#include <set> |
+ |
#include "components/prefs/pref_service.h" |
#include "components/sync/driver/sync_client.h" |
#include "components/sync_sessions/sync_sessions_client.h" |
@@ -13,15 +15,11 @@ |
namespace browser_sync { |
SessionDataTypeController::SessionDataTypeController( |
- const scoped_refptr<base::SingleThreadTaskRunner>& ui_thread, |
- const base::Closure& error_callback, |
+ const base::Closure& dump_stack, |
sync_driver::SyncClient* sync_client, |
sync_driver::LocalDeviceInfoProvider* local_device, |
const char* history_disabled_pref_name) |
- : UIDataTypeController(ui_thread, |
- error_callback, |
- syncer::SESSIONS, |
- sync_client), |
+ : UIDataTypeController(syncer::SESSIONS, dump_stack, sync_client), |
sync_client_(sync_client), |
local_device_(local_device), |
history_disabled_pref_name_(history_disabled_pref_name), |
@@ -32,13 +30,13 @@ SessionDataTypeController::SessionDataTypeController( |
pref_registrar_.Add( |
history_disabled_pref_name_, |
base::Bind(&SessionDataTypeController::OnSavingBrowserHistoryPrefChanged, |
- base::Unretained(this))); |
+ base::AsWeakPtr(this))); |
} |
SessionDataTypeController::~SessionDataTypeController() {} |
bool SessionDataTypeController::StartModels() { |
- DCHECK(ui_thread()->BelongsToCurrentThread()); |
+ DCHECK(CalledOnValidThread()); |
browser_sync::SyncedWindowDelegatesGetter* synced_window_getter = |
sync_client_->GetSyncSessionsClient()->GetSyncedWindowDelegatesGetter(); |
std::set<const browser_sync::SyncedWindowDelegate*> window = |
@@ -53,8 +51,9 @@ bool SessionDataTypeController::StartModels() { |
} |
if (!local_device_->GetLocalDeviceInfo()) { |
- subscription_ = local_device_->RegisterOnInitializedCallback(base::Bind( |
- &SessionDataTypeController::OnLocalDeviceInfoInitialized, this)); |
+ subscription_ = local_device_->RegisterOnInitializedCallback( |
+ base::Bind(&SessionDataTypeController::OnLocalDeviceInfoInitialized, |
+ base::AsWeakPtr(this))); |
waiting_on_local_device_info_ = true; |
} |
@@ -62,17 +61,18 @@ bool SessionDataTypeController::StartModels() { |
} |
void SessionDataTypeController::StopModels() { |
+ DCHECK(CalledOnValidThread()); |
subscription_.reset(); |
} |
bool SessionDataTypeController::ReadyForStart() const { |
- DCHECK(ui_thread()->BelongsToCurrentThread()); |
+ DCHECK(CalledOnValidThread()); |
return !sync_client_->GetPrefService()->GetBoolean( |
history_disabled_pref_name_); |
} |
void SessionDataTypeController::OnSessionRestoreComplete() { |
- DCHECK(ui_thread()->BelongsToCurrentThread()); |
+ DCHECK(CalledOnValidThread()); |
waiting_on_session_restore_ = false; |
MaybeCompleteLoading(); |
} |
@@ -88,7 +88,7 @@ void SessionDataTypeController::MaybeCompleteLoading() { |
} |
void SessionDataTypeController::OnLocalDeviceInfoInitialized() { |
- DCHECK(ui_thread()->BelongsToCurrentThread()); |
+ DCHECK(CalledOnValidThread()); |
subscription_.reset(); |
waiting_on_local_device_info_ = false; |
@@ -96,7 +96,7 @@ void SessionDataTypeController::OnLocalDeviceInfoInitialized() { |
} |
void SessionDataTypeController::OnSavingBrowserHistoryPrefChanged() { |
- DCHECK(ui_thread()->BelongsToCurrentThread()); |
+ DCHECK(CalledOnValidThread()); |
if (sync_client_->GetPrefService()->GetBoolean(history_disabled_pref_name_)) { |
// If history and tabs persistence is turned off then generate an |
// unrecoverable error. SESSIONS won't be a registered type on the next |
@@ -106,7 +106,7 @@ void SessionDataTypeController::OnSavingBrowserHistoryPrefChanged() { |
FROM_HERE, syncer::SyncError::DATATYPE_POLICY_ERROR, |
"History and tab saving is now disabled by policy.", |
syncer::SESSIONS); |
- OnSingleDataTypeUnrecoverableError(error); |
+ CreateErrorHandler()->OnUnrecoverableError(error); |
} |
} |
} |