summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorphoglund@chromium.org <phoglund@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-02 17:53:48 +0000
committerphoglund@chromium.org <phoglund@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-02 17:53:48 +0000
commitf7ab05b3f68b0cf0946dddcab92b831289e193aa (patch)
tree85ef9995df2a686fda85776d3a512ea00f1f5eca
parenta3526116fa1985aa42b2e198b38d77c0a38491d7 (diff)
downloadchromium_src-f7ab05b3f68b0cf0946dddcab92b831289e193aa.zip
chromium_src-f7ab05b3f68b0cf0946dddcab92b831289e193aa.tar.gz
chromium_src-f7ab05b3f68b0cf0946dddcab92b831289e193aa.tar.bz2
Working around IO thread chrashes for WebRTC tests on Android.
Because the content_browsertests tearDown logic is broken with respect to threading on Android, we here work around the problem by sleeping in the tearDown to give the IO thread time to finish its work. This will lengthen the execution time of the tests but hopefully make the tests stable enough to last us until the Clank team finds time to rewrite the tearDown logic. BUG=362852 Review URL: https://codereview.chromium.org/251323002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@267858 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--build/android/pylib/gtest/filter/content_browsertests_disabled3
-rw-r--r--content/browser/media/webrtc_browsertest.cc15
2 files changed, 14 insertions, 4 deletions
diff --git a/build/android/pylib/gtest/filter/content_browsertests_disabled b/build/android/pylib/gtest/filter/content_browsertests_disabled
index 2978ce0..c96ce6c 100644
--- a/build/android/pylib/gtest/filter/content_browsertests_disabled
+++ b/build/android/pylib/gtest/filter/content_browsertests_disabled
@@ -120,6 +120,3 @@ TracingControllerTest.EnableCaptureAndDisableMonitoringWithFilePath
# http://crbug.com/343604
MSE_ClearKey/EncryptedMediaTest.ConfigChangeVideo/0
-
-# http://crbug.com/362852
-WebRtcBrowserTests/WebRtcBrowserTest.*
diff --git a/content/browser/media/webrtc_browsertest.cc b/content/browser/media/webrtc_browsertest.cc
index ce566ae..2f81335 100644
--- a/content/browser/media/webrtc_browsertest.cc
+++ b/content/browser/media/webrtc_browsertest.cc
@@ -5,6 +5,7 @@
#include "base/command_line.h"
#include "base/file_util.h"
#include "base/strings/stringprintf.h"
+#include "base/threading/platform_thread.h"
#include "base/values.h"
#include "content/browser/media/webrtc_internals.h"
#include "content/browser/web_contents/web_contents_impl.h"
@@ -45,6 +46,18 @@ class WebRtcBrowserTest : public WebRtcContentBrowserTest,
command_line->AppendSwitch(switches::kEnableAudioTrackProcessing);
}
+ 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 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) {
@@ -58,7 +71,7 @@ class WebRtcBrowserTest : public WebRtcContentBrowserTest,
}
void DisableOpusIfOnAndroid() {
-#if defined (OS_ANDROID)
+#if defined(OS_ANDROID)
// Always force iSAC 16K on Android for now (Opus is broken).
EXPECT_EQ("isac-forced",
ExecuteJavascriptAndReturnResult("forceIsac16KInSdp();"));