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

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

Issue 288193002: [SyncFS] Construct and destruct sync_worker in worker_task_runner (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Work for comments Created 6 years, 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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_worker.h" 5 #include "chrome/browser/sync_file_system/drive_backend/sync_worker.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/memory/weak_ptr.h" 10 #include "base/memory/weak_ptr.h"
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 (*status)[app_id] = SyncWorker::APP_STATUS_DISABLED; 78 (*status)[app_id] = SyncWorker::APP_STATUS_DISABLED;
79 else 79 else
80 (*status)[app_id] = SyncWorker::APP_STATUS_ENABLED; 80 (*status)[app_id] = SyncWorker::APP_STATUS_ENABLED;
81 } 81 }
82 82
83 callback.Run(); 83 callback.Run();
84 } 84 }
85 85
86 } // namespace 86 } // namespace
87 87
88 // static
88 scoped_ptr<SyncWorker> SyncWorker::CreateOnWorker( 89 scoped_ptr<SyncWorker> SyncWorker::CreateOnWorker(
89 const base::FilePath& base_dir, 90 const base::FilePath& base_dir,
90 Observer* observer, 91 Observer* observer,
91 const base::WeakPtr<ExtensionServiceInterface>& extension_service, 92 const base::WeakPtr<ExtensionServiceInterface>& extension_service,
92 scoped_ptr<SyncEngineContext> sync_engine_context, 93 scoped_ptr<SyncEngineContext> sync_engine_context,
93 leveldb::Env* env_override) { 94 leveldb::Env* env_override) {
94 scoped_ptr<SyncWorker> sync_worker( 95 scoped_ptr<SyncWorker> sync_worker(
95 new SyncWorker(base_dir, 96 new SyncWorker(base_dir,
96 extension_service, 97 extension_service,
97 sync_engine_context.Pass(), 98 sync_engine_context.Pass(),
98 env_override)); 99 env_override));
99 sync_worker->AddObserver(observer); 100 sync_worker->AddObserver(observer);
100 sync_worker->Initialize(); 101 sync_worker->Initialize();
101 102
102 return sync_worker.Pass(); 103 return sync_worker.Pass();
103 } 104 }
104 105
106 // static
107 void SyncWorker::DestructOnWorker(scoped_ptr<SyncWorker> sync_worker,
108 scoped_ptr<Observer> worker_observer) {
109 worker_observer.reset();
110 sync_worker.reset();
111 }
112
105 SyncWorker::~SyncWorker() {} 113 SyncWorker::~SyncWorker() {}
106 114
107 void SyncWorker::Initialize() { 115 void SyncWorker::Initialize() {
108 DCHECK(!task_manager_); 116 DCHECK(!task_manager_);
109 117
110 task_manager_.reset(new SyncTaskManager( 118 task_manager_.reset(new SyncTaskManager(
111 weak_ptr_factory_.GetWeakPtr(), 0 /* maximum_background_task */)); 119 weak_ptr_factory_.GetWeakPtr(),
120 0 /* maximum_background_task */));
112 task_manager_->Initialize(SYNC_STATUS_OK); 121 task_manager_->Initialize(SYNC_STATUS_OK);
113 122
114 PostInitializeTask(); 123 PostInitializeTask();
115 124
116 net::NetworkChangeNotifier::ConnectionType type = 125 net::NetworkChangeNotifier::ConnectionType type =
117 net::NetworkChangeNotifier::GetConnectionType(); 126 net::NetworkChangeNotifier::GetConnectionType();
118 network_available_ = 127 network_available_ =
119 type != net::NetworkChangeNotifier::CONNECTION_NONE; 128 type != net::NetworkChangeNotifier::CONNECTION_NONE;
120 } 129 }
121 130
122 void SyncWorker::RegisterOrigin( 131 void SyncWorker::RegisterOrigin(
123 const GURL& origin, 132 const GURL& origin,
124 const SyncStatusCallback& callback) { 133 const SyncStatusCallback& callback) {
125 if (!GetMetadataDatabase() && GetDriveService()->HasRefreshToken()) 134 if (!GetMetadataDatabase() && GetDriveService()->HasRefreshToken())
126 PostInitializeTask(); 135 PostInitializeTask();
127 136
128 scoped_ptr<RegisterAppTask> task( 137 scoped_ptr<RegisterAppTask> task(
129 new RegisterAppTask(context_.get(), origin.host())); 138 new RegisterAppTask(context_.get(), origin.host()));
130 if (task->CanFinishImmediately()) { 139 if (task->CanFinishImmediately()) {
131 context_->GetUITaskRunner()->PostTask( 140 context_->GetUITaskRunner()->PostTask(
132 FROM_HERE, base::Bind(callback, SYNC_STATUS_OK)); 141 FROM_HERE, base::Bind(callback, SYNC_STATUS_OK));
133 return; 142 return;
134 } 143 }
135 144
136 // TODO(peria): Forward |callback| to UI thread.
137 task_manager_->ScheduleSyncTask( 145 task_manager_->ScheduleSyncTask(
138 FROM_HERE, 146 FROM_HERE,
139 task.PassAs<SyncTask>(), 147 task.PassAs<SyncTask>(),
140 SyncTaskManager::PRIORITY_HIGH, 148 SyncTaskManager::PRIORITY_HIGH,
141 callback); 149 callback);
142 } 150 }
143 151
144 void SyncWorker::EnableOrigin( 152 void SyncWorker::EnableOrigin(
145 const GURL& origin, 153 const GURL& origin,
146 const SyncStatusCallback& callback) { 154 const SyncStatusCallback& callback) {
147 // TODO(peria): Forward |callback| to UI thread.
148 task_manager_->ScheduleTask( 155 task_manager_->ScheduleTask(
149 FROM_HERE, 156 FROM_HERE,
150 base::Bind(&SyncWorker::DoEnableApp, 157 base::Bind(&SyncWorker::DoEnableApp,
151 weak_ptr_factory_.GetWeakPtr(), 158 weak_ptr_factory_.GetWeakPtr(),
152 origin.host()), 159 origin.host()),
153 SyncTaskManager::PRIORITY_HIGH, 160 SyncTaskManager::PRIORITY_HIGH,
154 callback); 161 callback);
155 } 162 }
156 163
157 void SyncWorker::DisableOrigin( 164 void SyncWorker::DisableOrigin(
158 const GURL& origin, 165 const GURL& origin,
159 const SyncStatusCallback& callback) { 166 const SyncStatusCallback& callback) {
160 // TODO(peria): Forward |callback| to UI thread.
161 task_manager_->ScheduleTask( 167 task_manager_->ScheduleTask(
162 FROM_HERE, 168 FROM_HERE,
163 base::Bind(&SyncWorker::DoDisableApp, 169 base::Bind(&SyncWorker::DoDisableApp,
164 weak_ptr_factory_.GetWeakPtr(), 170 weak_ptr_factory_.GetWeakPtr(),
165 origin.host()), 171 origin.host()),
166 SyncTaskManager::PRIORITY_HIGH, 172 SyncTaskManager::PRIORITY_HIGH,
167 callback); 173 callback);
168 } 174 }
169 175
170 void SyncWorker::UninstallOrigin( 176 void SyncWorker::UninstallOrigin(
171 const GURL& origin, 177 const GURL& origin,
172 RemoteFileSyncService::UninstallFlag flag, 178 RemoteFileSyncService::UninstallFlag flag,
173 const SyncStatusCallback& callback) { 179 const SyncStatusCallback& callback) {
174 // TODO(peria): Forward |callback| to UI thread.
175 task_manager_->ScheduleSyncTask( 180 task_manager_->ScheduleSyncTask(
176 FROM_HERE, 181 FROM_HERE,
177 scoped_ptr<SyncTask>( 182 scoped_ptr<SyncTask>(
178 new UninstallAppTask(context_.get(), origin.host(), flag)), 183 new UninstallAppTask(context_.get(), origin.host(), flag)),
179 SyncTaskManager::PRIORITY_HIGH, 184 SyncTaskManager::PRIORITY_HIGH,
180 callback); 185 callback);
181 } 186 }
182 187
183 void SyncWorker::ProcessRemoteChange( 188 void SyncWorker::ProcessRemoteChange(
184 const SyncFileCallback& callback) { 189 const SyncFileCallback& callback) {
(...skipping 520 matching lines...) Expand 10 before | Expand all | Expand 10 after
705 "Service state changed: %d->%d: %s", 710 "Service state changed: %d->%d: %s",
706 old_state, GetCurrentState(), description.c_str()); 711 old_state, GetCurrentState(), description.c_str());
707 712
708 FOR_EACH_OBSERVER( 713 FOR_EACH_OBSERVER(
709 Observer, observers_, 714 Observer, observers_,
710 UpdateServiceState(GetCurrentState(), description)); 715 UpdateServiceState(GetCurrentState(), description));
711 } 716 }
712 717
713 } // namespace drive_backend 718 } // namespace drive_backend
714 } // namespace sync_file_system 719 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698