Index: chrome/browser/sync/glue/browser_thread_model_worker.cc |
diff --git a/chrome/browser/sync/glue/browser_thread_model_worker.cc b/chrome/browser/sync/glue/browser_thread_model_worker.cc |
index de2ae424550d4b2ea3d7ad3edbb274d0e1c201ba..9c1abdf6e9239f8bea97d278d10200cbf2d92b4b 100644 |
--- a/chrome/browser/sync/glue/browser_thread_model_worker.cc |
+++ b/chrome/browser/sync/glue/browser_thread_model_worker.cc |
@@ -17,11 +17,12 @@ BrowserThreadModelWorker::BrowserThreadModelWorker( |
BrowserThreadModelWorker::~BrowserThreadModelWorker() {} |
-void BrowserThreadModelWorker::DoWorkAndWaitUntilDone(Callback0::Type* work) { |
+UnrecoverableErrorInfo BrowserThreadModelWorker::DoWorkAndWaitUntilDone( |
+ const WorkCallback& work) { |
+ UnrecoverableErrorInfo error_info; |
if (BrowserThread::CurrentlyOn(thread_)) { |
DLOG(WARNING) << "Already on thread " << thread_; |
- work->Run(); |
- return; |
+ return work.Run(); |
} |
WaitableEvent done(false, false); |
if (!BrowserThread::PostTask( |
@@ -31,17 +32,21 @@ void BrowserThreadModelWorker::DoWorkAndWaitUntilDone(Callback0::Type* work) { |
this, |
&BrowserThreadModelWorker::CallDoWorkAndSignalTask, |
work, |
- &done))) { |
+ &done, |
+ &error_info))) { |
NOTREACHED() << "Failed to post task to thread " << thread_; |
- return; |
+ return error_info; |
} |
done.Wait(); |
+ return error_info; |
} |
void BrowserThreadModelWorker::CallDoWorkAndSignalTask( |
- Callback0::Type* work, WaitableEvent* done) { |
+ const WorkCallback& work, |
+ WaitableEvent* done, |
+ UnrecoverableErrorInfo* error_info) { |
DCHECK(BrowserThread::CurrentlyOn(thread_)); |
- work->Run(); |
+ *error_info = work.Run(); |
done->Signal(); |
} |
@@ -55,8 +60,10 @@ DatabaseModelWorker::DatabaseModelWorker() |
DatabaseModelWorker::~DatabaseModelWorker() {} |
void DatabaseModelWorker::CallDoWorkAndSignalTask( |
- Callback0::Type* work, WaitableEvent* done) { |
- BrowserThreadModelWorker::CallDoWorkAndSignalTask(work, done); |
+ const WorkCallback& work, |
+ WaitableEvent* done, |
+ UnrecoverableErrorInfo* error_info) { |
+ BrowserThreadModelWorker::CallDoWorkAndSignalTask(work, done, error_info); |
} |
FileModelWorker::FileModelWorker() |
@@ -65,8 +72,10 @@ FileModelWorker::FileModelWorker() |
FileModelWorker::~FileModelWorker() {} |
void FileModelWorker::CallDoWorkAndSignalTask( |
- Callback0::Type* work, WaitableEvent* done) { |
- BrowserThreadModelWorker::CallDoWorkAndSignalTask(work, done); |
+ const WorkCallback& work, |
+ WaitableEvent* done, |
+ UnrecoverableErrorInfo* error_info) { |
+ BrowserThreadModelWorker::CallDoWorkAndSignalTask(work, done, error_info); |
} |
} // namespace browser_sync |