15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "components/captive_portal/captive_portal_testing_utils.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/logging.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/ref_counted.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "net/base/net_errors.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "net/http/http_response_headers.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/http/http_util.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace { 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)scoped_refptr<net::HttpResponseHeaders> CreateResponseHeaders( 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& response_headers) { 175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu std::string raw_headers = net::HttpUtil::AssembleRawHeaders( 185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu response_headers.c_str(), static_cast<int>(response_headers.length())); 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return new net::HttpResponseHeaders(raw_headers); 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace captive_portal { 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)CaptivePortalDetectorTestBase::CaptivePortalDetectorTestBase() 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : detector_(NULL) { 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)CaptivePortalDetectorTestBase::~CaptivePortalDetectorTestBase() { 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void CaptivePortalDetectorTestBase::SetTime(const base::Time& time) { 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) detector()->set_time_for_testing(time); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void CaptivePortalDetectorTestBase::AdvanceTime(const base::TimeDelta& delta) { 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) detector()->advance_time_for_testing(delta); 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool CaptivePortalDetectorTestBase::FetchingURL() { 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return detector()->FetchingURL(); 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void CaptivePortalDetectorTestBase::CompleteURLFetch( 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int net_error, 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int status_code, 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const char* response_headers) { 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (net_error != net::OK) { 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DCHECK(!response_headers); 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) fetcher()->set_status(net::URLRequestStatus(net::URLRequestStatus::FAILED, 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) net_error)); 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } else { 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) fetcher()->set_response_code(status_code); 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (response_headers) { 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_refptr<net::HttpResponseHeaders> headers( 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) CreateResponseHeaders(response_headers)); 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DCHECK_EQ(status_code, headers->response_code()); 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) fetcher()->set_response_headers(headers); 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) detector()->OnURLFetchComplete(fetcher()); 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace captive_portal 66