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

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

Issue 2515383004: Revert of Send encoded_body_length to renderer when response completed (1/3) (Closed)
Patch Set: 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/async_resource_handler.h" 5 #include "content/browser/loader/async_resource_handler.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 #include <memory> 9 #include <memory>
10 #include <string> 10 #include <string>
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 namespace { 57 namespace {
58 58
59 std::string GenerateHeader(size_t response_data_size) { 59 std::string GenerateHeader(size_t response_data_size) {
60 return base::StringPrintf( 60 return base::StringPrintf(
61 "HTTP/1.1 200 OK\n" 61 "HTTP/1.1 200 OK\n"
62 "Content-type: text/html\n" 62 "Content-type: text/html\n"
63 "Content-Length: %" PRIuS "\n", 63 "Content-Length: %" PRIuS "\n",
64 response_data_size); 64 response_data_size);
65 } 65 }
66 66
67 int64_t TotalReceivedBytes(size_t response_data_size) {
68 return response_data_size + GenerateHeader(response_data_size).size();
69 }
70
71 std::string GenerateData(size_t response_data_size) { 67 std::string GenerateData(size_t response_data_size) {
72 return std::string(response_data_size, 'a'); 68 return std::string(response_data_size, 'a');
73 } 69 }
74 70
75 class TestProtocolHandler : public net::URLRequestJobFactory::ProtocolHandler { 71 class TestProtocolHandler : public net::URLRequestJobFactory::ProtocolHandler {
76 public: 72 public:
77 TestProtocolHandler(size_t response_data_size) 73 TestProtocolHandler(size_t response_data_size)
78 : response_data_size_(response_data_size) {} 74 : response_data_size_(response_data_size) {}
79 75
80 net::URLRequestJob* MaybeCreateJob( 76 net::URLRequestJob* MaybeCreateJob(
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 std::unique_ptr<base::RunLoop> finish_waiter_; 241 std::unique_ptr<base::RunLoop> finish_waiter_;
246 }; 242 };
247 243
248 TEST_F(AsyncResourceHandlerTest, Construct) { 244 TEST_F(AsyncResourceHandlerTest, Construct) {
249 CreateRequestWithResponseDataSize(1); 245 CreateRequestWithResponseDataSize(1);
250 } 246 }
251 247
252 TEST_F(AsyncResourceHandlerTest, OneChunkLengths) { 248 TEST_F(AsyncResourceHandlerTest, OneChunkLengths) {
253 // Larger than kInlinedLeadingChunkSize and smaller than 249 // Larger than kInlinedLeadingChunkSize and smaller than
254 // kMaxAllocationSize. 250 // kMaxAllocationSize.
255 constexpr auto kDataSize = 4096; 251 StartRequestAndWaitWithResponseDataSize(4096);
256 StartRequestAndWaitWithResponseDataSize(kDataSize);
257 const auto& messages = filter_->messages(); 252 const auto& messages = filter_->messages();
258 ASSERT_EQ(4u, messages.size()); 253 ASSERT_EQ(4u, messages.size());
259 ASSERT_EQ(ResourceMsg_DataReceived::ID, messages[2]->type()); 254 ASSERT_EQ(ResourceMsg_DataReceived::ID, messages[2]->type());
260 ResourceMsg_DataReceived::Param params; 255 ResourceMsg_DataReceived::Param params;
261 ResourceMsg_DataReceived::Read(messages[2].get(), &params); 256 ResourceMsg_DataReceived::Read(messages[2].get(), &params);
262 257
263 int encoded_data_length = std::get<3>(params); 258 int encoded_data_length = std::get<3>(params);
264 EXPECT_EQ(kDataSize, encoded_data_length); 259 EXPECT_EQ(4096, encoded_data_length);
265 int encoded_body_length = std::get<4>(params); 260 int encoded_body_length = std::get<4>(params);
266 EXPECT_EQ(kDataSize, encoded_body_length); 261 EXPECT_EQ(4096, encoded_body_length);
267
268 ASSERT_EQ(ResourceMsg_RequestComplete::ID, messages[3]->type());
269 ResourceMsg_RequestComplete::Param completion_params;
270 ResourceMsg_RequestComplete::Read(messages[3].get(), &completion_params);
271 ResourceRequestCompletionStatus completion_status =
272 std::get<1>(completion_params);
273
274 EXPECT_EQ(TotalReceivedBytes(kDataSize),
275 completion_status.encoded_data_length);
276 EXPECT_EQ(kDataSize, completion_status.encoded_body_length);
277 } 262 }
278 263
279 TEST_F(AsyncResourceHandlerTest, InlinedChunkLengths) { 264 TEST_F(AsyncResourceHandlerTest, InlinedChunkLengths) {
280 // TODO(ricea): Remove this Feature-enabling code once the feature is on by 265 // TODO(ricea): Remove this Feature-enabling code once the feature is on by
281 // default. 266 // default.
282 base::test::ScopedFeatureList scoped_feature_list; 267 base::test::ScopedFeatureList scoped_feature_list;
283 scoped_feature_list.InitAndEnableFeature( 268 scoped_feature_list.InitAndEnableFeature(
284 features::kOptimizeLoadingIPCForSmallResources); 269 features::kOptimizeLoadingIPCForSmallResources);
285 270
286 // Smaller than kInlinedLeadingChunkSize. 271 // Smaller than kInlinedLeadingChunkSize.
287 constexpr auto kDataSize = 8; 272 StartRequestAndWaitWithResponseDataSize(8);
288 StartRequestAndWaitWithResponseDataSize(kDataSize);
289 const auto& messages = filter_->messages(); 273 const auto& messages = filter_->messages();
290 ASSERT_EQ(3u, messages.size()); 274 ASSERT_EQ(3u, messages.size());
291 ASSERT_EQ(ResourceMsg_InlinedDataChunkReceived::ID, messages[1]->type()); 275 ASSERT_EQ(ResourceMsg_InlinedDataChunkReceived::ID, messages[1]->type());
292 ResourceMsg_InlinedDataChunkReceived::Param params; 276 ResourceMsg_InlinedDataChunkReceived::Param params;
293 ResourceMsg_InlinedDataChunkReceived::Read(messages[1].get(), &params); 277 ResourceMsg_InlinedDataChunkReceived::Read(messages[1].get(), &params);
294 278
295 int encoded_data_length = std::get<2>(params); 279 int encoded_data_length = std::get<2>(params);
296 EXPECT_EQ(kDataSize, encoded_data_length); 280 EXPECT_EQ(8, encoded_data_length);
297 int encoded_body_length = std::get<3>(params); 281 int encoded_body_length = std::get<3>(params);
298 EXPECT_EQ(kDataSize, encoded_body_length); 282 EXPECT_EQ(8, encoded_body_length);
299
300 ASSERT_EQ(ResourceMsg_RequestComplete::ID, messages[2]->type());
301 ResourceMsg_RequestComplete::Param completion_params;
302 ResourceMsg_RequestComplete::Read(messages[2].get(), &completion_params);
303 ResourceRequestCompletionStatus completion_status =
304 std::get<1>(completion_params);
305
306 EXPECT_EQ(TotalReceivedBytes(kDataSize),
307 completion_status.encoded_data_length);
308 EXPECT_EQ(kDataSize, completion_status.encoded_body_length);
309 } 283 }
310 284
311 TEST_F(AsyncResourceHandlerTest, TwoChunksLengths) { 285 TEST_F(AsyncResourceHandlerTest, TwoChunksLengths) {
312 // Larger than kMaxAllocationSize. 286 // Larger than kMaxAllocationSize.
313 constexpr auto kDataSize = 64 * 1024; 287 StartRequestAndWaitWithResponseDataSize(64*1024);
314 StartRequestAndWaitWithResponseDataSize(kDataSize);
315 const auto& messages = filter_->messages(); 288 const auto& messages = filter_->messages();
316 ASSERT_EQ(5u, messages.size()); 289 ASSERT_EQ(5u, messages.size());
317 ASSERT_EQ(ResourceMsg_DataReceived::ID, messages[2]->type()); 290 ASSERT_EQ(ResourceMsg_DataReceived::ID, messages[2]->type());
318 ResourceMsg_DataReceived::Param params; 291 ResourceMsg_DataReceived::Param params;
319 ResourceMsg_DataReceived::Read(messages[2].get(), &params); 292 ResourceMsg_DataReceived::Read(messages[2].get(), &params);
320 293
321 int encoded_data_length = std::get<3>(params); 294 int encoded_data_length = std::get<3>(params);
322 EXPECT_EQ(32768, encoded_data_length); 295 EXPECT_EQ(32768, encoded_data_length);
323 int encoded_body_length = std::get<4>(params); 296 int encoded_body_length = std::get<4>(params);
324 EXPECT_EQ(32768, encoded_body_length); 297 EXPECT_EQ(32768, encoded_body_length);
325 298
326 ASSERT_EQ(ResourceMsg_DataReceived::ID, messages[3]->type()); 299 ASSERT_EQ(ResourceMsg_DataReceived::ID, messages[3]->type());
327 ResourceMsg_DataReceived::Read(messages[3].get(), &params); 300 ResourceMsg_DataReceived::Read(messages[3].get(), &params);
328 301
329 encoded_data_length = std::get<3>(params); 302 encoded_data_length = std::get<3>(params);
330 EXPECT_EQ(32768, encoded_data_length); 303 EXPECT_EQ(32768, encoded_data_length);
331 encoded_body_length = std::get<4>(params); 304 encoded_body_length = std::get<4>(params);
332 EXPECT_EQ(32768, encoded_body_length); 305 EXPECT_EQ(32768, encoded_body_length);
333
334 ASSERT_EQ(ResourceMsg_RequestComplete::ID, messages[4]->type());
335 ResourceMsg_RequestComplete::Param completion_params;
336 ResourceMsg_RequestComplete::Read(messages[4].get(), &completion_params);
337 ResourceRequestCompletionStatus completion_status =
338 std::get<1>(completion_params);
339 EXPECT_EQ(TotalReceivedBytes(kDataSize),
340 completion_status.encoded_data_length);
341 EXPECT_EQ(kDataSize, completion_status.encoded_body_length);
342 } 306 }
343 307
344 } // namespace 308 } // namespace
345 309
346 } // namespace content 310 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/loader/async_resource_handler.cc ('k') | content/browser/loader/mojo_async_resource_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698