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 #include "content/browser/loader/stream_resource_handler.h" | 5 #include "content/browser/loader/stream_resource_handler.h" |
6 | 6 |
| 7 #include "base/bind.h" |
7 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "content/browser/loader/resource_controller.h" |
8 #include "net/url_request/url_request_status.h" | 10 #include "net/url_request/url_request_status.h" |
9 | 11 |
10 namespace content { | 12 namespace content { |
11 | 13 |
12 StreamResourceHandler::StreamResourceHandler(net::URLRequest* request, | 14 StreamResourceHandler::StreamResourceHandler(net::URLRequest* request, |
13 StreamRegistry* registry, | 15 StreamRegistry* registry, |
14 const GURL& origin) | 16 const GURL& origin) |
15 : ResourceHandler(request) { | 17 : ResourceHandler(request) { |
16 writer_.InitializeStream(registry, origin); | 18 writer_.InitializeStream(registry, origin, |
| 19 base::Bind(&StreamResourceHandler::OutOfBandCancel, |
| 20 base::Unretained(this), net::ERR_ABORTED, |
| 21 true /* tell_renderer */)); |
17 } | 22 } |
18 | 23 |
19 StreamResourceHandler::~StreamResourceHandler() { | 24 StreamResourceHandler::~StreamResourceHandler() { |
20 } | 25 } |
21 | 26 |
22 void StreamResourceHandler::SetController(ResourceController* controller) { | 27 void StreamResourceHandler::OnRequestRedirected( |
23 writer_.set_controller(controller); | 28 const net::RedirectInfo& redirect_info, |
24 ResourceHandler::SetController(controller); | 29 ResourceResponse* resp, |
| 30 std::unique_ptr<ResourceController> controller) { |
| 31 controller->Resume(); |
25 } | 32 } |
26 | 33 |
27 bool StreamResourceHandler::OnRequestRedirected( | 34 void StreamResourceHandler::OnResponseStarted( |
28 const net::RedirectInfo& redirect_info, | |
29 ResourceResponse* resp, | 35 ResourceResponse* resp, |
30 bool* defer) { | 36 std::unique_ptr<ResourceController> controller) { |
31 return true; | 37 controller->Resume(); |
32 } | 38 } |
33 | 39 |
34 bool StreamResourceHandler::OnResponseStarted(ResourceResponse* resp, | 40 void StreamResourceHandler::OnWillStart( |
35 bool* defer) { | 41 const GURL& url, |
36 return true; | 42 std::unique_ptr<ResourceController> controller) { |
37 } | 43 controller->Resume(); |
38 | |
39 bool StreamResourceHandler::OnWillStart(const GURL& url, bool* defer) { | |
40 return true; | |
41 } | 44 } |
42 | 45 |
43 bool StreamResourceHandler::OnWillRead(scoped_refptr<net::IOBuffer>* buf, | 46 bool StreamResourceHandler::OnWillRead(scoped_refptr<net::IOBuffer>* buf, |
44 int* buf_size, | 47 int* buf_size, |
45 int min_size) { | 48 int min_size) { |
46 writer_.OnWillRead(buf, buf_size, min_size); | 49 writer_.OnWillRead(buf, buf_size, min_size); |
47 return true; | 50 return true; |
48 } | 51 } |
49 | 52 |
50 bool StreamResourceHandler::OnReadCompleted(int bytes_read, bool* defer) { | 53 void StreamResourceHandler::OnReadCompleted( |
51 writer_.OnReadCompleted(bytes_read, defer); | 54 int bytes_read, |
52 return true; | 55 std::unique_ptr<ResourceController> controller) { |
| 56 writer_.OnReadCompleted(bytes_read, |
| 57 base::Bind(&ResourceController::Resume, |
| 58 base::Passed(std::move(controller)))); |
53 } | 59 } |
54 | 60 |
55 void StreamResourceHandler::OnResponseCompleted( | 61 void StreamResourceHandler::OnResponseCompleted( |
56 const net::URLRequestStatus& status, | 62 const net::URLRequestStatus& status, |
57 bool* defer) { | 63 std::unique_ptr<ResourceController> controller) { |
58 writer_.Finalize(status.error()); | 64 writer_.Finalize(status.error()); |
| 65 controller->Resume(); |
59 } | 66 } |
60 | 67 |
61 void StreamResourceHandler::OnDataDownloaded(int bytes_downloaded) { | 68 void StreamResourceHandler::OnDataDownloaded(int bytes_downloaded) { |
62 NOTREACHED(); | 69 NOTREACHED(); |
63 } | 70 } |
64 | 71 |
65 } // namespace content | 72 } // namespace content |
OLD | NEW |