Home | History | Annotate | Download | only in net
      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 
     14 const char URLRequestFailedDnsJob::kTestUrl[] =
     15     "http://url.handled.by.fake.dns/";
     16 
     17 URLRequestFailedDnsJob::URLRequestFailedDnsJob(net::URLRequest* request)
     18     : net::URLRequestJob(request),
     19       ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)) {}
     20 
     21 URLRequestFailedDnsJob::~URLRequestFailedDnsJob() {}
     22 
     23 void URLRequestFailedDnsJob::Start() {
     24   MessageLoop::current()->PostTask(
     25       FROM_HERE,
     26       method_factory_.NewRunnableMethod(
     27           &URLRequestFailedDnsJob::StartAsync));
     28 }
     29 
     30 // static
     31 void URLRequestFailedDnsJob::AddUrlHandler() {
     32   net::URLRequestFilter* filter = net::URLRequestFilter::GetInstance();
     33   filter->AddUrlHandler(GURL(kTestUrl),
     34                         &URLRequestFailedDnsJob::Factory);
     35 }
     36 
     37 /*static */
     38 net::URLRequestJob* URLRequestFailedDnsJob::Factory(net::URLRequest* request,
     39     const std::string& scheme) {
     40   return new URLRequestFailedDnsJob(request);
     41 }
     42 
     43 void URLRequestFailedDnsJob::StartAsync() {
     44   NotifyStartError(net::URLRequestStatus(net::URLRequestStatus::FAILED,
     45                                     net::ERR_NAME_NOT_RESOLVED));
     46 }
     47