diff options
-rw-r--r-- | base/android/java/src/org/chromium/base/SystemMessageHandler.java | 3 | ||||
-rw-r--r-- | base/message_loop/message_pump_android.cc | 2 | ||||
-rw-r--r-- | content/browser/browser_main_runner.cc | 7 | ||||
-rw-r--r-- | content/browser/media/webrtc_browsertest.cc | 14 | ||||
-rw-r--r-- | content/public/test/browser_test_base.cc | 9 |
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())); |