85f394c0e9449a4b24833a487c76bcee6345eac8
[platform/framework/web/crosswalk.git] / src / net / url_request / url_range_request_job.h
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
14 namespace net {
15
16 class 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.
22 class 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_