url_request_redirect_job.cc revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file.
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "net/url_request/url_request_redirect_job.h"
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
79ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/bind.h"
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/compiler_specific.h"
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/message_loop.h"
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace net {
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)URLRequestRedirectJob::URLRequestRedirectJob(URLRequest* request,
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                             NetworkDelegate* network_delegate,
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                             const GURL& redirect_destination,
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                             StatusCode http_status_code)
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    : URLRequestJob(request, network_delegate),
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      redirect_destination_(redirect_destination),
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      http_status_code_(http_status_code),
203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) {}
215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void URLRequestRedirectJob::Start() {
235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  MessageLoop::current()->PostTask(
24f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      FROM_HERE,
255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      base::Bind(&URLRequestRedirectJob::StartAsync,
265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                 weak_factory_.GetWeakPtr()));
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool URLRequestRedirectJob::IsRedirectResponse(GURL* location,
305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               int* http_status_code) {
31  *location = redirect_destination_;
32  *http_status_code = http_status_code_;
33  return true;
34}
35
36URLRequestRedirectJob::~URLRequestRedirectJob() {}
37
38void URLRequestRedirectJob::StartAsync() {
39  NotifyHeadersComplete();
40}
41
42}  // namespace net
43