1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4// This class simulates what wininet does when a dns lookup fails. 5 6#ifndef CONTENT_TEST_NET_URL_REQUEST_ABORT_ON_END_JOB_H_ 7#define CONTENT_TEST_NET_URL_REQUEST_ABORT_ON_END_JOB_H_ 8 9#include <string> 10 11#include "base/basictypes.h" 12#include "base/compiler_specific.h" 13#include "base/memory/weak_ptr.h" 14#include "net/url_request/url_request_job.h" 15 16namespace content { 17 18// This url request simulates a network error which occurs immediately after 19// receiving the very first data. 20 21class URLRequestAbortOnEndJob : public net::URLRequestJob { 22 public: 23 static const char k400AbortOnEndUrl[]; 24 25 URLRequestAbortOnEndJob(net::URLRequest* request, 26 net::NetworkDelegate* network_delegate); 27 28 // net::URLRequestJob 29 virtual void Start() OVERRIDE; 30 virtual bool GetMimeType(std::string* mime_type) const OVERRIDE; 31 virtual void GetResponseInfo(net::HttpResponseInfo* info) OVERRIDE; 32 virtual bool ReadRawData(net::IOBuffer* buf, 33 int buf_size, 34 int* bytes_read) OVERRIDE; 35 36 static void AddUrlHandler(); 37 38 private: 39 virtual ~URLRequestAbortOnEndJob(); 40 41 void GetResponseInfoConst(net::HttpResponseInfo* info) const; 42 void StartAsync(); 43 44 bool sent_data_; 45 46 base::WeakPtrFactory<URLRequestAbortOnEndJob> weak_factory_; 47 48 DISALLOW_COPY_AND_ASSIGN(URLRequestAbortOnEndJob); 49}; 50 51} // namespace content 52 53#endif // CONTENT_TEST_NET_URL_REQUEST_ABORT_ON_END_JOB_H_ 54