Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(473)

Side by Side Diff: chrome/browser/sync_file_system/drive_backend/sync_engine.cc

Issue 881203003: Suppress sequence checks in SyncFileSystem on the shutdown phase (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: +param comment Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698