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 "chrome/browser/media/router/media_route.h" | 6 #include "chrome/browser/media/router/media_route.h" |
| 7 #include "chrome/browser/media/router/mock_media_router.h" | 7 #include "chrome/browser/media/router/mock_media_router.h" |
| 8 #include "chrome/browser/ui/webui/media_router/media_router_ui.h" | 8 #include "chrome/browser/ui/webui/media_router/media_router_ui.h" |
| 9 #include "chrome/test/base/testing_profile.h" | 9 #include "chrome/test/base/testing_profile.h" |
| 10 #include "content/public/test/test_browser_thread_bundle.h" | 10 #include "content/public/test/test_browser_thread_bundle.h" |
| 11 #include "content/public/test/test_web_ui.h" | 11 #include "content/public/test/test_web_ui.h" |
| 12 #include "extensions/browser/extension_registry.h" | 12 #include "extensions/browser/extension_registry.h" |
| 13 #include "extensions/common/extension.h" | 13 #include "extensions/common/extension.h" |
| 14 #include "extensions/common/extension_builder.h" | 14 #include "extensions/common/extension_builder.h" |
| 15 #include "extensions/common/test_util.h" | 15 #include "extensions/common/test_util.h" |
| 16 #include "extensions/common/value_builder.h" | 16 #include "extensions/common/value_builder.h" |
| 17 #include "testing/gmock/include/gmock/gmock.h" | 17 #include "testing/gmock/include/gmock/gmock.h" |
| 18 #include "testing/gtest/include/gtest/gtest.h" | 18 #include "testing/gtest/include/gtest/gtest.h" |
| 19 | 19 |
| 20 using testing::_; | 20 using testing::_; |
| 21 using testing::SaveArg; | 21 using testing::SaveArg; |
| 22 | 22 |
| 23 namespace media_router { | 23 namespace media_router { |
| 24 | 24 |
| 25 class MockRoutesUpdatedCallback { | 25 class MockRoutesUpdatedCallback { |
| 26 public: | 26 public: |
| 27 MOCK_METHOD1(OnRoutesUpdated, void(const std::vector<MediaRoute>& routes)); | 27 MOCK_METHOD2(OnRoutesUpdated, |
| 28 void(const std::vector<MediaRoute>& routes, | |
| 29 const std::vector<MediaRoute::Id>& joinable_route_ids)); | |
| 28 }; | 30 }; |
| 29 | 31 |
| 30 class MediaRouterUITest : public ::testing::Test { | 32 class MediaRouterUITest : public ::testing::Test { |
| 31 public: | 33 public: |
| 32 MediaRouterUITest() { | 34 MediaRouterUITest() { |
| 33 web_contents_.reset(content::WebContents::Create( | 35 web_contents_.reset(content::WebContents::Create( |
| 34 content::WebContents::CreateParams(&profile_))); | 36 content::WebContents::CreateParams(&profile_))); |
| 35 web_ui_.set_web_contents(web_contents_.get()); | 37 web_ui_.set_web_contents(web_contents_.get()); |
| 36 media_router_ui_.reset(new MediaRouterUI(&web_ui_)); | 38 media_router_ui_.reset(new MediaRouterUI(&web_ui_)); |
| 37 } | 39 } |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 70 media_router_ui_->OnResultsUpdated(unsorted_sinks); | 72 media_router_ui_->OnResultsUpdated(unsorted_sinks); |
| 71 const auto& sorted_sinks = media_router_ui_->sinks_; | 73 const auto& sorted_sinks = media_router_ui_->sinks_; |
| 72 EXPECT_EQ(sink_name2, sorted_sinks[0].sink.name()); | 74 EXPECT_EQ(sink_name2, sorted_sinks[0].sink.name()); |
| 73 EXPECT_EQ(sink_id3, sorted_sinks[1].sink.id()); | 75 EXPECT_EQ(sink_id3, sorted_sinks[1].sink.id()); |
| 74 EXPECT_EQ(sink_id1, sorted_sinks[2].sink.id()); | 76 EXPECT_EQ(sink_id1, sorted_sinks[2].sink.id()); |
| 75 } | 77 } |
| 76 | 78 |
| 77 TEST_F(MediaRouterUITest, UIMediaRoutesObserverFiltersNonDisplayRoutes) { | 79 TEST_F(MediaRouterUITest, UIMediaRoutesObserverFiltersNonDisplayRoutes) { |
| 78 MockMediaRouter mock_router; | 80 MockMediaRouter mock_router; |
| 79 EXPECT_CALL(mock_router, RegisterMediaRoutesObserver(_)).Times(1); | 81 EXPECT_CALL(mock_router, RegisterMediaRoutesObserver(_)).Times(1); |
| 82 MediaSource media_source("mediaSource"); | |
| 80 MockRoutesUpdatedCallback mock_callback; | 83 MockRoutesUpdatedCallback mock_callback; |
| 81 scoped_ptr<MediaRouterUI::UIMediaRoutesObserver> observer( | 84 scoped_ptr<MediaRouterUI::UIMediaRoutesObserver> observer( |
| 82 new MediaRouterUI::UIMediaRoutesObserver( | 85 new MediaRouterUI::UIMediaRoutesObserver( |
| 83 &mock_router, base::Bind(&MockRoutesUpdatedCallback::OnRoutesUpdated, | 86 &mock_router, media_source.id(), |
| 87 base::Bind(&MockRoutesUpdatedCallback::OnRoutesUpdated, | |
| 84 base::Unretained(&mock_callback)))); | 88 base::Unretained(&mock_callback)))); |
| 85 | 89 |
| 86 MediaRoute display_route_1("routeId1", MediaSource("mediaSource"), "sinkId1", | 90 MediaRoute display_route_1("routeId1", media_source, "sinkId1", |
| 87 "desc 1", true, "", true); | 91 "desc 1", true, "", true); |
| 88 MediaRoute non_display_route_1("routeId2", MediaSource("mediaSource"), | 92 MediaRoute non_display_route_1("routeId2", media_source, |
| 89 "sinkId2", "desc 2", true, "", false); | 93 "sinkId2", "desc 2", true, "", false); |
| 90 MediaRoute display_route_2("routeId2", MediaSource("mediaSource"), "sinkId2", | 94 MediaRoute display_route_2("routeId3", media_source, "sinkId2", |
| 91 "desc 2", true, "", true); | 95 "desc 2", true, "", true); |
| 92 std::vector<MediaRoute> routes; | 96 std::vector<MediaRoute> routes; |
| 93 routes.push_back(display_route_1); | 97 routes.push_back(display_route_1); |
| 94 routes.push_back(non_display_route_1); | 98 routes.push_back(non_display_route_1); |
| 95 routes.push_back(display_route_2); | 99 routes.push_back(display_route_2); |
| 96 | 100 |
| 97 std::vector<MediaRoute> filtered_routes; | 101 std::vector<MediaRoute> filtered_routes; |
| 98 EXPECT_CALL(mock_callback, OnRoutesUpdated(_)) | 102 EXPECT_CALL(mock_callback, OnRoutesUpdated(_, _)).WillOnce( |
| 99 .WillOnce(SaveArg<0>(&filtered_routes)); | 103 SaveArg<0>(&filtered_routes)); |
| 100 observer->OnRoutesUpdated(routes); | 104 observer->OnRoutesUpdated(routes, |
| 105 std::vector<MediaRoute::Id>()); | |
| 101 | 106 |
| 102 ASSERT_EQ(2u, filtered_routes.size()); | 107 ASSERT_EQ(2u, filtered_routes.size()); |
| 103 EXPECT_TRUE(display_route_1.Equals(filtered_routes[0])); | 108 EXPECT_TRUE(display_route_1.Equals(filtered_routes[0])); |
| 104 EXPECT_TRUE(filtered_routes[0].for_display()); | 109 EXPECT_TRUE(filtered_routes[0].for_display()); |
| 105 EXPECT_TRUE(display_route_2.Equals(filtered_routes[1])); | 110 EXPECT_TRUE(display_route_2.Equals(filtered_routes[1])); |
| 106 EXPECT_TRUE(filtered_routes[1].for_display()); | 111 EXPECT_TRUE(filtered_routes[1].for_display()); |
| 107 | 112 |
| 108 EXPECT_CALL(mock_router, UnregisterMediaRoutesObserver(_)).Times(1); | 113 EXPECT_CALL(mock_router, UnregisterMediaRoutesObserver(_)).Times(1); |
| 109 observer.reset(); | 114 observer.reset(); |
| 110 } | 115 } |
| 111 | 116 |
| 117 TEST_F(MediaRouterUITest, | |
| 118 UIMediaRoutesObserverFiltersNonDisplayJoinableRoutes) { | |
| 119 MockMediaRouter mock_router; | |
| 120 EXPECT_CALL(mock_router, RegisterMediaRoutesObserver(_)).Times(1); | |
| 121 MediaSource media_source("mediaSource"); | |
| 122 MockRoutesUpdatedCallback mock_callback; | |
| 123 scoped_ptr<MediaRouterUI::UIMediaRoutesObserver> observer( | |
| 124 new MediaRouterUI::UIMediaRoutesObserver( | |
| 125 &mock_router, media_source.id(), | |
| 126 base::Bind(&MockRoutesUpdatedCallback::OnRoutesUpdated, | |
| 127 base::Unretained(&mock_callback)))); | |
|
apacible
2015/12/18 22:34:19
nit: fix indentation.
matt.boetger
2015/12/18 23:37:15
Done.
| |
| 128 | |
| 129 MediaRoute display_route_1("routeId1", media_source, "sinkId1", | |
| 130 "desc 1", true, "", true); | |
| 131 MediaRoute non_display_route_1("routeId2", media_source, | |
| 132 "sinkId2", "desc 2", true, "", false); | |
| 133 MediaRoute display_route_2("routeId3", media_source, "sinkId2", | |
| 134 "desc 2", true, "", true); | |
| 135 std::vector<MediaRoute> routes; | |
| 136 routes.push_back(display_route_1); | |
| 137 routes.push_back(non_display_route_1); | |
| 138 routes.push_back(display_route_2); | |
| 139 | |
| 140 std::vector<MediaRoute::Id> joinable_route_ids; | |
| 141 joinable_route_ids.push_back("routeId1"); | |
| 142 joinable_route_ids.push_back("routeId2"); | |
| 143 joinable_route_ids.push_back("routeId3"); | |
| 144 | |
| 145 std::vector<MediaRoute::Id> filtered_joinable_route_ids; | |
| 146 // Save the filtered joinable routes. | |
| 147 EXPECT_CALL(mock_callback, OnRoutesUpdated(_, _)).WillOnce( | |
| 148 SaveArg<1>(&filtered_joinable_route_ids)); | |
| 149 observer->OnRoutesUpdated(routes, | |
| 150 joinable_route_ids); | |
| 151 | |
| 152 ASSERT_EQ(2u, filtered_joinable_route_ids.size()); | |
| 153 EXPECT_EQ(display_route_1.media_route_id(), filtered_joinable_route_ids[0]); | |
| 154 EXPECT_EQ(display_route_2.media_route_id(), filtered_joinable_route_ids[1]); | |
| 155 | |
| 156 EXPECT_CALL(mock_router, UnregisterMediaRoutesObserver(_)).Times(1); | |
| 157 observer.reset(); | |
| 158 } | |
| 159 | |
| 112 TEST_F(MediaRouterUITest, GetExtensionNameExtensionPresent) { | 160 TEST_F(MediaRouterUITest, GetExtensionNameExtensionPresent) { |
| 113 std::string id = "extensionid"; | 161 std::string id = "extensionid"; |
| 114 GURL url = GURL("chrome-extension://" + id); | 162 GURL url = GURL("chrome-extension://" + id); |
| 115 scoped_ptr<extensions::ExtensionRegistry> registry = | 163 scoped_ptr<extensions::ExtensionRegistry> registry = |
| 116 make_scoped_ptr(new extensions::ExtensionRegistry(nullptr)); | 164 make_scoped_ptr(new extensions::ExtensionRegistry(nullptr)); |
| 117 scoped_refptr<extensions::Extension> app = | 165 scoped_refptr<extensions::Extension> app = |
| 118 extensions::test_util::BuildApp(extensions::ExtensionBuilder().Pass()) | 166 extensions::test_util::BuildApp(extensions::ExtensionBuilder().Pass()) |
| 119 .MergeManifest( | 167 .MergeManifest( |
| 120 extensions::DictionaryBuilder().Set("name", "test app name")) | 168 extensions::DictionaryBuilder().Set("name", "test app name")) |
| 121 .SetID(id) | 169 .SetID(id) |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 136 } | 184 } |
| 137 | 185 |
| 138 TEST_F(MediaRouterUITest, GetExtensionNameEmptyWhenNotExtensionURL) { | 186 TEST_F(MediaRouterUITest, GetExtensionNameEmptyWhenNotExtensionURL) { |
| 139 GURL url = GURL("https://www.google.com"); | 187 GURL url = GURL("https://www.google.com"); |
| 140 scoped_ptr<extensions::ExtensionRegistry> registry = | 188 scoped_ptr<extensions::ExtensionRegistry> registry = |
| 141 make_scoped_ptr(new extensions::ExtensionRegistry(nullptr)); | 189 make_scoped_ptr(new extensions::ExtensionRegistry(nullptr)); |
| 142 | 190 |
| 143 EXPECT_EQ("", MediaRouterUI::GetExtensionName(url, registry.get())); | 191 EXPECT_EQ("", MediaRouterUI::GetExtensionName(url, registry.get())); |
| 144 } | 192 } |
| 145 } // namespace media_router | 193 } // namespace media_router |
| OLD | NEW |