172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/net/url_request_failed_dns_job.h" 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "base/compiler_specific.h" 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/message_loop.h" 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "googleurl/src/gurl.h" 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "net/base/net_errors.h" 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "net/url_request/url_request.h" 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "net/url_request/url_request_filter.h" 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst char URLRequestFailedDnsJob::kTestUrl[] = 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "http://url.handled.by.fake.dns/"; 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian MonsenURLRequestFailedDnsJob::URLRequestFailedDnsJob(net::URLRequest* request) 1821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen : net::URLRequestJob(request), 1921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)) {} 2021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 2121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian MonsenURLRequestFailedDnsJob::~URLRequestFailedDnsJob() {} 2221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid URLRequestFailedDnsJob::Start() { 2421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen MessageLoop::current()->PostTask( 2521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen FROM_HERE, 2621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen method_factory_.NewRunnableMethod( 2721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen &URLRequestFailedDnsJob::StartAsync)); 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 303f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen// static 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid URLRequestFailedDnsJob::AddUrlHandler() { 323f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen net::URLRequestFilter* filter = net::URLRequestFilter::GetInstance(); 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch filter->AddUrlHandler(GURL(kTestUrl), 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch &URLRequestFailedDnsJob::Factory); 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch/*static */ 3821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsennet::URLRequestJob* URLRequestFailedDnsJob::Factory(net::URLRequest* request, 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const std::string& scheme) { 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return new URLRequestFailedDnsJob(request); 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid URLRequestFailedDnsJob::StartAsync() { 4472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen NotifyStartError(net::URLRequestStatus(net::URLRequestStatus::FAILED, 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch net::ERR_NAME_NOT_RESOLVED)); 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 47