Index: session_manager_service.cc |
diff --git a/session_manager_service.cc b/session_manager_service.cc |
index d708ef1be3ff5b508b64271db640157f145f61fa..29313f30d354e70b741953a1a721c15d541722c2 100644 |
--- a/session_manager_service.cc |
+++ b/session_manager_service.cc |
@@ -328,7 +328,12 @@ bool SessionManagerService::Shutdown() { |
} |
// Even if we haven't gotten around to processing a persist task. |
- store_->Persist(); |
+ base::WaitableEvent event(true, false); |
+ io_thread_.message_loop()->PostTask( |
+ FROM_HERE, NewRunnableMethod(this, |
+ &SessionManagerService::PersistStoreSync, |
+ &event)); |
+ event.Wait(); |
io_thread_.Stop(); |
message_loop_->PostTask(FROM_HERE, new MessageLoop::QuitTask()); |
LOG(INFO) << "SessionManagerService quitting run loop"; |
@@ -909,6 +914,12 @@ void SessionManagerService::PersistWhitelist() { |
what_happened)); |
} |
+void SessionManagerService::PersistStoreSync(base::WaitableEvent* event) { |
+ store_->Persist(); |
+ LOG(INFO) << "Persisted Store to disk."; |
+ event->Signal(); |
+} |
+ |
void SessionManagerService::PersistStore() { |
LOG(INFO) << "Persisting Store to disk."; |
bool what_happened = store_->Persist(); |