| 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/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 157 namespace { | 157 namespace { |
| 158 | 158 |
| 159 void DidRegisterOrigin(const base::TimeTicks& start_time, | 159 void DidRegisterOrigin(const base::TimeTicks& start_time, |
| 160 const SyncStatusCallback& callback, | 160 const SyncStatusCallback& callback, |
| 161 SyncStatusCode status) { | 161 SyncStatusCode status) { |
| 162 base::TimeDelta delta(base::TimeTicks::Now() - start_time); | 162 base::TimeDelta delta(base::TimeTicks::Now() - start_time); |
| 163 LOCAL_HISTOGRAM_TIMES("SyncFileSystem.RegisterOriginTime", delta); | 163 LOCAL_HISTOGRAM_TIMES("SyncFileSystem.RegisterOriginTime", delta); |
| 164 callback.Run(status); | 164 callback.Run(status); |
| 165 } | 165 } |
| 166 | 166 |
| 167 template <typename T> | |
| 168 void DeleteSoonHelper(scoped_ptr<T>) {} | |
| 169 | |
| 170 template <typename T> | |
| 171 void DeleteSoon(const tracked_objects::Location& from_here, | |
| 172 base::TaskRunner* task_runner, | |
| 173 scoped_ptr<T> obj) { | |
| 174 if (!obj) | |
| 175 return; | |
| 176 | |
| 177 T* obj_ptr = obj.get(); | |
| 178 base::Closure deleter = | |
| 179 base::Bind(&DeleteSoonHelper<T>, base::Passed(&obj)); | |
| 180 if (!task_runner->PostTask(from_here, deleter)) { | |
| 181 obj_ptr->DetachFromSequence(); | |
| 182 deleter.Run(); | |
| 183 } | |
| 184 } | |
| 185 | |
| 186 } // namespace | 167 } // namespace |
| 187 | 168 |
| 188 scoped_ptr<SyncEngine> SyncEngine::CreateForBrowserContext( | 169 scoped_ptr<SyncEngine> SyncEngine::CreateForBrowserContext( |
| 189 content::BrowserContext* context, | 170 content::BrowserContext* context, |
| 190 TaskLogger* task_logger) { | 171 TaskLogger* task_logger) { |
| 191 scoped_refptr<base::SequencedWorkerPool> worker_pool = | 172 scoped_refptr<base::SequencedWorkerPool> worker_pool = |
| 192 content::BrowserThread::GetBlockingPool(); | 173 content::BrowserThread::GetBlockingPool(); |
| 193 | 174 |
| 194 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner = | 175 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner = |
| 195 base::ThreadTaskRunnerHandle::Get(); | 176 base::ThreadTaskRunnerHandle::Get(); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 211 SigninManagerFactory::GetForProfile(profile); | 192 SigninManagerFactory::GetForProfile(profile); |
| 212 OAuth2TokenService* token_service = | 193 OAuth2TokenService* token_service = |
| 213 ProfileOAuth2TokenServiceFactory::GetForProfile(profile); | 194 ProfileOAuth2TokenServiceFactory::GetForProfile(profile); |
| 214 scoped_refptr<net::URLRequestContextGetter> request_context = | 195 scoped_refptr<net::URLRequestContextGetter> request_context = |
| 215 context->GetRequestContext(); | 196 context->GetRequestContext(); |
| 216 | 197 |
| 217 scoped_ptr<drive_backend::SyncEngine> sync_engine( | 198 scoped_ptr<drive_backend::SyncEngine> sync_engine( |
| 218 new SyncEngine(ui_task_runner.get(), | 199 new SyncEngine(ui_task_runner.get(), |
| 219 worker_task_runner.get(), | 200 worker_task_runner.get(), |
| 220 drive_task_runner.get(), | 201 drive_task_runner.get(), |
| 202 worker_pool.get(), |
| 221 GetSyncFileSystemDir(context->GetPath()), | 203 GetSyncFileSystemDir(context->GetPath()), |
| 222 task_logger, | 204 task_logger, |
| 223 notification_manager, | 205 notification_manager, |
| 224 extension_service, | 206 extension_service, |
| 225 signin_manager, | 207 signin_manager, |
| 226 token_service, | 208 token_service, |
| 227 request_context.get(), | 209 request_context.get(), |
| 228 make_scoped_ptr(new DriveServiceFactory()), | 210 make_scoped_ptr(new DriveServiceFactory()), |
| 229 nullptr /* env_override */)); | 211 nullptr /* env_override */)); |
| 230 | 212 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 249 if (signin_manager_) | 231 if (signin_manager_) |
| 250 signin_manager_->RemoveObserver(this); | 232 signin_manager_->RemoveObserver(this); |
| 251 if (notification_manager_) | 233 if (notification_manager_) |
| 252 notification_manager_->RemoveObserver(this); | 234 notification_manager_->RemoveObserver(this); |
| 253 } | 235 } |
| 254 | 236 |
| 255 void SyncEngine::Reset() { | 237 void SyncEngine::Reset() { |
| 256 if (drive_service_) | 238 if (drive_service_) |
| 257 drive_service_->RemoveObserver(this); | 239 drive_service_->RemoveObserver(this); |
| 258 | 240 |
| 259 DeleteSoon(FROM_HERE, worker_task_runner_.get(), sync_worker_.Pass()); | 241 worker_task_runner_->DeleteSoon(FROM_HERE, sync_worker_.release()); |
| 260 DeleteSoon(FROM_HERE, worker_task_runner_.get(), worker_observer_.Pass()); | 242 worker_task_runner_->DeleteSoon(FROM_HERE, worker_observer_.release()); |
| 261 DeleteSoon(FROM_HERE, | 243 worker_task_runner_->DeleteSoon(FROM_HERE, |
| 262 worker_task_runner_.get(), | 244 remote_change_processor_on_worker_.release()); |
| 263 remote_change_processor_on_worker_.Pass()); | |
| 264 | 245 |
| 265 drive_service_wrapper_.reset(); | 246 drive_service_wrapper_.reset(); |
| 266 drive_service_.reset(); | 247 drive_service_.reset(); |
| 267 drive_uploader_wrapper_.reset(); | 248 drive_uploader_wrapper_.reset(); |
| 268 drive_uploader_.reset(); | 249 drive_uploader_.reset(); |
| 269 remote_change_processor_wrapper_.reset(); | 250 remote_change_processor_wrapper_.reset(); |
| 270 callback_tracker_.AbortAll(); | 251 callback_tracker_.AbortAll(); |
| 271 } | 252 } |
| 272 | 253 |
| 273 void SyncEngine::Initialize() { | 254 void SyncEngine::Initialize() { |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 319 worker_task_runner_.get())); | 300 worker_task_runner_.get())); |
| 320 scoped_ptr<drive::DriveUploaderInterface> drive_uploader_on_worker( | 301 scoped_ptr<drive::DriveUploaderInterface> drive_uploader_on_worker( |
| 321 new DriveUploaderOnWorker(drive_uploader_wrapper_->AsWeakPtr(), | 302 new DriveUploaderOnWorker(drive_uploader_wrapper_->AsWeakPtr(), |
| 322 ui_task_runner_.get(), | 303 ui_task_runner_.get(), |
| 323 worker_task_runner_.get())); | 304 worker_task_runner_.get())); |
| 324 scoped_ptr<SyncEngineContext> sync_engine_context( | 305 scoped_ptr<SyncEngineContext> sync_engine_context( |
| 325 new SyncEngineContext(drive_service_on_worker.Pass(), | 306 new SyncEngineContext(drive_service_on_worker.Pass(), |
| 326 drive_uploader_on_worker.Pass(), | 307 drive_uploader_on_worker.Pass(), |
| 327 task_logger_, | 308 task_logger_, |
| 328 ui_task_runner_.get(), | 309 ui_task_runner_.get(), |
| 329 worker_task_runner_.get())); | 310 worker_task_runner_.get(), |
| 311 worker_pool_.get())); |
| 330 | 312 |
| 331 worker_observer_.reset(new WorkerObserver(ui_task_runner_.get(), | 313 worker_observer_.reset(new WorkerObserver(ui_task_runner_.get(), |
| 332 weak_ptr_factory_.GetWeakPtr())); | 314 weak_ptr_factory_.GetWeakPtr())); |
| 333 | 315 |
| 334 base::WeakPtr<ExtensionServiceInterface> extension_service_weak_ptr; | 316 base::WeakPtr<ExtensionServiceInterface> extension_service_weak_ptr; |
| 335 if (extension_service_) | 317 if (extension_service_) |
| 336 extension_service_weak_ptr = extension_service_->AsWeakPtr(); | 318 extension_service_weak_ptr = extension_service_->AsWeakPtr(); |
| 337 | 319 |
| 338 if (!sync_worker) { | 320 if (!sync_worker) { |
| 339 sync_worker.reset(new SyncWorker( | 321 sync_worker.reset(new SyncWorker( |
| (...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 729 const std::string& username) { | 711 const std::string& username) { |
| 730 Reset(); | 712 Reset(); |
| 731 UpdateServiceState(REMOTE_SERVICE_AUTHENTICATION_REQUIRED, | 713 UpdateServiceState(REMOTE_SERVICE_AUTHENTICATION_REQUIRED, |
| 732 "User signed out."); | 714 "User signed out."); |
| 733 } | 715 } |
| 734 | 716 |
| 735 SyncEngine::SyncEngine( | 717 SyncEngine::SyncEngine( |
| 736 const scoped_refptr<base::SingleThreadTaskRunner>& ui_task_runner, | 718 const scoped_refptr<base::SingleThreadTaskRunner>& ui_task_runner, |
| 737 const scoped_refptr<base::SequencedTaskRunner>& worker_task_runner, | 719 const scoped_refptr<base::SequencedTaskRunner>& worker_task_runner, |
| 738 const scoped_refptr<base::SequencedTaskRunner>& drive_task_runner, | 720 const scoped_refptr<base::SequencedTaskRunner>& drive_task_runner, |
| 721 const scoped_refptr<base::SequencedWorkerPool>& worker_pool, |
| 739 const base::FilePath& sync_file_system_dir, | 722 const base::FilePath& sync_file_system_dir, |
| 740 TaskLogger* task_logger, | 723 TaskLogger* task_logger, |
| 741 drive::DriveNotificationManager* notification_manager, | 724 drive::DriveNotificationManager* notification_manager, |
| 742 ExtensionServiceInterface* extension_service, | 725 ExtensionServiceInterface* extension_service, |
| 743 SigninManagerBase* signin_manager, | 726 SigninManagerBase* signin_manager, |
| 744 OAuth2TokenService* token_service, | 727 OAuth2TokenService* token_service, |
| 745 net::URLRequestContextGetter* request_context, | 728 net::URLRequestContextGetter* request_context, |
| 746 scoped_ptr<DriveServiceFactory> drive_service_factory, | 729 scoped_ptr<DriveServiceFactory> drive_service_factory, |
| 747 leveldb::Env* env_override) | 730 leveldb::Env* env_override) |
| 748 : ui_task_runner_(ui_task_runner), | 731 : ui_task_runner_(ui_task_runner), |
| 749 worker_task_runner_(worker_task_runner), | 732 worker_task_runner_(worker_task_runner), |
| 750 drive_task_runner_(drive_task_runner), | 733 drive_task_runner_(drive_task_runner), |
| 734 worker_pool_(worker_pool), |
| 751 sync_file_system_dir_(sync_file_system_dir), | 735 sync_file_system_dir_(sync_file_system_dir), |
| 752 task_logger_(task_logger), | 736 task_logger_(task_logger), |
| 753 notification_manager_(notification_manager), | 737 notification_manager_(notification_manager), |
| 754 extension_service_(extension_service), | 738 extension_service_(extension_service), |
| 755 signin_manager_(signin_manager), | 739 signin_manager_(signin_manager), |
| 756 token_service_(token_service), | 740 token_service_(token_service), |
| 757 request_context_(request_context), | 741 request_context_(request_context), |
| 758 drive_service_factory_(drive_service_factory.Pass()), | 742 drive_service_factory_(drive_service_factory.Pass()), |
| 759 remote_change_processor_(nullptr), | 743 remote_change_processor_(nullptr), |
| 760 service_state_(REMOTE_SERVICE_TEMPORARY_UNAVAILABLE), | 744 service_state_(REMOTE_SERVICE_TEMPORARY_UNAVAILABLE), |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 800 | 784 |
| 801 SyncStatusCallback SyncEngine::TrackCallback( | 785 SyncStatusCallback SyncEngine::TrackCallback( |
| 802 const SyncStatusCallback& callback) { | 786 const SyncStatusCallback& callback) { |
| 803 return callback_tracker_.Register( | 787 return callback_tracker_.Register( |
| 804 base::Bind(callback, SYNC_STATUS_ABORT), | 788 base::Bind(callback, SYNC_STATUS_ABORT), |
| 805 callback); | 789 callback); |
| 806 } | 790 } |
| 807 | 791 |
| 808 } // namespace drive_backend | 792 } // namespace drive_backend |
| 809 } // namespace sync_file_system | 793 } // namespace sync_file_system |
| OLD | NEW |