1// Copyright (c) 2011 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 5#include "chrome/browser/net/url_request_failed_dns_job.h" 6 7#include "base/compiler_specific.h" 8#include "base/message_loop.h" 9#include "googleurl/src/gurl.h" 10#include "net/base/net_errors.h" 11#include "net/url_request/url_request.h" 12#include "net/url_request/url_request_filter.h" 13 14const char URLRequestFailedDnsJob::kTestUrl[] = 15 "http://url.handled.by.fake.dns/"; 16 17URLRequestFailedDnsJob::URLRequestFailedDnsJob(net::URLRequest* request) 18 : net::URLRequestJob(request), 19 ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)) {} 20 21URLRequestFailedDnsJob::~URLRequestFailedDnsJob() {} 22 23void URLRequestFailedDnsJob::Start() { 24 MessageLoop::current()->PostTask( 25 FROM_HERE, 26 method_factory_.NewRunnableMethod( 27 &URLRequestFailedDnsJob::StartAsync)); 28} 29 30// static 31void URLRequestFailedDnsJob::AddUrlHandler() { 32 net::URLRequestFilter* filter = net::URLRequestFilter::GetInstance(); 33 filter->AddUrlHandler(GURL(kTestUrl), 34 &URLRequestFailedDnsJob::Factory); 35} 36 37/*static */ 38net::URLRequestJob* URLRequestFailedDnsJob::Factory(net::URLRequest* request, 39 const std::string& scheme) { 40 return new URLRequestFailedDnsJob(request); 41} 42 43void URLRequestFailedDnsJob::StartAsync() { 44 NotifyStartError(net::URLRequestStatus(net::URLRequestStatus::FAILED, 45 net::ERR_NAME_NOT_RESOLVED)); 46} 47