1// Copyright 2014 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#ifndef NET_URL_REQUEST_URL_RANGE_REQUEST_JOB_H_
6#define NET_URL_REQUEST_URL_RANGE_REQUEST_JOB_H_
7
8#include <vector>
9
10#include "net/base/net_export.h"
11#include "net/http/http_byte_range.h"
12#include "net/url_request/url_request_job.h"
13
14namespace net {
15
16class HttpRequestHeaders;
17
18// URLRequestJob with support for parsing range requests.
19// It is up to subclasses to handle the response
20// and deal with an errors parsing the range request header.
21// This must be done after Start() has been called.
22class NET_EXPORT URLRangeRequestJob : public URLRequestJob {
23 public:
24  URLRangeRequestJob(URLRequest* request,
25                     NetworkDelegate* delegate);
26
27  virtual void SetExtraRequestHeaders(
28      const HttpRequestHeaders& headers) OVERRIDE;
29
30  const std::vector<HttpByteRange>& ranges() const { return ranges_; }
31  int range_parse_result() const { return range_parse_result_; }
32
33 protected:
34  virtual ~URLRangeRequestJob();
35
36 private:
37  std::vector<HttpByteRange> ranges_;
38  int range_parse_result_;
39};
40
41}  // namespace net
42
43#endif  // NET_URL_REQUEST_URL_RANGE_REQUEST_JOB_H_
44