| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/local_file_sync_service.h" | 5 #include "chrome/browser/sync_file_system/local_file_sync_service.h" |
| 6 | 6 |
| 7 #include "base/stl_util.h" | 7 #include "base/stl_util.h" |
| 8 #include "chrome/browser/extensions/extension_service.h" | 8 #include "chrome/browser/extensions/extension_service.h" |
| 9 #include "chrome/browser/extensions/extension_system.h" | 9 #include "chrome/browser/extensions/extension_system.h" |
| 10 #include "chrome/browser/profiles/profile.h" | 10 #include "chrome/browser/profiles/profile.h" |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 108 } | 108 } |
| 109 | 109 |
| 110 void LocalFileSyncService::Shutdown() { | 110 void LocalFileSyncService::Shutdown() { |
| 111 sync_context_->RemoveOriginChangeObserver(this); | 111 sync_context_->RemoveOriginChangeObserver(this); |
| 112 sync_context_->ShutdownOnUIThread(); | 112 sync_context_->ShutdownOnUIThread(); |
| 113 profile_ = NULL; | 113 profile_ = NULL; |
| 114 } | 114 } |
| 115 | 115 |
| 116 void LocalFileSyncService::MaybeInitializeFileSystemContext( | 116 void LocalFileSyncService::MaybeInitializeFileSystemContext( |
| 117 const GURL& app_origin, | 117 const GURL& app_origin, |
| 118 const std::string& service_name, | |
| 119 fileapi::FileSystemContext* file_system_context, | 118 fileapi::FileSystemContext* file_system_context, |
| 120 const SyncStatusCallback& callback) { | 119 const SyncStatusCallback& callback) { |
| 121 sync_context_->MaybeInitializeFileSystemContext( | 120 sync_context_->MaybeInitializeFileSystemContext( |
| 122 app_origin, service_name, file_system_context, | 121 app_origin, file_system_context, |
| 123 base::Bind(&LocalFileSyncService::DidInitializeFileSystemContext, | 122 base::Bind(&LocalFileSyncService::DidInitializeFileSystemContext, |
| 124 AsWeakPtr(), app_origin, | 123 AsWeakPtr(), app_origin, |
| 125 make_scoped_refptr(file_system_context), callback)); | 124 make_scoped_refptr(file_system_context), callback)); |
| 126 } | 125 } |
| 127 | 126 |
| 128 void LocalFileSyncService::AddChangeObserver(Observer* observer) { | 127 void LocalFileSyncService::AddChangeObserver(Observer* observer) { |
| 129 change_observers_.AddObserver(observer); | 128 change_observers_.AddObserver(observer); |
| 130 } | 129 } |
| 131 | 130 |
| 132 void LocalFileSyncService::RegisterURLForWaitingSync( | 131 void LocalFileSyncService::RegisterURLForWaitingSync( |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 182 | 181 |
| 183 void LocalFileSyncService::GetLocalFileMetadata( | 182 void LocalFileSyncService::GetLocalFileMetadata( |
| 184 const FileSystemURL& url, const SyncFileMetadataCallback& callback) { | 183 const FileSystemURL& url, const SyncFileMetadataCallback& callback) { |
| 185 DCHECK(ContainsKey(origin_to_contexts_, url.origin())); | 184 DCHECK(ContainsKey(origin_to_contexts_, url.origin())); |
| 186 sync_context_->GetFileMetadata(origin_to_contexts_[url.origin()], | 185 sync_context_->GetFileMetadata(origin_to_contexts_[url.origin()], |
| 187 url, callback); | 186 url, callback); |
| 188 } | 187 } |
| 189 | 188 |
| 190 void LocalFileSyncService::PrepareForProcessRemoteChange( | 189 void LocalFileSyncService::PrepareForProcessRemoteChange( |
| 191 const FileSystemURL& url, | 190 const FileSystemURL& url, |
| 192 const std::string& service_name, | |
| 193 const PrepareChangeCallback& callback) { | 191 const PrepareChangeCallback& callback) { |
| 194 if (!ContainsKey(origin_to_contexts_, url.origin())) { | 192 if (!ContainsKey(origin_to_contexts_, url.origin())) { |
| 195 // This could happen if a remote sync is triggered for the app that hasn't | 193 // This could happen if a remote sync is triggered for the app that hasn't |
| 196 // been initialized in this service. | 194 // been initialized in this service. |
| 197 DCHECK(profile_); | 195 DCHECK(profile_); |
| 198 // The given url.origin() must be for valid installed app. | 196 // The given url.origin() must be for valid installed app. |
| 199 ExtensionService* extension_service = | 197 ExtensionService* extension_service = |
| 200 extensions::ExtensionSystem::Get(profile_)->extension_service(); | 198 extensions::ExtensionSystem::Get(profile_)->extension_service(); |
| 201 const extensions::Extension* extension = extension_service->GetInstalledApp( | 199 const extensions::Extension* extension = extension_service->GetInstalledApp( |
| 202 url.origin()); | 200 url.origin()); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 213 SyncFileMetadata(), FileChangeList()); | 211 SyncFileMetadata(), FileChangeList()); |
| 214 return; | 212 return; |
| 215 } | 213 } |
| 216 GURL site_url = extension_service->GetSiteForExtensionId(extension->id()); | 214 GURL site_url = extension_service->GetSiteForExtensionId(extension->id()); |
| 217 DCHECK(!site_url.is_empty()); | 215 DCHECK(!site_url.is_empty()); |
| 218 scoped_refptr<fileapi::FileSystemContext> file_system_context = | 216 scoped_refptr<fileapi::FileSystemContext> file_system_context = |
| 219 content::BrowserContext::GetStoragePartitionForSite( | 217 content::BrowserContext::GetStoragePartitionForSite( |
| 220 profile_, site_url)->GetFileSystemContext(); | 218 profile_, site_url)->GetFileSystemContext(); |
| 221 MaybeInitializeFileSystemContext( | 219 MaybeInitializeFileSystemContext( |
| 222 url.origin(), | 220 url.origin(), |
| 223 service_name, | |
| 224 file_system_context.get(), | 221 file_system_context.get(), |
| 225 base::Bind(&LocalFileSyncService::DidInitializeForRemoteSync, | 222 base::Bind(&LocalFileSyncService::DidInitializeForRemoteSync, |
| 226 AsWeakPtr(), | 223 AsWeakPtr(), |
| 227 url, | 224 url, |
| 228 service_name, | |
| 229 file_system_context, | 225 file_system_context, |
| 230 callback)); | 226 callback)); |
| 231 return; | 227 return; |
| 232 } | 228 } |
| 233 | 229 |
| 234 DCHECK(ContainsKey(origin_to_contexts_, url.origin())); | 230 DCHECK(ContainsKey(origin_to_contexts_, url.origin())); |
| 235 sync_context_->PrepareForSync( | 231 sync_context_->PrepareForSync( |
| 236 origin_to_contexts_[url.origin()], url, | 232 origin_to_contexts_[url.origin()], url, |
| 237 base::Bind(&PrepareForProcessRemoteChangeCallbackAdapter, callback)); | 233 base::Bind(&PrepareForProcessRemoteChangeCallbackAdapter, callback)); |
| 238 } | 234 } |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 320 app_origin, file_system_context->change_tracker()->num_changes()); | 316 app_origin, file_system_context->change_tracker()->num_changes()); |
| 321 int64 num_changes = origin_change_map_.GetTotalChangeCount(); | 317 int64 num_changes = origin_change_map_.GetTotalChangeCount(); |
| 322 FOR_EACH_OBSERVER(Observer, change_observers_, | 318 FOR_EACH_OBSERVER(Observer, change_observers_, |
| 323 OnLocalChangeAvailable(num_changes)); | 319 OnLocalChangeAvailable(num_changes)); |
| 324 } | 320 } |
| 325 callback.Run(status); | 321 callback.Run(status); |
| 326 } | 322 } |
| 327 | 323 |
| 328 void LocalFileSyncService::DidInitializeForRemoteSync( | 324 void LocalFileSyncService::DidInitializeForRemoteSync( |
| 329 const FileSystemURL& url, | 325 const FileSystemURL& url, |
| 330 const std::string& service_name, | |
| 331 fileapi::FileSystemContext* file_system_context, | 326 fileapi::FileSystemContext* file_system_context, |
| 332 const PrepareChangeCallback& callback, | 327 const PrepareChangeCallback& callback, |
| 333 SyncStatusCode status) { | 328 SyncStatusCode status) { |
| 334 if (status != SYNC_STATUS_OK) { | 329 if (status != SYNC_STATUS_OK) { |
| 335 DVLOG(1) << "FileSystemContext initialization failed for remote sync:" | 330 DVLOG(1) << "FileSystemContext initialization failed for remote sync:" |
| 336 << url.DebugString() << " status=" << status | 331 << url.DebugString() << " status=" << status |
| 337 << " (" << SyncStatusCodeToString(status) << ")"; | 332 << " (" << SyncStatusCodeToString(status) << ")"; |
| 338 callback.Run(status, SyncFileMetadata(), FileChangeList()); | 333 callback.Run(status, SyncFileMetadata(), FileChangeList()); |
| 339 return; | 334 return; |
| 340 } | 335 } |
| 341 origin_to_contexts_[url.origin()] = file_system_context; | 336 origin_to_contexts_[url.origin()] = file_system_context; |
| 342 PrepareForProcessRemoteChange(url, service_name, callback); | 337 PrepareForProcessRemoteChange(url, callback); |
| 343 } | 338 } |
| 344 | 339 |
| 345 void LocalFileSyncService::RunLocalSyncCallback( | 340 void LocalFileSyncService::RunLocalSyncCallback( |
| 346 SyncStatusCode status, | 341 SyncStatusCode status, |
| 347 const FileSystemURL& url) { | 342 const FileSystemURL& url) { |
| 348 DCHECK(!local_sync_callback_.is_null()); | 343 DCHECK(!local_sync_callback_.is_null()); |
| 349 SyncFileCallback callback = local_sync_callback_; | 344 SyncFileCallback callback = local_sync_callback_; |
| 350 local_sync_callback_.Reset(); | 345 local_sync_callback_.Reset(); |
| 351 callback.Run(status, url); | 346 callback.Run(status, url); |
| 352 } | 347 } |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 422 changes.front(), | 417 changes.front(), |
| 423 sync_file_info.local_file_path, | 418 sync_file_info.local_file_path, |
| 424 sync_file_info.metadata, | 419 sync_file_info.metadata, |
| 425 url, | 420 url, |
| 426 base::Bind(&LocalFileSyncService::ProcessNextChangeForURL, | 421 base::Bind(&LocalFileSyncService::ProcessNextChangeForURL, |
| 427 AsWeakPtr(), sync_file_info, | 422 AsWeakPtr(), sync_file_info, |
| 428 changes.front(), changes.PopAndGetNewList())); | 423 changes.front(), changes.PopAndGetNewList())); |
| 429 } | 424 } |
| 430 | 425 |
| 431 } // namespace sync_file_system | 426 } // namespace sync_file_system |
| OLD | NEW |