1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/media_router/cast_modes_with_media_sources.h"
6
7 #include "components/media_router/common/media_sink.h"
8 #include "components/media_router/common/media_source.h"
9 #include "testing/gmock/include/gmock/gmock.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11 #include "url/gurl.h"
12
13 namespace media_router {
14
TEST(MediaRouterCastModesWithMediaSourcesTest,AddAndRemoveSources)15 TEST(MediaRouterCastModesWithMediaSourcesTest, AddAndRemoveSources) {
16 const MediaSource presentationSource1(MediaSource::ForPresentationUrl(
17 GURL("http://www.example.com/presentation.html")));
18 const MediaSource presentationSource2(MediaSource::ForPresentationUrl(
19 GURL("http://www.example.net/presentation.html")));
20 const MediaSource tabSourceA(MediaSource::ForTab(123));
21 const CastModeSet castModeSetEmpty;
22 const CastModeSet castModeSetPresentation({MediaCastMode::PRESENTATION});
23 const CastModeSet castModeSetTab({MediaCastMode::TAB_MIRROR});
24 const CastModeSet castModeSetPresentationAndTab(
25 {MediaCastMode::PRESENTATION, MediaCastMode::TAB_MIRROR});
26
27 CastModesWithMediaSources sources(
28 MediaSink("sinkId", "name", SinkIconType::GENERIC));
29 EXPECT_TRUE(sources.IsEmpty());
30 EXPECT_EQ(sources.GetCastModes(), castModeSetEmpty);
31
32 // After the below addition, |sources| should contain:
33 // [Presentation: 1]
34 sources.AddSource(MediaCastMode::PRESENTATION, presentationSource1);
35 EXPECT_TRUE(
36 sources.HasSource(MediaCastMode::PRESENTATION, presentationSource1));
37 EXPECT_FALSE(
38 sources.HasSource(MediaCastMode::PRESENTATION, presentationSource2));
39 EXPECT_FALSE(
40 sources.HasSource(MediaCastMode::TAB_MIRROR, presentationSource1));
41 EXPECT_FALSE(sources.IsEmpty());
42 EXPECT_EQ(sources.GetCastModes(), castModeSetPresentation);
43
44 // Trying to remove non-existing sources should be no-op.
45 sources.RemoveSource(MediaCastMode::PRESENTATION, presentationSource2);
46 sources.RemoveSource(MediaCastMode::TAB_MIRROR, presentationSource1);
47 sources.RemoveSource(MediaCastMode::TAB_MIRROR, tabSourceA);
48 EXPECT_TRUE(
49 sources.HasSource(MediaCastMode::PRESENTATION, presentationSource1));
50 EXPECT_EQ(sources.GetCastModes(), castModeSetPresentation);
51
52 // [Presentation: 1; Tab: A]
53 sources.AddSource(MediaCastMode::TAB_MIRROR, tabSourceA);
54 EXPECT_TRUE(
55 sources.HasSource(MediaCastMode::PRESENTATION, presentationSource1));
56 EXPECT_TRUE(sources.HasSource(MediaCastMode::TAB_MIRROR, tabSourceA));
57 EXPECT_EQ(sources.GetCastModes(), castModeSetPresentationAndTab);
58
59 // [Presentation: 1,2; Tab: A]
60 sources.AddSource(MediaCastMode::PRESENTATION, presentationSource2);
61 EXPECT_TRUE(
62 sources.HasSource(MediaCastMode::PRESENTATION, presentationSource2));
63 EXPECT_EQ(sources.GetCastModes(), castModeSetPresentationAndTab);
64
65 // [Presentation: 2; Tab: A]
66 sources.RemoveSource(MediaCastMode::PRESENTATION, presentationSource1);
67 EXPECT_FALSE(
68 sources.HasSource(MediaCastMode::PRESENTATION, presentationSource1));
69 EXPECT_TRUE(
70 sources.HasSource(MediaCastMode::PRESENTATION, presentationSource2));
71 EXPECT_EQ(sources.GetCastModes(), castModeSetPresentationAndTab);
72
73 // [Tab: A]
74 sources.RemoveSource(MediaCastMode::PRESENTATION, presentationSource2);
75 EXPECT_FALSE(
76 sources.HasSource(MediaCastMode::PRESENTATION, presentationSource1));
77 EXPECT_FALSE(sources.IsEmpty());
78 EXPECT_EQ(sources.GetCastModes(), castModeSetTab);
79
80 // []
81 sources.RemoveSource(MediaCastMode::TAB_MIRROR, tabSourceA);
82 EXPECT_FALSE(
83 sources.HasSource(MediaCastMode::PRESENTATION, presentationSource1));
84 EXPECT_FALSE(
85 sources.HasSource(MediaCastMode::PRESENTATION, presentationSource2));
86 EXPECT_FALSE(sources.HasSource(MediaCastMode::TAB_MIRROR, tabSourceA));
87 EXPECT_TRUE(sources.IsEmpty());
88 EXPECT_EQ(sources.GetCastModes(), castModeSetEmpty);
89 }
90
91 } // namespace media_router
92