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

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

Issue 2514713002: Send encoded_body_length to renderer when response completed (1/3) (Closed)
Patch Set: fix Created 4 years, 1 month 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/url_loader_factory_impl.h" 5 #include "content/browser/loader/url_loader_factory_impl.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>
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 break; 196 break;
197 if (r == MOJO_RESULT_SHOULD_WAIT) 197 if (r == MOJO_RESULT_SHOULD_WAIT)
198 continue; 198 continue;
199 ASSERT_EQ(MOJO_RESULT_OK, r); 199 ASSERT_EQ(MOJO_RESULT_OK, r);
200 contents += std::string(buffer, read_size); 200 contents += std::string(buffer, read_size);
201 } 201 }
202 std::string expected; 202 std::string expected;
203 base::ReadFileToString( 203 base::ReadFileToString(
204 root.Append(base::FilePath(FILE_PATH_LITERAL("hello.html"))), &expected); 204 root.Append(base::FilePath(FILE_PATH_LITERAL("hello.html"))), &expected);
205 EXPECT_EQ(expected, contents); 205 EXPECT_EQ(expected, contents);
206 EXPECT_EQ(static_cast<int64_t>(expected.size()),
207 client.completion_status().encoded_data_length);
208 EXPECT_EQ(static_cast<int64_t>(expected.size()),
209 client.completion_status().encoded_body_length);
206 } 210 }
207 211
208 TEST_P(URLLoaderFactoryImplTest, GetFailedResponse) { 212 TEST_P(URLLoaderFactoryImplTest, GetFailedResponse) {
209 NavigationResourceThrottle::set_ui_checks_always_succeed_for_testing(true); 213 NavigationResourceThrottle::set_ui_checks_always_succeed_for_testing(true);
210 mojom::URLLoaderAssociatedPtr loader; 214 mojom::URLLoaderAssociatedPtr loader;
211 ResourceRequest request; 215 ResourceRequest request;
212 TestURLLoaderClient client; 216 TestURLLoaderClient client;
213 net::URLRequestFailedJob::AddUrlHandler(); 217 net::URLRequestFailedJob::AddUrlHandler();
214 request.url = net::URLRequestFailedJob::GetMockHttpUrlWithFailurePhase( 218 request.url = net::URLRequestFailedJob::GetMockHttpUrlWithFailurePhase(
215 net::URLRequestFailedJob::START, net::ERR_TIMED_OUT); 219 net::URLRequestFailedJob::START, net::ERR_TIMED_OUT);
216 request.method = "GET"; 220 request.method = "GET";
217 factory_->CreateLoaderAndStart( 221 factory_->CreateLoaderAndStart(
218 mojo::GetProxy(&loader, factory_.associated_group()), 2, 1, request, 222 mojo::GetProxy(&loader, factory_.associated_group()), 2, 1, request,
219 client.CreateRemoteAssociatedPtrInfo(factory_.associated_group())); 223 client.CreateRemoteAssociatedPtrInfo(factory_.associated_group()));
220 224
221 client.RunUntilComplete(); 225 client.RunUntilComplete();
222 ASSERT_FALSE(client.has_received_response()); 226 ASSERT_FALSE(client.has_received_response());
223 ASSERT_FALSE(client.response_body().is_valid()); 227 ASSERT_FALSE(client.response_body().is_valid());
224 228
225 EXPECT_EQ(net::ERR_TIMED_OUT, client.completion_status().error_code); 229 EXPECT_EQ(net::ERR_TIMED_OUT, client.completion_status().error_code);
230 EXPECT_EQ(0, client.completion_status().encoded_data_length);
231 EXPECT_EQ(0, client.completion_status().encoded_body_length);
232 }
233
234 // In this case, the loading fails after receiving a response.
235 TEST_P(URLLoaderFactoryImplTest, GetFailedResponse2) {
236 NavigationResourceThrottle::set_ui_checks_always_succeed_for_testing(true);
237 mojom::URLLoaderAssociatedPtr loader;
238 ResourceRequest request;
239 TestURLLoaderClient client;
240 net::URLRequestFailedJob::AddUrlHandler();
241 request.url = net::URLRequestFailedJob::GetMockHttpUrlWithFailurePhase(
242 net::URLRequestFailedJob::READ_ASYNC, net::ERR_TIMED_OUT);
243 request.method = "GET";
244 request.is_main_frame = true;
245 factory_->CreateLoaderAndStart(
246 mojo::GetProxy(&loader, factory_.associated_group()), 2, 1, request,
247 client.CreateRemoteAssociatedPtrInfo(factory_.associated_group()));
248
249 client.RunUntilComplete();
250 ASSERT_FALSE(client.has_received_response());
251 ASSERT_TRUE(client.response_body().is_valid());
252
253 EXPECT_EQ(net::ERR_TIMED_OUT, client.completion_status().error_code);
254 EXPECT_GT(client.completion_status().encoded_data_length, 0);
255 EXPECT_EQ(0, client.completion_status().encoded_body_length);
226 } 256 }
227 257
228 // This test tests a case where resource loading is cancelled before started. 258 // This test tests a case where resource loading is cancelled before started.
229 TEST_P(URLLoaderFactoryImplTest, InvalidURL) { 259 TEST_P(URLLoaderFactoryImplTest, InvalidURL) {
230 mojom::URLLoaderAssociatedPtr loader; 260 mojom::URLLoaderAssociatedPtr loader;
231 ResourceRequest request; 261 ResourceRequest request;
232 TestURLLoaderClient client; 262 TestURLLoaderClient client;
233 request.url = GURL(); 263 request.url = GURL();
234 request.method = "GET"; 264 request.method = "GET";
235 ASSERT_FALSE(request.url.is_valid()); 265 ASSERT_FALSE(request.url.is_valid());
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 351
322 EXPECT_EQ(static_cast<int64_t>(contents.size()), 352 EXPECT_EQ(static_cast<int64_t>(contents.size()),
323 client.download_data_length()); 353 client.download_data_length());
324 EXPECT_EQ(static_cast<int64_t>(contents.size()), 354 EXPECT_EQ(static_cast<int64_t>(contents.size()),
325 client.encoded_download_data_length()); 355 client.encoded_download_data_length());
326 356
327 std::string expected; 357 std::string expected;
328 base::ReadFileToString( 358 base::ReadFileToString(
329 root.Append(base::FilePath(FILE_PATH_LITERAL("hello.html"))), &expected); 359 root.Append(base::FilePath(FILE_PATH_LITERAL("hello.html"))), &expected);
330 EXPECT_EQ(expected, contents); 360 EXPECT_EQ(expected, contents);
361 EXPECT_EQ(static_cast<int64_t>(expected.size()),
362 client.completion_status().encoded_data_length);
363 EXPECT_EQ(static_cast<int64_t>(expected.size()),
364 client.completion_status().encoded_body_length);
331 } 365 }
332 366
333 TEST_P(URLLoaderFactoryImplTest, DownloadToFileFailure) { 367 TEST_P(URLLoaderFactoryImplTest, DownloadToFileFailure) {
334 constexpr int32_t kRoutingId = 1; 368 constexpr int32_t kRoutingId = 1;
335 constexpr int32_t kRequestId = 2; 369 constexpr int32_t kRequestId = 2;
336 370
337 mojom::URLLoaderAssociatedPtr loader; 371 mojom::URLLoaderAssociatedPtr loader;
338 base::FilePath root; 372 base::FilePath root;
339 PathService::Get(DIR_TEST_DATA, &root); 373 PathService::Get(DIR_TEST_DATA, &root);
340 net::URLRequestSlowDownloadJob::AddUrlHandler(); 374 net::URLRequestSlowDownloadJob::AddUrlHandler();
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
420 ASSERT_FALSE(rdh_.GetURLRequest(GlobalRequestID(kChildId, kRequestId))); 454 ASSERT_FALSE(rdh_.GetURLRequest(GlobalRequestID(kChildId, kRequestId)));
421 } 455 }
422 456
423 INSTANTIATE_TEST_CASE_P(URLLoaderFactoryImplTest, 457 INSTANTIATE_TEST_CASE_P(URLLoaderFactoryImplTest,
424 URLLoaderFactoryImplTest, 458 URLLoaderFactoryImplTest,
425 ::testing::Values(128, 32 * 1024)); 459 ::testing::Values(128, 32 * 1024));
426 460
427 } // namespace 461 } // namespace
428 462
429 } // namespace content 463 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698