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

Unified Diff: chrome/browser/sync_file_system/sync_file_system_service.cc

Issue 11358211: Handle errors on the initialization of SyncFileSystemService (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: +mock Created 8 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/sync_file_system/mock_remote_file_sync_service.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/sync_file_system/sync_file_system_service.cc
diff --git a/chrome/browser/sync_file_system/sync_file_system_service.cc b/chrome/browser/sync_file_system/sync_file_system_service.cc
index 2750e9cad0f9e437fd5af9730a71e1e1aaed2ff8..1876141754a06b8ffe1748d14f39e0c2e3f7f5b7 100644
--- a/chrome/browser/sync_file_system/sync_file_system_service.cc
+++ b/chrome/browser/sync_file_system/sync_file_system_service.cc
@@ -36,10 +36,15 @@ class SharedCallbackRunner
: public base::RefCounted<SharedCallbackRunner>,
public base::NonThreadSafe {
public:
- SharedCallbackRunner(const SyncStatusCallback& join_callback)
+ explicit SharedCallbackRunner(const SyncStatusCallback& join_callback)
: join_callback_(join_callback),
num_shared_callbacks_(0) {}
+ SyncStatusCallback CreateCallback() {
+ ++num_shared_callbacks_;
+ return base::Bind(&SharedCallbackRunner::Done, this);
+ }
+
template <typename R>
base::Callback<void(SyncStatusCode, const R& in)>
CreateAssignAndRunCallback(R* out) {
@@ -58,6 +63,10 @@ class SharedCallbackRunner
if (join_callback_.is_null())
return;
*out = in;
+ Done(status);
+ }
+
+ void Done(SyncStatusCode status) {
if (status != fileapi::SYNC_STATUS_OK) {
join_callback_.Run(status);
join_callback_.Reset();
@@ -128,13 +137,15 @@ void SyncFileSystemService::InitializeForApp(
return;
}
+ scoped_refptr<SharedCallbackRunner> callback_runner(
+ new SharedCallbackRunner(callback));
local_file_service_->MaybeInitializeFileSystemContext(
- app_origin, service_name, file_system_context, callback);
+ app_origin, service_name, file_system_context,
+ callback_runner->CreateCallback());
if (remote_file_service_) {
- // TODO(tzik): Handle errors in the completion callback.
remote_file_service_->RegisterOriginForTrackingChanges(
- app_origin, fileapi::SyncStatusCallback());
+ app_origin, callback_runner->CreateCallback());
}
}
« no previous file with comments | « chrome/browser/sync_file_system/mock_remote_file_sync_service.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698