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