Chromium Code Reviews| 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 "chrome/browser/local_discovery/service_discovery_shared_client.h" | 5 #include "chrome/browser/local_discovery/service_discovery_shared_client.h" |
| 6 | 6 |
| 7 #include "content/public/browser/browser_thread.h" | 7 #include "content/public/browser/browser_thread.h" |
| 8 | 8 |
| 9 #if defined(OS_WIN) | 9 #if defined(OS_WIN) |
| 10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 22 #if defined(ENABLE_MDNS) | 22 #if defined(ENABLE_MDNS) |
| 23 #include "chrome/browser/local_discovery/service_discovery_client_mdns.h" | 23 #include "chrome/browser/local_discovery/service_discovery_client_mdns.h" |
| 24 #include "chrome/browser/local_discovery/service_discovery_client_utility.h" | 24 #include "chrome/browser/local_discovery/service_discovery_client_utility.h" |
| 25 #endif // ENABLE_MDNS | 25 #endif // ENABLE_MDNS |
| 26 | 26 |
| 27 namespace { | 27 namespace { |
| 28 | 28 |
| 29 #if defined(OS_WIN) | 29 #if defined(OS_WIN) |
| 30 | 30 |
| 31 bool g_is_firewall_ready = false; | 31 bool g_is_firewall_ready = false; |
| 32 bool g_is_firewall_state_reported = false; | |
| 32 | 33 |
| 33 void ReportFirewallStats() { | 34 void ReportFirewallStats() { |
| 35 if (g_is_firewall_state_reported) | |
| 36 return; | |
| 37 g_is_firewall_state_reported = true; | |
| 34 base::FilePath exe_path; | 38 base::FilePath exe_path; |
| 35 if (!PathService::Get(base::FILE_EXE, &exe_path)) | 39 if (!PathService::Get(base::FILE_EXE, &exe_path)) |
| 36 return; | 40 return; |
| 37 base::ElapsedTimer timer; | 41 base::ElapsedTimer timer; |
| 38 scoped_ptr<installer::FirewallManager> manager = | 42 scoped_ptr<installer::FirewallManager> manager = |
| 39 installer::FirewallManager::Create(BrowserDistribution::GetDistribution(), | 43 installer::FirewallManager::Create(BrowserDistribution::GetDistribution(), |
| 40 exe_path); | 44 exe_path); |
| 41 if (!manager) | 45 if (!manager) |
| 42 return; | 46 return; |
| 43 g_is_firewall_ready = manager->CanUseLocalPorts(); | 47 g_is_firewall_ready = manager->CanUseLocalPorts(); |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 73 ServiceDiscoverySharedClient::GetInstance() { | 77 ServiceDiscoverySharedClient::GetInstance() { |
| 74 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 78 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 75 | 79 |
| 76 if (g_service_discovery_client) | 80 if (g_service_discovery_client) |
| 77 return g_service_discovery_client; | 81 return g_service_discovery_client; |
| 78 | 82 |
| 79 #if defined(OS_MACOSX) | 83 #if defined(OS_MACOSX) |
| 80 return ServiceDiscoveryClientMacFactory::CreateInstance(); | 84 return ServiceDiscoveryClientMacFactory::CreateInstance(); |
| 81 #else // OS_MACOSX | 85 #else // OS_MACOSX |
| 82 | 86 |
| 83 #if defined(OS_WIN) | 87 return new ServiceDiscoveryClientMdns(); |
|
Noam Samuel
2014/08/27 17:58:56
Maybe do
if (g_is_firewall_state_reported) {
ret
Vitaly Buka (NO REVIEWS)
2014/08/27 18:08:27
Goal is always use ServiceDiscoveryClientMdns. Onl
| |
| 84 static bool reported = | 88 #endif // OS_MACOSX |
| 85 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, | 89 } |
| 86 base::Bind(&ReportFirewallStats)); | 90 |
| 91 // static | |
| 92 void ServiceDiscoverySharedClient::GetInstanceWithoutAlert( | |
| 93 const GetInstanceCallback& callback) { | |
| 94 #if !defined(OS_WIN) | |
| 95 | |
| 96 scoped_refptr<ServiceDiscoverySharedClient> result = GetInstance(); | |
| 97 return callback.Run(result); | |
| 98 | |
| 99 #else // OS_WIN | |
| 100 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
| 87 // TODO(vitalybuka): Switch to |ServiceDiscoveryClientMdns| after we find what | 101 // TODO(vitalybuka): Switch to |ServiceDiscoveryClientMdns| after we find what |
| 88 // to do with firewall for user-level installs. crbug.com/366408 | 102 // to do with firewall for user-level installs. crbug.com/366408 |
| 89 if (!g_is_firewall_ready) | 103 scoped_refptr<ServiceDiscoverySharedClient> result = |
| 90 return new ServiceDiscoveryClientUtility(); | 104 g_service_discovery_client; |
| 105 if (result) | |
| 106 return callback.Run(result); | |
| 107 | |
| 108 if (!g_is_firewall_state_reported) { | |
| 109 BrowserThread::PostTaskAndReply( | |
| 110 BrowserThread::FILE, | |
| 111 FROM_HERE, | |
| 112 base::Bind(&ReportFirewallStats), | |
| 113 base::Bind(&ServiceDiscoverySharedClient::GetInstanceWithoutAlert, | |
| 114 callback)); | |
| 115 return; | |
| 116 } | |
| 117 | |
| 118 result = | |
| 119 g_is_firewall_ready ? GetInstance() : new ServiceDiscoveryClientUtility(); | |
| 120 callback.Run(result); | |
| 91 #endif // OS_WIN | 121 #endif // OS_WIN |
| 92 | |
| 93 return new ServiceDiscoveryClientMdns(); | |
| 94 #endif // OS_MACOSX | |
| 95 } | 122 } |
| 96 | 123 |
| 97 #else | 124 #else |
| 98 | 125 |
| 99 scoped_refptr<ServiceDiscoverySharedClient> | 126 scoped_refptr<ServiceDiscoverySharedClient> |
| 100 ServiceDiscoverySharedClient::GetInstance() { | 127 ServiceDiscoverySharedClient::GetInstance() { |
| 101 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 128 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 102 NOTIMPLEMENTED(); | 129 NOTIMPLEMENTED(); |
| 103 return NULL; | 130 return NULL; |
| 104 } | 131 } |
| 105 | 132 |
| 106 #endif // ENABLE_MDNS | 133 #endif // ENABLE_MDNS |
| 107 | 134 |
| 108 } // namespace local_discovery | 135 } // namespace local_discovery |
| OLD | NEW |