Index: chrome/browser/geolocation/chrome_geolocation_permission_context_unittest.cc |
diff --git a/chrome/browser/geolocation/chrome_geolocation_permission_context_unittest.cc b/chrome/browser/geolocation/chrome_geolocation_permission_context_unittest.cc |
index 5ae6f87dca274f33d80015925cfb8261434c7c2f..7c461ac77bb00054f4cdad302c1f311442c0f7ce 100644 |
--- a/chrome/browser/geolocation/chrome_geolocation_permission_context_unittest.cc |
+++ b/chrome/browser/geolocation/chrome_geolocation_permission_context_unittest.cc |
@@ -9,6 +9,7 @@ |
#include "base/bind.h" |
#include "base/hash_tables.h" |
#include "base/memory/scoped_vector.h" |
+#include "base/synchronization/waitable_event.h" |
#include "chrome/browser/content_settings/host_content_settings_map.h" |
#include "chrome/browser/content_settings/tab_specific_content_settings.h" |
#include "chrome/browser/geolocation/chrome_geolocation_permission_context.h" |
@@ -141,6 +142,7 @@ class GeolocationPermissionContextTests : public TabContentsWrapperTestHarness { |
virtual void TearDown() OVERRIDE; |
content::TestBrowserThread ui_thread_; |
+ content::TestBrowserThread db_thread_; |
content::MockGeolocation mock_geolocation_; |
// A map between renderer child id and a pair represending the bridge id and |
@@ -150,7 +152,8 @@ class GeolocationPermissionContextTests : public TabContentsWrapperTestHarness { |
GeolocationPermissionContextTests::GeolocationPermissionContextTests() |
: TabContentsWrapperTestHarness(), |
- ui_thread_(BrowserThread::UI, MessageLoop::current()) { |
+ ui_thread_(BrowserThread::UI, MessageLoop::current()), |
+ db_thread_(BrowserThread::DB) { |
} |
GeolocationPermissionContextTests::~GeolocationPermissionContextTests() { |
@@ -230,6 +233,7 @@ void GeolocationPermissionContextTests::CheckTabContentsState( |
} |
void GeolocationPermissionContextTests::SetUp() { |
+ db_thread_.Start(); |
TabContentsWrapperTestHarness::SetUp(); |
mock_geolocation_.Setup(); |
geolocation_permission_context_ = |
@@ -240,6 +244,13 @@ void GeolocationPermissionContextTests::TearDown() { |
extra_tabs_.reset(); |
mock_geolocation_.TearDown(); |
TabContentsWrapperTestHarness::TearDown(); |
+ // Schedule another task on the DB thread to notify us that it's safe to |
+ // carry on with the test. |
+ base::WaitableEvent done(false, false); |
+ BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, |
+ base::Bind(&base::WaitableEvent::Signal, base::Unretained(&done))); |
+ done.Wait(); |
+ db_thread_.Stop(); |
} |