| Index: chrome/browser/ui/webui/media_router/media_router_ui_unittest.cc
|
| diff --git a/chrome/browser/ui/webui/media_router/media_router_ui_unittest.cc b/chrome/browser/ui/webui/media_router/media_router_ui_unittest.cc
|
| index 1396d79000130fe2d5aa9ed7575c5988c70fe747..609d120b588a941739930ebd3bc4f0061f6ff833 100644
|
| --- a/chrome/browser/ui/webui/media_router/media_router_ui_unittest.cc
|
| +++ b/chrome/browser/ui/webui/media_router/media_router_ui_unittest.cc
|
| @@ -49,10 +49,19 @@ class MockMediaRouterWebUIMessageHandler
|
| ~MockMediaRouterWebUIMessageHandler() override {}
|
|
|
| MOCK_METHOD1(UpdateMediaRouteStatus, void(const MediaStatus& status));
|
| + MOCK_METHOD3(UpdateCastModes,
|
| + void(const CastModeSet& cast_modes,
|
| + const std::string& source_host,
|
| + base::Optional<MediaCastMode> forced_cast_mode));
|
| };
|
|
|
| class PresentationRequestCallbacks {
|
| public:
|
| + PresentationRequestCallbacks()
|
| + : expected_error_(content::PresentationError(
|
| + content::PresentationErrorType::PRESENTATION_ERROR_UNKNOWN,
|
| + "")) {}
|
| +
|
| explicit PresentationRequestCallbacks(
|
| const content::PresentationError& expected_error)
|
| : expected_error_(expected_error) {}
|
| @@ -503,8 +512,9 @@ TEST_F(MediaRouterUITest, NotFoundErrorOnCloseWithNoSinks) {
|
| "No screens found.");
|
| PresentationRequestCallbacks request_callbacks(expected_error);
|
| create_session_request_.reset(new CreatePresentationConnectionRequest(
|
| - RenderFrameHostId(0, 0), {GURL("http://google.com/presentation"),
|
| - GURL("http://google.com/presentation2")},
|
| + RenderFrameHostId(0, 0),
|
| + {GURL("http://google.com/presentation"),
|
| + GURL("http://google.com/presentation2")},
|
| url::Origin(GURL("http://google.com")),
|
| base::Bind(&PresentationRequestCallbacks::Success,
|
| base::Unretained(&request_callbacks)),
|
| @@ -683,4 +693,56 @@ TEST_F(MediaRouterUITest, SendInitialMediaStatusUpdate) {
|
| media_router_ui_->OnMediaControllerUIAvailable(route_id);
|
| }
|
|
|
| +TEST_F(MediaRouterUITest, SetsForcedCastModeWithPresentationURLs) {
|
| + content::PresentationError expected_error(
|
| + content::PresentationErrorType::PRESENTATION_ERROR_NO_AVAILABLE_SCREENS,
|
| + "No screens found.");
|
| + PresentationRequestCallbacks request_callbacks(expected_error);
|
| + create_session_request_.reset(new CreatePresentationConnectionRequest(
|
| + RenderFrameHostId(0, 0),
|
| + {GURL("http://google.com/presentation"),
|
| + GURL("http://google.com/presentation2")},
|
| + url::Origin(GURL("http://google.com")),
|
| + base::Bind(&PresentationRequestCallbacks::Success,
|
| + base::Unretained(&request_callbacks)),
|
| + base::Bind(&PresentationRequestCallbacks::Error,
|
| + base::Unretained(&request_callbacks))));
|
| +
|
| + SessionTabHelper::CreateForWebContents(web_contents());
|
| + web_ui_contents_.reset(
|
| + WebContents::Create(WebContents::CreateParams(profile())));
|
| + web_ui_.set_web_contents(web_ui_contents_.get());
|
| + media_router_ui_ = base::MakeUnique<MediaRouterUI>(&web_ui_);
|
| + message_handler_ = base::MakeUnique<MockMediaRouterWebUIMessageHandler>(
|
| + media_router_ui_.get());
|
| + message_handler_->SetWebUIForTest(&web_ui_);
|
| + EXPECT_CALL(mock_router_, RegisterMediaSinksObserver(_))
|
| + .WillRepeatedly(Invoke([this](MediaSinksObserver* observer) {
|
| + this->media_sinks_observers_.push_back(observer);
|
| + return true;
|
| + }));
|
| + EXPECT_CALL(mock_router_, RegisterMediaRoutesObserver(_)).Times(AnyNumber());
|
| + // For some reason we push two sets of cast modes to the dialog, even when
|
| + // initializing the dialog with a presentation request. The WebUI can handle
|
| + // the forced mode that is not in the initial cast mode set, but is this a
|
| + // bug?
|
| + CastModeSet expected_modes(
|
| + {MediaCastMode::TAB_MIRROR, MediaCastMode::DESKTOP_MIRROR});
|
| + EXPECT_CALL(
|
| + *message_handler_,
|
| + UpdateCastModes(expected_modes, "",
|
| + base::Optional<MediaCastMode>(MediaCastMode::DEFAULT)));
|
| + expected_modes.insert(MediaCastMode::DEFAULT);
|
| + EXPECT_CALL(
|
| + *message_handler_,
|
| + UpdateCastModes(expected_modes, "google.com",
|
| + base::Optional<MediaCastMode>(MediaCastMode::DEFAULT)));
|
| + media_router_ui_->UIInitialized();
|
| + media_router_ui_->InitForTest(&mock_router_, web_contents(),
|
| + message_handler_.get(),
|
| + std::move(create_session_request_));
|
| + // |media_router_ui_| takes ownership of |request_callbacks|.
|
| + media_router_ui_.reset();
|
| +}
|
| +
|
| } // namespace media_router
|
|
|