Index: chrome/browser/net/net_error_tab_helper.h |
=================================================================== |
--- chrome/browser/net/net_error_tab_helper.h (revision 212348) |
+++ chrome/browser/net/net_error_tab_helper.h (working copy) |
@@ -6,12 +6,12 @@ |
#define CHROME_BROWSER_NET_NET_ERROR_TAB_HELPER_H_ |
#include "base/basictypes.h" |
-#include "base/bind.h" |
#include "base/compiler_specific.h" |
#include "base/memory/weak_ptr.h" |
#include "base/prefs/pref_member.h" |
#include "chrome/browser/net/dns_probe_service.h" |
#include "chrome/common/net/net_error_info.h" |
+#include "chrome/common/net/net_error_tracker.h" |
#include "content/public/browser/web_contents_observer.h" |
#include "content/public/browser/web_contents_user_data.h" |
@@ -30,21 +30,10 @@ |
TESTING_FORCE_ENABLED |
}; |
- typedef base::Callback<void(chrome_common_net::DnsProbeStatus)> |
- DnsProbeStatusSnoopCallback; |
- |
virtual ~NetErrorTabHelper(); |
static void set_state_for_testing(TestingState testing_state); |
- // Sets a callback that will be called immediately after the helper sends |
- // a NetErrorHelper IPC. (Used by the DNS probe browser test to know when to |
- // check the error page for updates, instead of polling.) |
- void set_dns_probe_status_snoop_callback_for_testing( |
- const DnsProbeStatusSnoopCallback& dns_probe_status_snoop_callback) { |
- dns_probe_status_snoop_callback_ = dns_probe_status_snoop_callback; |
- } |
- |
// content::WebContentsObserver implementation. |
virtual void DidStartProvisionalLoadForFrame( |
int64 frame_id, |
@@ -70,50 +59,43 @@ |
const string16& error_description, |
content::RenderViewHost* render_view_host) OVERRIDE; |
- protected: |
- // |contents| is the WebContents of the tab this NetErrorTabHelper is |
- // attached to. |
- explicit NetErrorTabHelper(content::WebContents* contents); |
- virtual void StartDnsProbe(); |
- virtual void SendInfo(); |
- void OnDnsProbeFinished(chrome_common_net::DnsProbeStatus result); |
+ virtual void DidFinishLoad( |
+ int64 frame_id, |
+ const GURL& validated_url, |
+ bool is_main_frame, |
+ content::RenderViewHost* render_view_host) OVERRIDE; |
- chrome_common_net::DnsProbeStatus dns_probe_status() const { |
- return dns_probe_status_; |
- } |
- |
private: |
friend class content::WebContentsUserData<NetErrorTabHelper>; |
- void OnMainFrameDnsError(); |
+ enum DnsProbeState { |
+ DNS_PROBE_NONE, |
+ DNS_PROBE_STARTED, |
+ DNS_PROBE_FINISHED |
+ }; |
+ // |contents| is the WebContents of the tab this NetErrorTabHelper is |
+ // attached to. |
+ explicit NetErrorTabHelper(content::WebContents* contents); |
+ |
+ void TrackerCallback(NetErrorTracker::DnsErrorPageState state); |
+ void MaybePostStartDnsProbeTask(); |
+ void OnDnsProbeFinished(chrome_common_net::DnsProbeResult result); |
+ void MaybeSendInfo(); |
+ |
void InitializePref(content::WebContents* contents); |
bool ProbesAllowed() const; |
base::WeakPtrFactory<NetErrorTabHelper> weak_factory_; |
- // True if the last provisional load that started was for an error page. |
- bool is_error_page_; |
+ NetErrorTracker tracker_; |
+ NetErrorTracker::DnsErrorPageState dns_error_page_state_; |
- // True if the helper has seen a main frame page load fail with a DNS error, |
- // but has not yet seen a new page commit successfully afterwards. |
- bool dns_error_active_; |
+ DnsProbeState dns_probe_state_; |
+ chrome_common_net::DnsProbeResult dns_probe_result_; |
- // True if the helper has seen an error page commit while |dns_error_active_| |
- // is true. (This should never be true if |dns_error_active_| is false.) |
- bool dns_error_page_committed_; |
- |
- // The status of a DNS probe that may or may not have started or finished. |
- // Since the renderer can change out from under the helper (in cross-process |
- // navigations), it re-sends the status whenever an error page commits. |
- chrome_common_net::DnsProbeStatus dns_probe_status_; |
- |
// Whether we are enabled to run by the DnsProbe-Enable field trial. |
const bool enabled_by_trial_; |
- |
- // Optional callback for browser test to snoop on outgoing NetErrorInfo IPCs. |
- DnsProbeStatusSnoopCallback dns_probe_status_snoop_callback_; |
- |
// "Use a web service to resolve navigation errors" preference is required |
// to allow probes. |
BooleanPrefMember resolve_errors_with_web_service_; |