OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/command_line.h" | 5 #include "base/command_line.h" |
6 #include "base/memory/ptr_util.h" | 6 #include "base/memory/ptr_util.h" |
7 #include "build/build_config.h" | 7 #include "build/build_config.h" |
8 #include "chrome/browser/extensions/api/mdns/mdns_api.h" | 8 #include "chrome/browser/extensions/api/mdns/mdns_api.h" |
9 #include "chrome/browser/extensions/extension_apitest.h" | 9 #include "chrome/browser/extensions/extension_apitest.h" |
10 #include "chrome/browser/extensions/extension_service.h" | 10 #include "chrome/browser/extensions/extension_service.h" |
11 #include "chrome/common/extensions/api/mdns.h" | 11 #include "chrome/common/extensions/api/mdns.h" |
12 #include "extensions/common/switches.h" | 12 #include "extensions/common/switches.h" |
13 #include "extensions/test/result_catcher.h" | 13 #include "extensions/test/result_catcher.h" |
14 #include "testing/gmock/include/gmock/gmock.h" | 14 #include "testing/gmock/include/gmock/gmock.h" |
15 | 15 |
16 using extensions::DnsSdRegistry; | |
17 using ::testing::_; | 16 using ::testing::_; |
18 using ::testing::A; | 17 using ::testing::A; |
| 18 using DnsSdRegistry = media_router::DnsSdRegistry; |
19 | 19 |
20 namespace api = extensions::api; | 20 namespace api = extensions::api; |
21 | 21 |
22 namespace { | 22 namespace { |
23 | 23 |
24 class MockDnsSdRegistry : public DnsSdRegistry { | 24 class MockDnsSdRegistry : public DnsSdRegistry { |
25 public: | 25 public: |
26 explicit MockDnsSdRegistry(extensions::MDnsAPI* api) : api_(api) {} | 26 explicit MockDnsSdRegistry(extensions::MDnsAPI* api) : api_(api) {} |
27 virtual ~MockDnsSdRegistry() {} | 27 virtual ~MockDnsSdRegistry() {} |
28 | 28 |
29 MOCK_METHOD1(AddObserver, void(DnsSdObserver* observer)); | 29 MOCK_METHOD1(AddObserver, void(DnsSdObserver* observer)); |
30 MOCK_METHOD1(RemoveObserver, void(DnsSdObserver* observer)); | 30 MOCK_METHOD1(RemoveObserver, void(DnsSdObserver* observer)); |
31 MOCK_METHOD1(RegisterDnsSdListener, void(const std::string& service_type)); | 31 MOCK_METHOD1(RegisterDnsSdListener, void(const std::string& service_type)); |
32 MOCK_METHOD1(UnregisterDnsSdListener, void(const std::string& service_type)); | 32 MOCK_METHOD1(UnregisterDnsSdListener, void(const std::string& service_type)); |
33 MOCK_METHOD0(ForceDiscovery, void(void)); | 33 MOCK_METHOD0(ForceDiscovery, void(void)); |
34 | 34 |
35 void DispatchMDnsEvent(const std::string& service_type, | 35 void DispatchMDnsEvent(const std::string& service_type, |
36 const DnsSdServiceList& services) { | 36 const DnsSdServiceList& services) { |
37 api_->OnDnsSdEvent(service_type, services); | 37 api_->OnDnsSdEvent(service_type, services); |
38 } | 38 } |
39 | 39 |
40 private: | 40 private: |
41 extensions::DnsSdRegistry::DnsSdObserver* api_; | 41 DnsSdRegistry::DnsSdObserver* api_; |
42 }; | 42 }; |
43 | 43 |
44 class MDnsAPITest : public ExtensionApiTest { | 44 class MDnsAPITest : public ExtensionApiTest { |
45 public: | 45 public: |
46 MDnsAPITest() {} | 46 MDnsAPITest() {} |
47 | 47 |
48 void SetUpCommandLine(base::CommandLine* command_line) override { | 48 void SetUpCommandLine(base::CommandLine* command_line) override { |
49 ExtensionApiTest::SetUpCommandLine(command_line); | 49 ExtensionApiTest::SetUpCommandLine(command_line); |
50 command_line->AppendSwitchASCII( | 50 command_line->AppendSwitchASCII( |
51 extensions::switches::kWhitelistedExtensionID, | 51 extensions::switches::kWhitelistedExtensionID, |
(...skipping 26 matching lines...) Expand all Loading... |
78 // Test loading extension, registering an MDNS listener and dispatching events. | 78 // Test loading extension, registering an MDNS listener and dispatching events. |
79 IN_PROC_BROWSER_TEST_F(MDnsAPITest, MAYBE_RegisterListener) { | 79 IN_PROC_BROWSER_TEST_F(MDnsAPITest, MAYBE_RegisterListener) { |
80 const std::string& service_type = "_googlecast._tcp.local"; | 80 const std::string& service_type = "_googlecast._tcp.local"; |
81 SetUpTestDnsSdRegistry(); | 81 SetUpTestDnsSdRegistry(); |
82 | 82 |
83 EXPECT_CALL(*dns_sd_registry_, RegisterDnsSdListener(service_type)) | 83 EXPECT_CALL(*dns_sd_registry_, RegisterDnsSdListener(service_type)) |
84 .Times(1); | 84 .Times(1); |
85 EXPECT_CALL(*dns_sd_registry_, UnregisterDnsSdListener(service_type)) | 85 EXPECT_CALL(*dns_sd_registry_, UnregisterDnsSdListener(service_type)) |
86 .Times(1); | 86 .Times(1); |
87 EXPECT_CALL(*dns_sd_registry_, | 87 EXPECT_CALL(*dns_sd_registry_, |
88 RemoveObserver(A<extensions::DnsSdRegistry::DnsSdObserver*>())) | 88 RemoveObserver(A<DnsSdRegistry::DnsSdObserver*>())) |
89 .Times(1); | 89 .Times(1); |
90 | 90 |
91 EXPECT_TRUE(RunExtensionSubtest("mdns/api", "register_listener.html")) | 91 EXPECT_TRUE(RunExtensionSubtest("mdns/api", "register_listener.html")) |
92 << message_; | 92 << message_; |
93 | 93 |
94 extensions::ResultCatcher catcher; | 94 extensions::ResultCatcher catcher; |
95 // Dispatch 3 events, one of which should not be sent to the test extension. | 95 // Dispatch 3 events, one of which should not be sent to the test extension. |
96 DnsSdRegistry::DnsSdServiceList services; | 96 DnsSdRegistry::DnsSdServiceList services; |
97 | 97 |
98 extensions::DnsSdService service; | 98 media_router::DnsSdService service; |
99 service.service_name = service_type; | 99 service.service_name = service_type; |
100 services.push_back(service); | 100 services.push_back(service); |
101 | 101 |
102 dns_sd_registry_->DispatchMDnsEvent(service_type, services); | 102 dns_sd_registry_->DispatchMDnsEvent(service_type, services); |
103 dns_sd_registry_->DispatchMDnsEvent("_uninteresting._tcp.local", services); | 103 dns_sd_registry_->DispatchMDnsEvent("_uninteresting._tcp.local", services); |
104 dns_sd_registry_->DispatchMDnsEvent(service_type, services); | 104 dns_sd_registry_->DispatchMDnsEvent(service_type, services); |
105 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | 105 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); |
106 } | 106 } |
107 | 107 |
108 // TODO(justinlin): Win Dbg has a workaround that makes RunExtensionSubtest | 108 // TODO(justinlin): Win Dbg has a workaround that makes RunExtensionSubtest |
109 // always return true without actually running the test. Remove when fixed. | 109 // always return true without actually running the test. Remove when fixed. |
110 #if defined(OS_WIN) && !defined(NDEBUG) | 110 #if defined(OS_WIN) && !defined(NDEBUG) |
111 #define MAYBE_ForceDiscovery DISABLED_ForceDiscovery | 111 #define MAYBE_ForceDiscovery DISABLED_ForceDiscovery |
112 #else | 112 #else |
113 #define MAYBE_ForceDiscovery ForceDiscovery | 113 #define MAYBE_ForceDiscovery ForceDiscovery |
114 #endif | 114 #endif |
115 // Test loading extension, registering an MDNS listener and dispatching events. | 115 // Test loading extension, registering an MDNS listener and dispatching events. |
116 IN_PROC_BROWSER_TEST_F(MDnsAPITest, MAYBE_ForceDiscovery) { | 116 IN_PROC_BROWSER_TEST_F(MDnsAPITest, MAYBE_ForceDiscovery) { |
117 const std::string& service_type = "_googlecast._tcp.local"; | 117 const std::string& service_type = "_googlecast._tcp.local"; |
118 SetUpTestDnsSdRegistry(); | 118 SetUpTestDnsSdRegistry(); |
119 | 119 |
120 EXPECT_CALL(*dns_sd_registry_, RegisterDnsSdListener(service_type)).Times(1); | 120 EXPECT_CALL(*dns_sd_registry_, RegisterDnsSdListener(service_type)).Times(1); |
121 EXPECT_CALL(*dns_sd_registry_, UnregisterDnsSdListener(service_type)) | 121 EXPECT_CALL(*dns_sd_registry_, UnregisterDnsSdListener(service_type)) |
122 .Times(1); | 122 .Times(1); |
123 EXPECT_CALL(*dns_sd_registry_, ForceDiscovery()).Times(1); | 123 EXPECT_CALL(*dns_sd_registry_, ForceDiscovery()).Times(1); |
124 EXPECT_CALL(*dns_sd_registry_, | 124 EXPECT_CALL(*dns_sd_registry_, |
125 RemoveObserver(A<extensions::DnsSdRegistry::DnsSdObserver*>())) | 125 RemoveObserver(A<DnsSdRegistry::DnsSdObserver*>())) |
126 .Times(1); | 126 .Times(1); |
127 | 127 |
128 EXPECT_TRUE(RunExtensionSubtest("mdns/api", "force_discovery.html")) | 128 EXPECT_TRUE(RunExtensionSubtest("mdns/api", "force_discovery.html")) |
129 << message_; | 129 << message_; |
130 | 130 |
131 extensions::ResultCatcher catcher; | 131 extensions::ResultCatcher catcher; |
132 DnsSdRegistry::DnsSdServiceList services; | 132 DnsSdRegistry::DnsSdServiceList services; |
133 | 133 |
134 extensions::DnsSdService service; | 134 media_router::DnsSdService service; |
135 service.service_name = service_type; | 135 service.service_name = service_type; |
136 services.push_back(service); | 136 services.push_back(service); |
137 | 137 |
138 dns_sd_registry_->DispatchMDnsEvent(service_type, services); | 138 dns_sd_registry_->DispatchMDnsEvent(service_type, services); |
139 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | 139 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); |
140 } | 140 } |
141 | 141 |
142 // TODO(justinlin): Win Dbg has a workaround that makes RunExtensionSubtest | 142 // TODO(justinlin): Win Dbg has a workaround that makes RunExtensionSubtest |
143 // always return true without actually running the test. Remove when fixed. | 143 // always return true without actually running the test. Remove when fixed. |
144 #if defined(OS_WIN) && !defined(NDEBUG) | 144 #if defined(OS_WIN) && !defined(NDEBUG) |
145 #define MAYBE_RegisterMultipleListeners DISABLED_RegisterMultipleListeners | 145 #define MAYBE_RegisterMultipleListeners DISABLED_RegisterMultipleListeners |
146 #else | 146 #else |
147 #define MAYBE_RegisterMultipleListeners RegisterMultipleListeners | 147 #define MAYBE_RegisterMultipleListeners RegisterMultipleListeners |
148 #endif | 148 #endif |
149 // Test loading extension and registering multiple listeners. | 149 // Test loading extension and registering multiple listeners. |
150 IN_PROC_BROWSER_TEST_F(MDnsAPITest, MAYBE_RegisterMultipleListeners) { | 150 IN_PROC_BROWSER_TEST_F(MDnsAPITest, MAYBE_RegisterMultipleListeners) { |
151 const std::string& service_type = "_googlecast._tcp.local"; | 151 const std::string& service_type = "_googlecast._tcp.local"; |
152 const std::string& test_service_type = "_testing._tcp.local"; | 152 const std::string& test_service_type = "_testing._tcp.local"; |
153 SetUpTestDnsSdRegistry(); | 153 SetUpTestDnsSdRegistry(); |
154 | 154 |
155 EXPECT_CALL(*dns_sd_registry_, RegisterDnsSdListener(service_type)) | 155 EXPECT_CALL(*dns_sd_registry_, RegisterDnsSdListener(service_type)) |
156 .Times(1); | 156 .Times(1); |
157 EXPECT_CALL(*dns_sd_registry_, UnregisterDnsSdListener(service_type)) | 157 EXPECT_CALL(*dns_sd_registry_, UnregisterDnsSdListener(service_type)) |
158 .Times(1); | 158 .Times(1); |
159 EXPECT_CALL(*dns_sd_registry_, RegisterDnsSdListener(test_service_type)) | 159 EXPECT_CALL(*dns_sd_registry_, RegisterDnsSdListener(test_service_type)) |
160 .Times(1); | 160 .Times(1); |
161 EXPECT_CALL(*dns_sd_registry_, UnregisterDnsSdListener(test_service_type)) | 161 EXPECT_CALL(*dns_sd_registry_, UnregisterDnsSdListener(test_service_type)) |
162 .Times(1); | 162 .Times(1); |
163 EXPECT_CALL(*dns_sd_registry_, | 163 EXPECT_CALL(*dns_sd_registry_, |
164 RemoveObserver(A<extensions::DnsSdRegistry::DnsSdObserver*>())) | 164 RemoveObserver(A<DnsSdRegistry::DnsSdObserver*>())) |
165 .Times(1); | 165 .Times(1); |
166 | 166 |
167 EXPECT_TRUE(RunExtensionSubtest("mdns/api", | 167 EXPECT_TRUE(RunExtensionSubtest("mdns/api", |
168 "register_multiple_listeners.html")) | 168 "register_multiple_listeners.html")) |
169 << message_; | 169 << message_; |
170 | 170 |
171 extensions::ResultCatcher catcher; | 171 extensions::ResultCatcher catcher; |
172 DnsSdRegistry::DnsSdServiceList services; | 172 DnsSdRegistry::DnsSdServiceList services; |
173 | 173 |
174 extensions::DnsSdService service; | 174 media_router::DnsSdService service; |
175 service.service_name = service_type; | 175 service.service_name = service_type; |
176 services.push_back(service); | 176 services.push_back(service); |
177 | 177 |
178 dns_sd_registry_->DispatchMDnsEvent(service_type, services); | 178 dns_sd_registry_->DispatchMDnsEvent(service_type, services); |
179 dns_sd_registry_->DispatchMDnsEvent(test_service_type, services); | 179 dns_sd_registry_->DispatchMDnsEvent(test_service_type, services); |
180 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | 180 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); |
181 } | 181 } |
182 | 182 |
183 // TODO(justinlin): Win Dbg has a workaround that makes RunExtensionSubtest | 183 // TODO(justinlin): Win Dbg has a workaround that makes RunExtensionSubtest |
184 // always return true without actually running the test. Remove when fixed. | 184 // always return true without actually running the test. Remove when fixed. |
185 #if defined(OS_WIN) && !defined(NDEBUG) | 185 #if defined(OS_WIN) && !defined(NDEBUG) |
186 #define MAYBE_RegisterTooManyListeners DISABLED_RegisterTooManyListeners | 186 #define MAYBE_RegisterTooManyListeners DISABLED_RegisterTooManyListeners |
187 #else | 187 #else |
188 #define MAYBE_RegisterTooManyListeners RegisterTooManyListeners | 188 #define MAYBE_RegisterTooManyListeners RegisterTooManyListeners |
189 #endif | 189 #endif |
190 // Test loading extension and registering multiple listeners. | 190 // Test loading extension and registering multiple listeners. |
191 IN_PROC_BROWSER_TEST_F(MDnsAPITest, MAYBE_RegisterTooManyListeners) { | 191 IN_PROC_BROWSER_TEST_F(MDnsAPITest, MAYBE_RegisterTooManyListeners) { |
192 SetUpTestDnsSdRegistry(); | 192 SetUpTestDnsSdRegistry(); |
193 | 193 |
194 EXPECT_CALL(*dns_sd_registry_, RegisterDnsSdListener(_)).Times(10); | 194 EXPECT_CALL(*dns_sd_registry_, RegisterDnsSdListener(_)).Times(10); |
195 EXPECT_CALL(*dns_sd_registry_, UnregisterDnsSdListener(_)).Times(10); | 195 EXPECT_CALL(*dns_sd_registry_, UnregisterDnsSdListener(_)).Times(10); |
196 EXPECT_CALL(*dns_sd_registry_, | 196 EXPECT_CALL(*dns_sd_registry_, |
197 RemoveObserver(A<extensions::DnsSdRegistry::DnsSdObserver*>())) | 197 RemoveObserver(A<DnsSdRegistry::DnsSdObserver*>())) |
198 .Times(1); | 198 .Times(1); |
199 | 199 |
200 EXPECT_TRUE(RunPlatformAppTest("mdns/api-packaged-apps")) | 200 EXPECT_TRUE(RunPlatformAppTest("mdns/api-packaged-apps")) |
201 << message_; | 201 << message_; |
202 } | 202 } |
203 | 203 |
204 // TODO(justinlin): Win Dbg has a workaround that makes RunExtensionSubtest | 204 // TODO(justinlin): Win Dbg has a workaround that makes RunExtensionSubtest |
205 // always return true without actually running the test. Remove when fixed. | 205 // always return true without actually running the test. Remove when fixed. |
206 #if defined(OS_WIN) && !defined(NDEBUG) | 206 #if defined(OS_WIN) && !defined(NDEBUG) |
207 #define MAYBE_MaxServiceInstancesPerEventConst \ | 207 #define MAYBE_MaxServiceInstancesPerEventConst \ |
208 DISABLED_MaxServiceInstancesPerEventConst | 208 DISABLED_MaxServiceInstancesPerEventConst |
209 #else | 209 #else |
210 #define MAYBE_MaxServiceInstancesPerEventConst MaxServiceInstancesPerEventConst | 210 #define MAYBE_MaxServiceInstancesPerEventConst MaxServiceInstancesPerEventConst |
211 #endif | 211 #endif |
212 // Test loading extension and registering multiple listeners. | 212 // Test loading extension and registering multiple listeners. |
213 IN_PROC_BROWSER_TEST_F(MDnsAPITest, MAYBE_MaxServiceInstancesPerEventConst) { | 213 IN_PROC_BROWSER_TEST_F(MDnsAPITest, MAYBE_MaxServiceInstancesPerEventConst) { |
214 EXPECT_TRUE(RunExtensionSubtest("mdns/api", | 214 EXPECT_TRUE(RunExtensionSubtest("mdns/api", |
215 "get_max_service_instances.html")); | 215 "get_max_service_instances.html")); |
216 } | 216 } |
OLD | NEW |