Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/containers/hash_tables.h" | 6 #include "base/containers/hash_tables.h" |
| 7 #include "base/json/json_writer.h" | 7 #include "base/json/json_writer.h" |
| 8 #include "base/macros.h" | 8 #include "base/macros.h" |
| 9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
| 10 #include "chrome/browser/media/router/media_sinks_observer.h" | 10 #include "chrome/browser/media/router/media_sinks_observer.h" |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 33 }; | 33 }; |
| 34 | 34 |
| 35 } // namespace | 35 } // namespace |
| 36 | 36 |
| 37 class QueryResultManagerTest : public ::testing::Test { | 37 class QueryResultManagerTest : public ::testing::Test { |
| 38 public: | 38 public: |
| 39 QueryResultManagerTest() | 39 QueryResultManagerTest() |
| 40 : mock_router_(), query_result_manager_(&mock_router_) { | 40 : mock_router_(), query_result_manager_(&mock_router_) { |
| 41 } | 41 } |
| 42 | 42 |
| 43 void DiscoverSinks(MediaCastMode cast_mode, const MediaSource& source) { | 43 void DiscoverSinks(MediaCastMode cast_mode, const MediaSource& source, |
| 44 const GURL& origin) { | |
| 44 EXPECT_CALL(mock_router_, RegisterMediaSinksObserver(_)) | 45 EXPECT_CALL(mock_router_, RegisterMediaSinksObserver(_)) |
| 45 .WillOnce(Return(true)); | 46 .WillOnce(Return(true)); |
| 46 EXPECT_CALL(mock_observer_, OnResultsUpdated(_)).Times(1); | 47 EXPECT_CALL(mock_observer_, OnResultsUpdated(_)).Times(1); |
| 47 query_result_manager_.StartSinksQuery(cast_mode, source); | 48 query_result_manager_.StartSinksQuery(cast_mode, source, origin); |
| 48 } | 49 } |
| 49 | 50 |
| 50 MockMediaRouter mock_router_; | 51 MockMediaRouter mock_router_; |
| 51 QueryResultManager query_result_manager_; | 52 QueryResultManager query_result_manager_; |
| 52 MockObserver mock_observer_; | 53 MockObserver mock_observer_; |
| 53 | 54 |
| 54 private: | 55 private: |
| 55 DISALLOW_COPY_AND_ASSIGN(QueryResultManagerTest); | 56 DISALLOW_COPY_AND_ASSIGN(QueryResultManagerTest); |
| 56 }; | 57 }; |
| 57 | 58 |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 88 TEST_F(QueryResultManagerTest, StartStopSinksQuery) { | 89 TEST_F(QueryResultManagerTest, StartStopSinksQuery) { |
| 89 CastModeSet cast_modes; | 90 CastModeSet cast_modes; |
| 90 | 91 |
| 91 query_result_manager_.GetSupportedCastModes(&cast_modes); | 92 query_result_manager_.GetSupportedCastModes(&cast_modes); |
| 92 EXPECT_TRUE(cast_modes.empty()); | 93 EXPECT_TRUE(cast_modes.empty()); |
| 93 MediaSource actual_source = | 94 MediaSource actual_source = |
| 94 query_result_manager_.GetSourceForCastMode(MediaCastMode::DEFAULT); | 95 query_result_manager_.GetSourceForCastMode(MediaCastMode::DEFAULT); |
| 95 EXPECT_TRUE(actual_source.Empty()); | 96 EXPECT_TRUE(actual_source.Empty()); |
| 96 | 97 |
| 97 MediaSource source(MediaSourceForPresentationUrl("http://fooUrl")); | 98 MediaSource source(MediaSourceForPresentationUrl("http://fooUrl")); |
| 99 GURL origin("http://fooUrl"); | |
|
mark a. foltz
2016/02/17 21:50:51
Nit: Technically this is a valid URL but can we us
matt.boetger
2016/02/18 00:50:33
Done.
| |
| 98 EXPECT_CALL(mock_router_, RegisterMediaSinksObserver(_)) | 100 EXPECT_CALL(mock_router_, RegisterMediaSinksObserver(_)) |
| 99 .WillOnce(Return(true)); | 101 .WillOnce(Return(true)); |
| 100 query_result_manager_.StartSinksQuery(MediaCastMode::DEFAULT, source); | 102 query_result_manager_.StartSinksQuery(MediaCastMode::DEFAULT, source, origin); |
| 101 | 103 |
| 102 query_result_manager_.GetSupportedCastModes(&cast_modes); | 104 query_result_manager_.GetSupportedCastModes(&cast_modes); |
| 103 EXPECT_EQ(1u, cast_modes.size()); | 105 EXPECT_EQ(1u, cast_modes.size()); |
| 104 EXPECT_TRUE(ContainsKey(cast_modes, MediaCastMode::DEFAULT)); | 106 EXPECT_TRUE(ContainsKey(cast_modes, MediaCastMode::DEFAULT)); |
| 105 actual_source = query_result_manager_.GetSourceForCastMode( | 107 actual_source = query_result_manager_.GetSourceForCastMode( |
| 106 MediaCastMode::DEFAULT); | 108 MediaCastMode::DEFAULT); |
| 107 EXPECT_TRUE(source.Equals(actual_source)); | 109 EXPECT_TRUE(source.Equals(actual_source)); |
| 108 | 110 |
| 109 // Register a different source for the same cast mode. | 111 // Register a different source for the same cast mode. |
| 110 MediaSource another_source(MediaSourceForPresentationUrl("http://barUrl")); | 112 MediaSource another_source(MediaSourceForPresentationUrl("http://barUrl")); |
| 113 GURL another_origin("http://barUrl"); | |
|
mark a. foltz
2016/02/17 21:50:51
Ditto
matt.boetger
2016/02/18 00:50:33
Done.
| |
| 111 EXPECT_CALL(mock_router_, UnregisterMediaSinksObserver(_)).Times(1); | 114 EXPECT_CALL(mock_router_, UnregisterMediaSinksObserver(_)).Times(1); |
| 112 EXPECT_CALL(mock_router_, RegisterMediaSinksObserver(_)) | 115 EXPECT_CALL(mock_router_, RegisterMediaSinksObserver(_)) |
| 113 .WillOnce(Return(true)); | 116 .WillOnce(Return(true)); |
| 114 query_result_manager_.StartSinksQuery( | 117 query_result_manager_.StartSinksQuery( |
| 115 MediaCastMode::DEFAULT, another_source); | 118 MediaCastMode::DEFAULT, another_source, another_origin); |
| 116 | 119 |
| 117 query_result_manager_.GetSupportedCastModes(&cast_modes); | 120 query_result_manager_.GetSupportedCastModes(&cast_modes); |
| 118 EXPECT_EQ(1u, cast_modes.size()); | 121 EXPECT_EQ(1u, cast_modes.size()); |
| 119 EXPECT_TRUE(ContainsKey(cast_modes, MediaCastMode::DEFAULT)); | 122 EXPECT_TRUE(ContainsKey(cast_modes, MediaCastMode::DEFAULT)); |
| 120 actual_source = query_result_manager_.GetSourceForCastMode( | 123 actual_source = query_result_manager_.GetSourceForCastMode( |
| 121 MediaCastMode::DEFAULT); | 124 MediaCastMode::DEFAULT); |
| 122 EXPECT_TRUE(another_source.Equals(actual_source)); | 125 EXPECT_TRUE(another_source.Equals(actual_source)); |
| 123 | 126 |
| 124 EXPECT_CALL(mock_router_, UnregisterMediaSinksObserver(_)).Times(1); | 127 EXPECT_CALL(mock_router_, UnregisterMediaSinksObserver(_)).Times(1); |
| 125 query_result_manager_.StopSinksQuery(MediaCastMode::DEFAULT); | 128 query_result_manager_.StopSinksQuery(MediaCastMode::DEFAULT); |
| 126 | 129 |
| 127 query_result_manager_.GetSupportedCastModes(&cast_modes); | 130 query_result_manager_.GetSupportedCastModes(&cast_modes); |
| 128 EXPECT_TRUE(cast_modes.empty()); | 131 EXPECT_TRUE(cast_modes.empty()); |
| 129 actual_source = query_result_manager_.GetSourceForCastMode( | 132 actual_source = query_result_manager_.GetSourceForCastMode( |
| 130 MediaCastMode::DEFAULT); | 133 MediaCastMode::DEFAULT); |
| 131 EXPECT_TRUE(actual_source.Empty()); | 134 EXPECT_TRUE(actual_source.Empty()); |
| 132 } | 135 } |
| 133 | 136 |
| 134 TEST_F(QueryResultManagerTest, MultipleQueries) { | 137 TEST_F(QueryResultManagerTest, MultipleQueries) { |
| 135 MediaSink sink1("sinkId1", "Sink 1", MediaSink::IconType::CAST); | 138 MediaSink sink1("sinkId1", "Sink 1", MediaSink::IconType::CAST); |
| 136 MediaSink sink2("sinkId2", "Sink 2", MediaSink::IconType::CAST); | 139 MediaSink sink2("sinkId2", "Sink 2", MediaSink::IconType::CAST); |
| 137 MediaSink sink3("sinkId3", "Sink 3", MediaSink::IconType::CAST); | 140 MediaSink sink3("sinkId3", "Sink 3", MediaSink::IconType::CAST); |
| 138 MediaSink sink4("sinkId4", "Sink 4", MediaSink::IconType::CAST); | 141 MediaSink sink4("sinkId4", "Sink 4", MediaSink::IconType::CAST); |
| 139 MediaSink sink5("sinkId5", "Sink 5", MediaSink::IconType::CAST); | 142 MediaSink sink5("sinkId5", "Sink 5", MediaSink::IconType::CAST); |
| 140 | 143 |
| 141 query_result_manager_.AddObserver(&mock_observer_); | 144 query_result_manager_.AddObserver(&mock_observer_); |
| 142 DiscoverSinks(MediaCastMode::DEFAULT, | 145 DiscoverSinks(MediaCastMode::DEFAULT, |
| 143 MediaSourceForPresentationUrl("http://barUrl")); | 146 MediaSourceForPresentationUrl("http://barUrl"), |
| 144 DiscoverSinks(MediaCastMode::TAB_MIRROR, MediaSourceForTab(123)); | 147 GURL("http://barUrl")); |
| 148 DiscoverSinks(MediaCastMode::TAB_MIRROR, | |
| 149 MediaSourceForTab(123), | |
| 150 GURL("http://barUrl")); | |
| 145 | 151 |
| 146 // Scenario (results in this order): | 152 // Scenario (results in this order): |
| 147 // Action: DEFAULT -> [1, 2, 3] | 153 // Action: DEFAULT -> [1, 2, 3] |
| 148 // Expected result: | 154 // Expected result: |
| 149 // Sinks: [1 -> {DEFAULT}, 2 -> {DEFAULT}, 3 -> {DEFAULT}] | 155 // Sinks: [1 -> {DEFAULT}, 2 -> {DEFAULT}, 3 -> {DEFAULT}] |
| 150 std::vector<MediaSinkWithCastModes> expected_sinks; | 156 std::vector<MediaSinkWithCastModes> expected_sinks; |
| 151 expected_sinks.push_back(MediaSinkWithCastModes(sink1)); | 157 expected_sinks.push_back(MediaSinkWithCastModes(sink1)); |
| 152 expected_sinks.back().cast_modes.insert(MediaCastMode::DEFAULT); | 158 expected_sinks.back().cast_modes.insert(MediaCastMode::DEFAULT); |
| 153 expected_sinks.push_back(MediaSinkWithCastModes(sink2)); | 159 expected_sinks.push_back(MediaSinkWithCastModes(sink2)); |
| 154 expected_sinks.back().cast_modes.insert(MediaCastMode::DEFAULT); | 160 expected_sinks.back().cast_modes.insert(MediaCastMode::DEFAULT); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 207 expected_sinks.push_back(MediaSinkWithCastModes(sink4)); | 213 expected_sinks.push_back(MediaSinkWithCastModes(sink4)); |
| 208 expected_sinks.back().cast_modes.insert(MediaCastMode::TAB_MIRROR); | 214 expected_sinks.back().cast_modes.insert(MediaCastMode::TAB_MIRROR); |
| 209 | 215 |
| 210 EXPECT_CALL(mock_router_, UnregisterMediaSinksObserver(_)).Times(1); | 216 EXPECT_CALL(mock_router_, UnregisterMediaSinksObserver(_)).Times(1); |
| 211 EXPECT_CALL(mock_router_, RegisterMediaSinksObserver(_)) | 217 EXPECT_CALL(mock_router_, RegisterMediaSinksObserver(_)) |
| 212 .WillOnce(Return(true)); | 218 .WillOnce(Return(true)); |
| 213 EXPECT_CALL(mock_observer_, | 219 EXPECT_CALL(mock_observer_, |
| 214 OnResultsUpdated(VectorEquals(expected_sinks))).Times(1); | 220 OnResultsUpdated(VectorEquals(expected_sinks))).Times(1); |
| 215 query_result_manager_.StartSinksQuery( | 221 query_result_manager_.StartSinksQuery( |
| 216 MediaCastMode::DEFAULT, | 222 MediaCastMode::DEFAULT, |
| 217 MediaSourceForPresentationUrl("http://bazurl.com")); | 223 MediaSourceForPresentationUrl("http://bazurl.com"), |
| 224 GURL("http://bazurl.com")); | |
| 218 | 225 |
| 219 // Action: Remove TAB_MIRROR observer | 226 // Action: Remove TAB_MIRROR observer |
| 220 // Expected result: | 227 // Expected result: |
| 221 // Sinks: [] | 228 // Sinks: [] |
| 222 expected_sinks.clear(); | 229 expected_sinks.clear(); |
| 223 EXPECT_CALL(mock_observer_, | 230 EXPECT_CALL(mock_observer_, |
| 224 OnResultsUpdated(VectorEquals(expected_sinks))).Times(1); | 231 OnResultsUpdated(VectorEquals(expected_sinks))).Times(1); |
| 225 EXPECT_CALL(mock_router_, UnregisterMediaSinksObserver(_)).Times(1); | 232 EXPECT_CALL(mock_router_, UnregisterMediaSinksObserver(_)).Times(1); |
| 226 query_result_manager_.StopSinksQuery(MediaCastMode::TAB_MIRROR); | 233 query_result_manager_.StopSinksQuery(MediaCastMode::TAB_MIRROR); |
| 227 | 234 |
| 228 // Remaining observers: DEFAULT observer, which will be removed on destruction | 235 // Remaining observers: DEFAULT observer, which will be removed on destruction |
| 229 EXPECT_CALL(mock_router_, UnregisterMediaSinksObserver(_)).Times(1); | 236 EXPECT_CALL(mock_router_, UnregisterMediaSinksObserver(_)).Times(1); |
| 230 } | 237 } |
| 231 | 238 |
| 232 } // namespace media_router | 239 } // namespace media_router |
| OLD | NEW |