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
79ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/message_loop/message_loop.h"
87dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "chrome/common/net/net_error_info.h"
97dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "content/public/browser/browser_thread.h"
107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "content/public/common/page_transition_types.h"
117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "content/public/test/test_browser_thread.h"
127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "net/base/net_errors.h"
137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "testing/gtest/include/gtest/gtest.h"
147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochusing base::MessageLoop;
167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochusing chrome_browser_net::NetErrorTabHelper;
177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochusing chrome_common_net::DnsProbeStatus;
187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochusing content::BrowserThread;
197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochusing content::TestBrowserThread;
207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass TestNetErrorTabHelper : public NetErrorTabHelper {
227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch public:
237dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  TestNetErrorTabHelper()
247dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      : NetErrorTabHelper(NULL),
257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        mock_probe_running_(false),
267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        last_status_sent_(chrome_common_net::DNS_PROBE_MAX),
277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        mock_sent_count_(0) {}
287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  void FinishProbe(DnsProbeStatus status) {
307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    EXPECT_TRUE(mock_probe_running_);
317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    OnDnsProbeFinished(status);
327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    mock_probe_running_ = false;
337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  }
347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  bool mock_probe_running() const { return mock_probe_running_; }
367dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  DnsProbeStatus last_status_sent() const { return last_status_sent_; }
377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  int mock_sent_count() const { return mock_sent_count_; }
387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch private:
407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  virtual void StartDnsProbe() OVERRIDE {
417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    EXPECT_FALSE(mock_probe_running_);
427dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    mock_probe_running_ = true;
437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  }
447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  virtual void SendInfo() OVERRIDE {
467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    last_status_sent_ = dns_probe_status();
477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    mock_sent_count_++;
487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  }
497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  bool mock_probe_running_;
517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  DnsProbeStatus last_status_sent_;
527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  int mock_sent_count_;
537dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch};
547dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
557dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass NetErrorTabHelperTest : public testing::Test {
567dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch protected:
577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  enum MainFrame { SUB_FRAME, MAIN_FRAME };
587dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  enum ErrorPage { NORMAL_PAGE, ERROR_PAGE };
597dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  enum ErrorType { DNS_ERROR, OTHER_ERROR };
607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
617dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  NetErrorTabHelperTest()
627dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      : fake_ui_thread_(BrowserThread::UI, &message_loop_) {
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) {
687dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    tab_helper_.DidStartProvisionalLoadForFrame(
697dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        1,  // frame_id
707dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        0,  // parent_frame_id
717dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        (main_frame == MAIN_FRAME),
727dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        bogus_url_,  // validated_url
737dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        (error_page == ERROR_PAGE),
747dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        false,  // is_iframe_srcdoc
757dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        NULL);  // render_view_host
767dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  }
777dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
787dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  void CommitProvisionalLoad(MainFrame main_frame) {
797dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    tab_helper_.DidCommitProvisionalLoadForFrame(
807dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        1,  // frame id
817dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        (main_frame == MAIN_FRAME),
827dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        bogus_url_,  // url
837dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        content::PAGE_TRANSITION_TYPED,
847dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        NULL);  // render_view_host
857dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  }
867dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
877dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  void FailProvisionalLoad(MainFrame main_frame, ErrorType error_type) {
887dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    int net_error;
897dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
907dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    if (error_type == DNS_ERROR)
917dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      net_error = net::ERR_NAME_NOT_RESOLVED;
927dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    else
937dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      net_error = net::ERR_TIMED_OUT;
947dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
957dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    tab_helper_.DidFailProvisionalLoad(
967dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        1,  // frame id
977dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        (main_frame == MAIN_FRAME),
987dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        bogus_url_,  // validated_url
997dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        net_error,
1007dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        string16(),
1017dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        NULL);  // render_view_host
1027dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  }
1037dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1047dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  void FinishProbe(DnsProbeStatus status) {
1057dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    tab_helper_.FinishProbe(status);
1067dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  }
1077dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1087dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  bool probe_running() { return tab_helper_.mock_probe_running(); }
1097dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  DnsProbeStatus last_status_sent() { return tab_helper_.last_status_sent(); }
1107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  int sent_count() { return tab_helper_.mock_sent_count(); }
1117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch private:
1137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  MessageLoop message_loop_;
1147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  TestBrowserThread fake_ui_thread_;
1157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  TestNetErrorTabHelper tab_helper_;
1167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  GURL bogus_url_;
1177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch};
1187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1197dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetErrorTabHelperTest, Null) {
1207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
1217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
1227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1237dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetErrorTabHelperTest, MainFrameNonDnsError) {
1247dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
1257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FailProvisionalLoad(MAIN_FRAME, OTHER_ERROR);
1267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
1277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
1287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
1297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1307dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetErrorTabHelperTest, NonMainFrameDnsError) {
1317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(SUB_FRAME, NORMAL_PAGE);
1327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FailProvisionalLoad(SUB_FRAME, DNS_ERROR);
1337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
1347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
1357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
1367dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Test complete DNS error page loads.  Note that the helper can see two error
1387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// page loads: Link Doctor loads an empty HTML page so the user knows something
1397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// is going on, then fails over to the normal error page if and when Link
1407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Doctor fails to load or declines to provide a page.
1417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1427dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetErrorTabHelperTest, ProbeResponseBeforeFirstCommit) {
1437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
1447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FailProvisionalLoad(MAIN_FRAME, DNS_ERROR);
1457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
1467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
1477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
1497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
1507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
1517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FinishProbe(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN);
1537dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
1547dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
1557dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1567dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
1577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
1587dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(1, sent_count());
1597dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN, last_status_sent());
1607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1617dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
1627dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
1637dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(1, sent_count());
1647dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1657dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
1667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
1677dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(2, sent_count());
1687dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN, last_status_sent());
1697dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
1707dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1717dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetErrorTabHelperTest, ProbeResponseBetweenFirstAndSecondCommit) {
1727dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
1737dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FailProvisionalLoad(MAIN_FRAME, DNS_ERROR);
1747dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
1757dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
1767dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1777dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
1787dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
1797dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
1807dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1817dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
1827dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
1837dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(1, sent_count());
1847dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_STARTED, last_status_sent());
1857dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1867dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FinishProbe(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN);
1877dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
1887dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(2, sent_count());
1897dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN, last_status_sent());
1907dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1917dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
1927dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
1937dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(2, sent_count());
1947dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1957dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
1967dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
1977dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(3, sent_count());
1987dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN, last_status_sent());
1997dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
2007dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2017dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetErrorTabHelperTest, ProbeResponseAfterSecondCommit) {
2027dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
2037dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FailProvisionalLoad(MAIN_FRAME, DNS_ERROR);
2047dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2057dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
2067dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2077dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
2087dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2097dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
2107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
2127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(1, sent_count());
2147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_STARTED, last_status_sent());
2157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
2177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(1, sent_count());
2197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
2217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(2, sent_count());
2237dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_STARTED, last_status_sent());
2247dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FinishProbe(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN);
2267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
2277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(3, sent_count());
2287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN, last_status_sent());
2297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
2307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Send result even if a new page load has started; the error page is still
2327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// visible, and the user might cancel the load.
2337dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetErrorTabHelperTest, ProbeResponseAfterNewStart) {
2347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
2357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FailProvisionalLoad(MAIN_FRAME, DNS_ERROR);
2367dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
2387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
2407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
2427dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
2447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(1, sent_count());
2467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_STARTED, last_status_sent());
2477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
2497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(1, sent_count());
2517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
2537dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2547dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(2, sent_count());
2557dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_STARTED, last_status_sent());
2567dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
2587dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2597dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(2, sent_count());
2607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2617dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FinishProbe(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN);
2627dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
2637dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(3, sent_count());
2647dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN, last_status_sent());
2657dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
2667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2677dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Don't send result if a new page has committed; the result would go to the
2687dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// wrong page, and the error page is gone anyway.
2697dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetErrorTabHelperTest, ProbeResponseAfterNewCommit) {
2707dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
2717dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FailProvisionalLoad(MAIN_FRAME, DNS_ERROR);
2727dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2737dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
2747dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2757dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
2767dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2777dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
2787dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2797dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
2807dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2817dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(1, sent_count());
2827dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_STARTED, last_status_sent());
2837dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2847dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
2857dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2867dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(1, sent_count());
2877dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2887dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
2897dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2907dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(2, sent_count());
2917dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_STARTED, last_status_sent());
2927dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2937dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
2947dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2957dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(2, sent_count());
2967dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
2977dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
2987dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
2997dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(2, sent_count());
3007dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
3017dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FinishProbe(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN);
3027dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
3037dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(2, sent_count());
3047dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
3057dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
3067dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetErrorTabHelperTest, MultipleDnsErrorsWithProbesWithoutErrorPages) {
3077dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
3087dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FailProvisionalLoad(MAIN_FRAME, DNS_ERROR);
3097dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
3107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
3117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
3127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FinishProbe(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN);
3137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
3147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
3157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
3167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
3177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FailProvisionalLoad(MAIN_FRAME, DNS_ERROR);
3187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
3197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
3207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
3217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FinishProbe(chrome_common_net::DNS_PROBE_FINISHED_NO_INTERNET);
3227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
3237dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
3247dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
3257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
3267dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetErrorTabHelperTest, MultipleDnsErrorsWithProbesAndErrorPages) {
3277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
3287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FailProvisionalLoad(MAIN_FRAME, DNS_ERROR);
3297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
3307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(0, sent_count());
3317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
3327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
3337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
3347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
3357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(1, sent_count());
3367dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_STARTED, last_status_sent());
3377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
3387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FinishProbe(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN);
3397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
3407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(2, sent_count());
3417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN, last_status_sent());
3427dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
3437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
3447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FailProvisionalLoad(MAIN_FRAME, DNS_ERROR);
3457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
3467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(2, sent_count());
3477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
3487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
3497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
3507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
3517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(3, sent_count());
3527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_STARTED, last_status_sent());
3537dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
3547dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FinishProbe(chrome_common_net::DNS_PROBE_FINISHED_NO_INTERNET);
3557dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
3567dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(4, sent_count());
3577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_FINISHED_NO_INTERNET,
3587dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch            last_status_sent());
3597dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
3607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
3617dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// If multiple DNS errors occur in a row before a probe result, don't start
3627dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// multiple probes.
3637dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetErrorTabHelperTest, CoalesceFailures) {
3647dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
3657dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FailProvisionalLoad(MAIN_FRAME, DNS_ERROR);
3667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
3677dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
3687dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
3697dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(1, sent_count());
3707dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_STARTED, last_status_sent());
3717dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
3727dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
3737dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FailProvisionalLoad(MAIN_FRAME, DNS_ERROR);
3747dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
3757dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
3767dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
3777dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(2, sent_count());
3787dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_STARTED, last_status_sent());
3797dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
3807dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE);
3817dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FailProvisionalLoad(MAIN_FRAME, DNS_ERROR);
3827dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE);
3837dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  CommitProvisionalLoad(MAIN_FRAME);
3847dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_TRUE(probe_running());
3857dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(3, sent_count());
3867dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_STARTED, last_status_sent());
3877dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
3887dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  FinishProbe(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN);
3897dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_FALSE(probe_running());
3907dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(4, sent_count());
3917dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN, last_status_sent());
3927dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
393