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

Unified Diff: chrome/browser/sync/glue/browser_thread_model_worker.cc

Issue 8366030: Introduce the plumbing necessary to report Unrecoverable error from model safe workers. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: For try jobs. Created 9 years, 2 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 side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698