Index: components/autofill/browser/personal_data_manager_unittest.cc |
diff --git a/components/autofill/browser/personal_data_manager_unittest.cc b/components/autofill/browser/personal_data_manager_unittest.cc |
index be28dc545ae864d0ae8f0d6a2270544e6e3e673a..80930282e0bf003f927353a34007c848f3814051 100644 |
--- a/components/autofill/browser/personal_data_manager_unittest.cc |
+++ b/components/autofill/browser/personal_data_manager_unittest.cc |
@@ -8,6 +8,7 @@ |
#include "base/guid.h" |
#include "base/memory/scoped_ptr.h" |
#include "base/message_loop.h" |
+#include "base/synchronization/waitable_event.h" |
#include "base/utf_string_conversions.h" |
#include "chrome/browser/password_manager/encryptor.h" |
#include "chrome/browser/webdata/web_data_service.h" |
@@ -79,9 +80,15 @@ class PersonalDataManagerTest : public testing::Test { |
personal_data_.reset(NULL); |
profile_.reset(NULL); |
- db_thread_.Stop(); |
+ // Schedule another task on the DB thread to notify us that it's safe to |
+ // stop the thread. |
+ base::WaitableEvent done(false, false); |
+ BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, |
+ base::Bind(&base::WaitableEvent::Signal, base::Unretained(&done))); |
+ done.Wait(); |
MessageLoop::current()->PostTask(FROM_HERE, MessageLoop::QuitClosure()); |
MessageLoop::current()->Run(); |
+ db_thread_.Stop(); |
} |
void ResetPersonalDataManager() { |