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

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

Issue 19777002: Revert 211950 "Display DNS probe results." (Closed) Base URL: svn://svn.chromium.org/chrome/branches/1568/src/
Patch Set: Created 7 years, 5 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
« no previous file with comments | « chrome/browser/net/dns_probe_runner.cc ('k') | chrome/browser/net/dns_probe_service.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/net/dns_probe_service.h
===================================================================
--- chrome/browser/net/dns_probe_service.h (revision 212348)
+++ chrome/browser/net/dns_probe_service.h (working copy)
@@ -8,71 +8,79 @@
#include <vector>
#include "base/basictypes.h"
-#include "base/bind.h"
#include "base/memory/scoped_ptr.h"
#include "base/time/time.h"
-#include "chrome/browser/net/dns_probe_runner.h"
+#include "chrome/browser/net/dns_probe_job.h"
#include "chrome/common/net/net_error_info.h"
#include "net/base/network_change_notifier.h"
namespace net {
-class DnsClient;
struct DnsConfig;
}
namespace chrome_browser_net {
-// Probes the system and public DNS servers to determine the (probable) cause
-// of a recent DNS-related page load error. Coalesces multiple probe requests
-// (perhaps from multiple tabs) and caches the results.
-//
-// Uses a single DNS attempt per config, and doesn't randomize source ports.
-class DnsProbeService : public net::NetworkChangeNotifier::DNSObserver {
+class DnsProbeService : public net::NetworkChangeNotifier::IPAddressObserver {
public:
- typedef base::Callback<void(chrome_common_net::DnsProbeStatus result)>
- ProbeCallback;
+ typedef base::Callback<void(chrome_common_net::DnsProbeResult result)>
+ CallbackType;
DnsProbeService();
virtual ~DnsProbeService();
- virtual void ProbeDns(const ProbeCallback& callback);
+ void ProbeDns(const CallbackType& callback);
- // NetworkChangeNotifier::DNSObserver implementation:
- virtual void OnDNSChanged() OVERRIDE;
+ // NetworkChangeNotifier::IPAddressObserver implementation:
+ virtual void OnIPAddressChanged() OVERRIDE;
- void SetSystemClientForTesting(scoped_ptr<net::DnsClient> system_client);
- void SetPublicClientForTesting(scoped_ptr<net::DnsClient> public_client);
- void ClearCachedResultForTesting();
+ protected:
+ // This can be called by tests to pretend the cached reuslt has expired.
+ void ExpireResults();
private:
enum State {
- STATE_NO_RESULT,
+ STATE_NO_RESULTS,
STATE_PROBE_RUNNING,
- STATE_RESULT_CACHED,
+ STATE_RESULTS_CACHED,
};
- void SetSystemClientToCurrentConfig();
- void SetPublicClientToGooglePublicDns();
-
- // Starts a probe (runs system and public probes).
void StartProbes();
- void OnProbeComplete();
- // Calls all |pending_callbacks_| with the |cached_result_|.
+ void OnProbesComplete();
void CallCallbacks();
- // Clears a cached probe result.
- void ClearCachedResult();
- bool CachedResultIsExpired() const;
+ void OnProbeJobComplete(DnsProbeJob* job, DnsProbeJob::Result result);
+ chrome_common_net::DnsProbeResult EvaluateResults() const;
+ void HistogramProbes() const;
+ // These are expected to be overridden by tests to return mock jobs.
+ virtual scoped_ptr<DnsProbeJob> CreateSystemProbeJob(
+ const DnsProbeJob::CallbackType& job_callback);
+ virtual scoped_ptr<DnsProbeJob> CreatePublicProbeJob(
+ const DnsProbeJob::CallbackType& job_callback);
+
+ scoped_ptr<DnsProbeJob> CreateProbeJob(
+ const net::DnsConfig& dns_config,
+ const DnsProbeJob::CallbackType& job_callback);
+ void GetSystemDnsConfig(net::DnsConfig* config);
+ void GetPublicDnsConfig(net::DnsConfig* config);
+ bool ResultsExpired();
+
+ scoped_ptr<DnsProbeJob> system_job_;
+ scoped_ptr<DnsProbeJob> public_job_;
+ DnsProbeJob::Result system_result_;
+ DnsProbeJob::Result public_result_;
+ std::vector<CallbackType> callbacks_;
State state_;
- std::vector<ProbeCallback> pending_callbacks_;
+ chrome_common_net::DnsProbeResult result_;
base::Time probe_start_time_;
- chrome_common_net::DnsProbeStatus cached_result_;
+ // How many DNS request attempts the probe jobs will make before giving up
+ // (Overrides the attempts field in the system DnsConfig.)
+ const int dns_attempts_;
+ // How many nameservers the system config has.
+ int system_nameserver_count_;
+ // Whether the only system nameserver is 127.0.0.1.
+ bool system_is_localhost_;
- // DnsProbeRunners for the system DNS configuration and a public DNS server.
- DnsProbeRunner system_runner_;
- DnsProbeRunner public_runner_;
-
DISALLOW_COPY_AND_ASSIGN(DnsProbeService);
};
« no previous file with comments | « chrome/browser/net/dns_probe_runner.cc ('k') | chrome/browser/net/dns_probe_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698