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

Side by Side 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef CHROME_BROWSER_NET_DNS_PROBE_RUNNER_H
6
7 #define CHROME_BROWSER_NET_DNS_PROBE_RUNNER_H
8
9 #include "base/bind.h"
10 #include "base/memory/scoped_ptr.h"
11 #include "base/memory/weak_ptr.h"
12 #include "net/base/net_log.h"
13 #include "net/base/network_change_notifier.h"
14
15 namespace net {
16 class DnsClient;
17 struct DnsConfig;
18 class DnsResponse;
19 class DnsTransaction;
20 }
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.
21
22 class DnsProbeRunner : public net::NetworkChangeNotifier::DNSObserver {
szym 2013/06/07 19:31:28 Add a short class-level comment, e.g., "Runs DnsTr
23 public:
24 enum Type {
25 SYSTEM,
26 PUBLIC
27 };
28
29 enum Result {
30 UNKNOWN,
31 CORRECT,
32 INCORRECT,
33 FAILING,
34 UNREACHABLE
35 };
36
37 typedef base::Callback<void(Type, Result)> ProbeCallback;
38
39 DnsProbeRunner();
40 virtual ~DnsProbeRunner();
41
42 // NetworkChangeNotifier::DNSObserver implementation:
43 virtual void OnDNSChanged() OVERRIDE;
44
45 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.
46 void SetClientsForTesting(scoped_ptr<net::DnsClient> system_client,
47 scoped_ptr<net::DnsClient> public_client);
48 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.
49
50 private:
51 friend class DnsProbeRunnerTest;
52
53 struct ProbeInfo {
54 ProbeInfo(Type type, const ProbeCallback& callback);
55 ~ProbeInfo();
56
57 const Type type;
58 const ProbeCallback callback;
59 };
60
61 enum MockMode {
62 NO_MOCK,
63 MOCK_CLIENTS,
64 MOCK_RESULTS
65 };
66
67 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
68
69 void InitializeSystemClient();
70 void InitializePublicClient();
71 Result GetMockResult(Type type);
72 net::DnsClient* GetClient(Type type);
73 void OnTransactionComplete(bool async,
74 net::DnsTransaction* transaction,
75 int net_error,
76 const net::DnsResponse* response);
77 Result EvaluateResponse(bool async,
szym 2013/06/07 19:31:28 Needs comment.
Deprecated (see juliatuttle) 2013/06/11 01:07:34 Done.
78 int net_error,
79 const net::DnsResponse* response);
80
81 base::WeakPtrFactory<DnsProbeRunner> weak_factory_;
82 net::BoundNetLog bound_net_log_;
83
84 scoped_ptr<net::DnsClient> system_client_;
85 scoped_ptr<net::DnsClient> public_client_;
86 TransactionMap pending_transactions_;
87
88 MockMode mock_mode_;
89 scoped_ptr<net::DnsClient> mock_system_client_;
90 scoped_ptr<net::DnsClient> mock_public_client_;
91 Result mock_system_result_;
92 Result mock_public_result_;
93 };
94
95 #endif // CHROME_BROWSER_NET_DNS_PROBE_RUNNER_H
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698