17dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved.
27dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
37dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// found in the LICENSE file.
47dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
57dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "chrome/browser/net/net_error_tab_helper.h"
67dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
77dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "chrome/common/net/net_error_info.h"
8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/test/base/chrome_render_view_host_test_harness.h"
97dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "content/public/browser/browser_thread.h"
107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "net/base/net_errors.h"
117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "testing/gtest/include/gtest/gtest.h"
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ui/base/page_transition_types.h"
137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochusing chrome_browser_net::NetErrorTabHelper;
157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochusing chrome_common_net::DnsProbeStatus;
167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass TestNetErrorTabHelper : public NetErrorTabHelper {
187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch public:
197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  TestNetErrorTabHelper()
207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      : NetErrorTabHelper(NULL),
217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        mock_probe_running_(false),
227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        last_status_sent_(chrome_common_net::DNS_PROBE_MAX),
237dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        mock_sent_count_(0) {}
247dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  void FinishProbe(DnsProbeStatus status) {
267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    EXPECT_TRUE(mock_probe_running_);
277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    OnDnsProbeFinished(status);
287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    mock_probe_running_ = false;
297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  }
307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  bool mock_probe_running() const { return mock_probe_running_; }
327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  DnsProbeStatus last_status_sent() const { return last_status_sent_; }
337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  int mock_sent_count() const { return mock_sent_count_; }
347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch private:
367dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  virtual void StartDnsProbe() OVERRIDE {
377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    EXPECT_FALSE(mock_probe_running_);
387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    mock_probe_running_ = true;
397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  }
407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  virtual void SendInfo() OVERRIDE {
427dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    last_status_sent_ = dns_probe_status();
437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    mock_sent_count_++;
447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  }
457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  bool mock_probe_running_;
477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  DnsProbeStatus last_status_sent_;
487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  int mock_sent_count_;
497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch};
507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
51116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass NetErrorTabHelperTest : public ChromeRenderViewHostTestHarness {
527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch protected:
537dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  enum MainFrame { SUB_FRAME, MAIN_FRAME };
547dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  enum ErrorPage { NORMAL_PAGE, ERROR_PAGE };
557dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  enum ErrorType { DNS_ERROR, OTHER_ERROR };
567dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void SetUp() OVERRIDE {
58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    ChromeRenderViewHostTestHarness::SetUp();
59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    subframe_ = content::RenderFrameHostTester::For(main_rfh())
60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                    ->AppendChild("subframe");
61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    tab_helper_.reset(new TestNetErrorTabHelper);
637dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    NetErrorTabHelper::set_state_for_testing(
647dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        NetErrorTabHelper::TESTING_FORCE_ENABLED);
657dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  }
667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
677dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  void StartProvisionalLoad(MainFrame main_frame, ErrorPage error_page) {
68116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    tab_helper_->DidStartProvisionalLoadForFrame(
69116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        (main_frame == MAIN_FRAME) ? main_rfh() : subframe_,
707dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        bogus_url_,  // validated_url
717dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        (error_page == ERROR_PAGE),
72116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        false);  // is_iframe_srcdoc
737dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  }
747dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
757dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  void CommitProvisionalLoad(MainFrame main_frame) {
76116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    tab_helper_->DidCommitProvisionalLoadForFrame(
77116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        (main_frame == MAIN_FRAME) ? main_rfh() : subframe_,
787dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        bogus_url_,  // url
791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        ui::PAGE_TRANSITION_TYPED);
807dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  }
817dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
827dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  void FailProvisionalLoad(MainFrame main_frame, ErrorType error_type) {
837dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    int net_error;
847dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
857dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    if (error_type == DNS_ERROR)
867dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      net_error = net::ERR_NAME_NOT_RESOLVED;
877dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    else
887dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      net_error = net::ERR_TIMED_OUT;
897dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
90116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    tab_helper_->DidFailProvisionalLoad(
91116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        (main_frame == MAIN_FRAME) ? main_rfh() : subframe_,
927dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        bogus_url_,  // validated_url
937dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        net_error,
94116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        base::string16());
957dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  }
967dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
97116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  void FinishProbe(DnsProbeStatus status) { tab_helper_->FinishProbe(status); }
987dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
99116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  bool probe_running() { return tab_helper_->mock_probe_running(); }
100116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  DnsProbeStatus last_status_sent() { return tab_helper_->last_status_sent(); }
101116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  int sent_count() { return tab_helper_->mock_sent_count(); }
1027dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1037dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch private:
104116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  content::RenderFrameHost* subframe_;
105116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  scoped_ptr<TestNetErrorTabHelper> tab_helper_;
1067dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  GURL bogus_url_;
1077dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch};
1087dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1097dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetErrorTabHelperTest, Null) {
1107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
1117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
1127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1137dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetErrorTabHelperTest, MainFrameNonDnsError) {
1147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
1157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FailProvisionalLoad(MAIN_FRAME, OTHER_ERROR);
1167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
1177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
1187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
1197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1207dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetErrorTabHelperTest, NonMainFrameDnsError) {
1217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(SUB_FRAME, NORMAL_PAGE);
1227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FailProvisionalLoad(SUB_FRAME, DNS_ERROR);
1237dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
1247dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
1257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
1267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Test complete DNS error page loads.  Note that the helper can see two error
1287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// page loads: Link Doctor loads an empty HTML page so the user knows something
1297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// is going on, then fails over to the normal error page if and when Link
1307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Doctor fails to load or declines to provide a page.
1317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1327dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetErrorTabHelperTest, ProbeResponseBeforeFirstCommit) {
1337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
1347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FailProvisionalLoad(MAIN_FRAME, DNS_ERROR);
1357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
1367dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
1377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
1397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
1407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
1417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1427dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FinishProbe(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN);
1437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
1447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
1457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
1477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
1487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(1, sent_count());
1497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN, last_status_sent());
1507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
1527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
1537dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(1, sent_count());
1547dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1557dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
1567dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
1577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(2, sent_count());
1587dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN, last_status_sent());
1597dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
1607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1617dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetErrorTabHelperTest, ProbeResponseBetweenFirstAndSecondCommit) {
1627dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
1637dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FailProvisionalLoad(MAIN_FRAME, DNS_ERROR);
1647dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
1657dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
1667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1677dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
1687dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
1697dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
1707dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1717dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
1727dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
1737dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(1, sent_count());
1747dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_STARTED, last_status_sent());
1757dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1767dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FinishProbe(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN);
1777dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
1787dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(2, sent_count());
1797dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN, last_status_sent());
1807dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1817dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
1827dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
1837dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(2, sent_count());
1847dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1857dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
1867dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
1877dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(3, sent_count());
1887dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN, last_status_sent());
1897dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
1907dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1917dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetErrorTabHelperTest, ProbeResponseAfterSecondCommit) {
1927dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
1937dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FailProvisionalLoad(MAIN_FRAME, DNS_ERROR);
1947dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
1957dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
1967dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1977dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
1987dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
1997dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
2007dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2017dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
2027dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2037dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(1, sent_count());
2047dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_STARTED, last_status_sent());
2057dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2067dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
2077dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2087dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(1, sent_count());
2097dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
2117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(2, sent_count());
2137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_STARTED, last_status_sent());
2147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FinishProbe(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN);
2167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
2177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(3, sent_count());
2187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN, last_status_sent());
2197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
2207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Send result even if a new page load has started; the error page is still
2227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// visible, and the user might cancel the load.
2237dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetErrorTabHelperTest, ProbeResponseAfterNewStart) {
2247dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
2257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FailProvisionalLoad(MAIN_FRAME, DNS_ERROR);
2267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
2287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
2307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
2327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
2347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(1, sent_count());
2367dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_STARTED, last_status_sent());
2377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
2397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(1, sent_count());
2417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2427dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
2437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(2, sent_count());
2457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_STARTED, last_status_sent());
2467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
2487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(2, sent_count());
2507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FinishProbe(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN);
2527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
2537dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(3, sent_count());
2547dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN, last_status_sent());
2557dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
2567dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Don't send result if a new page has committed; the result would go to the
2587dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// wrong page, and the error page is gone anyway.
2597dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetErrorTabHelperTest, ProbeResponseAfterNewCommit) {
2607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
2617dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FailProvisionalLoad(MAIN_FRAME, DNS_ERROR);
2627dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2637dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
2647dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2657dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
2667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2677dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
2687dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2697dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
2707dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2717dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(1, sent_count());
2727dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_STARTED, last_status_sent());
2737dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2747dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
2757dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2767dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(1, sent_count());
2777dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2787dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
2797dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2807dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(2, sent_count());
2817dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_STARTED, last_status_sent());
2827dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2837dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
2847dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2857dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(2, sent_count());
2867dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2877dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
2887dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2897dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(2, sent_count());
2907dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2917dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FinishProbe(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN);
2927dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
2937dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(2, sent_count());
2947dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
2957dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2967dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetErrorTabHelperTest, MultipleDnsErrorsWithProbesWithoutErrorPages) {
2977dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
2987dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FailProvisionalLoad(MAIN_FRAME, DNS_ERROR);
2997dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
3007dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
3017dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
3027dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FinishProbe(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN);
3037dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
3047dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
3057dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
3067dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
3077dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FailProvisionalLoad(MAIN_FRAME, DNS_ERROR);
3087dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
3097dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
3107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
3117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FinishProbe(chrome_common_net::DNS_PROBE_FINISHED_NO_INTERNET);
3127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
3137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
3147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
3157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
3167dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetErrorTabHelperTest, MultipleDnsErrorsWithProbesAndErrorPages) {
3177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
3187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FailProvisionalLoad(MAIN_FRAME, DNS_ERROR);
3197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
3207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
3217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
3227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
3237dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
3247dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
3257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(1, sent_count());
3267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_STARTED, last_status_sent());
3277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
3287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FinishProbe(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN);
3297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
3307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(2, sent_count());
3317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN, last_status_sent());
3327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
3337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
3347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FailProvisionalLoad(MAIN_FRAME, DNS_ERROR);
3357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
3367dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(2, sent_count());
3377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
3387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
3397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
3407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
3417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(3, sent_count());
3427dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_STARTED, last_status_sent());
3437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
3447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FinishProbe(chrome_common_net::DNS_PROBE_FINISHED_NO_INTERNET);
3457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
3467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(4, sent_count());
3477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_FINISHED_NO_INTERNET,
3487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch            last_status_sent());
3497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
3507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
3517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// If multiple DNS errors occur in a row before a probe result, don't start
3527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// multiple probes.
3537dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetErrorTabHelperTest, CoalesceFailures) {
3547dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
3557dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FailProvisionalLoad(MAIN_FRAME, DNS_ERROR);
3567dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
3577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
3587dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
3597dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(1, sent_count());
3607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_STARTED, last_status_sent());
3617dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
3627dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
3637dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FailProvisionalLoad(MAIN_FRAME, DNS_ERROR);
3647dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
3657dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
3667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
3677dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(2, sent_count());
3687dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_STARTED, last_status_sent());
3697dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
3707dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
3717dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FailProvisionalLoad(MAIN_FRAME, DNS_ERROR);
3727dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
3737dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
3747dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
3757dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(3, sent_count());
3767dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_STARTED, last_status_sent());
3777dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
3787dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FinishProbe(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN);
3797dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
3807dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(4, sent_count());
3817dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN, last_status_sent());
3827dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
383