OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 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_LOADER_DETACHABLE_RESOURCE_HANDLER_H_ | 5 #ifndef CONTENT_BROWSER_LOADER_DETACHABLE_RESOURCE_HANDLER_H_ |
6 #define CONTENT_BROWSER_LOADER_DETACHABLE_RESOURCE_HANDLER_H_ | 6 #define CONTENT_BROWSER_LOADER_DETACHABLE_RESOURCE_HANDLER_H_ |
7 | 7 |
8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
10 #include "base/memory/ref_counted.h" | 10 #include "base/memory/ref_counted.h" |
(...skipping 19 matching lines...) Expand all Loading... |
30 // cancelled. | 30 // cancelled. |
31 // | 31 // |
32 // Note that, once detached, the request continues without the original next | 32 // Note that, once detached, the request continues without the original next |
33 // handler, so any policy decisions in that handler are skipped. | 33 // handler, so any policy decisions in that handler are skipped. |
34 class DetachableResourceHandler : public ResourceHandler, | 34 class DetachableResourceHandler : public ResourceHandler, |
35 public ResourceController { | 35 public ResourceController { |
36 public: | 36 public: |
37 DetachableResourceHandler(net::URLRequest* request, | 37 DetachableResourceHandler(net::URLRequest* request, |
38 base::TimeDelta cancel_delay, | 38 base::TimeDelta cancel_delay, |
39 scoped_ptr<ResourceHandler> next_handler); | 39 scoped_ptr<ResourceHandler> next_handler); |
40 virtual ~DetachableResourceHandler(); | 40 ~DetachableResourceHandler() override; |
41 | 41 |
42 bool is_detached() const { return next_handler_ == NULL; } | 42 bool is_detached() const { return next_handler_ == NULL; } |
43 void Detach(); | 43 void Detach(); |
44 | 44 |
45 void set_cancel_delay(base::TimeDelta cancel_delay) { | 45 void set_cancel_delay(base::TimeDelta cancel_delay) { |
46 cancel_delay_ = cancel_delay; | 46 cancel_delay_ = cancel_delay; |
47 } | 47 } |
48 | 48 |
49 // ResourceHandler implementation: | 49 // ResourceHandler implementation: |
50 virtual void SetController(ResourceController* controller) override; | 50 void SetController(ResourceController* controller) override; |
51 virtual bool OnUploadProgress(uint64 position, uint64 size) override; | 51 bool OnUploadProgress(uint64 position, uint64 size) override; |
52 virtual bool OnRequestRedirected(const net::RedirectInfo& redirect_info, | 52 bool OnRequestRedirected(const net::RedirectInfo& redirect_info, |
53 ResourceResponse* response, | 53 ResourceResponse* response, |
54 bool* defer) override; | 54 bool* defer) override; |
55 virtual bool OnResponseStarted(ResourceResponse* response, | 55 bool OnResponseStarted(ResourceResponse* response, bool* defer) override; |
56 bool* defer) override; | 56 bool OnWillStart(const GURL& url, bool* defer) override; |
57 virtual bool OnWillStart(const GURL& url, bool* defer) override; | 57 bool OnBeforeNetworkStart(const GURL& url, bool* defer) override; |
58 virtual bool OnBeforeNetworkStart(const GURL& url, bool* defer) override; | 58 bool OnWillRead(scoped_refptr<net::IOBuffer>* buf, |
59 virtual bool OnWillRead(scoped_refptr<net::IOBuffer>* buf, | 59 int* buf_size, |
60 int* buf_size, | 60 int min_size) override; |
61 int min_size) override; | 61 bool OnReadCompleted(int bytes_read, bool* defer) override; |
62 virtual bool OnReadCompleted(int bytes_read, bool* defer) override; | 62 void OnResponseCompleted(const net::URLRequestStatus& status, |
63 virtual void OnResponseCompleted(const net::URLRequestStatus& status, | 63 const std::string& security_info, |
64 const std::string& security_info, | 64 bool* defer) override; |
65 bool* defer) override; | 65 void OnDataDownloaded(int bytes_downloaded) override; |
66 virtual void OnDataDownloaded(int bytes_downloaded) override; | |
67 | 66 |
68 // ResourceController implementation: | 67 // ResourceController implementation: |
69 virtual void Resume() override; | 68 void Resume() override; |
70 virtual void Cancel() override; | 69 void Cancel() override; |
71 virtual void CancelAndIgnore() override; | 70 void CancelAndIgnore() override; |
72 virtual void CancelWithError(int error_code) override; | 71 void CancelWithError(int error_code) override; |
73 | 72 |
74 private: | 73 private: |
75 scoped_ptr<ResourceHandler> next_handler_; | 74 scoped_ptr<ResourceHandler> next_handler_; |
76 scoped_refptr<net::IOBuffer> read_buffer_; | 75 scoped_refptr<net::IOBuffer> read_buffer_; |
77 | 76 |
78 scoped_ptr<base::OneShotTimer<DetachableResourceHandler> > detached_timer_; | 77 scoped_ptr<base::OneShotTimer<DetachableResourceHandler> > detached_timer_; |
79 base::TimeDelta cancel_delay_; | 78 base::TimeDelta cancel_delay_; |
80 | 79 |
81 bool is_deferred_; | 80 bool is_deferred_; |
82 bool is_finished_; | 81 bool is_finished_; |
83 | 82 |
84 DISALLOW_COPY_AND_ASSIGN(DetachableResourceHandler); | 83 DISALLOW_COPY_AND_ASSIGN(DetachableResourceHandler); |
85 }; | 84 }; |
86 | 85 |
87 } // namespace content | 86 } // namespace content |
88 | 87 |
89 #endif // CONTENT_BROWSER_LOADER_DETACHABLE_RESOURCE_HANDLER_H_ | 88 #endif // CONTENT_BROWSER_LOADER_DETACHABLE_RESOURCE_HANDLER_H_ |
OLD | NEW |