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

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

Issue 2646343007: [Mojo-Loading] Implement URLLoader::SetPriority (Closed)
Patch Set: fix Created 3 years, 10 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/mojo_async_resource_handler.h" 5 #include "content/browser/loader/mojo_async_resource_handler.h"
6 6
7 #include <string.h> 7 #include <string.h>
8 8
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/bind.h" 12 #include "base/bind.h"
13 #include "base/callback.h" 13 #include "base/callback.h"
14 #include "base/files/file_path.h" 14 #include "base/files/file_path.h"
15 #include "base/logging.h" 15 #include "base/logging.h"
16 #include "base/macros.h" 16 #include "base/macros.h"
17 #include "base/memory/ptr_util.h" 17 #include "base/memory/ptr_util.h"
18 #include "base/memory/weak_ptr.h" 18 #include "base/memory/weak_ptr.h"
19 #include "base/run_loop.h" 19 #include "base/run_loop.h"
20 #include "base/test/test_simple_task_runner.h" 20 #include "base/test/test_simple_task_runner.h"
21 #include "content/browser/loader/mock_resource_loader.h" 21 #include "content/browser/loader/mock_resource_loader.h"
22 #include "content/browser/loader/resource_controller.h" 22 #include "content/browser/loader/resource_controller.h"
23 #include "content/browser/loader/resource_dispatcher_host_impl.h" 23 #include "content/browser/loader/resource_dispatcher_host_impl.h"
24 #include "content/browser/loader/resource_request_info_impl.h" 24 #include "content/browser/loader/resource_request_info_impl.h"
25 #include "content/browser/loader/resource_scheduler.h"
25 #include "content/browser/loader/test_url_loader_client.h" 26 #include "content/browser/loader/test_url_loader_client.h"
26 #include "content/common/resource_request_completion_status.h" 27 #include "content/common/resource_request_completion_status.h"
27 #include "content/common/url_loader.mojom.h" 28 #include "content/common/url_loader.mojom.h"
28 #include "content/public/browser/appcache_service.h" 29 #include "content/public/browser/appcache_service.h"
29 #include "content/public/browser/navigation_data.h" 30 #include "content/public/browser/navigation_data.h"
30 #include "content/public/browser/resource_context.h" 31 #include "content/public/browser/resource_context.h"
31 #include "content/public/browser/resource_dispatcher_host_delegate.h" 32 #include "content/public/browser/resource_dispatcher_host_delegate.h"
32 #include "content/public/browser/resource_throttle.h" 33 #include "content/public/browser/resource_throttle.h"
33 #include "content/public/browser/stream_info.h" 34 #include "content/public/browser/stream_info.h"
34 #include "content/public/common/previews_state.h" 35 #include "content/public/common/previews_state.h"
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 // just need something non-NULL. 348 // just need something non-NULL.
348 net::URLRequestContext* request_context = 349 net::URLRequestContext* request_context =
349 browser_context_->GetResourceContext()->GetRequestContext(); 350 browser_context_->GetResourceContext()->GetRequestContext();
350 request_ = request_context->CreateRequest( 351 request_ = request_context->CreateRequest(
351 GURL("http://foo/"), net::DEFAULT_PRIORITY, &url_request_delegate_); 352 GURL("http://foo/"), net::DEFAULT_PRIORITY, &url_request_delegate_);
352 request_->set_upload(std::move(upload_stream)); 353 request_->set_upload(std::move(upload_stream));
353 ResourceRequestInfo::AllocateForTesting( 354 ResourceRequestInfo::AllocateForTesting(
354 request_.get(), // request 355 request_.get(), // request
355 RESOURCE_TYPE_XHR, // resource_type 356 RESOURCE_TYPE_XHR, // resource_type
356 browser_context_->GetResourceContext(), // context 357 browser_context_->GetResourceContext(), // context
357 2, // render_process_id 358 kChildId, // render_process_id
358 0, // render_view_id 359 kRouteId, // render_view_id
359 0, // render_frame_id 360 0, // render_frame_id
360 true, // is_main_frame 361 true, // is_main_frame
361 false, // parent_is_main_frame 362 false, // parent_is_main_frame
362 false, // allow_download 363 false, // allow_download
363 true, // is_async 364 true, // is_async
364 PREVIEWS_OFF // previews_state 365 PREVIEWS_OFF // previews_state
365 ); 366 );
366 367
367 ResourceRequest request; 368 ResourceRequest request;
368 base::WeakPtr<mojo::StrongBinding<mojom::URLLoaderFactory>> weak_binding = 369 base::WeakPtr<mojo::StrongBinding<mojom::URLLoaderFactory>> weak_binding =
369 mojo::MakeStrongBinding(base::MakeUnique<TestURLLoaderFactory>(), 370 mojo::MakeStrongBinding(base::MakeUnique<TestURLLoaderFactory>(),
370 mojo::MakeRequest(&url_loader_factory_)); 371 mojo::MakeRequest(&url_loader_factory_));
371 372
372 url_loader_factory_->CreateLoaderAndStart( 373 url_loader_factory_->CreateLoaderAndStart(
373 mojo::MakeRequest(&url_loader_proxy_, 374 mojo::MakeRequest(&url_loader_proxy_,
374 url_loader_factory_.associated_group()), 375 url_loader_factory_.associated_group()),
375 0, 0, request, url_loader_client_.CreateRemoteAssociatedPtrInfo( 376 kRouteId, kRequestId, request,
376 url_loader_factory_.associated_group())); 377 url_loader_client_.CreateRemoteAssociatedPtrInfo(
378 url_loader_factory_.associated_group()));
377 379
378 url_loader_factory_.FlushForTesting(); 380 url_loader_factory_.FlushForTesting();
379 DCHECK(weak_binding); 381 DCHECK(weak_binding);
380 TestURLLoaderFactory* factory_impl = 382 TestURLLoaderFactory* factory_impl =
381 static_cast<TestURLLoaderFactory*>(weak_binding->impl()); 383 static_cast<TestURLLoaderFactory*>(weak_binding->impl());
382 384
383 mojom::URLLoaderClientAssociatedPtr client_ptr; 385 mojom::URLLoaderClientAssociatedPtr client_ptr;
384 client_ptr.Bind(factory_impl->PassClientPtrInfo()); 386 client_ptr.Bind(factory_impl->PassClientPtrInfo());
385 handler_.reset(new MojoAsyncResourceHandlerWithStubOperations( 387 handler_.reset(new MojoAsyncResourceHandlerWithStubOperations(
386 request_.get(), &rdh_, factory_impl->PassLoaderRequest(), 388 request_.get(), &rdh_, factory_impl->PassLoaderRequest(),
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
436 ResourceDispatcherHostImpl rdh_; 438 ResourceDispatcherHostImpl rdh_;
437 mojom::URLLoaderFactoryPtr url_loader_factory_; 439 mojom::URLLoaderFactoryPtr url_loader_factory_;
438 mojom::URLLoaderAssociatedPtr url_loader_proxy_; 440 mojom::URLLoaderAssociatedPtr url_loader_proxy_;
439 TestURLLoaderClient url_loader_client_; 441 TestURLLoaderClient url_loader_client_;
440 std::unique_ptr<TestBrowserContext> browser_context_; 442 std::unique_ptr<TestBrowserContext> browser_context_;
441 net::TestDelegate url_request_delegate_; 443 net::TestDelegate url_request_delegate_;
442 std::unique_ptr<net::URLRequest> request_; 444 std::unique_ptr<net::URLRequest> request_;
443 std::unique_ptr<MojoAsyncResourceHandlerWithStubOperations> handler_; 445 std::unique_ptr<MojoAsyncResourceHandlerWithStubOperations> handler_;
444 std::unique_ptr<MockResourceLoader> mock_loader_; 446 std::unique_ptr<MockResourceLoader> mock_loader_;
445 447
448 static constexpr int kChildId = 25;
449 static constexpr int kRouteId = 12;
450 static constexpr int kRequestId = 41;
451
446 DISALLOW_COPY_AND_ASSIGN(MojoAsyncResourceHandlerTestBase); 452 DISALLOW_COPY_AND_ASSIGN(MojoAsyncResourceHandlerTestBase);
447 }; 453 };
448 454
449 class MojoAsyncResourceHandlerTest : public MojoAsyncResourceHandlerTestBase, 455 class MojoAsyncResourceHandlerTest : public MojoAsyncResourceHandlerTestBase,
450 public ::testing::Test { 456 public ::testing::Test {
451 protected: 457 protected:
452 MojoAsyncResourceHandlerTest() : MojoAsyncResourceHandlerTestBase(nullptr) {} 458 MojoAsyncResourceHandlerTest() : MojoAsyncResourceHandlerTestBase(nullptr) {}
453 }; 459 };
454 460
455 // This test class is parameterized with MojoAsyncResourceHandler's allocation 461 // This test class is parameterized with MojoAsyncResourceHandler's allocation
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after
938 944
939 // Expect a upload progress report for the upload completion. 945 // Expect a upload progress report for the upload completion.
940 url_loader_client_.reset_has_received_upload_progress(); 946 url_loader_client_.reset_has_received_upload_progress();
941 set_upload_progress(net::UploadProgress(1000, 1000)); 947 set_upload_progress(net::UploadProgress(1000, 1000));
942 ASSERT_TRUE(CallOnResponseStarted()); 948 ASSERT_TRUE(CallOnResponseStarted());
943 EXPECT_TRUE(url_loader_client_.has_received_upload_progress()); 949 EXPECT_TRUE(url_loader_client_.has_received_upload_progress());
944 EXPECT_EQ(1000, url_loader_client_.current_upload_position()); 950 EXPECT_EQ(1000, url_loader_client_.current_upload_position());
945 EXPECT_EQ(1000, url_loader_client_.total_upload_size()); 951 EXPECT_EQ(1000, url_loader_client_.total_upload_size());
946 } 952 }
947 953
954 TEST_F(MojoAsyncResourceHandlerTest, SetPriority) {
955 constexpr int kIntraPriority = 5;
956 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
957 std::unique_ptr<ResourceThrottle> throttle =
958 ResourceDispatcherHostImpl::Get()->scheduler()->ScheduleRequest(
959 kChildId, kRouteId, false, request_.get());
960
961 EXPECT_EQ(net::LOWEST, request_->priority());
962
963 handler_->SetPriority(net::RequestPriority::HIGHEST, kIntraPriority);
964
965 EXPECT_EQ(net::HIGHEST, request_->priority());
966 }
967
948 TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, 968 TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest,
949 OnWillReadWithLongContents) { 969 OnWillReadWithLongContents) {
950 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 970 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
951 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 971 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
952 std::string expected; 972 std::string expected;
953 for (int i = 0; i < 3 * mock_loader_->io_buffer_size() + 2; ++i) 973 for (int i = 0; i < 3 * mock_loader_->io_buffer_size() + 2; ++i)
954 expected += ('A' + i % 26); 974 expected += ('A' + i % 26);
955 975
956 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnReadCompleted(0)); 976 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnReadCompleted(0));
957 977
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after
1262 } 1282 }
1263 } 1283 }
1264 EXPECT_EQ("B", body); 1284 EXPECT_EQ("B", body);
1265 } 1285 }
1266 1286
1267 INSTANTIATE_TEST_CASE_P(MojoAsyncResourceHandlerWithAllocationSizeTest, 1287 INSTANTIATE_TEST_CASE_P(MojoAsyncResourceHandlerWithAllocationSizeTest,
1268 MojoAsyncResourceHandlerWithAllocationSizeTest, 1288 MojoAsyncResourceHandlerWithAllocationSizeTest,
1269 ::testing::Values(8, 32 * 2014)); 1289 ::testing::Values(8, 32 * 2014));
1270 } // namespace 1290 } // namespace
1271 } // namespace content 1291 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698