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

Side by Side Diff: content/browser/renderer_host/throttling_resource_handler.cc

Issue 10501004: Refactor the guts of ResourceDispatcherHostImpl into a new class named (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/renderer_host/throttling_resource_handler.h" 5 #include "content/browser/renderer_host/throttling_resource_handler.h"
6 6
7 #include "content/browser/renderer_host/resource_dispatcher_host_impl.h"
8 #include "content/public/browser/resource_throttle.h" 7 #include "content/public/browser/resource_throttle.h"
9 #include "content/public/common/resource_response.h" 8 #include "content/public/common/resource_response.h"
10 9
11 namespace content { 10 namespace content {
12 11
13 ThrottlingResourceHandler::ThrottlingResourceHandler( 12 ThrottlingResourceHandler::ThrottlingResourceHandler(
14 ResourceDispatcherHostImpl* host,
15 scoped_ptr<ResourceHandler> next_handler, 13 scoped_ptr<ResourceHandler> next_handler,
16 int child_id, 14 int child_id,
17 int request_id, 15 int request_id,
18 ScopedVector<ResourceThrottle> throttles) 16 ScopedVector<ResourceThrottle> throttles)
19 : LayeredResourceHandler(next_handler.Pass()), 17 : LayeredResourceHandler(next_handler.Pass()),
20 deferred_stage_(DEFERRED_NONE), 18 deferred_stage_(DEFERRED_NONE),
21 host_(host),
22 child_id_(child_id), 19 child_id_(child_id),
23 request_id_(request_id), 20 request_id_(request_id),
24 throttles_(throttles.Pass()), 21 throttles_(throttles.Pass()),
25 index_(0) { 22 index_(0) {
26 for (size_t i = 0; i < throttles_.size(); ++i) 23 for (size_t i = 0; i < throttles_.size(); ++i)
27 throttles_[i]->set_controller(this); 24 throttles_[i]->set_controller(this);
28 } 25 }
29 26
30 ThrottlingResourceHandler::~ThrottlingResourceHandler() { 27 ThrottlingResourceHandler::~ThrottlingResourceHandler() {
31 } 28 }
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 return true; // Do not cancel. 86 return true; // Do not cancel.
90 } 87 }
91 } 88 }
92 89
93 index_ = 0; // Reset for next time. 90 index_ = 0; // Reset for next time.
94 91
95 return next_handler_->OnResponseStarted(request_id, response, defer); 92 return next_handler_->OnResponseStarted(request_id, response, defer);
96 } 93 }
97 94
98 void ThrottlingResourceHandler::Cancel() { 95 void ThrottlingResourceHandler::Cancel() {
99 host_->CancelRequest(child_id_, request_id_, false); 96 controller()->Cancel();
100 } 97 }
101 98
102 void ThrottlingResourceHandler::Resume() { 99 void ThrottlingResourceHandler::Resume() {
103 switch (deferred_stage_) { 100 switch (deferred_stage_) {
104 case DEFERRED_NONE: 101 case DEFERRED_NONE:
105 NOTREACHED(); 102 NOTREACHED();
106 break; 103 break;
107 case DEFERRED_START: 104 case DEFERRED_START:
108 ResumeStart(); 105 ResumeStart();
109 break; 106 break;
110 case DEFERRED_REDIRECT: 107 case DEFERRED_REDIRECT:
111 ResumeRedirect(); 108 ResumeRedirect();
112 break; 109 break;
113 case DEFERRED_RESPONSE: 110 case DEFERRED_RESPONSE:
114 ResumeResponse(); 111 ResumeResponse();
115 break; 112 break;
116 } 113 }
117 deferred_stage_ = DEFERRED_NONE; 114 deferred_stage_ = DEFERRED_NONE;
118 } 115 }
119 116
120 void ThrottlingResourceHandler::ResumeStart() { 117 void ThrottlingResourceHandler::ResumeStart() {
121 GURL url = deferred_url_; 118 GURL url = deferred_url_;
122 deferred_url_ = GURL(); 119 deferred_url_ = GURL();
123 120
124 bool defer = false; 121 bool defer = false;
125 if (!OnWillStart(request_id_, url, &defer)) { 122 if (!OnWillStart(request_id_, url, &defer)) {
126 Cancel(); 123 controller()->Cancel();
127 } else if (!defer) { 124 } else if (!defer) {
128 host_->StartDeferredRequest(child_id_, request_id_); 125 controller()->Resume();
129 } 126 }
130 } 127 }
131 128
132 void ThrottlingResourceHandler::ResumeRedirect() { 129 void ThrottlingResourceHandler::ResumeRedirect() {
133 GURL new_url = deferred_url_; 130 GURL new_url = deferred_url_;
134 deferred_url_ = GURL(); 131 deferred_url_ = GURL();
135 scoped_refptr<ResourceResponse> response; 132 scoped_refptr<ResourceResponse> response;
136 deferred_response_.swap(response); 133 deferred_response_.swap(response);
137 134
138 bool defer = false; 135 bool defer = false;
139 if (!OnRequestRedirected(request_id_, new_url, response, &defer)) { 136 if (!OnRequestRedirected(request_id_, new_url, response, &defer)) {
140 Cancel(); 137 controller()->Cancel();
141 } else if (!defer) { 138 } else if (!defer) {
142 host_->FollowDeferredRedirect(child_id_, request_id_, false, GURL()); 139 controller()->Resume();
143 } 140 }
144 } 141 }
145 142
146 void ThrottlingResourceHandler::ResumeResponse() { 143 void ThrottlingResourceHandler::ResumeResponse() {
147 scoped_refptr<ResourceResponse> response; 144 scoped_refptr<ResourceResponse> response;
148 deferred_response_.swap(response); 145 deferred_response_.swap(response);
149 146
150 bool defer = false; 147 bool defer = false;
151 if (!OnResponseStarted(request_id_, response, &defer)) { 148 if (!OnResponseStarted(request_id_, response, &defer)) {
152 Cancel(); 149 controller()->Cancel();
153 } else if (!defer) { 150 } else if (!defer) {
154 host_->ResumeDeferredRequest(child_id_, request_id_); 151 controller()->Resume();
155 } 152 }
156 } 153 }
157 154
158 } // namespace content 155 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698