Chromium Code Reviews| Index: chrome/test/media_router/media_router_integration_browsertest.cc |
| diff --git a/chrome/test/media_router/media_router_integration_browsertest.cc b/chrome/test/media_router/media_router_integration_browsertest.cc |
| index 32a5e7de342edaa59860ce9dde37854c184687d2..27023ff35401adfaf34bb37e832c36560a2682c6 100644 |
| --- a/chrome/test/media_router/media_router_integration_browsertest.cc |
| +++ b/chrome/test/media_router/media_router_integration_browsertest.cc |
| @@ -28,6 +28,7 @@ |
| #include "net/base/filename_util.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| +using content::WebContents; |
| namespace media_router { |
| @@ -45,6 +46,9 @@ const char kCheckStartFailedScript[] = "checkStartFailed('%s', '%s');"; |
| const char kStartSessionScript[] = "startSession();"; |
| const char kTerminateSessionScript[] = |
| "terminateSessionAndWaitForStateChange();"; |
| +const char kCloseSessionScript[] = "closeSessionAndWaitForStateChange();"; |
| +const char kReconnectSessionScript[] = "reconnectSession('%s');"; |
| +const char kCheckSendMessageFailedScript[] = "checkSendMessageFailed('%s');"; |
| const char kWaitDeviceScript[] = "waitUntilDeviceAvailable();"; |
| const char kSendMessageAndExpectResponseScript[] = |
| "sendMessageAndExpectResponse('%s');"; |
| @@ -102,7 +106,7 @@ const char kCheckDialogLoadedScript[] = |
| "}" |
| "domAutomationController.send(false);"; |
| -std::string GetStartedConnectionId(content::WebContents* web_contents) { |
| +std::string GetStartedConnectionId(WebContents* web_contents) { |
| std::string session_id; |
| CHECK(content::ExecuteScriptAndExtractString( |
| web_contents, "window.domAutomationController.send(startedConnection.id)", |
| @@ -110,7 +114,7 @@ std::string GetStartedConnectionId(content::WebContents* web_contents) { |
| return session_id; |
| } |
| -std::string GetDefaultRequestSessionId(content::WebContents* web_contents) { |
| +std::string GetDefaultRequestSessionId(WebContents* web_contents) { |
| std::string session_id; |
| CHECK(content::ExecuteScriptAndExtractString( |
| web_contents, |
| @@ -133,7 +137,7 @@ void MediaRouterIntegrationBrowserTest::TearDownOnMainThread() { |
| } |
| void MediaRouterIntegrationBrowserTest::ExecuteJavaScriptAPI( |
| - content::WebContents* web_contents, |
| + WebContents* web_contents, |
| const std::string& script) { |
| std::string result(ExecuteScriptAndExtractString(web_contents, script)); |
| @@ -156,6 +160,28 @@ void MediaRouterIntegrationBrowserTest::ExecuteJavaScriptAPI( |
| ASSERT_TRUE(passed) << error_message; |
| } |
| +WebContents* MediaRouterIntegrationBrowserTest::StartSessionWithTestPage( |
| + bool wait_for_sink) { |
| + OpenTestPage(FILE_PATH_LITERAL("basic_test.html")); |
| + WebContents* web_contents = GetActiveWebContents(); |
| + CHECK(web_contents); |
| + if (wait_for_sink) |
| + ExecuteJavaScriptAPI(web_contents, kWaitDeviceScript); |
|
mark a. foltz
2017/02/09 23:29:59
I feel link this should be kWaitSinkScript to be c
takumif
2017/02/14 19:11:48
Done.
|
| + StartSession(web_contents); |
| + return web_contents; |
| +} |
| + |
| +WebContents* |
| +MediaRouterIntegrationBrowserTest::StartSessionWithTestPageAndChooseSink( |
| + bool should_succeed) { |
| + WebContents* web_contents = StartSessionWithTestPage(true); |
| + WaitUntilSinkDiscoveredOnUI(); |
| + ChooseSink(web_contents, kTestSinkName); |
| + if (should_succeed) |
| + CheckSessionValidity(web_contents); |
| + return web_contents; |
| +} |
| + |
| void MediaRouterIntegrationBrowserTest::OpenTestPage( |
| base::FilePath::StringPieceType file_name) { |
| base::FilePath full_path = GetResourceFile(file_name); |
| @@ -172,7 +198,7 @@ void MediaRouterIntegrationBrowserTest::OpenTestPageInNewTab( |
| } |
| void MediaRouterIntegrationBrowserTest::StartSession( |
| - content::WebContents* web_contents) { |
| + WebContents* web_contents) { |
| test_navigation_observer_.reset( |
| new content::TestNavigationObserver(web_contents, 1)); |
| test_navigation_observer_->StartWatchingNewWebContents(); |
| @@ -182,9 +208,9 @@ void MediaRouterIntegrationBrowserTest::StartSession( |
| } |
| void MediaRouterIntegrationBrowserTest::ChooseSink( |
| - content::WebContents* web_contents, |
| + WebContents* web_contents, |
| const std::string& sink_name) { |
| - content::WebContents* dialog_contents = GetMRDialog(web_contents); |
| + WebContents* dialog_contents = GetMRDialog(web_contents); |
| std::string script = base::StringPrintf( |
| kChooseSinkScript, sink_name.c_str()); |
| // Execute javascript to choose sink, but don't wait until it finishes. |
| @@ -193,7 +219,7 @@ void MediaRouterIntegrationBrowserTest::ChooseSink( |
| } |
| void MediaRouterIntegrationBrowserTest::CheckStartFailed( |
| - content::WebContents* web_contents, |
| + WebContents* web_contents, |
| const std::string& error_name, |
| const std::string& error_message_substring) { |
| std::string script(base::StringPrintf(kCheckStartFailedScript, |
| @@ -203,30 +229,29 @@ void MediaRouterIntegrationBrowserTest::CheckStartFailed( |
| } |
| void MediaRouterIntegrationBrowserTest::ClickDialog() { |
| - content::WebContents* web_contents = |
| - browser()->tab_strip_model()->GetActiveWebContents(); |
| - content::WebContents* dialog_contents = GetMRDialog(web_contents); |
| + WebContents* web_contents = GetActiveWebContents(); |
| + WebContents* dialog_contents = GetMRDialog(web_contents); |
| ASSERT_TRUE(content::ExecuteScript(dialog_contents, kClickDialog)); |
| } |
| -content::WebContents* MediaRouterIntegrationBrowserTest::GetMRDialog( |
| - content::WebContents* web_contents) { |
| +WebContents* MediaRouterIntegrationBrowserTest::GetMRDialog( |
| + WebContents* web_contents) { |
| MediaRouterDialogControllerImpl* controller = |
| MediaRouterDialogControllerImpl::GetOrCreateForWebContents(web_contents); |
| - content::WebContents* dialog_contents = controller->GetMediaRouterDialog(); |
| + WebContents* dialog_contents = controller->GetMediaRouterDialog(); |
| CHECK(dialog_contents); |
| WaitUntilDialogFullyLoaded(dialog_contents); |
| return dialog_contents; |
| } |
| bool MediaRouterIntegrationBrowserTest::IsDialogClosed( |
| - content::WebContents* web_contents) { |
| + WebContents* web_contents) { |
| MediaRouterDialogControllerImpl* controller = |
| MediaRouterDialogControllerImpl::GetOrCreateForWebContents(web_contents); |
| return !controller->GetMediaRouterDialog(); |
| } |
| void MediaRouterIntegrationBrowserTest::WaitUntilDialogClosed( |
| - content::WebContents* web_contents) { |
| + WebContents* web_contents) { |
| ASSERT_TRUE(ConditionalWait( |
| base::TimeDelta::FromSeconds(5), base::TimeDelta::FromSeconds(1), |
| base::Bind(&MediaRouterIntegrationBrowserTest::IsDialogClosed, |
| @@ -234,7 +259,7 @@ void MediaRouterIntegrationBrowserTest::WaitUntilDialogClosed( |
| } |
| void MediaRouterIntegrationBrowserTest::CheckDialogRemainsOpen( |
| - content::WebContents* web_contents) { |
| + WebContents* web_contents) { |
| ASSERT_FALSE(ConditionalWait( |
| base::TimeDelta::FromSeconds(5), base::TimeDelta::FromSeconds(1), |
| base::Bind(&MediaRouterIntegrationBrowserTest::IsDialogClosed, |
| @@ -258,8 +283,8 @@ void MediaRouterIntegrationBrowserTest::SetTestData( |
| test_data_str.c_str())); |
| } |
| -content::WebContents* MediaRouterIntegrationBrowserTest::OpenMRDialog( |
| - content::WebContents* web_contents) { |
| +WebContents* MediaRouterIntegrationBrowserTest::OpenMRDialog( |
| + WebContents* web_contents) { |
| MediaRouterDialogControllerImpl* controller = |
| MediaRouterDialogControllerImpl::GetOrCreateForWebContents(web_contents); |
| test_navigation_observer_.reset( |
| @@ -268,7 +293,7 @@ content::WebContents* MediaRouterIntegrationBrowserTest::OpenMRDialog( |
| CHECK(controller->ShowMediaRouterDialog()); |
| test_navigation_observer_->Wait(); |
| test_navigation_observer_->StopWatchingNewWebContents(); |
| - content::WebContents* dialog_contents = controller->GetMediaRouterDialog(); |
| + WebContents* dialog_contents = controller->GetMediaRouterDialog(); |
| CHECK(dialog_contents); |
| WaitUntilDialogFullyLoaded(dialog_contents); |
| return dialog_contents; |
| @@ -318,9 +343,8 @@ bool MediaRouterIntegrationBrowserTest::IsRouteCreatedOnUI() { |
| std::string MediaRouterIntegrationBrowserTest::GetRouteId( |
| const std::string& sink_name) { |
| - content::WebContents* web_contents = |
| - browser()->tab_strip_model()->GetActiveWebContents(); |
| - content::WebContents* dialog_contents = GetMRDialog(web_contents); |
| + WebContents* web_contents = GetActiveWebContents(); |
| + WebContents* dialog_contents = GetMRDialog(web_contents); |
| std::string script = base::StringPrintf(kGetSinkIdScript, sink_name.c_str()); |
| std::string sink_id = ExecuteScriptAndExtractString(dialog_contents, script); |
| DVLOG(0) << "sink id: " << sink_id; |
| @@ -338,9 +362,8 @@ void MediaRouterIntegrationBrowserTest::WaitUntilRouteCreated() { |
| } |
| bool MediaRouterIntegrationBrowserTest::IsUIShowingIssue() { |
| - content::WebContents* web_contents = |
| - browser()->tab_strip_model()->GetActiveWebContents(); |
| - content::WebContents* dialog_contents = GetMRDialog(web_contents); |
| + WebContents* web_contents = GetActiveWebContents(); |
| + WebContents* dialog_contents = GetMRDialog(web_contents); |
| std::string script = base::StringPrintf( |
| "domAutomationController.send(window.document.getElementById(" |
| "'media-router-container').issue != undefined)"); |
| @@ -358,9 +381,8 @@ void MediaRouterIntegrationBrowserTest::WaitUntilIssue() { |
| } |
| std::string MediaRouterIntegrationBrowserTest::GetIssueTitle() { |
| - content::WebContents* web_contents = |
| - browser()->tab_strip_model()->GetActiveWebContents(); |
| - content::WebContents* dialog_contents = GetMRDialog(web_contents); |
| + WebContents* web_contents = GetActiveWebContents(); |
| + WebContents* dialog_contents = GetMRDialog(web_contents); |
| std::string script = base::StringPrintf( |
| "domAutomationController.send(window.document.getElementById(" |
| "'media-router-container').issue.title)"); |
| @@ -371,11 +393,10 @@ bool MediaRouterIntegrationBrowserTest::IsRouteClosedOnUI() { |
| // After execute js script to close route on UI, the dialog will dispear |
| // after 3s. But sometimes it takes more than 3s to close the route, so |
| // we need to re-open the dialog if it is closed. |
| - content::WebContents* web_contents = |
| - browser()->tab_strip_model()->GetActiveWebContents(); |
| + WebContents* web_contents = GetActiveWebContents(); |
| MediaRouterDialogControllerImpl* controller = |
| MediaRouterDialogControllerImpl::GetOrCreateForWebContents(web_contents); |
| - content::WebContents* dialog_contents = controller->GetMediaRouterDialog(); |
| + WebContents* dialog_contents = controller->GetMediaRouterDialog(); |
| if (!dialog_contents) { |
| VLOG(0) << "Media router dialog was closed, reopen it again."; |
| OpenMRDialog(web_contents); |
| @@ -384,9 +405,8 @@ bool MediaRouterIntegrationBrowserTest::IsRouteClosedOnUI() { |
| } |
| void MediaRouterIntegrationBrowserTest::CloseRouteOnUI() { |
| - content::WebContents* web_contents = |
| - browser()->tab_strip_model()->GetActiveWebContents(); |
| - content::WebContents* dialog_contents = GetMRDialog(web_contents); |
| + WebContents* web_contents = GetActiveWebContents(); |
| + WebContents* dialog_contents = GetMRDialog(web_contents); |
| ASSERT_TRUE(content::ExecuteScript(dialog_contents, kCloseRouteScript)); |
| ASSERT_TRUE(ConditionalWait( |
| base::TimeDelta::FromSeconds(10), base::TimeDelta::FromSeconds(1), |
| @@ -395,9 +415,8 @@ void MediaRouterIntegrationBrowserTest::CloseRouteOnUI() { |
| } |
| bool MediaRouterIntegrationBrowserTest::IsSinkDiscoveredOnUI() { |
| - content::WebContents* web_contents = |
| - browser()->tab_strip_model()->GetActiveWebContents(); |
| - content::WebContents* dialog_contents = GetMRDialog(web_contents); |
| + WebContents* web_contents = GetActiveWebContents(); |
| + WebContents* dialog_contents = GetMRDialog(web_contents); |
| std::string script = base::StringPrintf(kFindSinkScript, receiver().c_str()); |
| return ExecuteScriptAndExtractBool(dialog_contents, script); |
| } |
| @@ -412,12 +431,12 @@ void MediaRouterIntegrationBrowserTest::WaitUntilSinkDiscoveredOnUI() { |
| } |
| bool MediaRouterIntegrationBrowserTest::IsDialogLoaded( |
| - content::WebContents* dialog_contents) { |
| + WebContents* dialog_contents) { |
| return ExecuteScriptAndExtractBool(dialog_contents, kCheckDialogLoadedScript); |
| } |
| void MediaRouterIntegrationBrowserTest::WaitUntilDialogFullyLoaded( |
| - content::WebContents* dialog_contents) { |
| + WebContents* dialog_contents) { |
| ASSERT_TRUE(ConditionalWait( |
| base::TimeDelta::FromSeconds(30), base::TimeDelta::FromSeconds(1), |
| base::Bind(&MediaRouterIntegrationBrowserTest::IsDialogLoaded, |
| @@ -433,139 +452,125 @@ void MediaRouterIntegrationBrowserTest::ParseCommandLine() { |
| receiver_ = kTestSinkName; |
| } |
| -IN_PROC_BROWSER_TEST_F(MediaRouterIntegrationBrowserTest, MANUAL_Basic) { |
| - OpenTestPage(FILE_PATH_LITERAL("basic_test.html")); |
| - content::WebContents* web_contents = |
| - browser()->tab_strip_model()->GetActiveWebContents(); |
| - ASSERT_TRUE(web_contents); |
| - ExecuteJavaScriptAPI(web_contents, kWaitDeviceScript); |
| - StartSession(web_contents); |
| - WaitUntilSinkDiscoveredOnUI(); |
| - ChooseSink(web_contents, kTestSinkName); |
| +void MediaRouterIntegrationBrowserTest::CheckSessionValidity( |
| + WebContents* web_contents) { |
| ExecuteJavaScriptAPI(web_contents, kCheckSessionScript); |
| std::string session_id(GetStartedConnectionId(web_contents)); |
| EXPECT_FALSE(session_id.empty()); |
| - |
| std::string default_request_session_id( |
| GetDefaultRequestSessionId(web_contents)); |
| EXPECT_EQ(session_id, default_request_session_id); |
| +} |
| +void MediaRouterIntegrationBrowserTest::HideMediaRouterDialog( |
| + WebContents* web_contents, |
| + bool wait_for_sink) { |
| + MediaRouterDialogControllerImpl* controller = |
| + MediaRouterDialogControllerImpl::GetOrCreateForWebContents(web_contents); |
| + EXPECT_TRUE(controller->IsShowingMediaRouterDialog()); |
| + if (wait_for_sink) |
| + WaitUntilSinkDiscoveredOnUI(); |
| + controller->HideMediaRouterDialog(); |
| +} |
| + |
| +WebContents* MediaRouterIntegrationBrowserTest::GetActiveWebContents() { |
| + return browser()->tab_strip_model()->GetActiveWebContents(); |
| +} |
| + |
| +void MediaRouterIntegrationBrowserTest::RunBasicTest() { |
| + WebContents* web_contents = StartSessionWithTestPageAndChooseSink(true); |
| ExecuteJavaScriptAPI(web_contents, kTerminateSessionScript); |
| } |
| -IN_PROC_BROWSER_TEST_F(MediaRouterIntegrationBrowserTest, |
| - MANUAL_SendAndOnMessage) { |
| - OpenTestPage(FILE_PATH_LITERAL("basic_test.html")); |
| - content::WebContents* web_contents = |
| - browser()->tab_strip_model()->GetActiveWebContents(); |
| - ASSERT_TRUE(web_contents); |
| - ExecuteJavaScriptAPI(web_contents, kWaitDeviceScript); |
| - StartSession(web_contents); |
| - WaitUntilSinkDiscoveredOnUI(); |
| - ChooseSink(web_contents, kTestSinkName); |
| - ExecuteJavaScriptAPI(web_contents, kCheckSessionScript); |
| +void MediaRouterIntegrationBrowserTest::RunReconnectSessionTest() { |
| + WebContents* web_contents = StartSessionWithTestPageAndChooseSink(true); |
| std::string session_id(GetStartedConnectionId(web_contents)); |
| - EXPECT_FALSE(session_id.empty()); |
| + // Wait a few seconds for MediaRouter to receive updates containing the |
| + // created route. |
| + Wait(base::TimeDelta::FromSeconds(3)); |
| + |
| + OpenTestPageInNewTab(FILE_PATH_LITERAL("basic_test.html")); |
| + WebContents* new_web_contents = GetActiveWebContents(); |
| + ASSERT_TRUE(new_web_contents); |
| + ASSERT_NE(web_contents, new_web_contents); |
| + ExecuteJavaScriptAPI( |
| + new_web_contents, |
| + base::StringPrintf(kReconnectSessionScript, session_id.c_str())); |
| + std::string reconnected_session_id; |
| + ASSERT_TRUE(content::ExecuteScriptAndExtractString( |
| + new_web_contents, |
| + "window.domAutomationController.send(reconnectedSession.id)", |
| + &reconnected_session_id)); |
| + ASSERT_EQ(session_id, reconnected_session_id); |
| +} |
| + |
| +IN_PROC_BROWSER_TEST_F(MediaRouterIntegrationBrowserTest, MANUAL_Basic) { |
| + RunBasicTest(); |
| +} |
| + |
| +IN_PROC_BROWSER_TEST_F(MediaRouterIntegrationBrowserTest, |
| + MANUAL_SendAndOnMessage) { |
| + WebContents* web_contents = StartSessionWithTestPageAndChooseSink(true); |
| ExecuteJavaScriptAPI( |
| web_contents, |
| base::StringPrintf(kSendMessageAndExpectResponseScript, "foo")); |
| } |
| -IN_PROC_BROWSER_TEST_F(MediaRouterIntegrationBrowserTest, MANUAL_OnClose) { |
| - SetTestData(FILE_PATH_LITERAL("close_route_with_error_on_send.json")); |
| - OpenTestPage(FILE_PATH_LITERAL("basic_test.html")); |
| - content::WebContents* web_contents = |
| - browser()->tab_strip_model()->GetActiveWebContents(); |
| - ASSERT_TRUE(web_contents); |
| - ExecuteJavaScriptAPI(web_contents, kWaitDeviceScript); |
| - StartSession(web_contents); |
| - WaitUntilSinkDiscoveredOnUI(); |
| - ChooseSink(web_contents, kTestSinkName); |
| - ExecuteJavaScriptAPI(web_contents, kCheckSessionScript); |
| +IN_PROC_BROWSER_TEST_F(MediaRouterIntegrationBrowserTest, |
| + MANUAL_CloseAndReconnect) { |
| + WebContents* web_contents = StartSessionWithTestPageAndChooseSink(true); |
| + ExecuteJavaScriptAPI(web_contents, kCloseSessionScript); |
| + |
| + // Wait a few seconds for MediaRouter to receive status updates. |
| + Wait(base::TimeDelta::FromSeconds(3)); |
| std::string session_id(GetStartedConnectionId(web_contents)); |
| - EXPECT_FALSE(session_id.empty()); |
| + ExecuteJavaScriptAPI(web_contents, base::StringPrintf(kReconnectSessionScript, |
| + session_id.c_str())); |
| +} |
| + |
| +IN_PROC_BROWSER_TEST_F(MediaRouterIntegrationBrowserTest, MANUAL_CloseOnError) { |
| + SetTestData(FILE_PATH_LITERAL("close_route_with_error_on_send.json")); |
| + WebContents* web_contents = StartSessionWithTestPageAndChooseSink(true); |
| + ExecuteJavaScriptAPI(web_contents, |
| + kSendMessageAndExpectConnectionCloseOnErrorScript); |
| +} |
| + |
| +IN_PROC_BROWSER_TEST_F(MediaRouterIntegrationBrowserTest, |
| + MANUAL_Fail_SendMessage) { |
| + WebContents* web_contents = StartSessionWithTestPageAndChooseSink(true); |
| + ExecuteJavaScriptAPI(web_contents, kCloseSessionScript); |
| + // Wait a few seconds for MediaRouter to receive status updates. |
| + Wait(base::TimeDelta::FromSeconds(3)); |
| ExecuteJavaScriptAPI( |
| web_contents, |
| - base::StringPrintf("%s", |
| - kSendMessageAndExpectConnectionCloseOnErrorScript)); |
| + base::StringPrintf(kCheckSendMessageFailedScript, "closed")); |
| } |
| IN_PROC_BROWSER_TEST_F(MediaRouterIntegrationBrowserTest, |
| MANUAL_Fail_NoProvider) { |
| SetTestData(FILE_PATH_LITERAL("no_provider.json")); |
| - OpenTestPage(FILE_PATH_LITERAL("basic_test.html")); |
| - content::WebContents* web_contents = |
| - browser()->tab_strip_model()->GetActiveWebContents(); |
| - ASSERT_TRUE(web_contents); |
| - ExecuteJavaScriptAPI(web_contents, kWaitDeviceScript); |
| - StartSession(web_contents); |
| - WaitUntilSinkDiscoveredOnUI(); |
| - ChooseSink(web_contents, kTestSinkName); |
| + WebContents* web_contents = StartSessionWithTestPageAndChooseSink(false); |
| CheckStartFailed(web_contents, "UnknownError", |
| - "No provider supports createRoute with source"); |
| + "No provider supports createRoute with source"); |
| } |
| IN_PROC_BROWSER_TEST_F(MediaRouterIntegrationBrowserTest, |
| MANUAL_Fail_CreateRoute) { |
| SetTestData(FILE_PATH_LITERAL("fail_create_route.json")); |
| - OpenTestPage(FILE_PATH_LITERAL("basic_test.html")); |
| - content::WebContents* web_contents = |
| - browser()->tab_strip_model()->GetActiveWebContents(); |
| - ASSERT_TRUE(web_contents); |
| - ExecuteJavaScriptAPI(web_contents, kWaitDeviceScript); |
| - StartSession(web_contents); |
| - WaitUntilSinkDiscoveredOnUI(); |
| - ChooseSink(web_contents, kTestSinkName); |
| + WebContents* web_contents = StartSessionWithTestPageAndChooseSink(false); |
| CheckStartFailed(web_contents, "UnknownError", "Unknown sink"); |
| } |
| IN_PROC_BROWSER_TEST_F(MediaRouterIntegrationBrowserTest, |
| MANUAL_ReconnectSession) { |
| - OpenTestPage(FILE_PATH_LITERAL("basic_test.html")); |
| - content::WebContents* web_contents = |
| - browser()->tab_strip_model()->GetActiveWebContents(); |
| - ASSERT_TRUE(web_contents); |
| - ExecuteJavaScriptAPI(web_contents, kWaitDeviceScript); |
| - StartSession(web_contents); |
| - WaitUntilSinkDiscoveredOnUI(); |
| - ChooseSink(web_contents, kTestSinkName); |
| - ExecuteJavaScriptAPI(web_contents, kCheckSessionScript); |
| - std::string session_id(GetStartedConnectionId(web_contents)); |
| - |
| - // Wait a few seconds for MediaRouter to receive updates containing the |
| - // created route. |
| - Wait(base::TimeDelta::FromSeconds(3)); |
| - |
| - OpenTestPageInNewTab(FILE_PATH_LITERAL("basic_test.html")); |
| - content::WebContents* new_web_contents = |
| - browser()->tab_strip_model()->GetActiveWebContents(); |
| - ASSERT_TRUE(new_web_contents); |
| - ASSERT_NE(web_contents, new_web_contents); |
| - ExecuteJavaScriptAPI( |
| - new_web_contents, |
| - base::StringPrintf("reconnectSession('%s');", session_id.c_str())); |
| - std::string reconnected_session_id; |
| - ASSERT_TRUE(content::ExecuteScriptAndExtractString( |
| - new_web_contents, |
| - "window.domAutomationController.send(reconnectedSession.id)", |
| - &reconnected_session_id)); |
| - ASSERT_EQ(session_id, reconnected_session_id); |
| + RunReconnectSessionTest(); |
| } |
| IN_PROC_BROWSER_TEST_F(MediaRouterIntegrationBrowserTest, |
| MANUAL_Fail_ReconnectSession) { |
| - OpenTestPage(FILE_PATH_LITERAL("basic_test.html")); |
| - content::WebContents* web_contents = |
| - browser()->tab_strip_model()->GetActiveWebContents(); |
| - ASSERT_TRUE(web_contents); |
| - ExecuteJavaScriptAPI(web_contents, kWaitDeviceScript); |
| - content::TestNavigationObserver test_navigation_observer(web_contents, 1); |
| - StartSession(web_contents); |
| - WaitUntilSinkDiscoveredOnUI(); |
| - ChooseSink(web_contents, kTestSinkName); |
| - ExecuteJavaScriptAPI(web_contents, kCheckSessionScript); |
| + WebContents* web_contents = StartSessionWithTestPageAndChooseSink(true); |
| std::string session_id(GetStartedConnectionId(web_contents)); |
| // Wait a few seconds for MediaRouter to receive updates containing the |
| @@ -573,9 +578,8 @@ IN_PROC_BROWSER_TEST_F(MediaRouterIntegrationBrowserTest, |
| Wait(base::TimeDelta::FromSeconds(3)); |
| SetTestData(FILE_PATH_LITERAL("fail_reconnect_session.json")); |
| - OpenTestPage(FILE_PATH_LITERAL("fail_reconnect_session.html")); |
| - content::WebContents* new_web_contents = |
| - browser()->tab_strip_model()->GetActiveWebContents(); |
| + OpenTestPageInNewTab(FILE_PATH_LITERAL("fail_reconnect_session.html")); |
| + WebContents* new_web_contents = GetActiveWebContents(); |
| ASSERT_TRUE(new_web_contents); |
| ExecuteJavaScriptAPI( |
| new_web_contents, |
| @@ -585,54 +589,53 @@ IN_PROC_BROWSER_TEST_F(MediaRouterIntegrationBrowserTest, |
| IN_PROC_BROWSER_TEST_F(MediaRouterIntegrationBrowserTest, |
| MANUAL_Fail_StartCancelled) { |
| - OpenTestPage(FILE_PATH_LITERAL("basic_test.html")); |
| - content::WebContents* web_contents = |
| - browser()->tab_strip_model()->GetActiveWebContents(); |
| - ASSERT_TRUE(web_contents); |
| - ExecuteJavaScriptAPI(web_contents, kWaitDeviceScript); |
| - content::TestNavigationObserver test_navigation_observer(web_contents, 1); |
| - StartSession(web_contents); |
| - |
| - MediaRouterDialogControllerImpl* controller = |
| - MediaRouterDialogControllerImpl::GetOrCreateForWebContents(web_contents); |
| - EXPECT_TRUE(controller->IsShowingMediaRouterDialog()); |
| - controller->HideMediaRouterDialog(); |
| + WebContents* web_contents = StartSessionWithTestPage(true); |
| + HideMediaRouterDialog(web_contents, false); |
| CheckStartFailed(web_contents, "NotAllowedError", "Dialog closed."); |
| } |
| IN_PROC_BROWSER_TEST_F(MediaRouterIntegrationBrowserTest, |
| MANUAL_Fail_StartCancelledNoSinks) { |
| SetTestData(FILE_PATH_LITERAL("no_sinks.json")); |
| - OpenTestPage(FILE_PATH_LITERAL("basic_test.html")); |
| - content::WebContents* web_contents = |
| - browser()->tab_strip_model()->GetActiveWebContents(); |
| - ASSERT_TRUE(web_contents); |
| - content::TestNavigationObserver test_navigation_observer(web_contents, 1); |
| - StartSession(web_contents); |
| - |
| - MediaRouterDialogControllerImpl* controller = |
| - MediaRouterDialogControllerImpl::GetOrCreateForWebContents(web_contents); |
| - EXPECT_TRUE(controller->IsShowingMediaRouterDialog()); |
| - controller->HideMediaRouterDialog(); |
| + WebContents* web_contents = StartSessionWithTestPage(false); |
| + HideMediaRouterDialog(web_contents, false); |
| CheckStartFailed(web_contents, "NotFoundError", "No screens found."); |
| } |
| IN_PROC_BROWSER_TEST_F(MediaRouterIntegrationBrowserTest, |
| MANUAL_Fail_StartCancelledNoSupportedSinks) { |
| SetTestData(FILE_PATH_LITERAL("no_supported_sinks.json")); |
| - OpenTestPage(FILE_PATH_LITERAL("basic_test.html")); |
| - content::WebContents* web_contents = |
| - browser()->tab_strip_model()->GetActiveWebContents(); |
| - ASSERT_TRUE(web_contents); |
| - content::TestNavigationObserver test_navigation_observer(web_contents, 1); |
| - StartSession(web_contents); |
| - |
| - MediaRouterDialogControllerImpl* controller = |
| - MediaRouterDialogControllerImpl::GetOrCreateForWebContents(web_contents); |
| - EXPECT_TRUE(controller->IsShowingMediaRouterDialog()); |
| - WaitUntilSinkDiscoveredOnUI(); |
| - controller->HideMediaRouterDialog(); |
| + WebContents* web_contents = StartSessionWithTestPage(false); |
| + HideMediaRouterDialog(web_contents, true); |
| CheckStartFailed(web_contents, "NotFoundError", "No screens found."); |
| } |
| +void MediaRouterIntegrationIncognitoBrowserTest::InstallAndEnableMRExtension() { |
| + const extensions::Extension* extension = |
| + LoadExtensionIncognito(extension_unpacked_); |
| + extension_id_ = extension->id(); |
| +} |
| + |
| +void MediaRouterIntegrationIncognitoBrowserTest::UninstallMRExtension() { |
| + if (!extension_id_.empty()) { |
| + UninstallExtension(extension_id_); |
| + } |
| +} |
| + |
| +Browser* MediaRouterIntegrationIncognitoBrowserTest::browser() { |
| + if (!browser_) |
| + browser_ = CreateIncognitoBrowser(); |
| + return browser_; |
| +} |
| + |
| +IN_PROC_BROWSER_TEST_F(MediaRouterIntegrationIncognitoBrowserTest, |
| + MANUAL_Basic) { |
| + RunBasicTest(); |
| +} |
| + |
| +IN_PROC_BROWSER_TEST_F(MediaRouterIntegrationIncognitoBrowserTest, |
| + MANUAL_ReconnectSession) { |
| + RunReconnectSessionTest(); |
| +} |
| + |
| } // namespace media_router |