Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/sync_file_system/drive_backend/sync_engine.h" | 5 #include "chrome/browser/sync_file_system/drive_backend/sync_engine.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/threading/sequenced_worker_pool.h" | 10 #include "base/threading/sequenced_worker_pool.h" |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 83 drive_service->Initialize(signin_manager->GetAuthenticatedAccountId()); | 83 drive_service->Initialize(signin_manager->GetAuthenticatedAccountId()); |
| 84 | 84 |
| 85 scoped_ptr<drive::DriveUploaderInterface> drive_uploader( | 85 scoped_ptr<drive::DriveUploaderInterface> drive_uploader( |
| 86 new drive::DriveUploader(drive_service.get(), drive_task_runner.get())); | 86 new drive::DriveUploader(drive_service.get(), drive_task_runner.get())); |
| 87 | 87 |
| 88 drive::DriveNotificationManager* notification_manager = | 88 drive::DriveNotificationManager* notification_manager = |
| 89 drive::DriveNotificationManagerFactory::GetForBrowserContext(context); | 89 drive::DriveNotificationManagerFactory::GetForBrowserContext(context); |
| 90 ExtensionService* extension_service = | 90 ExtensionService* extension_service = |
| 91 extensions::ExtensionSystem::Get(context)->extension_service(); | 91 extensions::ExtensionSystem::Get(context)->extension_service(); |
| 92 | 92 |
| 93 scoped_refptr<base::SequencedTaskRunner> task_runner( | 93 scoped_refptr<base::SequencedTaskRunner> task_runner( |
|
tzik
2014/04/17 17:48:32
s/task_runner/file_task_runner/?
Until we complet
peria
2014/04/18 05:19:36
Done.
file_task_runner is passed in SyncEngine::In
| |
| 94 worker_pool->GetSequencedTaskRunnerWithShutdownBehavior( | 94 worker_pool->GetSequencedTaskRunnerWithShutdownBehavior( |
| 95 worker_pool->GetSequenceToken(), | 95 worker_pool->GetSequenceToken(), |
| 96 base::SequencedWorkerPool::SKIP_ON_SHUTDOWN)); | 96 base::SequencedWorkerPool::SKIP_ON_SHUTDOWN)); |
| 97 | 97 |
| 98 scoped_ptr<drive_backend::SyncEngine> sync_engine( | 98 scoped_ptr<drive_backend::SyncEngine> sync_engine( |
| 99 new SyncEngine(drive_service.Pass(), | 99 new SyncEngine(drive_service.Pass(), |
| 100 drive_uploader.Pass(), | 100 drive_uploader.Pass(), |
| 101 task_runner.get(), | |
| 101 notification_manager, | 102 notification_manager, |
| 102 extension_service, | 103 extension_service, |
| 103 signin_manager)); | 104 signin_manager)); |
| 104 sync_engine->Initialize(GetSyncFileSystemDir(context->GetPath()), | 105 sync_engine->Initialize(GetSyncFileSystemDir(context->GetPath()), |
| 105 task_runner.get(), | |
| 106 NULL); | 106 NULL); |
| 107 | 107 |
| 108 return sync_engine.Pass(); | 108 return sync_engine.Pass(); |
| 109 } | 109 } |
| 110 | 110 |
| 111 void SyncEngine::AppendDependsOnFactories( | 111 void SyncEngine::AppendDependsOnFactories( |
| 112 std::set<BrowserContextKeyedServiceFactory*>* factories) { | 112 std::set<BrowserContextKeyedServiceFactory*>* factories) { |
| 113 DCHECK(factories); | 113 DCHECK(factories); |
| 114 factories->insert(drive::DriveNotificationManagerFactory::GetInstance()); | 114 factories->insert(drive::DriveNotificationManagerFactory::GetInstance()); |
| 115 factories->insert(SigninManagerFactory::GetInstance()); | 115 factories->insert(SigninManagerFactory::GetInstance()); |
| 116 factories->insert( | 116 factories->insert( |
| 117 extensions::ExtensionsBrowserClient::Get()->GetExtensionSystemFactory()); | 117 extensions::ExtensionsBrowserClient::Get()->GetExtensionSystemFactory()); |
| 118 } | 118 } |
| 119 | 119 |
| 120 SyncEngine::~SyncEngine() { | 120 SyncEngine::~SyncEngine() { |
| 121 net::NetworkChangeNotifier::RemoveNetworkChangeObserver(this); | 121 net::NetworkChangeNotifier::RemoveNetworkChangeObserver(this); |
| 122 GetDriveService()->RemoveObserver(this); | 122 GetDriveService()->RemoveObserver(this); |
| 123 if (notification_manager_) | 123 if (notification_manager_) |
| 124 notification_manager_->RemoveObserver(this); | 124 notification_manager_->RemoveObserver(this); |
| 125 } | 125 } |
| 126 | 126 |
| 127 void SyncEngine::Initialize(const base::FilePath& base_dir, | 127 void SyncEngine::Initialize(const base::FilePath& base_dir, |
| 128 base::SequencedTaskRunner* task_runner, | |
| 129 leveldb::Env* env_override) { | 128 leveldb::Env* env_override) { |
| 130 scoped_ptr<SyncEngineContext> sync_engine_context( | 129 scoped_ptr<SyncEngineContext> sync_engine_context( |
| 131 new SyncEngineContext(drive_service_.get(), | 130 new SyncEngineContext(drive_service_.get(), |
| 132 drive_uploader_.get(), | 131 drive_uploader_.get(), |
| 133 task_runner)); | 132 worker_task_runner_.get(), |
|
tzik
2014/04/17 17:48:32
s/worker/file/?
Could you swap the order of these
peria
2014/04/18 05:19:36
Done.
| |
| 133 base::MessageLoopProxy::current())); | |
| 134 // TODO(peria): Move this create function to thread pool. | 134 // TODO(peria): Move this create function to thread pool. |
| 135 sync_worker_ = SyncWorker::CreateOnWorker(weak_ptr_factory_.GetWeakPtr(), | 135 sync_worker_ = SyncWorker::CreateOnWorker(weak_ptr_factory_.GetWeakPtr(), |
| 136 base_dir, | 136 base_dir, |
| 137 sync_engine_context.Pass(), | 137 sync_engine_context.Pass(), |
| 138 env_override); | 138 env_override); |
| 139 | 139 |
| 140 if (notification_manager_) | 140 if (notification_manager_) |
| 141 notification_manager_->AddObserver(this); | 141 notification_manager_->AddObserver(this); |
| 142 GetDriveService()->AddObserver(this); | 142 GetDriveService()->AddObserver(this); |
| 143 net::NetworkChangeNotifier::AddNetworkChangeObserver(this); | 143 net::NetworkChangeNotifier::AddNetworkChangeObserver(this); |
| 144 } | 144 } |
| 145 | 145 |
| 146 void SyncEngine::AddServiceObserver(SyncServiceObserver* observer) { | 146 void SyncEngine::AddServiceObserver(SyncServiceObserver* observer) { |
| 147 service_observers_.AddObserver(observer); | 147 service_observers_.AddObserver(observer); |
| 148 } | 148 } |
| 149 | 149 |
| 150 void SyncEngine::AddFileStatusObserver(FileStatusObserver* observer) { | 150 void SyncEngine::AddFileStatusObserver(FileStatusObserver* observer) { |
| 151 file_status_observers_.AddObserver(observer); | 151 file_status_observers_.AddObserver(observer); |
| 152 } | 152 } |
| 153 | 153 |
| 154 void SyncEngine::RegisterOrigin( | 154 void SyncEngine::RegisterOrigin( |
| 155 const GURL& origin, const SyncStatusCallback& callback) { | 155 const GURL& origin, const SyncStatusCallback& callback) { |
| 156 sync_worker_->RegisterOrigin(origin, callback); | 156 worker_task_runner_->PostTask( |
| 157 FROM_HERE, | |
| 158 base::Bind(&SyncWorker::RegisterOrigin, | |
| 159 base::Unretained(sync_worker_.get()), | |
| 160 origin, callback)); | |
| 157 } | 161 } |
| 158 | 162 |
| 159 void SyncEngine::EnableOrigin( | 163 void SyncEngine::EnableOrigin( |
| 160 const GURL& origin, const SyncStatusCallback& callback) { | 164 const GURL& origin, const SyncStatusCallback& callback) { |
| 161 sync_worker_->EnableOrigin(origin, callback); | 165 worker_task_runner_->PostTask( |
| 166 FROM_HERE, | |
| 167 base::Bind(&SyncWorker::EnableOrigin, | |
| 168 base::Unretained(sync_worker_.get()), | |
| 169 origin, callback)); | |
| 162 } | 170 } |
| 163 | 171 |
| 164 void SyncEngine::DisableOrigin( | 172 void SyncEngine::DisableOrigin( |
| 165 const GURL& origin, const SyncStatusCallback& callback) { | 173 const GURL& origin, const SyncStatusCallback& callback) { |
| 166 sync_worker_->DisableOrigin(origin, callback); | 174 worker_task_runner_->PostTask( |
| 175 FROM_HERE, | |
| 176 base::Bind(&SyncWorker::DisableOrigin, | |
| 177 base::Unretained(sync_worker_.get()), | |
| 178 origin, callback)); | |
| 167 } | 179 } |
| 168 | 180 |
| 169 void SyncEngine::UninstallOrigin( | 181 void SyncEngine::UninstallOrigin( |
| 170 const GURL& origin, | 182 const GURL& origin, |
| 171 UninstallFlag flag, | 183 UninstallFlag flag, |
| 172 const SyncStatusCallback& callback) { | 184 const SyncStatusCallback& callback) { |
| 173 sync_worker_->UninstallOrigin(origin, flag, callback); | 185 worker_task_runner_->PostTask( |
| 186 FROM_HERE, | |
| 187 base::Bind(&SyncWorker::UninstallOrigin, | |
| 188 base::Unretained(sync_worker_.get()), | |
| 189 origin, flag, callback)); | |
| 174 } | 190 } |
| 175 | 191 |
| 176 void SyncEngine::ProcessRemoteChange(const SyncFileCallback& callback) { | 192 void SyncEngine::ProcessRemoteChange(const SyncFileCallback& callback) { |
| 177 sync_worker_->ProcessRemoteChange(callback); | 193 worker_task_runner_->PostTask( |
| 194 FROM_HERE, | |
| 195 base::Bind(&SyncWorker::ProcessRemoteChange, | |
| 196 base::Unretained(sync_worker_.get()), | |
| 197 callback)); | |
| 178 } | 198 } |
| 179 | 199 |
| 180 void SyncEngine::SetRemoteChangeProcessor( | 200 void SyncEngine::SetRemoteChangeProcessor(RemoteChangeProcessor* processor) { |
| 181 RemoteChangeProcessor* processor) { | 201 worker_task_runner_->PostTask( |
| 182 sync_worker_->SetRemoteChangeProcessor(processor); | 202 FROM_HERE, |
| 203 base::Bind(&SyncWorker::SetRemoteChangeProcessor, | |
| 204 base::Unretained(sync_worker_.get()), | |
| 205 processor)); | |
| 183 } | 206 } |
| 184 | 207 |
| 185 LocalChangeProcessor* SyncEngine::GetLocalChangeProcessor() { | 208 LocalChangeProcessor* SyncEngine::GetLocalChangeProcessor() { |
| 186 return this; | 209 return this; |
| 187 } | 210 } |
| 188 | 211 |
| 189 bool SyncEngine::IsConflicting(const fileapi::FileSystemURL& url) { | 212 bool SyncEngine::IsConflicting(const fileapi::FileSystemURL& url) { |
| 190 // TODO(tzik): Implement this before we support manual conflict resolution. | 213 // TODO(tzik): Implement this before we support manual conflict resolution. |
| 191 return false; | 214 return false; |
| 192 } | 215 } |
| 193 | 216 |
| 194 RemoteServiceState SyncEngine::GetCurrentState() const { | 217 RemoteServiceState SyncEngine::GetCurrentState() const { |
| 218 // TODO(peria): Post task | |
| 195 return sync_worker_->GetCurrentState(); | 219 return sync_worker_->GetCurrentState(); |
| 196 } | 220 } |
| 197 | 221 |
| 198 void SyncEngine::GetOriginStatusMap(OriginStatusMap* status_map) { | 222 void SyncEngine::GetOriginStatusMap(OriginStatusMap* status_map) { |
| 223 // TODO(peria): Make this route asynchronous. | |
| 199 sync_worker_->GetOriginStatusMap(status_map); | 224 sync_worker_->GetOriginStatusMap(status_map); |
| 200 } | 225 } |
| 201 | 226 |
| 202 scoped_ptr<base::ListValue> SyncEngine::DumpFiles(const GURL& origin) { | 227 scoped_ptr<base::ListValue> SyncEngine::DumpFiles(const GURL& origin) { |
| 228 // TODO(peria): Make this route asynchronous. | |
| 203 return sync_worker_->DumpFiles(origin); | 229 return sync_worker_->DumpFiles(origin); |
| 204 } | 230 } |
| 205 | 231 |
| 206 scoped_ptr<base::ListValue> SyncEngine::DumpDatabase() { | 232 scoped_ptr<base::ListValue> SyncEngine::DumpDatabase() { |
| 233 // TODO(peria): Make this route asynchronous. | |
| 207 return sync_worker_->DumpDatabase(); | 234 return sync_worker_->DumpDatabase(); |
| 208 } | 235 } |
| 209 | 236 |
| 210 void SyncEngine::SetSyncEnabled(bool enabled) { | 237 void SyncEngine::SetSyncEnabled(bool enabled) { |
| 211 sync_worker_->SetSyncEnabled(enabled); | 238 worker_task_runner_->PostTask( |
| 239 FROM_HERE, | |
| 240 base::Bind(&SyncWorker::SetSyncEnabled, | |
| 241 base::Unretained(sync_worker_.get()), | |
| 242 enabled)); | |
| 212 } | 243 } |
| 213 | 244 |
| 214 void SyncEngine::UpdateSyncEnabled(bool enabled) { | 245 void SyncEngine::UpdateSyncEnabled(bool enabled) { |
| 215 const char* status_message = enabled ? "Sync is enabled" : "Sync is disabled"; | 246 const char* status_message = enabled ? "Sync is enabled" : "Sync is disabled"; |
| 216 FOR_EACH_OBSERVER( | 247 FOR_EACH_OBSERVER( |
| 217 Observer, service_observers_, | 248 Observer, service_observers_, |
| 218 OnRemoteServiceStateUpdated(GetCurrentState(), status_message)); | 249 OnRemoteServiceStateUpdated(GetCurrentState(), status_message)); |
| 219 } | 250 } |
| 220 | 251 |
| 221 SyncStatusCode SyncEngine::SetDefaultConflictResolutionPolicy( | 252 SyncStatusCode SyncEngine::SetDefaultConflictResolutionPolicy( |
| 222 ConflictResolutionPolicy policy) { | 253 ConflictResolutionPolicy policy) { |
| 254 // TODO(peria): Make this route asynchronous. | |
| 223 return sync_worker_->SetDefaultConflictResolutionPolicy(policy); | 255 return sync_worker_->SetDefaultConflictResolutionPolicy(policy); |
| 224 } | 256 } |
| 225 | 257 |
| 226 SyncStatusCode SyncEngine::SetConflictResolutionPolicy( | 258 SyncStatusCode SyncEngine::SetConflictResolutionPolicy( |
| 227 const GURL& origin, | 259 const GURL& origin, |
| 228 ConflictResolutionPolicy policy) { | 260 ConflictResolutionPolicy policy) { |
| 261 // TODO(peria): Make this route asynchronous. | |
| 229 return sync_worker_->SetConflictResolutionPolicy(origin, policy); | 262 return sync_worker_->SetConflictResolutionPolicy(origin, policy); |
| 230 } | 263 } |
| 231 | 264 |
| 232 ConflictResolutionPolicy SyncEngine::GetDefaultConflictResolutionPolicy() | 265 ConflictResolutionPolicy SyncEngine::GetDefaultConflictResolutionPolicy() |
| 233 const { | 266 const { |
| 267 // TODO(peria): Make this route asynchronous. | |
| 234 return sync_worker_->GetDefaultConflictResolutionPolicy(); | 268 return sync_worker_->GetDefaultConflictResolutionPolicy(); |
| 235 } | 269 } |
| 236 | 270 |
| 237 ConflictResolutionPolicy SyncEngine::GetConflictResolutionPolicy( | 271 ConflictResolutionPolicy SyncEngine::GetConflictResolutionPolicy( |
| 238 const GURL& origin) const { | 272 const GURL& origin) const { |
| 273 // TODO(peria): Make this route asynchronous. | |
| 239 return sync_worker_->GetConflictResolutionPolicy(origin); | 274 return sync_worker_->GetConflictResolutionPolicy(origin); |
| 240 } | 275 } |
| 241 | 276 |
| 242 void SyncEngine::GetRemoteVersions( | 277 void SyncEngine::GetRemoteVersions( |
| 243 const fileapi::FileSystemURL& url, | 278 const fileapi::FileSystemURL& url, |
| 244 const RemoteVersionsCallback& callback) { | 279 const RemoteVersionsCallback& callback) { |
| 245 // TODO(tzik): Implement this before we support manual conflict resolution. | 280 // TODO(tzik): Implement this before we support manual conflict resolution. |
| 246 callback.Run(SYNC_STATUS_FAILED, std::vector<Version>()); | 281 callback.Run(SYNC_STATUS_FAILED, std::vector<Version>()); |
| 247 } | 282 } |
| 248 | 283 |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 264 OnRemoteChangeQueueUpdated(metadata_db->CountDirtyTracker())); | 299 OnRemoteChangeQueueUpdated(metadata_db->CountDirtyTracker())); |
| 265 } | 300 } |
| 266 } | 301 } |
| 267 | 302 |
| 268 void SyncEngine::ApplyLocalChange( | 303 void SyncEngine::ApplyLocalChange( |
| 269 const FileChange& local_change, | 304 const FileChange& local_change, |
| 270 const base::FilePath& local_path, | 305 const base::FilePath& local_path, |
| 271 const SyncFileMetadata& local_metadata, | 306 const SyncFileMetadata& local_metadata, |
| 272 const fileapi::FileSystemURL& url, | 307 const fileapi::FileSystemURL& url, |
| 273 const SyncStatusCallback& callback) { | 308 const SyncStatusCallback& callback) { |
| 274 sync_worker_->ApplyLocalChange( | 309 worker_task_runner_->PostTask( |
| 275 local_change, local_path, local_metadata, url, callback); | 310 FROM_HERE, |
| 311 base::Bind(&SyncWorker::ApplyLocalChange, | |
| 312 base::Unretained(sync_worker_.get()), | |
| 313 local_change, | |
| 314 local_path, | |
| 315 local_metadata, | |
| 316 url, | |
| 317 callback)); | |
| 276 } | 318 } |
| 277 | 319 |
| 278 SyncTaskManager* SyncEngine::GetSyncTaskManagerForTesting() { | 320 SyncTaskManager* SyncEngine::GetSyncTaskManagerForTesting() { |
| 321 // TODO(peria): Post task | |
| 279 return sync_worker_->GetSyncTaskManager(); | 322 return sync_worker_->GetSyncTaskManager(); |
| 280 } | 323 } |
| 281 | 324 |
| 282 void SyncEngine::OnNotificationReceived() { | 325 void SyncEngine::OnNotificationReceived() { |
| 283 sync_worker_->OnNotificationReceived(); | 326 worker_task_runner_->PostTask( |
| 327 FROM_HERE, | |
| 328 base::Bind(&SyncWorker::OnNotificationReceived, | |
| 329 base::Unretained(sync_worker_.get()))); | |
| 284 } | 330 } |
| 285 | 331 |
| 286 void SyncEngine::OnPushNotificationEnabled(bool) {} | 332 void SyncEngine::OnPushNotificationEnabled(bool) {} |
| 287 | 333 |
| 288 void SyncEngine::OnReadyToSendRequests() { | 334 void SyncEngine::OnReadyToSendRequests() { |
| 289 sync_worker_->OnReadyToSendRequests( | 335 const std::string& account_id = |
|
tzik
2014/04/17 17:48:32
Can we use value instead of const ref here?
Even t
peria
2014/04/18 05:19:36
Done.
| |
| 290 signin_manager_ ? signin_manager_->GetAuthenticatedAccountId() : ""); | 336 signin_manager_ ? signin_manager_->GetAuthenticatedAccountId() : ""; |
| 337 | |
| 338 worker_task_runner_->PostTask( | |
| 339 FROM_HERE, | |
| 340 base::Bind(&SyncWorker::OnReadyToSendRequests, | |
| 341 base::Unretained(sync_worker_.get()), | |
| 342 account_id)); | |
| 291 } | 343 } |
| 292 | 344 |
| 293 void SyncEngine::OnRefreshTokenInvalid() { | 345 void SyncEngine::OnRefreshTokenInvalid() { |
| 294 sync_worker_->OnRefreshTokenInvalid(); | 346 worker_task_runner_->PostTask( |
| 347 FROM_HERE, | |
| 348 base::Bind(&SyncWorker::OnRefreshTokenInvalid, | |
| 349 base::Unretained(sync_worker_.get()))); | |
| 295 } | 350 } |
| 296 | 351 |
| 297 void SyncEngine::OnNetworkChanged( | 352 void SyncEngine::OnNetworkChanged( |
| 298 net::NetworkChangeNotifier::ConnectionType type) { | 353 net::NetworkChangeNotifier::ConnectionType type) { |
| 299 sync_worker_->OnNetworkChanged(type); | 354 worker_task_runner_->PostTask( |
| 355 FROM_HERE, | |
| 356 base::Bind(&SyncWorker::OnNetworkChanged, | |
| 357 base::Unretained(sync_worker_.get()), | |
| 358 type)); | |
| 300 } | 359 } |
| 301 | 360 |
| 302 drive::DriveServiceInterface* SyncEngine::GetDriveService() { | 361 drive::DriveServiceInterface* SyncEngine::GetDriveService() { |
| 303 return sync_worker_->GetDriveService(); | 362 return drive_service_.get(); |
| 304 } | 363 } |
| 305 | 364 |
| 306 drive::DriveUploaderInterface* SyncEngine::GetDriveUploader() { | 365 drive::DriveUploaderInterface* SyncEngine::GetDriveUploader() { |
| 307 return sync_worker_->GetDriveUploader(); | 366 return drive_uploader_.get(); |
| 308 } | 367 } |
| 309 | 368 |
| 310 MetadataDatabase* SyncEngine::GetMetadataDatabase() { | 369 MetadataDatabase* SyncEngine::GetMetadataDatabase() { |
| 370 // TODO(peria): Post task | |
| 311 return sync_worker_->GetMetadataDatabase(); | 371 return sync_worker_->GetMetadataDatabase(); |
| 312 } | 372 } |
| 313 | 373 |
| 314 SyncEngine::SyncEngine( | 374 SyncEngine::SyncEngine( |
| 315 scoped_ptr<drive::DriveServiceInterface> drive_service, | 375 scoped_ptr<drive::DriveServiceInterface> drive_service, |
| 316 scoped_ptr<drive::DriveUploaderInterface> drive_uploader, | 376 scoped_ptr<drive::DriveUploaderInterface> drive_uploader, |
| 377 base::SequencedTaskRunner* worker_task_runner, | |
|
tzik
2014/04/17 17:48:32
s/worker/file/?
peria
2014/04/18 05:19:36
Task runner for file I/O is passed in Initializati
| |
| 317 drive::DriveNotificationManager* notification_manager, | 378 drive::DriveNotificationManager* notification_manager, |
| 318 ExtensionServiceInterface* extension_service, | 379 ExtensionServiceInterface* extension_service, |
| 319 SigninManagerBase* signin_manager) | 380 SigninManagerBase* signin_manager) |
| 320 : drive_service_(drive_service.Pass()), | 381 : drive_service_(drive_service.Pass()), |
| 321 drive_uploader_(drive_uploader.Pass()), | 382 drive_uploader_(drive_uploader.Pass()), |
| 322 notification_manager_(notification_manager), | 383 notification_manager_(notification_manager), |
| 323 extension_service_(extension_service), | 384 extension_service_(extension_service), |
| 324 signin_manager_(signin_manager), | 385 signin_manager_(signin_manager), |
| 386 worker_task_runner_(worker_task_runner), | |
| 325 weak_ptr_factory_(this) {} | 387 weak_ptr_factory_(this) {} |
| 326 | 388 |
| 327 void SyncEngine::DidProcessRemoteChange(RemoteToLocalSyncer* syncer) { | 389 void SyncEngine::DidProcessRemoteChange(RemoteToLocalSyncer* syncer) { |
| 328 if (syncer->sync_action() != SYNC_ACTION_NONE && syncer->url().is_valid()) { | 390 if (syncer->sync_action() != SYNC_ACTION_NONE && syncer->url().is_valid()) { |
| 329 FOR_EACH_OBSERVER(FileStatusObserver, | 391 FOR_EACH_OBSERVER(FileStatusObserver, |
| 330 file_status_observers_, | 392 file_status_observers_, |
| 331 OnFileStatusChanged(syncer->url(), | 393 OnFileStatusChanged(syncer->url(), |
| 332 SYNC_FILE_STATUS_SYNCED, | 394 SYNC_FILE_STATUS_SYNCED, |
| 333 syncer->sync_action(), | 395 syncer->sync_action(), |
| 334 SYNC_DIRECTION_REMOTE_TO_LOCAL)); | 396 SYNC_DIRECTION_REMOTE_TO_LOCAL)); |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 402 void SyncEngine::NotifyLastOperationStatus() { | 464 void SyncEngine::NotifyLastOperationStatus() { |
| 403 FOR_EACH_OBSERVER( | 465 FOR_EACH_OBSERVER( |
| 404 Observer, | 466 Observer, |
| 405 service_observers_, | 467 service_observers_, |
| 406 OnRemoteChangeQueueUpdated( | 468 OnRemoteChangeQueueUpdated( |
| 407 GetMetadataDatabase()->CountDirtyTracker())); | 469 GetMetadataDatabase()->CountDirtyTracker())); |
| 408 } | 470 } |
| 409 | 471 |
| 410 } // namespace drive_backend | 472 } // namespace drive_backend |
| 411 } // namespace sync_file_system | 473 } // namespace sync_file_system |
| OLD | NEW |