blob: 2584039291b3525bf8159abe0f7deeb1f2ca5b00 [file] [log] [blame]
[email protected]646889822013-03-20 00:26:451// 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
3// found in the LICENSE file.
4
5#include "content/browser/loader/stream_resource_handler.h"
6
mmenke87f5c77a2017-01-31 16:11:267#include "base/bind.h"
[email protected]646889822013-03-20 00:26:458#include "base/logging.h"
mmenke87f5c77a2017-01-31 16:11:269#include "content/browser/loader/resource_controller.h"
Andrey Kosyakov81f89b32017-11-13 19:52:4510#include "net/url_request/url_request.h"
jame87eedd2016-09-27 16:59:4711#include "net/url_request/url_request_status.h"
[email protected]646889822013-03-20 00:26:4512
13namespace content {
14
[email protected]6a94bff2014-03-01 04:37:0915StreamResourceHandler::StreamResourceHandler(net::URLRequest* request,
16 StreamRegistry* registry,
clamyea2f9112017-05-02 17:13:5717 const GURL& origin,
18 bool immediate_mode)
davidben61814fd2014-10-15 19:45:0719 : ResourceHandler(request) {
mmenke87f5c77a2017-01-31 16:11:2620 writer_.InitializeStream(registry, origin,
21 base::Bind(&StreamResourceHandler::OutOfBandCancel,
22 base::Unretained(this), net::ERR_ABORTED,
23 true /* tell_renderer */));
clamyea2f9112017-05-02 17:13:5724 writer_.set_immediate_mode(immediate_mode);
[email protected]646889822013-03-20 00:26:4525}
26
27StreamResourceHandler::~StreamResourceHandler() {
davidben61814fd2014-10-15 19:45:0728}
29
mmenke87f5c77a2017-01-31 16:11:2630void StreamResourceHandler::OnRequestRedirected(
[email protected]cba24642014-08-15 20:49:5931 const net::RedirectInfo& redirect_info,
32 ResourceResponse* resp,
mmenke87f5c77a2017-01-31 16:11:2633 std::unique_ptr<ResourceController> controller) {
34 controller->Resume();
[email protected]646889822013-03-20 00:26:4535}
36
mmenke87f5c77a2017-01-31 16:11:2637void StreamResourceHandler::OnResponseStarted(
38 ResourceResponse* resp,
39 std::unique_ptr<ResourceController> controller) {
Andrey Kosyakov81f89b32017-11-13 19:52:4540 writer_.OnResponseStarted(request()->response_info());
mmenke87f5c77a2017-01-31 16:11:2641 controller->Resume();
[email protected]646889822013-03-20 00:26:4542}
43
mmenke87f5c77a2017-01-31 16:11:2644void StreamResourceHandler::OnWillStart(
45 const GURL& url,
46 std::unique_ptr<ResourceController> controller) {
47 controller->Resume();
[email protected]646889822013-03-20 00:26:4548}
49
mmenke3c1d10c2017-03-09 16:25:4550void StreamResourceHandler::OnWillRead(
51 scoped_refptr<net::IOBuffer>* buf,
52 int* buf_size,
53 std::unique_ptr<ResourceController> controller) {
mmenke7551f612017-02-02 17:40:0654 writer_.OnWillRead(buf, buf_size, -1);
mmenke3c1d10c2017-03-09 16:25:4555 controller->Resume();
[email protected]646889822013-03-20 00:26:4556}
57
mmenke87f5c77a2017-01-31 16:11:2658void StreamResourceHandler::OnReadCompleted(
59 int bytes_read,
60 std::unique_ptr<ResourceController> controller) {
Andrey Kosyakov81f89b32017-11-13 19:52:4561 int64_t total_bytes_read = request()->GetTotalReceivedBytes();
62 int64_t raw_body_bytes = request()->GetRawBodyBytes();
63 writer_.UpdateNetworkStats(raw_body_bytes, total_bytes_read);
mmenke87f5c77a2017-01-31 16:11:2664 writer_.OnReadCompleted(bytes_read,
65 base::Bind(&ResourceController::Resume,
66 base::Passed(std::move(controller))));
[email protected]646889822013-03-20 00:26:4567}
68
[email protected]3780874a2013-11-18 05:49:0369void StreamResourceHandler::OnResponseCompleted(
[email protected]646889822013-03-20 00:26:4570 const net::URLRequestStatus& status,
mmenke87f5c77a2017-01-31 16:11:2671 std::unique_ptr<ResourceController> controller) {
jame87eedd2016-09-27 16:59:4772 writer_.Finalize(status.error());
mmenke87f5c77a2017-01-31 16:11:2673 controller->Resume();
[email protected]646889822013-03-20 00:26:4574}
75
[email protected]d22e800e2014-05-28 21:55:5776void StreamResourceHandler::OnDataDownloaded(int bytes_downloaded) {
[email protected]646889822013-03-20 00:26:4577 NOTREACHED();
78}
79
[email protected]646889822013-03-20 00:26:4580} // namespace content