Commit d53a86ac authored by lazyboy@chromium.org's avatar lazyboy@chromium.org

Fix WebViewTest.MediaAccessAPIAllow* flakiness/timeout on chromeos.

Split the individual tests, this was timing out occasionally otherwise on linux_chromeos build bots.

BUG=238662
TEST=WebViewTest.MediaAccessAPIAllow, verified timeout is fixed by running each tests 200 times on trybots, tests now do not flake.

Review URL: https://chromiumcodereview.appspot.com/15741014

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@202031 0039d316-1c4b-4281-b951-d872f2087c98
parent 92580285
...@@ -404,6 +404,8 @@ class WebViewTest : public extensions::PlatformAppBrowserTest { ...@@ -404,6 +404,8 @@ class WebViewTest : public extensions::PlatformAppBrowserTest {
return guest_web_contents; return guest_web_contents;
} }
void MediaAccessAPIAllowTestHelper(const std::string& test_name);
private: private:
scoped_ptr<content::FakeSpeechRecognitionManager> scoped_ptr<content::FakeSpeechRecognitionManager>
fake_speech_recognition_manager_; fake_speech_recognition_manager_;
...@@ -845,13 +847,7 @@ IN_PROC_BROWSER_TEST_F(WebViewTest, DISABLED_MediaAccessAPIDeny) { ...@@ -845,13 +847,7 @@ IN_PROC_BROWSER_TEST_F(WebViewTest, DISABLED_MediaAccessAPIDeny) {
"platform_apps/web_view/media_access/deny")) << message_; "platform_apps/web_view/media_access/deny")) << message_;
} }
// Disabled for being flaky: http://crbug.com/238662 void WebViewTest::MediaAccessAPIAllowTestHelper(const std::string& test_name) {
#if defined(OS_CHROMEOS)
#define MAYBE_MediaAccessAPIAllow DISABLED_MediaAccessAPIAllow
#else
#define MAYBE_MediaAccessAPIAllow MediaAccessAPIAllow
#endif
IN_PROC_BROWSER_TEST_F(WebViewTest, MAYBE_MediaAccessAPIAllow) {
ASSERT_TRUE(StartTestServer()); // For serving guest pages. ASSERT_TRUE(StartTestServer()); // For serving guest pages.
ExtensionTestMessageListener launched_listener("Launched", false); ExtensionTestMessageListener launched_listener("Launched", false);
LoadAndLaunchPlatformApp("web_view/media_access/allow"); LoadAndLaunchPlatformApp("web_view/media_access/allow");
...@@ -863,31 +859,32 @@ IN_PROC_BROWSER_TEST_F(WebViewTest, MAYBE_MediaAccessAPIAllow) { ...@@ -863,31 +859,32 @@ IN_PROC_BROWSER_TEST_F(WebViewTest, MAYBE_MediaAccessAPIAllow) {
MockWebContentsDelegate* mock = new MockWebContentsDelegate; MockWebContentsDelegate* mock = new MockWebContentsDelegate;
embedder_web_contents->SetDelegate(mock); embedder_web_contents->SetDelegate(mock);
const size_t num_tests = 4; ExtensionTestMessageListener done_listener("DoneMediaTest.PASSED", false);
std::string test_names[num_tests] = { done_listener.AlsoListenForFailureMessage("DoneMediaTest.FAILED");
"testAllow", EXPECT_TRUE(
"testAllowAndThenDeny", content::ExecuteScript(
"testAllowTwice", embedder_web_contents,
"testAllowAsync", base::StringPrintf("startAllowTest('%s')",
}; test_name.c_str())));
for (size_t i = 0; i < num_tests; ++i) { ASSERT_TRUE(done_listener.WaitUntilSatisfied());
ExtensionTestMessageListener done_listener("DoneMediaTest", false);
EXPECT_TRUE(
content::ExecuteScript(
embedder_web_contents,
base::StringPrintf("startAllowTest('%s')",
test_names[i].c_str())));
done_listener.WaitUntilSatisfied();
std::string result; mock->WaitForSetMediaPermission();
EXPECT_TRUE( }
content::ExecuteScriptAndExtractString(
embedder_web_contents,
"window.domAutomationController.send(getTestStatus())", &result));
ASSERT_EQ(std::string("PASSED"), result);
mock->WaitForSetMediaPermission(); IN_PROC_BROWSER_TEST_F(WebViewTest, MediaAccessAPIAllow_TestAllow) {
} MediaAccessAPIAllowTestHelper("testAllow");
}
IN_PROC_BROWSER_TEST_F(WebViewTest, MediaAccessAPIAllow_TestAllowAndThenDeny) {
MediaAccessAPIAllowTestHelper("testAllowAndThenDeny");
}
IN_PROC_BROWSER_TEST_F(WebViewTest, MediaAccessAPIAllow_TestAllowTwice) {
MediaAccessAPIAllowTestHelper("testAllowTwice");
}
IN_PROC_BROWSER_TEST_F(WebViewTest, MediaAccessAPIAllow_TestAllowAsync) {
MediaAccessAPIAllowTestHelper("testAllowAsync");
} }
// Checks that window.screenX/screenY/screenLeft/screenTop works correctly for // Checks that window.screenX/screenY/screenLeft/screenTop works correctly for
......
...@@ -7,29 +7,18 @@ embedder.tests = {}; ...@@ -7,29 +7,18 @@ embedder.tests = {};
embedder.baseGuestURL = ''; embedder.baseGuestURL = '';
embedder.guestURL = ''; embedder.guestURL = '';
embedder.testStatus = '';
// Sends a message to WebViewTest denoting it is done and test // Sends a message to WebViewTest denoting it is done and test
// has failed. // has failed.
embedder.failTest = function(msg) { embedder.failTest = function(msg) {
embedder.testStatus = 'FAILED'; window.console.log('test failure, reason: ' + msg);
chrome.test.log('test failure, reason: ' + msg); chrome.test.sendMessage('DoneMediaTest.FAILED');
chrome.test.sendMessage('DoneMediaTest');
}; };
// Sends a message to WebViewTest denoting it is done and test // Sends a message to WebViewTest denoting it is done and test
// has succeeded, iff the test has not already failed. // has succeeded.
embedder.maybePassTest = function() { embedder.maybePassTest = function() {
if (embedder.testStatus != 'FAILED') { window.console.log('test passed');
embedder.testStatus = 'PASSED'; chrome.test.sendMessage('DoneMediaTest.PASSED');
}
chrome.test.sendMessage('DoneMediaTest');
};
// Called by browser_tests to query test state.
function getTestStatus() {
chrome.test.log('getTestStatus called: status = ' + embedder.testStatus);
return embedder.testStatus;
}; };
/** @private */ /** @private */
...@@ -235,7 +224,6 @@ function startAllowTest(testName) { ...@@ -235,7 +224,6 @@ function startAllowTest(testName) {
embedder.failTest('No such test: ' + testName); embedder.failTest('No such test: ' + testName);
return; return;
} }
embedder.testStatus = '';
testFunction(); testFunction();
}); });
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment