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

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

Issue 2623383004: Update InterceptingResourceHandler tests to use MockResourceLoader. (Closed)
Patch Set: Add comment Created 3 years, 11 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
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/intercepting_resource_handler.h" 5 #include "content/browser/loader/intercepting_resource_handler.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <string> 10 #include <string>
11 11
12 #include "base/files/file_path.h" 12 #include "base/files/file_path.h"
13 #include "base/location.h" 13 #include "base/location.h"
14 #include "base/logging.h" 14 #include "base/logging.h"
15 #include "base/macros.h" 15 #include "base/macros.h"
16 #include "base/memory/ptr_util.h" 16 #include "base/memory/ptr_util.h"
17 #include "base/single_thread_task_runner.h" 17 #include "base/single_thread_task_runner.h"
18 #include "base/threading/thread_task_runner_handle.h" 18 #include "base/threading/thread_task_runner_handle.h"
19 #include "content/browser/loader/mock_resource_loader.h"
19 #include "content/browser/loader/resource_controller.h" 20 #include "content/browser/loader/resource_controller.h"
20 #include "content/browser/loader/test_resource_handler.h" 21 #include "content/browser/loader/test_resource_handler.h"
21 #include "content/public/browser/resource_request_info.h" 22 #include "content/public/browser/resource_request_info.h"
22 #include "content/public/common/previews_state.h"
23 #include "content/public/common/resource_response.h" 23 #include "content/public/common/resource_response.h"
24 #include "content/public/common/webplugininfo.h" 24 #include "content/public/common/webplugininfo.h"
25 #include "content/public/test/test_browser_thread_bundle.h" 25 #include "content/public/test/test_browser_thread_bundle.h"
26 #include "content/public/test/test_utils.h" 26 #include "content/public/test/test_utils.h"
27 #include "net/base/net_errors.h" 27 #include "net/base/net_errors.h"
28 #include "net/url_request/url_request_context.h" 28 #include "net/url_request/url_request_context.h"
29 #include "net/url_request/url_request_status.h" 29 #include "net/url_request/url_request_status.h"
30 #include "net/url_request/url_request_test_util.h"
30 #include "testing/gtest/include/gtest/gtest.h" 31 #include "testing/gtest/include/gtest/gtest.h"
31 #include "url/gurl.h" 32 #include "url/gurl.h"
32 33
33 namespace content { 34 namespace content {
34 35
35 namespace { 36 namespace {
36 37
37 class TestResourceController : public ResourceController { 38 class TestResourceController : public ResourceController {
38 public: 39 public:
39 TestResourceController() = default; 40 TestResourceController() = default;
40 void Cancel() override {} 41 void Cancel() override {}
41 void CancelAndIgnore() override {} 42 void CancelAndIgnore() override {}
42 void CancelWithError(int error_code) override {} 43 void CancelWithError(int error_code) override {}
43 void Resume() override { ++resume_calls_; } 44 void Resume() override { ++resume_calls_; }
44 45
45 int resume_calls() const { return resume_calls_; } 46 int resume_calls() const { return resume_calls_; }
46 47
47 private: 48 private:
48 int resume_calls_ = 0; 49 int resume_calls_ = 0;
49 50
50 DISALLOW_COPY_AND_ASSIGN(TestResourceController); 51 DISALLOW_COPY_AND_ASSIGN(TestResourceController);
51 }; 52 };
52 53
53 class InterceptingResourceHandlerTest : public testing::Test { 54 class InterceptingResourceHandlerTest : public testing::Test {
54 public: 55 public:
55 InterceptingResourceHandlerTest() {} 56 InterceptingResourceHandlerTest()
57 : request_(context_.CreateRequest(GURL("http://www.google.com"),
58 net::DEFAULT_PRIORITY,
59 nullptr)),
60 old_handler_status_(
61 net::URLRequestStatus::FromError(net::ERR_IO_PENDING)),
62 raw_old_handler_(
63 new TestResourceHandler(&old_handler_status_, &old_handler_body_)) {
64 ResourceRequestInfo::AllocateForTesting(request_.get(),
65 RESOURCE_TYPE_MAIN_FRAME,
66 nullptr, // context
67 0, // render_process_id
68 0, // render_view_id
69 0, // render_frame_id
70 true, // is_main_frame
71 false, // parent_is_main_frame
72 true, // allow_download
73 true, // is_async
74 PREVIEWS_OFF); // previews_state
56 75
57 private: 76 intercepting_handler_.reset(new InterceptingResourceHandler(
Randy Smith (Not in Mondays) 2017/01/18 00:36:33 Isn't std::make_unique the new hotness?
mmenke 2017/01/18 16:27:30 I guess? Switched to base::MakeUnique, though it'
77 base::WrapUnique(raw_old_handler_), request_.get()));
78 mock_loader_.reset(new MockResourceLoader(intercepting_handler_.get()));
79 }
80
81 protected:
58 TestBrowserThreadBundle thread_bundle_; 82 TestBrowserThreadBundle thread_bundle_;
83 net::TestURLRequestContext context_;
84 std::unique_ptr<net::URLRequest> request_;
85
86 net::URLRequestStatus old_handler_status_;
87 std::string old_handler_body_;
88 TestResourceHandler* raw_old_handler_;
89
90 std::unique_ptr<InterceptingResourceHandler> intercepting_handler_;
91 std::unique_ptr<MockResourceLoader> mock_loader_;
59 }; 92 };
60 93
61 // Tests that the handler behaves properly when it doesn't have to use an 94 // Tests that the handler behaves properly when it doesn't have to use an
62 // alternate next handler. 95 // alternate next handler.
63 TEST_F(InterceptingResourceHandlerTest, NoSwitching) { 96 TEST_F(InterceptingResourceHandlerTest, NoSwitching) {
64 net::URLRequestContext context;
65 std::unique_ptr<net::URLRequest> request(context.CreateRequest(
66 GURL("http://www.google.com"), net::DEFAULT_PRIORITY, nullptr));
67 ResourceRequestInfo::AllocateForTesting(request.get(),
68 RESOURCE_TYPE_MAIN_FRAME,
69 nullptr, // context
70 0, // render_process_id
71 0, // render_view_id
72 0, // render_frame_id
73 true, // is_main_frame
74 false, // parent_is_main_frame
75 true, // allow_download
76 true, // is_async
77 PREVIEWS_OFF); // previews_state
mmenke 2017/01/13 16:18:33 All calls to this method through this entire file
78
79 net::URLRequestStatus old_handler_status;
80 std::string old_handler_body;
81 std::unique_ptr<TestResourceHandler> old_handler(
82 new TestResourceHandler(&old_handler_status, &old_handler_body));
83 TestResourceHandler* old_test_handler = old_handler.get();
84 std::unique_ptr<InterceptingResourceHandler> intercepting_handler(
85 new InterceptingResourceHandler(std::move(old_handler), request.get()));
86
87 scoped_refptr<ResourceResponse> response(new ResourceResponse);
88
89 // Simulate the MimeSniffingResourceHandler buffering the data. 97 // Simulate the MimeSniffingResourceHandler buffering the data.
90 scoped_refptr<net::IOBuffer> read_buffer; 98 ASSERT_EQ(MockResourceLoader::Status::IDLE,
91 int buf_size = 0; 99 mock_loader_->OnWillStart(request_->url()));
92 bool defer = false; 100 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
93 EXPECT_TRUE(intercepting_handler->OnWillStart(GURL(), &defer));
94 EXPECT_FALSE(defer);
95 EXPECT_TRUE(intercepting_handler->OnWillRead(&read_buffer, &buf_size, -1));
96 101
97 const std::string kData = "The data"; 102 const std::string kData = "The data";
mmenke 2017/01/13 16:18:33 I've left these declarations where they are, inste
98 EXPECT_NE(kData, std::string(old_test_handler->buffer()->data())); 103 ASSERT_NE(mock_loader_->io_buffer(), raw_old_handler_->buffer());
mmenke 2017/01/13 16:18:33 Some of these expects seem a bit silly, and make e
Randy Smith (Not in Mondays) 2017/01/18 00:36:33 I take it by implication you removed the ones that
mmenke 2017/01/18 16:27:30 Yes, these seemed silly, and don't really have an
99
100 ASSERT_NE(read_buffer.get(), old_test_handler->buffer());
101 ASSERT_GT(static_cast<size_t>(buf_size), kData.length());
102 memcpy(read_buffer->data(), kData.c_str(), kData.length());
103 104
104 // The response is received. The handler should not change. 105 // The response is received. The handler should not change.
105 EXPECT_TRUE(intercepting_handler->OnResponseStarted(response.get(), &defer)); 106 ASSERT_EQ(MockResourceLoader::Status::IDLE,
106 EXPECT_FALSE(defer); 107 mock_loader_->OnResponseStarted(
108 make_scoped_refptr(new ResourceResponse())));
107 109
108 // The read is replayed by the MimeSniffingResourceHandler. The data should 110 // The read is replayed by the MimeSniffingResourceHandler. The data should
109 // have been received by the old intercepting_handler. 111 // have been received by the old intercepting_handler.
110 EXPECT_TRUE(intercepting_handler->OnReadCompleted(kData.length(), &defer)); 112 ASSERT_EQ(MockResourceLoader::Status::IDLE,
111 EXPECT_FALSE(defer); 113 mock_loader_->OnReadCompleted(kData));
112 EXPECT_EQ(kData, std::string(old_test_handler->buffer()->data())); 114 EXPECT_EQ(kData, old_handler_body_);
113 115
114 // Make sure another read behave as expected. 116 // Make sure another read behaves as expected.
115 buf_size = 0; 117 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
116 EXPECT_TRUE(intercepting_handler->OnWillRead(&read_buffer, &buf_size, -1)); 118 ASSERT_EQ(mock_loader_->io_buffer(), raw_old_handler_->buffer());
117 ASSERT_EQ(read_buffer.get(), old_test_handler->buffer());
118 119
119 const std::string kData2 = "Data 2"; 120 const std::string kData2 = "Data 2";
120 EXPECT_NE(kData, std::string(old_test_handler->buffer()->data())); 121 ASSERT_EQ(MockResourceLoader::Status::IDLE,
121 ASSERT_GT(static_cast<size_t>(buf_size), kData2.length()); 122 mock_loader_->OnReadCompleted(kData2));
122 memcpy(read_buffer->data(), kData2.c_str(), kData2.length()); 123 EXPECT_EQ(kData + kData2, old_handler_body_);
123
124 EXPECT_TRUE(intercepting_handler->OnReadCompleted(kData2.length(), &defer));
125 EXPECT_FALSE(defer);
126 EXPECT_EQ(kData2, std::string(old_test_handler->buffer()->data()));
127 EXPECT_EQ(kData + kData2, old_handler_body);
128 } 124 }
129 125
130 // Tests that the data received is transmitted to the newly created 126 // Tests that the data received is transmitted to the newly created
131 // ResourceHandler. 127 // ResourceHandler.
132 TEST_F(InterceptingResourceHandlerTest, HandlerSwitchNoPayload) { 128 TEST_F(InterceptingResourceHandlerTest, HandlerSwitchNoPayload) {
133 net::URLRequestContext context;
134 std::unique_ptr<net::URLRequest> request(context.CreateRequest(
135 GURL("http://www.google.com"), net::DEFAULT_PRIORITY, nullptr));
136 ResourceRequestInfo::AllocateForTesting(request.get(),
137 RESOURCE_TYPE_MAIN_FRAME,
138 nullptr, // context
139 0, // render_process_id
140 0, // render_view_id
141 0, // render_frame_id
142 true, // is_main_frame
143 false, // parent_is_main_frame
144 true, // allow_download
145 true, // is_async
146 PREVIEWS_OFF); // previews_state
147
148 net::URLRequestStatus old_handler_status;
149 std::string old_handler_body;
150 std::unique_ptr<TestResourceHandler> old_handler(
151 new TestResourceHandler(&old_handler_status, &old_handler_body));
152 scoped_refptr<net::IOBuffer> old_buffer = old_handler.get()->buffer();
153 std::unique_ptr<InterceptingResourceHandler> intercepting_handler(
154 new InterceptingResourceHandler(std::move(old_handler), request.get()));
155
156 scoped_refptr<ResourceResponse> response(new ResourceResponse); 129 scoped_refptr<ResourceResponse> response(new ResourceResponse);
157 130
158 // Simulate the MimeSniffingResourceHandler buffering the data. 131 // Simulate the MimeSniffingResourceHandler buffering the data.
159 scoped_refptr<net::IOBuffer> read_buffer; 132 ASSERT_EQ(MockResourceLoader::Status::IDLE,
160 int buf_size = 0; 133 mock_loader_->OnWillStart(request_->url()));
161 bool defer = false; 134 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
162 EXPECT_TRUE(intercepting_handler->OnWillStart(GURL(), &defer));
163 EXPECT_FALSE(defer);
164 EXPECT_TRUE(intercepting_handler->OnWillRead(&read_buffer, &buf_size, -1));
165 135
166 const std::string kData = "The data"; 136 const std::string kData = "The data";
167 ASSERT_NE(read_buffer.get(), old_buffer.get()); 137 ASSERT_NE(mock_loader_->io_buffer(), raw_old_handler_->buffer());
168 ASSERT_GT(static_cast<size_t>(buf_size), kData.length());
169 memcpy(read_buffer->data(), kData.c_str(), kData.length());
170 138
171 // Simulate the MimeSniffingResourceHandler asking the 139 // Simulate the MimeSniffingResourceHandler asking the
172 // InterceptingResourceHandler to switch to a new handler. 140 // InterceptingResourceHandler to switch to a new handler.
173 net::URLRequestStatus new_handler_status; 141 net::URLRequestStatus new_handler_status;
174 std::string new_handler_body; 142 std::string new_handler_body;
175 std::unique_ptr<TestResourceHandler> new_handler_scoped( 143 std::unique_ptr<TestResourceHandler> new_handler_scoped(
176 new TestResourceHandler(&new_handler_status, &new_handler_body)); 144 new TestResourceHandler(&new_handler_status, &new_handler_body));
177 TestResourceHandler* new_test_handler = new_handler_scoped.get(); 145 TestResourceHandler* new_test_handler = new_handler_scoped.get();
178 intercepting_handler->UseNewHandler(std::move(new_handler_scoped), 146 intercepting_handler_->UseNewHandler(std::move(new_handler_scoped),
179 std::string()); 147 std::string());
180 148
181 // The response is received. The new ResourceHandler should be used handle 149 // The response is received. The new ResourceHandler should be used handle
Randy Smith (Not in Mondays) 2017/01/18 00:36:33 nit: "*to* handle"?
mmenke 2017/01/18 16:27:30 Done.
182 // the download. 150 // the download.
183 EXPECT_TRUE(intercepting_handler->OnResponseStarted(response.get(), &defer)); 151 ASSERT_EQ(MockResourceLoader::Status::IDLE,
184 EXPECT_FALSE(defer); 152 mock_loader_->OnResponseStarted(
153 make_scoped_refptr(new ResourceResponse())));
185 154
186 EXPECT_FALSE(old_handler_status.is_success()); 155 EXPECT_FALSE(old_handler_status_.is_success());
187 EXPECT_EQ(net::ERR_ABORTED, old_handler_status.error()); 156 EXPECT_EQ(net::ERR_ABORTED, old_handler_status_.error());
188 EXPECT_EQ(std::string(), old_handler_body); 157 EXPECT_EQ(std::string(), old_handler_body_);
189
190 // It should not have received the download data yet.
191 EXPECT_NE(kData, std::string(new_test_handler->buffer()->data()));
192 158
193 // The read is replayed by the MimeSniffingResourceHandler. The data should 159 // The read is replayed by the MimeSniffingResourceHandler. The data should
194 // have been received by the new handler. 160 // have been received by the new handler.
195 EXPECT_TRUE(intercepting_handler->OnReadCompleted(kData.length(), &defer)); 161 ASSERT_EQ(MockResourceLoader::Status::IDLE,
196 EXPECT_FALSE(defer); 162 mock_loader_->OnReadCompleted(kData));
197 EXPECT_EQ(kData, std::string(new_test_handler->buffer()->data())); 163 EXPECT_EQ(kData, new_handler_body);
198 164
199 // Make sure another read behaves as expected. 165 // Make sure another read behaves as expected.
200 buf_size = 0; 166 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
201 EXPECT_TRUE(intercepting_handler->OnWillRead(&read_buffer, &buf_size, -1)); 167 ASSERT_EQ(mock_loader_->io_buffer(), new_test_handler->buffer());
202 ASSERT_EQ(read_buffer.get(), new_test_handler->buffer());
203 ASSERT_GT(static_cast<size_t>(buf_size), kData.length());
204 168
205 const std::string kData2 = "Data 2"; 169 const std::string kData2 = "Data 2";
206 EXPECT_NE(kData2, std::string(new_test_handler->buffer()->data())); 170 ASSERT_EQ(MockResourceLoader::Status::IDLE,
207 memcpy(read_buffer->data(), kData2.c_str(), kData2.length()); 171 mock_loader_->OnReadCompleted(kData2));
208
209 EXPECT_TRUE(intercepting_handler->OnReadCompleted(kData2.length(), &defer));
210 EXPECT_FALSE(defer);
211 EXPECT_EQ(kData2, std::string(new_test_handler->buffer()->data()));
212 EXPECT_EQ(kData + kData2, new_handler_body); 172 EXPECT_EQ(kData + kData2, new_handler_body);
213 } 173 }
214 174
215 // Tests that the data received is transmitted to the newly created 175 // Tests that the data received is transmitted to the newly created
216 // ResourceHandler and the specified payload to the old ResourceHandler. 176 // ResourceHandler and the specified payload to the old ResourceHandler.
217 TEST_F(InterceptingResourceHandlerTest, HandlerSwitchWithPayload) { 177 TEST_F(InterceptingResourceHandlerTest, HandlerSwitchWithPayload) {
218 net::URLRequestContext context;
219 std::unique_ptr<net::URLRequest> request(context.CreateRequest(
220 GURL("http://www.google.com"), net::DEFAULT_PRIORITY, nullptr));
221 ResourceRequestInfo::AllocateForTesting(request.get(),
222 RESOURCE_TYPE_MAIN_FRAME,
223 nullptr, // context
224 0, // render_process_id
225 0, // render_view_id
226 0, // render_frame_id
227 true, // is_main_frame
228 false, // parent_is_main_frame
229 true, // allow_download
230 true, // is_async
231 PREVIEWS_OFF); // previews_state
232
233 net::URLRequestStatus old_handler_status;
234 std::string old_handler_body;
235 std::unique_ptr<TestResourceHandler> old_handler_scoped(
236 new TestResourceHandler(&old_handler_status, &old_handler_body));
237 // When sending a payload to the old ResourceHandler, the 178 // When sending a payload to the old ResourceHandler, the
238 // InterceptingResourceHandler doesn't send a final EOF read. 179 // InterceptingResourceHandler doesn't send a final EOF read.
239 // TODO(mmenke): Should it? Or can we just get rid of that 0-byte read 180 // TODO(mmenke): Should it? Or can we just get rid of that 0-byte read
240 // entirely? 181 // entirely?
241 old_handler_scoped->set_expect_eof_read(false); 182 raw_old_handler_->set_expect_eof_read(false);
242 TestResourceHandler* old_handler = old_handler_scoped.get(); 183 scoped_refptr<net::IOBuffer> old_buffer = raw_old_handler_->buffer();
243 scoped_refptr<net::IOBuffer> old_buffer = old_handler->buffer();
244 std::unique_ptr<InterceptingResourceHandler> intercepting_handler(
245 new InterceptingResourceHandler(std::move(old_handler_scoped),
246 request.get()));
247
248 scoped_refptr<ResourceResponse> response(new ResourceResponse);
249 184
250 // Simulate the MimeSniffingResourceHandler buffering the data. 185 // Simulate the MimeSniffingResourceHandler buffering the data.
251 scoped_refptr<net::IOBuffer> read_buffer; 186 ASSERT_EQ(MockResourceLoader::Status::IDLE,
252 int buf_size = 0; 187 mock_loader_->OnWillStart(request_->url()));
253 bool defer = false; 188 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
254 EXPECT_TRUE(intercepting_handler->OnWillStart(GURL(), &defer));
255 EXPECT_FALSE(defer);
256 EXPECT_TRUE(intercepting_handler->OnWillRead(&read_buffer, &buf_size, -1));
257 189
258 const std::string kData = "The data"; 190 const std::string kData = "The data";
259 ASSERT_NE(read_buffer.get(), old_buffer.get()); 191 ASSERT_NE(mock_loader_->io_buffer(), old_buffer.get());
260 ASSERT_GT(static_cast<size_t>(buf_size), kData.length());
261 memcpy(read_buffer->data(), kData.c_str(), kData.length());
262 192
263 // Simulate the MimeSniffingResourceHandler asking the 193 // Simulate the MimeSniffingResourceHandler asking the
264 // InterceptingResourceHandler to switch to a new handler. 194 // InterceptingResourceHandler to switch to a new handler.
265 const std::string kPayload = "The payload"; 195 const std::string kPayload = "The payload";
266 net::URLRequestStatus new_handler_status; 196 net::URLRequestStatus new_handler_status;
267 std::string new_handler_body; 197 std::string new_handler_body;
268 std::unique_ptr<TestResourceHandler> new_handler_scoped( 198 std::unique_ptr<TestResourceHandler> new_handler_scoped(
269 new TestResourceHandler(&new_handler_status, &new_handler_body)); 199 new TestResourceHandler(&new_handler_status, &new_handler_body));
270 TestResourceHandler* new_test_handler = new_handler_scoped.get(); 200 TestResourceHandler* new_test_handler = new_handler_scoped.get();
271 intercepting_handler->UseNewHandler(std::move(new_handler_scoped), kPayload); 201 intercepting_handler_->UseNewHandler(std::move(new_handler_scoped), kPayload);
272 202
273 // The old handler should not have received the payload yet. 203 // The old handler should not have received the payload yet.
274 ASSERT_EQ(std::string(), old_handler_body); 204 ASSERT_EQ(std::string(), old_handler_body_);
275 205
276 // The response is received. The new ResourceHandler should be used to handle 206 // The response is received. The new ResourceHandler should be used to handle
277 // the download. 207 // the download.
278 EXPECT_TRUE(intercepting_handler->OnResponseStarted(response.get(), &defer)); 208 ASSERT_EQ(MockResourceLoader::Status::IDLE,
279 EXPECT_FALSE(defer); 209 mock_loader_->OnResponseStarted(
210 make_scoped_refptr(new ResourceResponse())));
280 211
281 // The old handler should have received the payload. 212 // The old handler should have received the payload.
282 EXPECT_EQ(kPayload, old_handler_body); 213 EXPECT_EQ(kPayload, old_handler_body_);
283 214
284 EXPECT_TRUE(old_handler_status.is_success()); 215 EXPECT_TRUE(old_handler_status_.is_success());
285 EXPECT_EQ(net::OK, old_handler_status.error()); 216 EXPECT_EQ(net::OK, old_handler_status_.error());
286
287 // It should not have received the download data yet.
288 EXPECT_NE(kData, std::string(new_test_handler->buffer()->data()));
289 217
290 // The read is replayed by the MimeSniffingResourceHandler. The data should 218 // The read is replayed by the MimeSniffingResourceHandler. The data should
291 // have been received by the new handler. 219 // have been received by the new handler.
292 EXPECT_TRUE(intercepting_handler->OnReadCompleted(kData.length(), &defer)); 220 ASSERT_EQ(MockResourceLoader::Status::IDLE,
293 EXPECT_FALSE(defer); 221 mock_loader_->OnReadCompleted(kData));
294 EXPECT_EQ(kData, std::string(new_test_handler->buffer()->data())); 222 EXPECT_EQ(kData, new_handler_body);
295 223
296 // Make sure another read behave as expected. 224 // Make sure another read behaves as expected.
297 buf_size = 0;
298 const std::string kData2 = "Data 2"; 225 const std::string kData2 = "Data 2";
299 EXPECT_TRUE(intercepting_handler->OnWillRead(&read_buffer, &buf_size, -1)); 226 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
300 ASSERT_EQ(read_buffer.get(), new_test_handler->buffer()); 227 ASSERT_EQ(mock_loader_->io_buffer(), new_test_handler->buffer());
301 ASSERT_GT(static_cast<size_t>(buf_size), kData.length());
302 228
303 EXPECT_NE(kData2, std::string(new_test_handler->buffer()->data())); 229 ASSERT_EQ(MockResourceLoader::Status::IDLE,
304 memcpy(read_buffer->data(), kData2.c_str(), kData2.length()); 230 mock_loader_->OnReadCompleted(kData2));
305
306 EXPECT_TRUE(intercepting_handler->OnReadCompleted(kData2.length(), &defer));
307 EXPECT_FALSE(defer);
308 EXPECT_EQ(kData2, std::string(new_test_handler->buffer()->data()));
309 EXPECT_EQ(kData + kData2, new_handler_body); 231 EXPECT_EQ(kData + kData2, new_handler_body);
310 } 232 }
311 233
312 // Tests that the handler behaves properly if the old handler fails will read. 234 // Tests that the handler behaves properly if the old handler fails will read.
313 TEST_F(InterceptingResourceHandlerTest, OldHandlerFailsWillRead) { 235 TEST_F(InterceptingResourceHandlerTest, OldHandlerFailsWillRead) {
314 net::URLRequestContext context; 236 raw_old_handler_->set_on_will_read_result(false);
315 std::unique_ptr<net::URLRequest> request(context.CreateRequest(
316 GURL("http://www.google.com"), net::DEFAULT_PRIORITY, nullptr));
317 ResourceRequestInfo::AllocateForTesting(request.get(),
318 RESOURCE_TYPE_MAIN_FRAME,
319 nullptr, // context
320 0, // render_process_id
321 0, // render_view_id
322 0, // render_frame_id
323 true, // is_main_frame
324 false, // parent_is_main_frame
325 true, // allow_download
326 true, // is_async
327 PREVIEWS_OFF); // previews_state
328
329 net::URLRequestStatus old_handler_status;
330 std::string old_handler_body;
331 std::unique_ptr<TestResourceHandler> old_handler(
332 new TestResourceHandler(&old_handler_status, &old_handler_body));
333 old_handler->set_on_will_read_result(false);
334 std::unique_ptr<InterceptingResourceHandler> intercepting_handler(
335 new InterceptingResourceHandler(std::move(old_handler), request.get()));
336
337 scoped_refptr<ResourceResponse> response(new ResourceResponse);
338 237
339 // Simulate the MimeSniffingResourceHandler buffering the data. The old 238 // Simulate the MimeSniffingResourceHandler buffering the data. The old
340 // handler should tell the caller to fail. 239 // handler should tell the caller to fail.
341 scoped_refptr<net::IOBuffer> read_buffer; 240 ASSERT_EQ(MockResourceLoader::Status::IDLE,
342 int buf_size = 0; 241 mock_loader_->OnWillStart(request_->url()));
343 bool defer = false; 242 ASSERT_EQ(MockResourceLoader::Status::CANCELED, mock_loader_->OnWillRead(-1));
344 EXPECT_TRUE(intercepting_handler->OnWillStart(GURL(), &defer)); 243 EXPECT_EQ(net::ERR_ABORTED, mock_loader_->error_code());
345 EXPECT_FALSE(defer);
346 EXPECT_FALSE(intercepting_handler->OnWillRead(&read_buffer, &buf_size, -1));
347 } 244 }
348 245
349 // Tests that the handler behaves properly if the new handler fails in 246 // Tests that the handler behaves properly if the new handler fails in
350 // OnWillStart. 247 // OnWillStart.
351 TEST_F(InterceptingResourceHandlerTest, NewHandlerFailsOnWillStart) { 248 TEST_F(InterceptingResourceHandlerTest, NewHandlerFailsOnWillStart) {
352 net::URLRequestContext context; 249 scoped_refptr<net::IOBuffer> old_buffer = raw_old_handler_->buffer();
353 std::unique_ptr<net::URLRequest> request(context.CreateRequest(
354 GURL("http://www.google.com"), net::DEFAULT_PRIORITY, nullptr));
355 ResourceRequestInfo::AllocateForTesting(request.get(),
356 RESOURCE_TYPE_MAIN_FRAME,
357 nullptr, // context
358 0, // render_process_id
359 0, // render_view_id
360 0, // render_frame_id
361 true, // is_main_frame
362 false, // parent_is_main_frame
363 true, // allow_download
364 true, // is_async
365 PREVIEWS_OFF); // previews_state
366
367 net::URLRequestStatus old_handler_status;
368 std::string old_handler_body;
369 std::unique_ptr<TestResourceHandler> old_handler(
370 new TestResourceHandler(&old_handler_status, &old_handler_body));
371 scoped_refptr<net::IOBuffer> old_buffer = old_handler.get()->buffer();
372 std::unique_ptr<InterceptingResourceHandler> intercepting_handler(
373 new InterceptingResourceHandler(std::move(old_handler), request.get()));
374
375 scoped_refptr<ResourceResponse> response(new ResourceResponse);
376 250
377 // Simulate the MimeSniffingResourceHandler buffering the data. 251 // Simulate the MimeSniffingResourceHandler buffering the data.
378 scoped_refptr<net::IOBuffer> read_buffer; 252 ASSERT_EQ(MockResourceLoader::Status::IDLE,
379 int buf_size = 0; 253 mock_loader_->OnWillStart(request_->url()));
380 bool defer = false; 254 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
381 EXPECT_TRUE(intercepting_handler->OnWillStart(GURL(), &defer));
382 EXPECT_FALSE(defer);
383 EXPECT_TRUE(intercepting_handler->OnWillRead(&read_buffer, &buf_size, -1));
384 255
385 const char kData[] = "The data"; 256 ASSERT_NE(mock_loader_->io_buffer(), old_buffer.get());
386 ASSERT_NE(read_buffer.get(), old_buffer.get());
387 ASSERT_GT(static_cast<size_t>(buf_size), sizeof(kData));
388 memcpy(read_buffer->data(), kData, sizeof(kData));
389 257
390 // Simulate the MimeSniffingResourceHandler asking the 258 // Simulate the MimeSniffingResourceHandler asking the
391 // InterceptingResourceHandler to switch to a new handler. 259 // InterceptingResourceHandler to switch to a new handler.
392 net::URLRequestStatus new_handler_status; 260 net::URLRequestStatus new_handler_status;
393 std::string new_handler_body; 261 std::string new_handler_body;
394 std::unique_ptr<TestResourceHandler> new_handler( 262 std::unique_ptr<TestResourceHandler> new_handler(
395 new TestResourceHandler(&new_handler_status, &new_handler_body)); 263 new TestResourceHandler(&new_handler_status, &new_handler_body));
396 new_handler->set_on_will_start_result(false); 264 new_handler->set_on_will_start_result(false);
397 intercepting_handler->UseNewHandler(std::move(new_handler), std::string()); 265 intercepting_handler_->UseNewHandler(std::move(new_handler), std::string());
398 266
399 // The response is received. The new ResourceHandler should tell us to fail. 267 // The response is received. The new ResourceHandler should tell us to fail.
400 EXPECT_FALSE(intercepting_handler->OnResponseStarted(response.get(), &defer)); 268 ASSERT_EQ(MockResourceLoader::Status::CANCELED,
401 EXPECT_FALSE(defer); 269 mock_loader_->OnResponseStarted(
270 make_scoped_refptr(new ResourceResponse())));
271 EXPECT_EQ(net::ERR_ABORTED, mock_loader_->error_code());
402 } 272 }
403 273
404 // Tests that the handler behaves properly if the new handler fails response 274 // Tests that the handler behaves properly if the new handler fails response
405 // started. 275 // started.
406 TEST_F(InterceptingResourceHandlerTest, NewHandlerFailsResponseStarted) { 276 TEST_F(InterceptingResourceHandlerTest, NewHandlerFailsResponseStarted) {
407 net::URLRequestContext context; 277 scoped_refptr<net::IOBuffer> old_buffer = raw_old_handler_->buffer();
408 std::unique_ptr<net::URLRequest> request(context.CreateRequest(
409 GURL("http://www.google.com"), net::DEFAULT_PRIORITY, nullptr));
410 ResourceRequestInfo::AllocateForTesting(request.get(),
411 RESOURCE_TYPE_MAIN_FRAME,
412 nullptr, // context
413 0, // render_process_id
414 0, // render_view_id
415 0, // render_frame_id
416 true, // is_main_frame
417 false, // parent_is_main_frame
418 true, // allow_download
419 true, // is_async
420 PREVIEWS_OFF); // previews_state
421
422 net::URLRequestStatus old_handler_status;
423 std::string old_handler_body;
424 std::unique_ptr<TestResourceHandler> old_handler(
425 new TestResourceHandler(&old_handler_status, &old_handler_body));
426 scoped_refptr<net::IOBuffer> old_buffer = old_handler.get()->buffer();
427 std::unique_ptr<InterceptingResourceHandler> intercepting_handler(
428 new InterceptingResourceHandler(std::move(old_handler), request.get()));
429
430 scoped_refptr<ResourceResponse> response(new ResourceResponse);
431 278
432 // Simulate the MimeSniffingResourceHandler buffering the data. 279 // Simulate the MimeSniffingResourceHandler buffering the data.
433 scoped_refptr<net::IOBuffer> read_buffer; 280 ASSERT_EQ(MockResourceLoader::Status::IDLE,
434 int buf_size = 0; 281 mock_loader_->OnWillStart(request_->url()));
435 bool defer = false; 282 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
436 EXPECT_TRUE(intercepting_handler->OnWillStart(GURL(), &defer));
437 EXPECT_FALSE(defer);
438 EXPECT_TRUE(intercepting_handler->OnWillRead(&read_buffer, &buf_size, -1));
439 283
440 const char kData[] = "The data"; 284 ASSERT_NE(mock_loader_->io_buffer(), old_buffer.get());
441 ASSERT_NE(read_buffer.get(), old_buffer.get());
442 ASSERT_GT(static_cast<size_t>(buf_size), sizeof(kData));
443 memcpy(read_buffer->data(), kData, sizeof(kData));
444 285
445 // Simulate the MimeSniffingResourceHandler asking the 286 // Simulate the MimeSniffingResourceHandler asking the
446 // InterceptingResourceHandler to switch to a new handler. 287 // InterceptingResourceHandler to switch to a new handler.
447 net::URLRequestStatus new_handler_status; 288 net::URLRequestStatus new_handler_status;
448 std::string new_handler_body; 289 std::string new_handler_body;
449 std::unique_ptr<TestResourceHandler> new_handler( 290 std::unique_ptr<TestResourceHandler> new_handler(
450 new TestResourceHandler(&new_handler_status, &new_handler_body)); 291 new TestResourceHandler(&new_handler_status, &new_handler_body));
451 new_handler->set_on_response_started_result(false); 292 new_handler->set_on_response_started_result(false);
452 intercepting_handler->UseNewHandler(std::move(new_handler), std::string()); 293 intercepting_handler_->UseNewHandler(std::move(new_handler), std::string());
453 294
454 // The response is received. The new ResourceHandler should tell us to fail. 295 // The response is received. The new ResourceHandler should tell us to fail.
455 EXPECT_FALSE(intercepting_handler->OnResponseStarted(response.get(), &defer)); 296 ASSERT_EQ(MockResourceLoader::Status::CANCELED,
456 EXPECT_FALSE(defer); 297 mock_loader_->OnResponseStarted(
298 make_scoped_refptr(new ResourceResponse())));
299 EXPECT_EQ(net::ERR_ABORTED, mock_loader_->error_code());
457 } 300 }
458 301
459 // Tests that the handler behaves properly if the new handler fails will read. 302 // Tests that the handler behaves properly if the new handler fails will read.
460 TEST_F(InterceptingResourceHandlerTest, NewHandlerFailsWillRead) { 303 TEST_F(InterceptingResourceHandlerTest, NewHandlerFailsWillRead) {
461 net::URLRequestContext context; 304 scoped_refptr<net::IOBuffer> old_buffer = raw_old_handler_->buffer();
462 std::unique_ptr<net::URLRequest> request(context.CreateRequest(
463 GURL("http://www.google.com"), net::DEFAULT_PRIORITY, nullptr));
464 ResourceRequestInfo::AllocateForTesting(request.get(),
465 RESOURCE_TYPE_MAIN_FRAME,
466 nullptr, // context
467 0, // render_process_id
468 0, // render_view_id
469 0, // render_frame_id
470 true, // is_main_frame
471 false, // parent_is_main_frame
472 true, // allow_download
473 true, // is_async
474 PREVIEWS_OFF); // previews_state
475
476 net::URLRequestStatus old_handler_status;
477 std::string old_handler_body;
478 std::unique_ptr<TestResourceHandler> old_handler(
479 new TestResourceHandler(&old_handler_status, &old_handler_body));
480 scoped_refptr<net::IOBuffer> old_buffer = old_handler.get()->buffer();
481 std::unique_ptr<InterceptingResourceHandler> intercepting_handler(
482 new InterceptingResourceHandler(std::move(old_handler), request.get()));
483
484 scoped_refptr<ResourceResponse> response(new ResourceResponse);
485 305
486 // Simulate the MimeSniffingResourceHandler buffering the data. 306 // Simulate the MimeSniffingResourceHandler buffering the data.
487 scoped_refptr<net::IOBuffer> read_buffer; 307 ASSERT_EQ(MockResourceLoader::Status::IDLE,
488 int buf_size = 0; 308 mock_loader_->OnWillStart(request_->url()));
489 bool defer = false; 309 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
490 EXPECT_TRUE(intercepting_handler->OnWillStart(GURL(), &defer));
491 EXPECT_FALSE(defer);
492 EXPECT_TRUE(intercepting_handler->OnWillRead(&read_buffer, &buf_size, -1));
493 310
494 const char kData[] = "The data"; 311 const char kData[] = "The data";
495 ASSERT_NE(read_buffer.get(), old_buffer.get()); 312 ASSERT_NE(mock_loader_->io_buffer(), old_buffer.get());
496 ASSERT_GT(static_cast<size_t>(buf_size), sizeof(kData));
497 memcpy(read_buffer->data(), kData, sizeof(kData));
498 313
499 // Simulate the MimeSniffingResourceHandler asking the 314 // Simulate the MimeSniffingResourceHandler asking the
500 // InterceptingResourceHandler to switch to a new handler. 315 // InterceptingResourceHandler to switch to a new handler.
501 net::URLRequestStatus new_handler_status; 316 net::URLRequestStatus new_handler_status;
502 std::string new_handler_body; 317 std::string new_handler_body;
503 std::unique_ptr<TestResourceHandler> new_handler( 318 std::unique_ptr<TestResourceHandler> new_handler(
504 new TestResourceHandler(&new_handler_status, &new_handler_body)); 319 new TestResourceHandler(&new_handler_status, &new_handler_body));
505 new_handler->set_on_will_read_result(false); 320 new_handler->set_on_will_read_result(false);
506 intercepting_handler->UseNewHandler(std::move(new_handler), std::string()); 321 intercepting_handler_->UseNewHandler(std::move(new_handler), std::string());
507 322
508 // The response is received. The new handler should not have been asked to 323 // The response is received. The new handler should not have been asked to
509 // read yet. 324 // read yet.
510 EXPECT_TRUE(intercepting_handler->OnResponseStarted(response.get(), &defer)); 325 ASSERT_EQ(MockResourceLoader::Status::IDLE,
511 EXPECT_FALSE(defer); 326 mock_loader_->OnResponseStarted(
512 EXPECT_EQ(net::URLRequestStatus::CANCELED, old_handler_status.status()); 327 make_scoped_refptr(new ResourceResponse())));
513 EXPECT_EQ(net::ERR_ABORTED, old_handler_status.error()); 328 EXPECT_EQ(net::URLRequestStatus::CANCELED, old_handler_status_.status());
329 EXPECT_EQ(net::ERR_ABORTED, old_handler_status_.error());
514 330
515 // The read is replayed by the MimeSniffingResourceHandler. The new 331 // The read is replayed by the MimeSniffingResourceHandler. The new
516 // handler should tell the caller to fail. 332 // handler should tell the caller to fail.
517 EXPECT_FALSE(intercepting_handler->OnReadCompleted(sizeof(kData), &defer)); 333
518 EXPECT_FALSE(defer); 334 ASSERT_EQ(MockResourceLoader::Status::CANCELED,
335 mock_loader_->OnReadCompleted(kData));
336 EXPECT_EQ(net::ERR_ABORTED, mock_loader_->error_code());
519 } 337 }
520 338
521 // Tests that the handler behaves properly if the new handler fails read 339 // Tests that the handler behaves properly if the new handler fails read
522 // completed. 340 // completed.
523 TEST_F(InterceptingResourceHandlerTest, NewHandlerFailsReadCompleted) { 341 TEST_F(InterceptingResourceHandlerTest, NewHandlerFailsReadCompleted) {
524 net::URLRequestContext context; 342 scoped_refptr<net::IOBuffer> old_buffer = raw_old_handler_->buffer();
525 std::unique_ptr<net::URLRequest> request(context.CreateRequest(
526 GURL("http://www.google.com"), net::DEFAULT_PRIORITY, nullptr));
527 ResourceRequestInfo::AllocateForTesting(request.get(),
528 RESOURCE_TYPE_MAIN_FRAME,
529 nullptr, // context
530 0, // render_process_id
531 0, // render_view_id
532 0, // render_frame_id
533 true, // is_main_frame
534 false, // parent_is_main_frame
535 true, // allow_download
536 true, // is_async
537 PREVIEWS_OFF); // previews_state
538
539 net::URLRequestStatus old_handler_status;
540 std::string old_handler_body;
541 std::unique_ptr<TestResourceHandler> old_handler(
542 new TestResourceHandler(&old_handler_status, &old_handler_body));
543 scoped_refptr<net::IOBuffer> old_buffer = old_handler.get()->buffer();
544 std::unique_ptr<InterceptingResourceHandler> intercepting_handler(
545 new InterceptingResourceHandler(std::move(old_handler), request.get()));
546
547 scoped_refptr<ResourceResponse> response(new ResourceResponse);
548 343
549 // Simulate the MimeSniffingResourceHandler buffering the data. 344 // Simulate the MimeSniffingResourceHandler buffering the data.
550 scoped_refptr<net::IOBuffer> read_buffer; 345 ASSERT_EQ(MockResourceLoader::Status::IDLE,
551 int buf_size = 0; 346 mock_loader_->OnWillStart(request_->url()));
552 bool defer = false; 347 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
553 EXPECT_TRUE(intercepting_handler->OnWillStart(GURL(), &defer));
554 EXPECT_FALSE(defer);
555 EXPECT_TRUE(intercepting_handler->OnWillRead(&read_buffer, &buf_size, -1));
556 348
557 const char kData[] = "The data"; 349 const char kData[] = "The data";
558 ASSERT_NE(read_buffer.get(), old_buffer.get()); 350 ASSERT_NE(mock_loader_->io_buffer(), old_buffer.get());
559 ASSERT_GT(static_cast<size_t>(buf_size), sizeof(kData));
560 memcpy(read_buffer->data(), kData, sizeof(kData));
561 351
562 // Simulate the MimeSniffingResourceHandler asking the 352 // Simulate the MimeSniffingResourceHandler asking the
563 // InterceptingResourceHandler to switch to a new handler. 353 // InterceptingResourceHandler to switch to a new handler.
564 net::URLRequestStatus new_handler_status; 354 net::URLRequestStatus new_handler_status;
565 std::string new_handler_body; 355 std::string new_handler_body;
566 std::unique_ptr<TestResourceHandler> new_handler( 356 std::unique_ptr<TestResourceHandler> new_handler(
567 new TestResourceHandler(&new_handler_status, &new_handler_body)); 357 new TestResourceHandler(&new_handler_status, &new_handler_body));
568 new_handler->set_on_read_completed_result(false); 358 new_handler->set_on_read_completed_result(false);
569 intercepting_handler->UseNewHandler(std::move(new_handler), std::string()); 359 intercepting_handler_->UseNewHandler(std::move(new_handler), std::string());
Randy Smith (Not in Mondays) 2017/01/18 00:36:33 Thought (i.e. not even a suggestion): This code se
mmenke 2017/01/18 16:27:30 The problem is that in every test we set different
570 360
571 // The response is received. 361 // The response is received.
572 EXPECT_TRUE(intercepting_handler->OnResponseStarted(response.get(), &defer)); 362 ASSERT_EQ(MockResourceLoader::Status::IDLE,
573 EXPECT_FALSE(defer); 363 mock_loader_->OnResponseStarted(
574 EXPECT_EQ(net::URLRequestStatus::CANCELED, old_handler_status.status()); 364 make_scoped_refptr(new ResourceResponse())));
575 EXPECT_EQ(net::ERR_ABORTED, old_handler_status.error()); 365 EXPECT_EQ(net::URLRequestStatus::CANCELED, old_handler_status_.status());
366 EXPECT_EQ(net::ERR_ABORTED, old_handler_status_.error());
576 367
577 // The read is replayed by the MimeSniffingResourceHandler. The new handler 368 // The read is replayed by the MimeSniffingResourceHandler. The new handler
578 // should tell the caller to fail. 369 // should tell the caller to fail.
579 EXPECT_FALSE(intercepting_handler->OnReadCompleted(sizeof(kData), &defer)); 370 ASSERT_EQ(MockResourceLoader::Status::CANCELED,
580 EXPECT_FALSE(defer); 371 mock_loader_->OnReadCompleted(kData));
372 EXPECT_EQ(net::ERR_ABORTED, mock_loader_->error_code());
581 } 373 }
582 374
583 // The old handler sets |defer| to true in OnReadCompleted and 375 // The old handler sets |defer| to true in OnReadCompleted and
584 // OnResponseCompleted. The new handler sets |defer| to true in 376 // OnResponseCompleted. The new handler sets |defer| to true in
585 // OnResponseStarted and OnReadCompleted. 377 // OnResponseStarted and OnReadCompleted.
586 TEST_F(InterceptingResourceHandlerTest, DeferredOperations) { 378 TEST_F(InterceptingResourceHandlerTest, DeferredOperations) {
587 net::URLRequestContext context;
588 std::unique_ptr<net::URLRequest> request(context.CreateRequest(
589 GURL("http://www.google.com"), net::DEFAULT_PRIORITY, nullptr));
590 ResourceRequestInfo::AllocateForTesting(request.get(),
591 RESOURCE_TYPE_MAIN_FRAME,
592 nullptr, // context
593 0, // render_process_id
594 0, // render_view_id
595 0, // render_frame_id
596 true, // is_main_frame
597 false, // parent_is_main_frame
598 true, // allow_download
599 true, // is_async
600 PREVIEWS_OFF); // previews_state
601
602 std::unique_ptr<TestResourceController> resource_controller =
603 base::MakeUnique<TestResourceController>();
604 net::URLRequestStatus old_handler_status = {net::URLRequestStatus::IO_PENDING,
605 0};
606 std::string old_handler_body;
607 std::unique_ptr<TestResourceHandler> old_handler(
608 new TestResourceHandler(&old_handler_status, &old_handler_body));
609 // When sending a payload to the old ResourceHandler, the 379 // When sending a payload to the old ResourceHandler, the
610 // InterceptingResourceHandler doesn't send a final EOF read. 380 // InterceptingResourceHandler doesn't send a final EOF read.
611 // TODO(mmenke): Should it? Or can we just get rid of that 0-byte read 381 // TODO(mmenke): Should it? Or can we just get rid of that 0-byte read
612 // entirely? 382 // entirely?
613 old_handler->set_expect_eof_read(false); 383 raw_old_handler_->set_expect_eof_read(false);
614 old_handler->SetBufferSize(10); 384 raw_old_handler_->SetBufferSize(10);
615 old_handler->set_defer_on_read_completed(true); 385 raw_old_handler_->set_defer_on_read_completed(true);
616 386 scoped_refptr<net::IOBuffer> old_buffer = raw_old_handler_->buffer();
617 scoped_refptr<net::IOBuffer> old_buffer = old_handler.get()->buffer();
618 std::unique_ptr<InterceptingResourceHandler> intercepting_handler(
619 new InterceptingResourceHandler(std::move(old_handler), request.get()));
620 intercepting_handler->SetController(resource_controller.get());
621
622 scoped_refptr<ResourceResponse> response(new ResourceResponse);
623 387
624 // Simulate the MimeSniffingResourceHandler buffering the data. 388 // Simulate the MimeSniffingResourceHandler buffering the data.
625 scoped_refptr<net::IOBuffer> read_buffer; 389 ASSERT_EQ(MockResourceLoader::Status::IDLE,
626 int buf_size = 0; 390 mock_loader_->OnWillStart(request_->url()));
627 bool defer = false; 391 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
628 EXPECT_TRUE(intercepting_handler->OnWillStart(GURL(), &defer));
629 EXPECT_FALSE(defer);
630 EXPECT_TRUE(intercepting_handler->OnWillRead(&read_buffer, &buf_size, -1));
631 392
632 const char kData[] = "The data"; 393 const char kData[] = "The data";
633 ASSERT_NE(read_buffer.get(), old_buffer.get()); 394 ASSERT_NE(mock_loader_->io_buffer(), old_buffer.get());
634 ASSERT_GT(static_cast<size_t>(buf_size), strlen(kData));
635 memcpy(read_buffer->data(), kData, strlen(kData));
636 395
637 // Simulate the MimeSniffingResourceHandler asking the 396 // Simulate the MimeSniffingResourceHandler asking the
638 // InterceptingResourceHandler to switch to a new handler. 397 // InterceptingResourceHandler to switch to a new handler.
639 net::URLRequestStatus new_handler_status = {net::URLRequestStatus::IO_PENDING, 398 net::URLRequestStatus new_handler_status = {net::URLRequestStatus::IO_PENDING,
640 0}; 399 0};
641 400
642 std::string new_handler_body; 401 std::string new_handler_body;
643 const std::string kPayload = "The long long long long long payload"; 402 const std::string kPayload = "The long long long long long payload";
644 ASSERT_GT(kPayload.size(), static_cast<size_t>(buf_size));
645 std::unique_ptr<TestResourceHandler> new_handler( 403 std::unique_ptr<TestResourceHandler> new_handler(
646 new TestResourceHandler(&new_handler_status, &new_handler_body)); 404 new TestResourceHandler(&new_handler_status, &new_handler_body));
405 TestResourceHandler* raw_new_handler = new_handler.get();
647 new_handler->SetBufferSize(1); 406 new_handler->SetBufferSize(1);
648 new_handler->set_defer_on_will_start(true); 407 new_handler->set_defer_on_will_start(true);
649 new_handler->set_defer_on_response_started(true); 408 new_handler->set_defer_on_response_started(true);
650 new_handler->set_defer_on_read_completed(true); 409 new_handler->set_defer_on_read_completed(true);
651 new_handler->set_defer_on_response_completed(true); 410 new_handler->set_defer_on_response_completed(true);
652 intercepting_handler->UseNewHandler(std::move(new_handler), kPayload); 411 intercepting_handler_->UseNewHandler(std::move(new_handler), kPayload);
653 412
654 // The response is received, and then deferred by the old handler's 413 // The response is received, and then deferred by the old handler's
655 // OnReadCompleted method. 414 // OnReadCompleted method.
656 ASSERT_TRUE(intercepting_handler->OnResponseStarted(response.get(), &defer)); 415 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING,
657 ASSERT_TRUE(defer); 416 mock_loader_->OnResponseStarted(
417 make_scoped_refptr(new ResourceResponse())));
658 418
659 // The old handler has received the first N bytes of the payload synchronously 419 // The old handler has received the first N bytes of the payload synchronously
660 // where N is the size of the buffer exposed via OnWillRead. 420 // where N is the size of the buffer exposed via OnWillRead.
661 EXPECT_EQ("The long l", old_handler_body); 421 EXPECT_EQ("The long l", old_handler_body_);
Randy Smith (Not in Mondays) 2017/01/18 00:36:33 nit, suggestion: Compute "The long l" as per the c
mmenke 2017/01/18 16:27:30 Done. Also took the opportunity to move all const
662 EXPECT_EQ(std::string(), new_handler_body); 422 EXPECT_EQ(std::string(), new_handler_body);
663 EXPECT_EQ(old_handler_status.status(), net::URLRequestStatus::IO_PENDING); 423 EXPECT_EQ(net::URLRequestStatus::IO_PENDING, old_handler_status_.status());
664 EXPECT_EQ(new_handler_status.status(), net::URLRequestStatus::IO_PENDING); 424 EXPECT_EQ(net::URLRequestStatus::IO_PENDING, new_handler_status.status());
665 425
666 // Run until the new handler's OnWillStart method defers the request. 426 // Run until the new handler's OnWillStart method defers the request.
667 intercepting_handler->Resume(); 427 raw_old_handler_->Resume();
668 EXPECT_EQ(0, resource_controller->resume_calls()); 428 // Resume() call may do work asynchronously. Wait until that's done.
669 EXPECT_EQ(kPayload, old_handler_body); 429 base::RunLoop().RunUntilIdle();
430 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING,
431 mock_loader_->status());
432 EXPECT_EQ(kPayload, old_handler_body_);
670 EXPECT_EQ(std::string(), new_handler_body); 433 EXPECT_EQ(std::string(), new_handler_body);
671 EXPECT_EQ(old_handler_status.status(), net::URLRequestStatus::SUCCESS); 434 EXPECT_EQ(net::URLRequestStatus::SUCCESS, old_handler_status_.status());
672 EXPECT_EQ(new_handler_status.status(), net::URLRequestStatus::IO_PENDING); 435 EXPECT_EQ(net::URLRequestStatus::IO_PENDING, new_handler_status.status());
673 436
674 // Run until the new handler's OnResponseStarted method defers the request. 437 // Run until the new handler's OnResponseStarted method defers the request.
675 intercepting_handler->Resume(); 438 raw_new_handler->Resume();
676 EXPECT_EQ(0, resource_controller->resume_calls()); 439 // Resume() call may do work asynchronously. Wait until that's done.
440 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING,
441 mock_loader_->status());
677 EXPECT_EQ(std::string(), new_handler_body); 442 EXPECT_EQ(std::string(), new_handler_body);
678 EXPECT_EQ(old_handler_status.status(), net::URLRequestStatus::SUCCESS); 443 EXPECT_EQ(net::URLRequestStatus::SUCCESS, old_handler_status_.status());
Randy Smith (Not in Mondays) 2017/01/18 00:36:33 suggestion: Find a way to assert that the old hand
mmenke 2017/01/18 16:27:30 Done. Made TestResourceHandler expose a WeakPtr,
679 EXPECT_EQ(new_handler_status.status(), net::URLRequestStatus::IO_PENDING); 444 EXPECT_EQ(net::URLRequestStatus::IO_PENDING, new_handler_status.status());
680 445
681 // Resuming should finally call back into the ResourceController. 446 // Resuming should finally call back into the ResourceController.
682 intercepting_handler->Resume(); 447 raw_new_handler->Resume();
683 EXPECT_EQ(1, resource_controller->resume_calls()); 448 mock_loader_->WaitUntilIdleOrCanceled();
449 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->status());
684 450
685 // Data is read, the new handler defers completion of the read. 451 // Data is read, the new handler defers completion of the read.
686 defer = false; 452 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING,
687 ASSERT_TRUE(intercepting_handler->OnReadCompleted(strlen(kData), &defer)); 453 mock_loader_->OnReadCompleted(kData));
688 ASSERT_TRUE(defer);
689 454
690 EXPECT_EQ(kPayload, old_handler_body); 455 EXPECT_EQ(kPayload, old_handler_body_);
691 EXPECT_EQ("T", new_handler_body); 456 EXPECT_EQ("T", new_handler_body);
692 457
693 intercepting_handler->Resume(); 458 raw_new_handler->Resume();
694 EXPECT_EQ(2, resource_controller->resume_calls()); 459 mock_loader_->WaitUntilIdleOrCanceled();
695 EXPECT_EQ(kPayload, old_handler_body); 460 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->status());
461 EXPECT_EQ(kPayload, old_handler_body_);
696 EXPECT_EQ(kData, new_handler_body); 462 EXPECT_EQ(kData, new_handler_body);
697 463
698 EXPECT_EQ(old_handler_status.status(), net::URLRequestStatus::SUCCESS); 464 EXPECT_EQ(net::URLRequestStatus::SUCCESS, old_handler_status_.status());
699 EXPECT_EQ(new_handler_status.status(), net::URLRequestStatus::IO_PENDING); 465 EXPECT_EQ(net::URLRequestStatus::IO_PENDING, new_handler_status.status());
700 466
701 // Final EOF byte is read. 467 // Final EOF byte is read.
702 ASSERT_TRUE(intercepting_handler->OnReadCompleted(0, &defer)); 468 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
703 ASSERT_FALSE(defer); 469 ASSERT_EQ(MockResourceLoader::Status::IDLE,
470 mock_loader_->OnReadCompleted(""));
704 471
705 defer = false; 472 ASSERT_EQ(
706 intercepting_handler->OnResponseCompleted({net::URLRequestStatus::SUCCESS, 0}, 473 MockResourceLoader::Status::CALLBACK_PENDING,
707 &defer); 474 mock_loader_->OnResponseCompleted({net::URLRequestStatus::SUCCESS, 0}));
708 ASSERT_TRUE(defer); 475 EXPECT_EQ(net::URLRequestStatus::SUCCESS, old_handler_status_.status());
709 EXPECT_EQ(old_handler_status.status(), net::URLRequestStatus::SUCCESS); 476 EXPECT_EQ(net::URLRequestStatus::SUCCESS, new_handler_status.status());
710 EXPECT_EQ(new_handler_status.status(), net::URLRequestStatus::SUCCESS);
711 } 477 }
712 478
713 // Test cancellation where there is only the old handler in an 479 // Test cancellation where there is only the old handler in an
714 // InterceptingResourceHandler. 480 // InterceptingResourceHandler.
715 TEST_F(InterceptingResourceHandlerTest, CancelOldHandler) { 481 TEST_F(InterceptingResourceHandlerTest, CancelOldHandler) {
716 net::URLRequestContext context; 482 EXPECT_EQ(net::URLRequestStatus::IO_PENDING, old_handler_status_.status());
Randy Smith (Not in Mondays) 2017/01/18 00:36:33 Thought: Not sure this EXPECT makes a lot of sense
mmenke 2017/01/18 16:27:30 Done. You're right, it doesn't, just blindly kept
717 std::unique_ptr<net::URLRequest> request(context.CreateRequest(
718 GURL("http://www.google.com"), net::DEFAULT_PRIORITY, nullptr));
719 ResourceRequestInfo::AllocateForTesting(request.get(),
720 RESOURCE_TYPE_MAIN_FRAME,
721 nullptr, // context
722 0, // render_process_id
723 0, // render_view_id
724 0, // render_frame_id
725 true, // is_main_frame
726 false, // parent_is_main_frame
727 true, // allow_download
728 true, // is_async
729 PREVIEWS_OFF); // previews_state
730 483
731 std::unique_ptr<TestResourceController> resource_controller = 484 ASSERT_EQ(MockResourceLoader::Status::IDLE,
732 base::MakeUnique<TestResourceController>(); 485 mock_loader_->OnResponseCompletedFromExternalOutOfBandCancel(
733 net::URLRequestStatus old_handler_status = {net::URLRequestStatus::IO_PENDING, 486 {net::URLRequestStatus::CANCELED, net::ERR_FAILED}));
734 0}; 487 EXPECT_EQ(net::URLRequestStatus::CANCELED, old_handler_status_.status());
735 std::string old_handler_body;
736 std::unique_ptr<TestResourceHandler> old_handler(
737 new TestResourceHandler(&old_handler_status, &old_handler_body));
738
739 std::unique_ptr<InterceptingResourceHandler> intercepting_handler(
740 new InterceptingResourceHandler(std::move(old_handler), request.get()));
741 intercepting_handler->SetController(resource_controller.get());
742
743 EXPECT_EQ(net::URLRequestStatus::IO_PENDING, old_handler_status.status());
744
745 bool defer = false;
746 intercepting_handler->OnResponseCompleted(
747 {net::URLRequestStatus::CANCELED, net::ERR_FAILED}, &defer);
748 ASSERT_FALSE(defer);
749 EXPECT_EQ(0, resource_controller->resume_calls());
750 EXPECT_EQ(net::URLRequestStatus::CANCELED, old_handler_status.status());
751 } 488 }
752 489
753 // Test cancellation where there is only the new handler in an 490 // Test cancellation where there is only the new handler in an
754 // InterceptingResourceHandler. 491 // InterceptingResourceHandler.
755 TEST_F(InterceptingResourceHandlerTest, CancelNewHandler) { 492 TEST_F(InterceptingResourceHandlerTest, CancelNewHandler) {
756 net::URLRequestContext context;
757 std::unique_ptr<net::URLRequest> request(context.CreateRequest(
758 GURL("http://www.google.com"), net::DEFAULT_PRIORITY, nullptr));
759 ResourceRequestInfo::AllocateForTesting(request.get(),
760 RESOURCE_TYPE_MAIN_FRAME,
761 nullptr, // context
762 0, // render_process_id
763 0, // render_view_id
764 0, // render_frame_id
765 true, // is_main_frame
766 false, // parent_is_main_frame
767 true, // allow_download
768 true, // is_async
769 PREVIEWS_OFF); // previews_state
770
771 std::unique_ptr<TestResourceController> resource_controller =
772 base::MakeUnique<TestResourceController>();
773 net::URLRequestStatus old_handler_status = {net::URLRequestStatus::IO_PENDING,
774 0};
775 std::string old_handler_body;
776 std::unique_ptr<TestResourceHandler> old_handler(
777 new TestResourceHandler(&old_handler_status, &old_handler_body));
778 // When sending a payload to the old ResourceHandler, the 493 // When sending a payload to the old ResourceHandler, the
779 // InterceptingResourceHandler doesn't send a final EOF read. 494 // InterceptingResourceHandler doesn't send a final EOF read.
780 // TODO(mmenke): Should it? Or can we just get rid of that 0-byte read 495 // TODO(mmenke): Should it? Or can we just get rid of that 0-byte read
781 // entirely? 496 // entirely?
782 old_handler->set_expect_eof_read(false); 497 raw_old_handler_->set_expect_eof_read(false);
783
784 std::unique_ptr<InterceptingResourceHandler> intercepting_handler(
785 new InterceptingResourceHandler(std::move(old_handler), request.get()));
786 intercepting_handler->SetController(resource_controller.get());
787
788 scoped_refptr<ResourceResponse> response(new ResourceResponse);
789 498
790 // Simulate the MimeSniffingResourceHandler buffering the data. 499 // Simulate the MimeSniffingResourceHandler buffering the data.
791 scoped_refptr<net::IOBuffer> read_buffer; 500 ASSERT_EQ(MockResourceLoader::Status::IDLE,
792 int buf_size = 0; 501 mock_loader_->OnWillStart(request_->url()));
793 bool defer = false; 502 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
794 EXPECT_TRUE(intercepting_handler->OnWillStart(GURL(), &defer));
795 EXPECT_FALSE(defer);
796 EXPECT_TRUE(intercepting_handler->OnWillRead(&read_buffer, &buf_size, -1));
797
798 const char kData[] = "The data";
799 ASSERT_GT(static_cast<size_t>(buf_size), strlen(kData));
800 memcpy(read_buffer->data(), kData, strlen(kData));
801 503
802 // Simulate the MimeSniffingResourceHandler asking the 504 // Simulate the MimeSniffingResourceHandler asking the
803 // InterceptingResourceHandler to switch to a new handler. 505 // InterceptingResourceHandler to switch to a new handler.
804 net::URLRequestStatus new_handler_status = {net::URLRequestStatus::IO_PENDING, 506 net::URLRequestStatus new_handler_status = {net::URLRequestStatus::IO_PENDING,
805 0}; 507 0};
806 508
807 std::string new_handler_body; 509 std::string new_handler_body;
808 const std::string kPayload = "The payload"; 510 const std::string kPayload = "The payload";
809 std::unique_ptr<TestResourceHandler> new_handler( 511 std::unique_ptr<TestResourceHandler> new_handler(
810 new TestResourceHandler(&new_handler_status, &new_handler_body)); 512 new TestResourceHandler(&new_handler_status, &new_handler_body));
811 new_handler->SetBufferSize(1); 513 new_handler->SetBufferSize(1);
812 new_handler->set_defer_on_response_started(true); 514 new_handler->set_defer_on_response_started(true);
813 new_handler->set_defer_on_response_completed(true); 515 new_handler->set_defer_on_response_completed(true);
814 intercepting_handler->UseNewHandler(std::move(new_handler), kPayload); 516 intercepting_handler_->UseNewHandler(std::move(new_handler), kPayload);
815 517
816 // The response is received. 518 // The response is received.
817 ASSERT_TRUE(intercepting_handler->OnResponseStarted(response.get(), &defer)); 519 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING,
818 ASSERT_TRUE(defer); 520 mock_loader_->OnResponseStarted(
521 make_scoped_refptr(new ResourceResponse())));
819 522
820 EXPECT_EQ(net::URLRequestStatus::SUCCESS, old_handler_status.status()); 523 EXPECT_EQ(net::URLRequestStatus::SUCCESS, old_handler_status_.status());
821 EXPECT_EQ(net::URLRequestStatus::IO_PENDING, new_handler_status.status()); 524 EXPECT_EQ(net::URLRequestStatus::IO_PENDING, new_handler_status.status());
822 525
823 defer = false; 526 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING,
824 intercepting_handler->OnResponseCompleted( 527 mock_loader_->OnResponseCompletedFromExternalOutOfBandCancel(
825 {net::URLRequestStatus::CANCELED, net::ERR_FAILED}, &defer); 528 {net::URLRequestStatus::CANCELED, net::ERR_FAILED}));
826 ASSERT_TRUE(defer); 529 EXPECT_EQ(net::URLRequestStatus::SUCCESS, old_handler_status_.status());
827 EXPECT_EQ(0, resource_controller->resume_calls());
828 EXPECT_EQ(net::URLRequestStatus::SUCCESS, old_handler_status.status());
829 EXPECT_EQ(net::URLRequestStatus::CANCELED, new_handler_status.status()); 530 EXPECT_EQ(net::URLRequestStatus::CANCELED, new_handler_status.status());
830 } 531 }
831 532
832 // Test cancellation where there are both the old and the new handlers in an 533 // Test cancellation where there are both the old and the new handlers in an
833 // InterceptingResourceHandler. 534 // InterceptingResourceHandler.
834 TEST_F(InterceptingResourceHandlerTest, CancelBothHandlers) { 535 TEST_F(InterceptingResourceHandlerTest, CancelBothHandlers) {
835 net::URLRequestContext context; 536 raw_old_handler_->set_defer_on_read_completed(true);
836 std::unique_ptr<net::URLRequest> request(context.CreateRequest(
837 GURL("http://www.google.com"), net::DEFAULT_PRIORITY, nullptr));
838 ResourceRequestInfo::AllocateForTesting(request.get(),
839 RESOURCE_TYPE_MAIN_FRAME,
840 nullptr, // context
841 0, // render_process_id
842 0, // render_view_id
843 0, // render_frame_id
844 true, // is_main_frame
845 false, // parent_is_main_frame
846 true, // allow_download
847 true, // is_async
848 PREVIEWS_OFF); // previews_state
849
850 std::unique_ptr<TestResourceController> resource_controller =
851 base::MakeUnique<TestResourceController>();
852 net::URLRequestStatus old_handler_status = {net::URLRequestStatus::IO_PENDING,
853 0};
854 std::string old_handler_body;
855 std::unique_ptr<TestResourceHandler> old_handler(
856 new TestResourceHandler(&old_handler_status, &old_handler_body));
857 old_handler->set_defer_on_read_completed(true);
858
859 std::unique_ptr<InterceptingResourceHandler> intercepting_handler(
860 new InterceptingResourceHandler(std::move(old_handler), request.get()));
861 intercepting_handler->SetController(resource_controller.get());
862
863 scoped_refptr<ResourceResponse> response(new ResourceResponse);
864 537
865 // Simulate the MimeSniffingResourceHandler buffering the data. 538 // Simulate the MimeSniffingResourceHandler buffering the data.
866 scoped_refptr<net::IOBuffer> read_buffer; 539 ASSERT_EQ(MockResourceLoader::Status::IDLE,
867 int buf_size = 0; 540 mock_loader_->OnWillStart(request_->url()));
868 bool defer = false; 541 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
869 EXPECT_TRUE(intercepting_handler->OnWillStart(GURL(), &defer));
870 EXPECT_FALSE(defer);
871 EXPECT_TRUE(intercepting_handler->OnWillRead(&read_buffer, &buf_size, -1));
872
873 const char kData[] = "The data";
874 ASSERT_GT(static_cast<size_t>(buf_size), strlen(kData));
875 memcpy(read_buffer->data(), kData, strlen(kData));
876 542
877 // Simulate the MimeSniffingResourceHandler asking the 543 // Simulate the MimeSniffingResourceHandler asking the
878 // InterceptingResourceHandler to switch to a new handler. 544 // InterceptingResourceHandler to switch to a new handler.
879 net::URLRequestStatus new_handler_status = {net::URLRequestStatus::IO_PENDING, 545 net::URLRequestStatus new_handler_status = {net::URLRequestStatus::IO_PENDING,
880 0}; 546 0};
881 547
882 std::string new_handler_body; 548 std::string new_handler_body;
883 const std::string kPayload = "The payload"; 549 const std::string kPayload = "The payload";
884 std::unique_ptr<TestResourceHandler> new_handler( 550 std::unique_ptr<TestResourceHandler> new_handler(
885 new TestResourceHandler(&new_handler_status, &new_handler_body)); 551 new TestResourceHandler(&new_handler_status, &new_handler_body));
886 new_handler->SetBufferSize(1); 552 new_handler->SetBufferSize(1);
887 new_handler->set_defer_on_response_completed(true); 553 new_handler->set_defer_on_response_completed(true);
888 intercepting_handler->UseNewHandler(std::move(new_handler), kPayload); 554 intercepting_handler_->UseNewHandler(std::move(new_handler), kPayload);
889 555
890 // The response is received. 556 // The response is received.
891 ASSERT_TRUE(intercepting_handler->OnResponseStarted(response.get(), &defer)); 557 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING,
892 ASSERT_TRUE(defer); 558 mock_loader_->OnResponseStarted(
559 make_scoped_refptr(new ResourceResponse())));
893 560
894 EXPECT_EQ(net::URLRequestStatus::IO_PENDING, old_handler_status.status()); 561 EXPECT_EQ(net::URLRequestStatus::IO_PENDING, old_handler_status_.status());
895 EXPECT_EQ(net::URLRequestStatus::IO_PENDING, new_handler_status.status()); 562 EXPECT_EQ(net::URLRequestStatus::IO_PENDING, new_handler_status.status());
896 563
897 defer = false; 564 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING,
898 intercepting_handler->OnResponseCompleted( 565 mock_loader_->OnResponseCompletedFromExternalOutOfBandCancel(
899 {net::URLRequestStatus::CANCELED, net::ERR_FAILED}, &defer); 566 {net::URLRequestStatus::CANCELED, net::ERR_FAILED}));
900 ASSERT_TRUE(defer); 567 EXPECT_EQ(net::URLRequestStatus::CANCELED, old_handler_status_.status());
901 EXPECT_EQ(0, resource_controller->resume_calls());
902 EXPECT_EQ(net::URLRequestStatus::CANCELED, old_handler_status.status());
903 EXPECT_EQ(net::URLRequestStatus::CANCELED, new_handler_status.status()); 568 EXPECT_EQ(net::URLRequestStatus::CANCELED, new_handler_status.status());
904 } 569 }
905 570
906 } // namespace 571 } // namespace
907 572
908 } // namespace content 573 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/loader/intercepting_resource_handler.cc ('k') | content/browser/loader/mock_resource_loader.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698