summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--base/android/java/src/org/chromium/base/SystemMessageHandler.java3
-rw-r--r--base/message_loop/message_pump_android.cc2
-rw-r--r--content/browser/browser_main_runner.cc7
-rw-r--r--content/browser/media/webrtc_browsertest.cc14
-rw-r--r--content/public/test/browser_test_base.cc9
5 files changed, 11 insertions, 24 deletions
diff --git a/base/android/java/src/org/chromium/base/SystemMessageHandler.java b/base/android/java/src/org/chromium/base/SystemMessageHandler.java
index 707adbe..e1fbb0f 100644
--- a/base/android/java/src/org/chromium/base/SystemMessageHandler.java
+++ b/base/android/java/src/org/chromium/base/SystemMessageHandler.java
@@ -46,8 +46,9 @@ class SystemMessageHandler extends Handler {
@SuppressWarnings("unused")
@CalledByNative
- private void removeScheduledWork() {
+ private void removeAllPendingMessages() {
removeMessages(SCHEDULED_WORK);
+ removeMessages(DELAYED_SCHEDULED_WORK);
}
@CalledByNative
diff --git a/base/message_loop/message_pump_android.cc b/base/message_loop/message_pump_android.cc
index ee8ff4d..babd17b 100644
--- a/base/message_loop/message_pump_android.cc
+++ b/base/message_loop/message_pump_android.cc
@@ -117,7 +117,7 @@ void MessagePumpForUI::Quit() {
JNIEnv* env = base::android::AttachCurrentThread();
DCHECK(env);
- Java_SystemMessageHandler_removeScheduledWork(env,
+ Java_SystemMessageHandler_removeAllPendingMessages(env,
system_message_handler_obj_.obj());
system_message_handler_obj_.Reset();
}
diff --git a/content/browser/browser_main_runner.cc b/content/browser/browser_main_runner.cc
index 16309de..c41fc95 100644
--- a/content/browser/browser_main_runner.cc
+++ b/content/browser/browser_main_runner.cc
@@ -149,7 +149,12 @@ class BrowserMainRunnerImpl : public BrowserMainRunner {
#if defined(OS_WIN)
ole_initializer_.reset(NULL);
#endif
-
+ #if defined(OS_ANDROID)
+ // Forcefully terminates the RunLoop inside MessagePumpForUI, ensuring
+ // proper shutdown for content_browsertests. Shutdown() is not used by
+ // the actual browser.
+ base::MessageLoop::current()->QuitNow();
+ #endif
main_loop_.reset(NULL);
notification_service_.reset(NULL);
diff --git a/content/browser/media/webrtc_browsertest.cc b/content/browser/media/webrtc_browsertest.cc
index 729d64a..e26510b 100644
--- a/content/browser/media/webrtc_browsertest.cc
+++ b/content/browser/media/webrtc_browsertest.cc
@@ -47,19 +47,7 @@ class WebRtcBrowserTest : public WebRtcContentBrowserTest,
command_line->AppendSwitch(switches::kDisableAudioTrackProcessing);
}
- virtual void TearDownOnMainThread() OVERRIDE {
-#if defined(OS_ANDROID)
- // TODO(phoglund): this is a ugly workaround to let the IO thread
- // finish its work. The reason we need this on Android is that
- // content_browsertests tearDown logic is broken with respect
- // to threading, which causes the IO thread to compete with the
- // teardown. See http://crbug.com/362852. I also tried with 2
- // seconds, but that isn't enough.
- base::PlatformThread::Sleep(base::TimeDelta::FromSeconds(5));
-#endif
- }
-
- // Convenience method since most peerconnection-call.html tests just load
+ // Convenience function since most peerconnection-call.html tests just load
// the page, kick off some javascript and wait for the title to change to OK.
void MakeTypicalPeerConnectionCall(const std::string& javascript) {
ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
diff --git a/content/public/test/browser_test_base.cc b/content/public/test/browser_test_base.cc
index 3a55750..c8f23e5 100644
--- a/content/public/test/browser_test_base.cc
+++ b/content/public/test/browser_test_base.cc
@@ -239,14 +239,7 @@ void BrowserTestBase::SetUp() {
MainFunctionParams params(*command_line);
params.ui_task = ui_task;
// TODO(phajdan.jr): Check return code, http://crbug.com/374738 .
- BrowserMainRunner::Create()->Initialize(params);
- // We are done running the test by now. During teardown we
- // need to be able to perform IO.
- base::ThreadRestrictions::SetIOAllowed(true);
- BrowserThread::PostTask(
- BrowserThread::IO, FROM_HERE,
- base::Bind(base::IgnoreResult(&base::ThreadRestrictions::SetIOAllowed),
- true));
+ BrowserMain(params);
#else
GetContentMainParams()->ui_task = ui_task;
EXPECT_EQ(expected_exit_code_, ContentMain(*GetContentMainParams()));