Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(534)

Unified Diff: chrome/browser/extensions/api/mdns/mdns_api_unittest.cc

Issue 2874243003: [mDns] Make DnsSdRegistry a leaky singleton (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/mdns/mdns_api_unittest.cc
diff --git a/chrome/browser/extensions/api/mdns/mdns_api_unittest.cc b/chrome/browser/extensions/api/mdns/mdns_api_unittest.cc
index 5cb384755f4801b128e5c819b6caac08fdd890bd..080da0ee150bca20ee02afda3f7c8c7caa7da28a 100644
--- a/chrome/browser/extensions/api/mdns/mdns_api_unittest.cc
+++ b/chrome/browser/extensions/api/mdns/mdns_api_unittest.cc
@@ -94,7 +94,11 @@ base::FilePath bogus_file_pathname(const std::string& name) {
class MockDnsSdRegistry : public media_router::DnsSdRegistry {
public:
explicit MockDnsSdRegistry(extensions::MDnsAPI* api) : api_(api) {}
- virtual ~MockDnsSdRegistry() {}
+
+ virtual ~MockDnsSdRegistry() {
+ RemoveObserver(api_);
+ api_->SetDnsSdRegistryForTesting(nullptr);
+ }
MOCK_METHOD1(AddObserver, void(DnsSdObserver* observer));
MOCK_METHOD1(RemoveObserver, void(DnsSdObserver* observer));
@@ -105,11 +109,13 @@ class MockDnsSdRegistry : public media_router::DnsSdRegistry {
void DispatchMDnsEvent(const std::string& service_type,
const DnsSdServiceList& services) {
- api_->OnDnsSdEvent(service_type, services);
+ auto* observer =
mark a. foltz 2017/05/11 23:22:24 MdnsAPI implements the DnsSdObserver interface. I
zhaobin 2017/05/12 17:35:00 Code removed.
+ static_cast<media_router::DnsSdRegistry::DnsSdObserver*>(api_);
+ observer->OnDnsSdEvent(service_type, services);
}
private:
- media_router::DnsSdRegistry::DnsSdObserver* api_;
+ extensions::MDnsAPI* api_;
};
class MockEventRouter : public EventRouter {
@@ -204,13 +210,13 @@ class MDnsAPITest : public extensions::ExtensionServiceTestBase {
ASSERT_TRUE(MDnsAPI::Get(browser_context())); // constructs MDnsAPI
ASSERT_TRUE(EventRouter::Get(browser_context())); // constructs EventRouter
- registry_ = new MockDnsSdRegistry(MDnsAPI::Get(browser_context()));
+ registry_ =
+ base::MakeUnique<MockDnsSdRegistry>(MDnsAPI::Get(browser_context()));
EXPECT_CALL(*dns_sd_registry(),
AddObserver(MDnsAPI::Get(browser_context())))
.Times(1);
MDnsAPI::Get(browser_context())
- ->SetDnsSdRegistryForTesting(
- std::unique_ptr<media_router::DnsSdRegistry>(registry_));
+ ->SetDnsSdRegistryForTesting(registry_.get());
render_process_host_.reset(
new content::MockRenderProcessHost(browser_context()));
@@ -230,9 +236,7 @@ class MDnsAPITest : public extensions::ExtensionServiceTestBase {
extensions::ExtensionServiceTestBase::TearDown();
}
- virtual MockDnsSdRegistry* dns_sd_registry() {
- return registry_;
- }
+ virtual MockDnsSdRegistry* dns_sd_registry() { return registry_.get(); }
// Constructs an extension according to the parameters that matter most to
// MDnsAPI the local unit tests.
@@ -265,9 +269,7 @@ class MDnsAPITest : public extensions::ExtensionServiceTestBase {
}
private:
- // The registry is owned by MDnsAPI, but MDnsAPI does not have an accessor
- // for it, so use a private member.
- MockDnsSdRegistry* registry_;
+ std::unique_ptr<MockDnsSdRegistry> registry_;
std::unique_ptr<content::RenderProcessHost> render_process_host_;
};

Powered by Google App Engine
This is Rietveld 408576698