OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CONTENT_BROWSER_STREAMS_STREAM_URL_REQUEST_JOB_H_ | 5 #ifndef CONTENT_BROWSER_STREAMS_STREAM_URL_REQUEST_JOB_H_ |
6 #define CONTENT_BROWSER_STREAMS_STREAM_URL_REQUEST_JOB_H_ | 6 #define CONTENT_BROWSER_STREAMS_STREAM_URL_REQUEST_JOB_H_ |
7 | 7 |
8 #include "base/macros.h" | 8 #include "base/macros.h" |
9 #include "content/browser/streams/stream_read_observer.h" | 9 #include "content/browser/streams/stream_read_observer.h" |
10 #include "content/common/content_export.h" | 10 #include "content/common/content_export.h" |
11 #include "net/http/http_status_code.h" | 11 #include "net/http/http_status_code.h" |
12 #include "net/url_request/url_request_job.h" | 12 #include "net/url_request/url_range_request_job.h" |
13 | 13 |
14 namespace content { | 14 namespace content { |
15 | 15 |
16 class Stream; | 16 class Stream; |
17 | 17 |
18 // A request job that handles reading stream URLs. | 18 // A request job that handles reading stream URLs. |
19 class CONTENT_EXPORT StreamURLRequestJob | 19 class CONTENT_EXPORT StreamURLRequestJob |
20 : public net::URLRequestJob, | 20 : public net::URLRangeRequestJob, |
21 public StreamReadObserver { | 21 public StreamReadObserver { |
22 public: | 22 public: |
23 StreamURLRequestJob(net::URLRequest* request, | 23 StreamURLRequestJob(net::URLRequest* request, |
24 net::NetworkDelegate* network_delegate, | 24 net::NetworkDelegate* network_delegate, |
25 scoped_refptr<Stream> stream); | 25 scoped_refptr<Stream> stream); |
26 | 26 |
27 // StreamObserver methods. | 27 // StreamObserver methods. |
28 void OnDataAvailable(Stream* stream) override; | 28 void OnDataAvailable(Stream* stream) override; |
29 | 29 |
30 // net::URLRequestJob methods. | 30 // net::URLRequestJob methods. |
31 void Start() override; | 31 void Start() override; |
32 void Kill() override; | 32 void Kill() override; |
33 int ReadRawData(net::IOBuffer* buf, int buf_size) override; | 33 int ReadRawData(net::IOBuffer* buf, int buf_size) override; |
34 bool GetMimeType(std::string* mime_type) const override; | 34 bool GetMimeType(std::string* mime_type) const override; |
35 void GetResponseInfo(net::HttpResponseInfo* info) override; | 35 void GetResponseInfo(net::HttpResponseInfo* info) override; |
36 int GetResponseCode() const override; | 36 int GetResponseCode() const override; |
37 void SetExtraRequestHeaders(const net::HttpRequestHeaders& headers) override; | |
38 | 37 |
39 protected: | 38 protected: |
40 ~StreamURLRequestJob() override; | 39 ~StreamURLRequestJob() override; |
41 | 40 |
42 private: | 41 private: |
43 void DidStart(); | 42 void DidStart(); |
44 void NotifyFailure(int); | 43 void NotifyFailure(int); |
45 void HeadersCompleted(net::HttpStatusCode status_code); | 44 void HeadersCompleted(net::HttpStatusCode status_code); |
46 void ClearStream(); | 45 void ClearStream(); |
47 | 46 |
48 scoped_refptr<content::Stream> stream_; | 47 scoped_refptr<content::Stream> stream_; |
49 bool headers_set_; | 48 bool headers_set_; |
50 scoped_refptr<net::IOBuffer> pending_buffer_; | 49 scoped_refptr<net::IOBuffer> pending_buffer_; |
51 int pending_buffer_size_; | 50 int pending_buffer_size_; |
52 scoped_ptr<net::HttpResponseInfo> response_info_; | 51 scoped_ptr<net::HttpResponseInfo> response_info_; |
53 | 52 |
54 int total_bytes_read_; | 53 int total_bytes_read_; |
55 int max_range_; | 54 int max_range_; |
56 bool request_failed_; | 55 bool request_failed_; |
57 | 56 |
58 base::WeakPtrFactory<StreamURLRequestJob> weak_factory_; | 57 base::WeakPtrFactory<StreamURLRequestJob> weak_factory_; |
59 | 58 |
60 DISALLOW_COPY_AND_ASSIGN(StreamURLRequestJob); | 59 DISALLOW_COPY_AND_ASSIGN(StreamURLRequestJob); |
61 }; | 60 }; |
62 | 61 |
63 } // namespace content | 62 } // namespace content |
64 | 63 |
65 #endif // CONTENT_BROWSER_STREAMS_STREAM_URL_REQUEST_JOB_H_ | 64 #endif // CONTENT_BROWSER_STREAMS_STREAM_URL_REQUEST_JOB_H_ |
OLD | NEW |