Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(141)

Side by Side Diff: content/browser/loader/null_resource_handler.cc

Issue 1041993004: content::ResourceDispatcherHostImpl changes for stale-while-revalidate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@s-w-r-yhirano-patch
Patch Set: Suppress duplicate async revalidations to the same URL. Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 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/null_resource_handler.h"
6
7 #include "base/bind.h"
8 #include "base/logging.h"
9 #include "content/browser/loader/resource_message_filter.h"
10 #include "content/browser/loader/resource_request_info_impl.h"
11 #include "content/public/browser/resource_controller.h"
12 #include "content/public/browser/resource_dispatcher_host_delegate.h"
13 #include "net/base/io_buffer.h"
14 #include "net/base/net_errors.h"
15 #include "net/url_request/redirect_info.h"
16
17 namespace {
18 // This matches the maximum allocation size of AsyncResourceHandler.
19 const int kReadBufSize = 32 * 1024;
20 }
21
22 namespace content {
23
24 const int kNullResourceHandlerDefaultReadTimeoutSecs = 5 * 60;
25
26 // The use of base::Unretained in the initialisation of read_timer_ is safe
27 // because base::Timer guarantees it will never call the callback after being
28 // destroyed.
29 NullResourceHandler::NullResourceHandler(net::URLRequest* request,
30 ResourceDispatcherHostImpl* rdh,
31 base::TimeDelta read_timeout)
32 : ResourceHandler(request),
33 rdh_(rdh),
34 read_timer_(FROM_HERE,
35 read_timeout,
36 base::Bind(&NullResourceHandler::OnReadTimeout,
37 base::Unretained(this)),
38 false) {
39 }
40
41 NullResourceHandler::~NullResourceHandler() {
42 }
43
44 void NullResourceHandler::SetController(ResourceController* controller) {
45 ResourceHandler::SetController(controller);
46 }
47
48 bool NullResourceHandler::OnUploadProgress(uint64 position, uint64 size) {
49 return true;
50 }
51
52 bool NullResourceHandler::OnRequestRedirected(
53 const net::RedirectInfo& redirect_info,
54 ResourceResponse* response,
55 bool* defer) {
56 const ResourceRequestInfoImpl* info = GetRequestInfo();
57 if (info->filter() && rdh_->delegate()) {
58 rdh_->delegate()->OnRequestRedirected(redirect_info.new_url, request(),
59 info->GetContext(), response);
60 }
61 // We only need to update the redirect in the cache, not its destination.
62 return false;
63 }
64
65 bool NullResourceHandler::OnResponseStarted(ResourceResponse* response,
66 bool* defer) {
67 const ResourceRequestInfoImpl* info = GetRequestInfo();
68 if (!info->filter())
69 return false;
70 if (rdh_->delegate()) {
71 rdh_->delegate()->OnResponseStarted(request(), info->GetContext(), response,
72 info->filter());
73 }
74 return true;
75 }
76
77 bool NullResourceHandler::OnWillStart(const GURL& url, bool* defer) {
78 return true;
79 }
80
81 bool NullResourceHandler::OnBeforeNetworkStart(const GURL& url, bool* defer) {
82 DCHECK(!read_timer_.IsRunning());
83 read_timer_.Reset();
84 DCHECK(read_timer_.IsRunning());
85 return true;
86 }
87
88 bool NullResourceHandler::OnWillRead(scoped_refptr<net::IOBuffer>* buf,
89 int* buf_size,
90 int min_size) {
91 DCHECK_LE(min_size, kReadBufSize);
92 if (!read_buffer_.get())
93 read_buffer_ = new net::IOBuffer(kReadBufSize);
94 *buf = read_buffer_;
95 *buf_size = kReadBufSize;
96 read_timer_.Reset();
97 return true;
98 }
99
100 bool NullResourceHandler::OnReadCompleted(int bytes_read, bool* defer) {
101 return true;
102 }
103
104 void NullResourceHandler::OnResponseCompleted(
105 const net::URLRequestStatus& status,
106 const std::string& security_info,
107 bool* defer) {
108 return;
109 }
110
111 void NullResourceHandler::OnDataDownloaded(int bytes_downloaded) {
112 return;
113 }
114
115 void NullResourceHandler::OnReadTimeout() {
116 controller()->Cancel();
117 }
118
119 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698