Commit 931b6ae7 authored by Takumi Fujimoto's avatar Takumi Fujimoto Committed by Commit Bot

[Harmony Cast Dialog] Show domain as the status text for Hangout sinks

For Hangout sinks in the AVAILABLE state, show its domain as the status
text in the sink list.
Screenshot:
https://drive.google.com/open?id=1pOk8gsxW5MH8sUFJeg1WMLFanMtclPKv

Bug: 891087
Change-Id: I7faf94e4d89a03da8487264aae2aa73e95debb7c
Reviewed-on: https://chromium-review.googlesource.com/1258245
Commit-Queue: Takumi Fujimoto <takumif@chromium.org>
Reviewed-by: default avatarmark a. foltz <mfoltz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#596307}
parent f823e9e7
......@@ -147,6 +147,10 @@ UIMediaSink MediaRouterViewsUI::ConvertToUISink(
: UIMediaSinkState::AVAILABLE;
ui_sink.cast_modes = sink.cast_modes;
}
if (ui_sink.icon_type == SinkIconType::HANGOUT &&
ui_sink.state == UIMediaSinkState::AVAILABLE && sink.sink.domain()) {
ui_sink.status_text = base::UTF8ToUTF16(*sink.sink.domain());
}
if (issue && IssueMatches(*issue, ui_sink))
ui_sink.issue = issue;
return ui_sink;
......
......@@ -37,6 +37,7 @@ class MediaRouterViewsUI : public MediaRouterUIBase,
FRIEND_TEST_ALL_PREFIXES(MediaRouterViewsUITest, ConnectingState);
FRIEND_TEST_ALL_PREFIXES(MediaRouterViewsUITest, DisconnectingState);
FRIEND_TEST_ALL_PREFIXES(MediaRouterViewsUITest, AddAndRemoveIssue);
FRIEND_TEST_ALL_PREFIXES(MediaRouterViewsUITest, ShowDomainForHangouts);
// MediaRouterUIBase:
void InitCommon(content::WebContents* initiator) override;
......
......@@ -279,4 +279,39 @@ TEST_F(MediaRouterViewsUITest, AddAndRemoveIssue) {
ui_->RemoveObserver(&observer);
}
TEST_F(MediaRouterViewsUITest, ShowDomainForHangouts) {
const std::string domain1 = "domain1.com";
const std::string domain2 = "domain2.com";
MediaSinkWithCastModes available_hangout(
MediaSink("sink1", "Hangout 1", SinkIconType::HANGOUT));
MediaSinkWithCastModes connected_hangout(
MediaSink("sink2", "Hangout 2", SinkIconType::HANGOUT));
available_hangout.sink.set_domain(domain1);
connected_hangout.sink.set_domain(domain2);
available_hangout.cast_modes = {MediaCastMode::TAB_MIRROR};
connected_hangout.cast_modes = {MediaCastMode::TAB_MIRROR};
MockControllerObserver observer;
ui_->AddObserver(&observer);
const std::string route_description = "route 1";
MediaRoute route(kRouteId, MediaSource(kSourceId), "sink2", route_description,
true, true);
ui_->OnRoutesUpdated({route}, {});
// The domain should be used as the status text only if the sink is available.
// If the sink has a route, the route description is used.
EXPECT_CALL(observer, OnModelUpdated(_))
.WillOnce(WithArg<0>([&](const CastDialogModel& model) {
EXPECT_EQ(2u, model.media_sinks().size());
EXPECT_EQ(model.media_sinks()[0].id, available_hangout.sink.id());
EXPECT_EQ(base::UTF8ToUTF16(domain1),
model.media_sinks()[0].status_text);
EXPECT_EQ(model.media_sinks()[1].id, connected_hangout.sink.id());
EXPECT_EQ(base::UTF8ToUTF16(route_description),
model.media_sinks()[1].status_text);
}));
ui_->OnResultsUpdated({available_hangout, connected_hangout});
ui_->RemoveObserver(&observer);
}
} // namespace media_router
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