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

Unified Diff: chrome/browser/net/dns_probe_runner.h

Issue 13270005: Display DNS probe results. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: ...actually add the unittests Created 7 years, 6 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/net/dns_probe_runner.h
diff --git a/chrome/browser/net/dns_probe_runner.h b/chrome/browser/net/dns_probe_runner.h
new file mode 100644
index 0000000000000000000000000000000000000000..1bc18c9f8d924aaab2e5dfe99c6b6874f909e0fd
--- /dev/null
+++ b/chrome/browser/net/dns_probe_runner.h
@@ -0,0 +1,95 @@
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_NET_DNS_PROBE_RUNNER_H
+
+#define CHROME_BROWSER_NET_DNS_PROBE_RUNNER_H
+
+#include "base/bind.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/memory/weak_ptr.h"
+#include "net/base/net_log.h"
+#include "net/base/network_change_notifier.h"
+
+namespace net {
+class DnsClient;
+struct DnsConfig;
+class DnsResponse;
+class DnsTransaction;
+}
cbentzel 2013/06/10 17:10:00 Should this be in chrome_browser_net namespace?
Deprecated (see juliatuttle) 2013/06/11 01:07:34 Done.
+
+class DnsProbeRunner : public net::NetworkChangeNotifier::DNSObserver {
szym 2013/06/07 19:31:28 Add a short class-level comment, e.g., "Runs DnsTr
+ public:
+ enum Type {
+ SYSTEM,
+ PUBLIC
+ };
+
+ enum Result {
+ UNKNOWN,
+ CORRECT,
+ INCORRECT,
+ FAILING,
+ UNREACHABLE
+ };
+
+ typedef base::Callback<void(Type, Result)> ProbeCallback;
+
+ DnsProbeRunner();
+ virtual ~DnsProbeRunner();
+
+ // NetworkChangeNotifier::DNSObserver implementation:
+ virtual void OnDNSChanged() OVERRIDE;
+
+ void RunProbe(Type type, const ProbeCallback& callback);
szym 2013/06/07 19:31:28 Why does it need |type|? Should it run both? If it
Deprecated (see juliatuttle) 2013/06/11 01:07:34 Done.
+ void SetClientsForTesting(scoped_ptr<net::DnsClient> system_client,
+ scoped_ptr<net::DnsClient> public_client);
+ void SetResultsForTesting(Result system_result, Result public_result);
szym 2013/06/07 19:31:28 Could you avoid doing this by creating: class Dns
Deprecated (see juliatuttle) 2013/06/11 01:07:34 Obsolete.
+
+ private:
+ friend class DnsProbeRunnerTest;
+
+ struct ProbeInfo {
+ ProbeInfo(Type type, const ProbeCallback& callback);
+ ~ProbeInfo();
+
+ const Type type;
+ const ProbeCallback callback;
+ };
+
+ enum MockMode {
+ NO_MOCK,
+ MOCK_CLIENTS,
+ MOCK_RESULTS
+ };
+
+ typedef std::map<net::DnsTransaction*,ProbeInfo> TransactionMap;
szym 2013/06/07 19:31:28 This is strange. I think you could accomplish the
Deprecated (see juliatuttle) 2013/06/11 01:07:34 I could, but I needed the DnsTransactions anyway t
+
+ void InitializeSystemClient();
+ void InitializePublicClient();
+ Result GetMockResult(Type type);
+ net::DnsClient* GetClient(Type type);
+ void OnTransactionComplete(bool async,
+ net::DnsTransaction* transaction,
+ int net_error,
+ const net::DnsResponse* response);
+ Result EvaluateResponse(bool async,
szym 2013/06/07 19:31:28 Needs comment.
Deprecated (see juliatuttle) 2013/06/11 01:07:34 Done.
+ int net_error,
+ const net::DnsResponse* response);
+
+ base::WeakPtrFactory<DnsProbeRunner> weak_factory_;
+ net::BoundNetLog bound_net_log_;
+
+ scoped_ptr<net::DnsClient> system_client_;
+ scoped_ptr<net::DnsClient> public_client_;
+ TransactionMap pending_transactions_;
+
+ MockMode mock_mode_;
+ scoped_ptr<net::DnsClient> mock_system_client_;
+ scoped_ptr<net::DnsClient> mock_public_client_;
+ Result mock_system_result_;
+ Result mock_public_result_;
+};
+
+#endif // CHROME_BROWSER_NET_DNS_PROBE_RUNNER_H

Powered by Google App Engine
This is Rietveld 408576698