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

Unified Diff: chrome/browser/local_discovery/service_discovery_shared_client.cc

Issue 504223005: Check Firewall state only initializing mDns from PrintPreview. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Tue Aug 26 18:22:17 PDT 2014 Created 6 years, 4 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/local_discovery/service_discovery_shared_client.cc
diff --git a/chrome/browser/local_discovery/service_discovery_shared_client.cc b/chrome/browser/local_discovery/service_discovery_shared_client.cc
index e7f851e50c0b38f229991c7904e752b64c3a9e1d..7193b33b4d6937b2eaa26fea4785c7ee68337bac 100644
--- a/chrome/browser/local_discovery/service_discovery_shared_client.cc
+++ b/chrome/browser/local_discovery/service_discovery_shared_client.cc
@@ -29,8 +29,12 @@ namespace {
#if defined(OS_WIN)
bool g_is_firewall_ready = false;
+bool g_is_firewall_state_reported = false;
void ReportFirewallStats() {
+ if (g_is_firewall_state_reported)
+ return;
+ g_is_firewall_state_reported = true;
base::FilePath exe_path;
if (!PathService::Get(base::FILE_EXE, &exe_path))
return;
@@ -80,18 +84,41 @@ scoped_refptr<ServiceDiscoverySharedClient>
return ServiceDiscoveryClientMacFactory::CreateInstance();
#else // OS_MACOSX
-#if defined(OS_WIN)
- static bool reported =
- BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE,
- base::Bind(&ReportFirewallStats));
+ 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
+#endif // OS_MACOSX
+}
+
+// static
+void ServiceDiscoverySharedClient::GetInstanceWithoutAlert(
+ const GetInstanceCallback& callback) {
+#if !defined(OS_WIN)
+
+ scoped_refptr<ServiceDiscoverySharedClient> result = GetInstance();
+ return callback.Run(result);
+
+#else // OS_WIN
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
// TODO(vitalybuka): Switch to |ServiceDiscoveryClientMdns| after we find what
// to do with firewall for user-level installs. crbug.com/366408
- if (!g_is_firewall_ready)
- return new ServiceDiscoveryClientUtility();
-#endif // OS_WIN
+ scoped_refptr<ServiceDiscoverySharedClient> result =
+ g_service_discovery_client;
+ if (result)
+ return callback.Run(result);
+
+ if (!g_is_firewall_state_reported) {
+ BrowserThread::PostTaskAndReply(
+ BrowserThread::FILE,
+ FROM_HERE,
+ base::Bind(&ReportFirewallStats),
+ base::Bind(&ServiceDiscoverySharedClient::GetInstanceWithoutAlert,
+ callback));
+ return;
+ }
- return new ServiceDiscoveryClientMdns();
-#endif // OS_MACOSX
+ result =
+ g_is_firewall_ready ? GetInstance() : new ServiceDiscoveryClientUtility();
+ callback.Run(result);
+#endif // OS_WIN
}
#else

Powered by Google App Engine
This is Rietveld 408576698