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