Commit c79c4487 authored by Takumi Fujimoto's avatar Takumi Fujimoto Committed by Commit Bot

Filter out pseudo sink from Harmony Cast Dialog

Make MRViewsUI filter out pseudo sink, since it is not used in the
Views dialog and should not show up on the sink list.

Bug: 842778
Change-Id: Icb7b5197bfcf15b7abd14389025e16f2d6391f4e
Reviewed-on: https://chromium-review.googlesource.com/1070494Reviewed-by: default avatarDerek Cheng <imcheng@chromium.org>
Commit-Queue: Takumi Fujimoto <takumif@chromium.org>
Cr-Commit-Position: refs/heads/master@{#563034}
parent 26b06001
......@@ -108,7 +108,7 @@ class MediaRouterUIBase : public QueryResultManager::Observer,
// Returns a subset of |sinks_| that should be listed in the dialog. This
// excludes the wired display that the initiator WebContents is on.
std::vector<MediaSinkWithCastModes> GetEnabledSinks() const;
virtual std::vector<MediaSinkWithCastModes> GetEnabledSinks() const;
// Returns a source name that can be shown in the dialog.
std::string GetTruncatedPresentationRequestSourceName() const;
......
......@@ -5,6 +5,7 @@
#include "chrome/browser/ui/views/media_router/media_router_views_ui.h"
#include "base/stl_util.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/ui/media_router/media_sink_with_cast_modes.h"
#include "chrome/browser/ui/media_router/ui_media_sink.h"
......@@ -69,6 +70,19 @@ void MediaRouterViewsUI::StopCasting(const std::string& route_id) {
TerminateRoute(route_id);
}
std::vector<MediaSinkWithCastModes> MediaRouterViewsUI::GetEnabledSinks()
const {
std::vector<MediaSinkWithCastModes> sinks =
MediaRouterUIBase::GetEnabledSinks();
// Remove the pseudo-sink, since it's only used in the WebUI dialog.
// TODO(takumif): Remove this once we've removed pseudo-sink from Cloud MRP.
base::EraseIf(sinks, [](const MediaSinkWithCastModes& sink) {
return base::StartsWith(sink.sink.id(),
"pseudo:", base::CompareCase::SENSITIVE);
});
return sinks;
}
void MediaRouterViewsUI::OnRoutesUpdated(
const std::vector<MediaRoute>& routes,
const std::vector<MediaRoute::Id>& joinable_route_ids) {
......
......@@ -27,8 +27,12 @@ class MediaRouterViewsUI : public MediaRouterUIBase,
MediaCastMode cast_mode) override;
void StopCasting(const std::string& route_id) override;
// MediaRouterUIBase:
std::vector<MediaSinkWithCastModes> GetEnabledSinks() const override;
private:
FRIEND_TEST_ALL_PREFIXES(MediaRouterViewsUITest, NotifyObserver);
FRIEND_TEST_ALL_PREFIXES(MediaRouterViewsUITest, RemovePseudoSink);
// MediaRouterUIBase:
void OnRoutesUpdated(
......
......@@ -24,6 +24,7 @@ namespace media_router {
namespace {
constexpr char kPseudoSinkId[] = "pseudo:sink";
constexpr char kRouteId[] = "route1";
constexpr char kSinkId[] = "sink1";
constexpr char kSinkName[] = "sink name";
......@@ -138,4 +139,24 @@ TEST_F(MediaRouterViewsUITest, StopCasting) {
ui_->StopCasting(kRouteId);
}
TEST_F(MediaRouterViewsUITest, RemovePseudoSink) {
MockControllerObserver observer;
ui_->AddObserver(&observer);
MediaSink sink(kSinkId, kSinkName, SinkIconType::CAST_AUDIO);
MediaSinkWithCastModes sink_with_cast_modes(sink);
sink_with_cast_modes.cast_modes = {MediaCastMode::TAB_MIRROR};
MediaSink pseudo_sink(kPseudoSinkId, kSinkName, SinkIconType::MEETING);
MediaSinkWithCastModes pseudo_sink_with_cast_modes(pseudo_sink);
pseudo_sink_with_cast_modes.cast_modes = {MediaCastMode::TAB_MIRROR};
EXPECT_CALL(observer, OnModelUpdated(_))
.WillOnce(WithArg<0>(Invoke([&sink](const CastDialogModel& model) {
EXPECT_EQ(1u, model.media_sinks.size());
EXPECT_EQ(sink.id(), model.media_sinks[0].id);
})));
ui_->OnResultsUpdated({sink_with_cast_modes, pseudo_sink_with_cast_modes});
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