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

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

Issue 94003004: [SyncFS] Add verbose logging to SyncEngineInitializer (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years 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
« no previous file with comments | « chrome/browser/sync_file_system/drive_backend/list_changes_task.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_initializer. h" 5 #include "chrome/browser/sync_file_system/drive_backend/sync_engine_initializer. h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "chrome/browser/drive/drive_api_service.h" 10 #include "chrome/browser/drive/drive_api_service.h"
11 #include "chrome/browser/drive/drive_api_util.h" 11 #include "chrome/browser/drive/drive_api_util.h"
12 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants. h" 12 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants. h"
13 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" 13 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h"
14 #include "chrome/browser/sync_file_system/drive_backend/sync_engine_context.h" 14 #include "chrome/browser/sync_file_system/drive_backend/sync_engine_context.h"
15 #include "chrome/browser/sync_file_system/drive_backend_v1/drive_file_sync_util. h" 15 #include "chrome/browser/sync_file_system/drive_backend_v1/drive_file_sync_util. h"
16 #include "chrome/browser/sync_file_system/logger.h"
16 #include "google_apis/drive/drive_api_parser.h" 17 #include "google_apis/drive/drive_api_parser.h"
17 #include "google_apis/drive/gdata_wapi_parser.h" 18 #include "google_apis/drive/gdata_wapi_parser.h"
18 19
19 namespace sync_file_system { 20 namespace sync_file_system {
20 namespace drive_backend { 21 namespace drive_backend {
21 22
22 namespace { 23 namespace {
23 24
24 //////////////////////////////////////////////////////////////////////////////// 25 ////////////////////////////////////////////////////////////////////////////////
25 // Functions below are for wrapping the access to legacy GData WAPI classes. 26 // Functions below are for wrapping the access to legacy GData WAPI classes.
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 DCHECK(task_runner); 105 DCHECK(task_runner);
105 DCHECK(drive_service_); 106 DCHECK(drive_service_);
106 } 107 }
107 108
108 SyncEngineInitializer::~SyncEngineInitializer() { 109 SyncEngineInitializer::~SyncEngineInitializer() {
109 if (!cancel_callback_.is_null()) 110 if (!cancel_callback_.is_null())
110 cancel_callback_.Run(); 111 cancel_callback_.Run();
111 } 112 }
112 113
113 void SyncEngineInitializer::Run(const SyncStatusCallback& callback) { 114 void SyncEngineInitializer::Run(const SyncStatusCallback& callback) {
115 util::Log(logging::LOG_VERBOSE, FROM_HERE, "[Initialize] Start.");
116
114 // The metadata seems to have been already initialized. Just return with OK. 117 // The metadata seems to have been already initialized. Just return with OK.
115 if (sync_context_ && sync_context_->GetMetadataDatabase()) { 118 if (sync_context_ && sync_context_->GetMetadataDatabase()) {
119 util::Log(logging::LOG_VERBOSE, FROM_HERE,
120 "[Initialize] Already initialized.");
116 callback.Run(SYNC_STATUS_OK); 121 callback.Run(SYNC_STATUS_OK);
117 return; 122 return;
118 } 123 }
119 124
120 MetadataDatabase::Create( 125 MetadataDatabase::Create(
121 task_runner_.get(), database_path_, 126 task_runner_.get(), database_path_,
122 base::Bind(&SyncEngineInitializer::DidCreateMetadataDatabase, 127 base::Bind(&SyncEngineInitializer::DidCreateMetadataDatabase,
123 weak_ptr_factory_.GetWeakPtr(), callback)); 128 weak_ptr_factory_.GetWeakPtr(), callback));
124 } 129 }
125 130
126 scoped_ptr<MetadataDatabase> SyncEngineInitializer::PassMetadataDatabase() { 131 scoped_ptr<MetadataDatabase> SyncEngineInitializer::PassMetadataDatabase() {
127 return metadata_database_.Pass(); 132 return metadata_database_.Pass();
128 } 133 }
129 134
130 void SyncEngineInitializer::DidCreateMetadataDatabase( 135 void SyncEngineInitializer::DidCreateMetadataDatabase(
131 const SyncStatusCallback& callback, 136 const SyncStatusCallback& callback,
132 SyncStatusCode status, 137 SyncStatusCode status,
133 scoped_ptr<MetadataDatabase> instance) { 138 scoped_ptr<MetadataDatabase> instance) {
134 if (status != SYNC_STATUS_OK) { 139 if (status != SYNC_STATUS_OK) {
140 util::Log(logging::LOG_VERBOSE, FROM_HERE,
141 "[Initialize] Failed to initialize MetadataDatabase.");
135 callback.Run(status); 142 callback.Run(status);
136 return; 143 return;
137 } 144 }
138 145
139 DCHECK(instance); 146 DCHECK(instance);
140 metadata_database_ = instance.Pass(); 147 metadata_database_ = instance.Pass();
141 if (metadata_database_->HasSyncRoot()) { 148 if (metadata_database_->HasSyncRoot()) {
149 util::Log(logging::LOG_VERBOSE, FROM_HERE,
150 "[Initialize] Found Local cache of sync-root.");
142 callback.Run(SYNC_STATUS_OK); 151 callback.Run(SYNC_STATUS_OK);
143 return; 152 return;
144 } 153 }
145 154
146 GetAboutResource(callback); 155 GetAboutResource(callback);
147 } 156 }
148 157
149 void SyncEngineInitializer::GetAboutResource( 158 void SyncEngineInitializer::GetAboutResource(
150 const SyncStatusCallback& callback) { 159 const SyncStatusCallback& callback) {
151 set_used_network(true); 160 set_used_network(true);
152 drive_service_->GetAboutResource( 161 drive_service_->GetAboutResource(
153 base::Bind(&SyncEngineInitializer::DidGetAboutResource, 162 base::Bind(&SyncEngineInitializer::DidGetAboutResource,
154 weak_ptr_factory_.GetWeakPtr(), callback)); 163 weak_ptr_factory_.GetWeakPtr(), callback));
155 } 164 }
156 165
157 void SyncEngineInitializer::DidGetAboutResource( 166 void SyncEngineInitializer::DidGetAboutResource(
158 const SyncStatusCallback& callback, 167 const SyncStatusCallback& callback,
159 google_apis::GDataErrorCode error, 168 google_apis::GDataErrorCode error,
160 scoped_ptr<google_apis::AboutResource> about_resource) { 169 scoped_ptr<google_apis::AboutResource> about_resource) {
161 cancel_callback_.Reset(); 170 cancel_callback_.Reset();
162 171
163 SyncStatusCode status = GDataErrorCodeToSyncStatusCode(error); 172 SyncStatusCode status = GDataErrorCodeToSyncStatusCode(error);
164 if (status != SYNC_STATUS_OK) { 173 if (status != SYNC_STATUS_OK) {
174 util::Log(logging::LOG_VERBOSE, FROM_HERE,
175 "[Initialize] Failed to get AboutResource.");
165 callback.Run(status); 176 callback.Run(status);
166 return; 177 return;
167 } 178 }
168 179
169 DCHECK(about_resource); 180 DCHECK(about_resource);
170 root_folder_id_ = about_resource->root_folder_id(); 181 root_folder_id_ = about_resource->root_folder_id();
171 largest_change_id_ = about_resource->largest_change_id(); 182 largest_change_id_ = about_resource->largest_change_id();
172 183
173 DCHECK(!root_folder_id_.empty()); 184 DCHECK(!root_folder_id_.empty());
174 FindSyncRoot(callback); 185 FindSyncRoot(callback);
175 } 186 }
176 187
177 void SyncEngineInitializer::FindSyncRoot(const SyncStatusCallback& callback) { 188 void SyncEngineInitializer::FindSyncRoot(const SyncStatusCallback& callback) {
178 if (find_sync_root_retry_count_++ >= kMaxRetry) { 189 if (find_sync_root_retry_count_++ >= kMaxRetry) {
190 util::Log(logging::LOG_VERBOSE, FROM_HERE,
191 "[Initialize] Reached max retry count.");
179 callback.Run(SYNC_STATUS_FAILED); 192 callback.Run(SYNC_STATUS_FAILED);
180 return; 193 return;
181 } 194 }
182 195
183 set_used_network(true); 196 set_used_network(true);
184 cancel_callback_ = drive_service_->SearchByTitle( 197 cancel_callback_ = drive_service_->SearchByTitle(
185 kSyncRootFolderTitle, 198 kSyncRootFolderTitle,
186 std::string(), // parent_folder_id 199 std::string(), // parent_folder_id
187 base::Bind(&SyncEngineInitializer::DidFindSyncRoot, 200 base::Bind(&SyncEngineInitializer::DidFindSyncRoot,
188 weak_ptr_factory_.GetWeakPtr(), 201 weak_ptr_factory_.GetWeakPtr(),
189 callback)); 202 callback));
190 } 203 }
191 204
192 void SyncEngineInitializer::DidFindSyncRoot( 205 void SyncEngineInitializer::DidFindSyncRoot(
193 const SyncStatusCallback& callback, 206 const SyncStatusCallback& callback,
194 google_apis::GDataErrorCode error, 207 google_apis::GDataErrorCode error,
195 scoped_ptr<google_apis::ResourceList> resource_list) { 208 scoped_ptr<google_apis::ResourceList> resource_list) {
196 cancel_callback_.Reset(); 209 cancel_callback_.Reset();
197 210
198 SyncStatusCode status = GDataErrorCodeToSyncStatusCode(error); 211 SyncStatusCode status = GDataErrorCodeToSyncStatusCode(error);
199 if (status != SYNC_STATUS_OK) { 212 if (status != SYNC_STATUS_OK) {
213 util::Log(logging::LOG_VERBOSE, FROM_HERE,
214 "[Initialize] Failed to find sync root.");
200 callback.Run(status); 215 callback.Run(status);
201 return; 216 return;
202 } 217 }
203 218
219 if (!resource_list) {
220 NOTREACHED();
221 util::Log(logging::LOG_VERBOSE, FROM_HERE,
222 "[Initialize] Got invalid resource list.");
223 callback.Run(SYNC_STATUS_FAILED);
224 return;
225 }
226
204 ScopedVector<google_apis::ResourceEntry>* entries = 227 ScopedVector<google_apis::ResourceEntry>* entries =
205 resource_list->mutable_entries(); 228 resource_list->mutable_entries();
206 for (ScopedVector<google_apis::ResourceEntry>::iterator itr = 229 for (ScopedVector<google_apis::ResourceEntry>::iterator itr =
207 entries->begin(); 230 entries->begin();
208 itr != entries->end(); ++itr) { 231 itr != entries->end(); ++itr) {
209 google_apis::ResourceEntry* entry = *itr; 232 google_apis::ResourceEntry* entry = *itr;
210 233
211 // Ignore deleted folder. 234 // Ignore deleted folder.
212 if (IsDeleted(*entry)) 235 if (IsDeleted(*entry))
213 continue; 236 continue;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 282
260 void SyncEngineInitializer::DidCreateSyncRoot( 283 void SyncEngineInitializer::DidCreateSyncRoot(
261 const SyncStatusCallback& callback, 284 const SyncStatusCallback& callback,
262 google_apis::GDataErrorCode error, 285 google_apis::GDataErrorCode error,
263 scoped_ptr<google_apis::ResourceEntry> entry) { 286 scoped_ptr<google_apis::ResourceEntry> entry) {
264 DCHECK(!sync_root_folder_); 287 DCHECK(!sync_root_folder_);
265 cancel_callback_.Reset(); 288 cancel_callback_.Reset();
266 289
267 SyncStatusCode status = GDataErrorCodeToSyncStatusCode(error); 290 SyncStatusCode status = GDataErrorCodeToSyncStatusCode(error);
268 if (status != SYNC_STATUS_OK) { 291 if (status != SYNC_STATUS_OK) {
292 util::Log(logging::LOG_VERBOSE, FROM_HERE,
293 "[Initialize] Failed to create sync root.");
269 callback.Run(status); 294 callback.Run(status);
270 return; 295 return;
271 } 296 }
272 297
273 FindSyncRoot(callback); 298 FindSyncRoot(callback);
274 } 299 }
275 300
276 void SyncEngineInitializer::DetachSyncRoot(const SyncStatusCallback& callback) { 301 void SyncEngineInitializer::DetachSyncRoot(const SyncStatusCallback& callback) {
277 DCHECK(sync_root_folder_); 302 DCHECK(sync_root_folder_);
278 set_used_network(true); 303 set_used_network(true);
279 cancel_callback_ = drive_service_->RemoveResourceFromDirectory( 304 cancel_callback_ = drive_service_->RemoveResourceFromDirectory(
280 root_folder_id_, GetID(*sync_root_folder_), 305 root_folder_id_, GetID(*sync_root_folder_),
281 base::Bind(&SyncEngineInitializer::DidDetachSyncRoot, 306 base::Bind(&SyncEngineInitializer::DidDetachSyncRoot,
282 weak_ptr_factory_.GetWeakPtr(), 307 weak_ptr_factory_.GetWeakPtr(),
283 callback)); 308 callback));
284 } 309 }
285 310
286 void SyncEngineInitializer::DidDetachSyncRoot( 311 void SyncEngineInitializer::DidDetachSyncRoot(
287 const SyncStatusCallback& callback, 312 const SyncStatusCallback& callback,
288 google_apis::GDataErrorCode error) { 313 google_apis::GDataErrorCode error) {
289 cancel_callback_.Reset(); 314 cancel_callback_.Reset();
290 315
291 SyncStatusCode status = GDataErrorCodeToSyncStatusCode(error); 316 SyncStatusCode status = GDataErrorCodeToSyncStatusCode(error);
292 if (status != SYNC_STATUS_OK) { 317 if (status != SYNC_STATUS_OK) {
318 util::Log(logging::LOG_VERBOSE, FROM_HERE,
319 "[Initialize] Failed to detach sync root.");
293 callback.Run(status); 320 callback.Run(status);
294 return; 321 return;
295 } 322 }
296 323
297 ListAppRootFolders(callback); 324 ListAppRootFolders(callback);
298 } 325 }
299 326
300 void SyncEngineInitializer::ListAppRootFolders( 327 void SyncEngineInitializer::ListAppRootFolders(
301 const SyncStatusCallback& callback) { 328 const SyncStatusCallback& callback) {
302 DCHECK(sync_root_folder_); 329 DCHECK(sync_root_folder_);
303 set_used_network(true); 330 set_used_network(true);
304 cancel_callback_ = drive_service_->GetResourceListInDirectory( 331 cancel_callback_ = drive_service_->GetResourceListInDirectory(
305 GetID(*sync_root_folder_), 332 GetID(*sync_root_folder_),
306 base::Bind(&SyncEngineInitializer::DidListAppRootFolders, 333 base::Bind(&SyncEngineInitializer::DidListAppRootFolders,
307 weak_ptr_factory_.GetWeakPtr(), 334 weak_ptr_factory_.GetWeakPtr(),
308 callback)); 335 callback));
309 } 336 }
310 337
311 void SyncEngineInitializer::DidListAppRootFolders( 338 void SyncEngineInitializer::DidListAppRootFolders(
312 const SyncStatusCallback& callback, 339 const SyncStatusCallback& callback,
313 google_apis::GDataErrorCode error, 340 google_apis::GDataErrorCode error,
314 scoped_ptr<google_apis::ResourceList> resource_list) { 341 scoped_ptr<google_apis::ResourceList> resource_list) {
315 cancel_callback_.Reset(); 342 cancel_callback_.Reset();
316 343
317 SyncStatusCode status = GDataErrorCodeToSyncStatusCode(error); 344 SyncStatusCode status = GDataErrorCodeToSyncStatusCode(error);
318 if (status != SYNC_STATUS_OK) { 345 if (status != SYNC_STATUS_OK) {
346 util::Log(logging::LOG_VERBOSE, FROM_HERE,
347 "[Initialize] Failed to get initial app-root folders.");
319 callback.Run(status); 348 callback.Run(status);
320 return; 349 return;
321 } 350 }
322 351
352 if (!resource_list) {
353 NOTREACHED();
354 util::Log(logging::LOG_VERBOSE, FROM_HERE,
355 "[Initialize] Got invalid initial app-root list.");
356 callback.Run(SYNC_STATUS_FAILED);
357 return;
358 }
359
323 ScopedVector<google_apis::ResourceEntry>* new_entries = 360 ScopedVector<google_apis::ResourceEntry>* new_entries =
324 resource_list->mutable_entries(); 361 resource_list->mutable_entries();
325 app_root_folders_.insert(app_root_folders_.end(), 362 app_root_folders_.insert(app_root_folders_.end(),
326 new_entries->begin(), new_entries->end()); 363 new_entries->begin(), new_entries->end());
327 new_entries->weak_clear(); 364 new_entries->weak_clear();
328 365
329 set_used_network(true); 366 set_used_network(true);
330 if (GetRemainingFileList( 367 if (GetRemainingFileList(
331 &cancel_callback_, 368 &cancel_callback_,
332 drive_service_, 369 drive_service_,
(...skipping 15 matching lines...) Expand all
348 ConvertResourceEntriesToFileResources(app_root_folders_), 385 ConvertResourceEntriesToFileResources(app_root_folders_),
349 base::Bind(&SyncEngineInitializer::DidPopulateDatabase, 386 base::Bind(&SyncEngineInitializer::DidPopulateDatabase,
350 weak_ptr_factory_.GetWeakPtr(), 387 weak_ptr_factory_.GetWeakPtr(),
351 callback)); 388 callback));
352 } 389 }
353 390
354 void SyncEngineInitializer::DidPopulateDatabase( 391 void SyncEngineInitializer::DidPopulateDatabase(
355 const SyncStatusCallback& callback, 392 const SyncStatusCallback& callback,
356 SyncStatusCode status) { 393 SyncStatusCode status) {
357 if (status != SYNC_STATUS_OK) { 394 if (status != SYNC_STATUS_OK) {
395 util::Log(logging::LOG_VERBOSE, FROM_HERE,
396 "[Initialize] Failed to populate initial data"
397 " to MetadataDatabase.");
358 callback.Run(status); 398 callback.Run(status);
359 return; 399 return;
360 } 400 }
361 401
402 util::Log(logging::LOG_VERBOSE, FROM_HERE,
403 "[Initialize] Completed successfully.");
362 callback.Run(SYNC_STATUS_OK); 404 callback.Run(SYNC_STATUS_OK);
363 } 405 }
364 406
365 } // namespace drive_backend 407 } // namespace drive_backend
366 } // namespace sync_file_system 408 } // namespace sync_file_system
OLDNEW
« no previous file with comments | « chrome/browser/sync_file_system/drive_backend/list_changes_task.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698