1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Use of this source code is governed by a BSD-style license that can be
3c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// found in the LICENSE file.
4c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
5c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "net/url_request/url_request_redirect_job.h"
6c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/compiler_specific.h"
8c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "base/message_loop.h"
9c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
1021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsennamespace net {
1121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
1221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian MonsenURLRequestRedirectJob::URLRequestRedirectJob(URLRequest* request,
13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                                             const GURL& redirect_destination)
14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    : URLRequestJob(request),
15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      redirect_destination_(redirect_destination),
16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)) {}
17c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
18c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottvoid URLRequestRedirectJob::Start() {
19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  MessageLoop::current()->PostTask(
20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      FROM_HERE,
21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      method_factory_.NewRunnableMethod(&URLRequestRedirectJob::StartAsync));
22c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott}
23c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
24c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottbool URLRequestRedirectJob::IsRedirectResponse(GURL* location,
25c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott                                               int* http_status_code) {
26c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  *location = redirect_destination_;
27c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  *http_status_code = 302;
28c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  return true;
29c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott}
30c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
3121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian MonsenURLRequestRedirectJob::~URLRequestRedirectJob() {}
3221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
3321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenvoid URLRequestRedirectJob::StartAsync() {
3421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  NotifyHeadersComplete();
3521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen}
3621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
3721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen}  // namespace net
38