| 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 "chrome/browser/extensions/api/mdns/mdns_api.h" | 5 #include "chrome/browser/extensions/api/mdns/mdns_api.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 return base::MakeUnique<extensions::EventRouter>( | 84 return base::MakeUnique<extensions::EventRouter>( |
| 85 context, ExtensionPrefs::Get(context)); | 85 context, ExtensionPrefs::Get(context)); |
| 86 } | 86 } |
| 87 | 87 |
| 88 // For ExtensionService interface when it requires a path that is not used. | 88 // For ExtensionService interface when it requires a path that is not used. |
| 89 base::FilePath bogus_file_pathname(const std::string& name) { | 89 base::FilePath bogus_file_pathname(const std::string& name) { |
| 90 return base::FilePath(FILE_PATH_LITERAL("//foobar_nonexistent")) | 90 return base::FilePath(FILE_PATH_LITERAL("//foobar_nonexistent")) |
| 91 .AppendASCII(name); | 91 .AppendASCII(name); |
| 92 } | 92 } |
| 93 | 93 |
| 94 class MockDnsSdRegistry : public DnsSdRegistry { | 94 class MockDnsSdRegistry : public media_router::DnsSdRegistry { |
| 95 public: | 95 public: |
| 96 explicit MockDnsSdRegistry(extensions::MDnsAPI* api) : api_(api) {} | 96 explicit MockDnsSdRegistry(extensions::MDnsAPI* api) : api_(api) {} |
| 97 virtual ~MockDnsSdRegistry() {} | 97 virtual ~MockDnsSdRegistry() {} |
| 98 | 98 |
| 99 MOCK_METHOD1(AddObserver, void(DnsSdObserver* observer)); | 99 MOCK_METHOD1(AddObserver, void(DnsSdObserver* observer)); |
| 100 MOCK_METHOD1(RemoveObserver, void(DnsSdObserver* observer)); | 100 MOCK_METHOD1(RemoveObserver, void(DnsSdObserver* observer)); |
| 101 MOCK_METHOD1(RegisterDnsSdListener, void(const std::string& service_type)); | 101 MOCK_METHOD1(RegisterDnsSdListener, void(const std::string& service_type)); |
| 102 MOCK_METHOD1(UnregisterDnsSdListener, void(const std::string& service_type)); | 102 MOCK_METHOD1(UnregisterDnsSdListener, void(const std::string& service_type)); |
| 103 MOCK_METHOD1(Publish, void(const std::string&)); | 103 MOCK_METHOD1(Publish, void(const std::string&)); |
| 104 MOCK_METHOD0(ForceDiscovery, void(void)); | 104 MOCK_METHOD0(ForceDiscovery, void(void)); |
| 105 | 105 |
| 106 void DispatchMDnsEvent(const std::string& service_type, | 106 void DispatchMDnsEvent(const std::string& service_type, |
| 107 const DnsSdServiceList& services) { | 107 const DnsSdServiceList& services) { |
| 108 api_->OnDnsSdEvent(service_type, services); | 108 api_->OnDnsSdEvent(service_type, services); |
| 109 } | 109 } |
| 110 | 110 |
| 111 private: | 111 private: |
| 112 extensions::DnsSdRegistry::DnsSdObserver* api_; | 112 media_router::DnsSdRegistry::DnsSdObserver* api_; |
| 113 }; | 113 }; |
| 114 | 114 |
| 115 class MockEventRouter : public EventRouter { | 115 class MockEventRouter : public EventRouter { |
| 116 public: | 116 public: |
| 117 explicit MockEventRouter(content::BrowserContext* browser_context, | 117 explicit MockEventRouter(content::BrowserContext* browser_context, |
| 118 ExtensionPrefs* extension_prefs) | 118 ExtensionPrefs* extension_prefs) |
| 119 : EventRouter(browser_context, extension_prefs) {} | 119 : EventRouter(browser_context, extension_prefs) {} |
| 120 virtual ~MockEventRouter() {} | 120 virtual ~MockEventRouter() {} |
| 121 | 121 |
| 122 virtual void BroadcastEvent(std::unique_ptr<Event> event) { | 122 virtual void BroadcastEvent(std::unique_ptr<Event> event) { |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 202 | 202 |
| 203 // Do some sanity checking | 203 // Do some sanity checking |
| 204 ASSERT_TRUE(MDnsAPI::Get(browser_context())); // constructs MDnsAPI | 204 ASSERT_TRUE(MDnsAPI::Get(browser_context())); // constructs MDnsAPI |
| 205 ASSERT_TRUE(EventRouter::Get(browser_context())); // constructs EventRouter | 205 ASSERT_TRUE(EventRouter::Get(browser_context())); // constructs EventRouter |
| 206 | 206 |
| 207 registry_ = new MockDnsSdRegistry(MDnsAPI::Get(browser_context())); | 207 registry_ = new MockDnsSdRegistry(MDnsAPI::Get(browser_context())); |
| 208 EXPECT_CALL(*dns_sd_registry(), | 208 EXPECT_CALL(*dns_sd_registry(), |
| 209 AddObserver(MDnsAPI::Get(browser_context()))) | 209 AddObserver(MDnsAPI::Get(browser_context()))) |
| 210 .Times(1); | 210 .Times(1); |
| 211 MDnsAPI::Get(browser_context()) | 211 MDnsAPI::Get(browser_context()) |
| 212 ->SetDnsSdRegistryForTesting(std::unique_ptr<DnsSdRegistry>(registry_)); | 212 ->SetDnsSdRegistryForTesting( |
| 213 std::unique_ptr<media_router::DnsSdRegistry>(registry_)); |
| 213 | 214 |
| 214 render_process_host_.reset( | 215 render_process_host_.reset( |
| 215 new content::MockRenderProcessHost(browser_context())); | 216 new content::MockRenderProcessHost(browser_context())); |
| 216 } | 217 } |
| 217 | 218 |
| 218 // Returns the mDNS API factory function (mock vs. real) to use for the test. | 219 // Returns the mDNS API factory function (mock vs. real) to use for the test. |
| 219 virtual BrowserContextKeyedServiceFactory::TestingFactoryFunction | 220 virtual BrowserContextKeyedServiceFactory::TestingFactoryFunction |
| 220 GetMDnsFactory() { | 221 GetMDnsFactory() { |
| 221 return MDnsAPITestingFactoryFunction; | 222 return MDnsAPITestingFactoryFunction; |
| 222 } | 223 } |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 351 TEST_F(MDnsAPIMaxServicesTest, OnServiceListDoesNotExceedLimit) { | 352 TEST_F(MDnsAPIMaxServicesTest, OnServiceListDoesNotExceedLimit) { |
| 352 EventRouterFactory::GetInstance()->SetTestingFactory( | 353 EventRouterFactory::GetInstance()->SetTestingFactory( |
| 353 browser_context(), &MockEventRouterFactoryFunction); | 354 browser_context(), &MockEventRouterFactoryFunction); |
| 354 | 355 |
| 355 // This check should change when the [value=2048] changes in the IDL file. | 356 // This check should change when the [value=2048] changes in the IDL file. |
| 356 EXPECT_EQ(2048, api::mdns::MAX_SERVICE_INSTANCES_PER_EVENT); | 357 EXPECT_EQ(2048, api::mdns::MAX_SERVICE_INSTANCES_PER_EVENT); |
| 357 | 358 |
| 358 // Dispatch an mDNS event with more service instances than the max, and ensure | 359 // Dispatch an mDNS event with more service instances than the max, and ensure |
| 359 // that the list is truncated by inspecting the argument to MockEventRouter's | 360 // that the list is truncated by inspecting the argument to MockEventRouter's |
| 360 // BroadcastEvent method. | 361 // BroadcastEvent method. |
| 361 DnsSdRegistry::DnsSdServiceList services; | 362 media_router::DnsSdRegistry::DnsSdServiceList services; |
| 362 for (int i = 0; i < api::mdns::MAX_SERVICE_INSTANCES_PER_EVENT + 10; ++i) { | 363 for (int i = 0; i < api::mdns::MAX_SERVICE_INSTANCES_PER_EVENT + 10; ++i) { |
| 363 services.push_back(DnsSdService()); | 364 services.push_back(media_router::DnsSdService()); |
| 364 } | 365 } |
| 365 EXPECT_CALL( | 366 EXPECT_CALL( |
| 366 *event_router(), | 367 *event_router(), |
| 367 BroadcastEventPtr(testing::Pointee(EventServiceListSize( | 368 BroadcastEventPtr(testing::Pointee(EventServiceListSize( |
| 368 static_cast<size_t>(api::mdns::MAX_SERVICE_INSTANCES_PER_EVENT))))) | 369 static_cast<size_t>(api::mdns::MAX_SERVICE_INSTANCES_PER_EVENT))))) |
| 369 .Times(1); | 370 .Times(1); |
| 370 dns_sd_registry()->DispatchMDnsEvent("_testing._tcp.local", services); | 371 dns_sd_registry()->DispatchMDnsEvent("_testing._tcp.local", services); |
| 371 } | 372 } |
| 372 | 373 |
| 373 TEST_F(MDnsAPITest, ExtensionRespectsWhitelist) { | 374 TEST_F(MDnsAPITest, ExtensionRespectsWhitelist) { |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 437 render_process_host(), kExtId, filter, false); | 438 render_process_host(), kExtId, filter, false); |
| 438 | 439 |
| 439 EXPECT_CALL(*dns_sd_registry(), UnregisterDnsSdListener("_trex._tcp.local")); | 440 EXPECT_CALL(*dns_sd_registry(), UnregisterDnsSdListener("_trex._tcp.local")); |
| 440 EventRouter::Get(browser_context()) | 441 EventRouter::Get(browser_context()) |
| 441 ->RemoveFilteredEventListener(api::mdns::OnServiceList::kEventName, | 442 ->RemoveFilteredEventListener(api::mdns::OnServiceList::kEventName, |
| 442 render_process_host(), kExtId, filter, | 443 render_process_host(), kExtId, filter, |
| 443 false); | 444 false); |
| 444 } | 445 } |
| 445 | 446 |
| 446 } // namespace extensions | 447 } // namespace extensions |
| OLD | NEW |