Chromium Code Reviews| Index: content/browser/loader/mojo_async_resource_handler_unittest.cc |
| diff --git a/content/browser/loader/mojo_async_resource_handler_unittest.cc b/content/browser/loader/mojo_async_resource_handler_unittest.cc |
| index 69f038a731b3aba02d4f1050a679bb31803acb39..476b55e0cfd199dbb3386e067e2519daafa5dfe4 100644 |
| --- a/content/browser/loader/mojo_async_resource_handler_unittest.cc |
| +++ b/content/browser/loader/mojo_async_resource_handler_unittest.cc |
| @@ -33,6 +33,7 @@ |
| #include "content/public/test/test_browser_thread_bundle.h" |
| #include "mojo/public/c/system/data_pipe.h" |
| #include "mojo/public/c/system/types.h" |
| +#include "mojo/public/cpp/bindings/strong_binding.h" |
| #include "mojo/public/cpp/system/data_pipe.h" |
| #include "net/base/auth.h" |
| #include "net/base/net_errors.h" |
| @@ -267,6 +268,48 @@ class MojoAsyncResourceHandlerWithCustomDataPipeOperations |
| MojoAsyncResourceHandlerWithCustomDataPipeOperations); |
| }; |
| +class TestURLLoaderFactory final : public mojom::URLLoaderFactory { |
| + public: |
| + explicit TestURLLoaderFactory(base::WeakPtr<TestURLLoaderFactory>* weak_ptr) |
| + : weak_factory_(this) { |
| + *weak_ptr = weak_factory_.GetWeakPtr(); |
| + } |
| + ~TestURLLoaderFactory() override {} |
| + |
| + void CreateLoaderAndStart( |
| + mojom::URLLoaderAssociatedRequest request, |
| + int32_t routing_id, |
| + int32_t request_id, |
| + const ResourceRequest& url_request, |
| + mojom::URLLoaderClientAssociatedPtrInfo client_ptr_info) override { |
| + loader_request_ = std::move(request); |
| + client_ptr_info_ = std::move(client_ptr_info); |
| + } |
| + |
| + mojom::URLLoaderAssociatedRequest LoaderRequest() { |
|
yzshen1
2016/11/10 17:28:36
style nit: Please consider either naming it PassLo
yhirano
2016/11/11 03:13:37
Done.
|
| + return std::move(loader_request_); |
| + } |
| + |
| + mojom::URLLoaderClientAssociatedPtrInfo ClientPtrInfo() { |
| + return std::move(client_ptr_info_); |
| + } |
| + |
| + void SyncLoad(int32_t routing_id, |
| + int32_t request_id, |
| + const ResourceRequest& url_request, |
| + const SyncLoadCallback& callback) override { |
| + NOTREACHED(); |
| + } |
| + |
| + private: |
| + mojom::URLLoaderAssociatedRequest loader_request_; |
| + mojom::URLLoaderClientAssociatedPtrInfo client_ptr_info_; |
| + |
| + base::WeakPtrFactory<TestURLLoaderFactory> weak_factory_; |
|
yzshen1
2016/11/10 17:28:36
I think this is not needed. mojo::MakeStrongBindin
yhirano
2016/11/11 03:13:37
Done.
|
| + |
| + DISALLOW_COPY_AND_ASSIGN(TestURLLoaderFactory); |
| +}; |
| + |
| class MojoAsyncResourceHandlerTestBase { |
| public: |
| MojoAsyncResourceHandlerTestBase() |
| @@ -294,12 +337,27 @@ class MojoAsyncResourceHandlerTestBase { |
| true, // is_async |
| false // is_using_lofi |
| ); |
| - mojom::URLLoaderClientAssociatedPtrInfo client_ptr_info = |
| - url_loader_client_.CreateLocalAssociatedPtrInfo(); |
| + |
| + ResourceRequest request; |
| + base::WeakPtr<TestURLLoaderFactory> weak_url_loader_factory_impl; |
| + mojo::MakeStrongBinding( |
| + base::MakeUnique<TestURLLoaderFactory>(&weak_url_loader_factory_impl), |
| + mojo::GetProxy(&url_loader_factory_)); |
| + |
| + url_loader_factory_->CreateLoaderAndStart( |
| + mojo::GetProxy(&url_loader_proxy_, |
| + url_loader_factory_.associated_group()), |
| + 0, 0, request, url_loader_client_.CreateRemoteAssociatedPtrInfo( |
| + url_loader_factory_.associated_group())); |
| + |
| + url_loader_factory_.FlushForTesting(); |
| + DCHECK(weak_url_loader_factory_impl); |
| + |
| mojom::URLLoaderClientAssociatedPtr client_ptr; |
| - client_ptr.Bind(std::move(client_ptr_info)); |
| + client_ptr.Bind(weak_url_loader_factory_impl->ClientPtrInfo()); |
| handler_.reset(new MojoAsyncResourceHandlerWithCustomDataPipeOperations( |
| - request_.get(), &rdh_, nullptr, std::move(client_ptr))); |
| + request_.get(), &rdh_, weak_url_loader_factory_impl->LoaderRequest(), |
| + std::move(client_ptr))); |
| handler_->SetController(&resource_controller_); |
| } |
| @@ -351,6 +409,8 @@ class MojoAsyncResourceHandlerTestBase { |
| TestBrowserThreadBundle thread_bundle_; |
| TestResourceDispatcherHostDelegate rdh_delegate_; |
| ResourceDispatcherHostImpl rdh_; |
| + mojom::URLLoaderFactoryPtr url_loader_factory_; |
| + mojom::URLLoaderAssociatedPtr url_loader_proxy_; |
| TestURLLoaderClient url_loader_client_; |
| TestResourceController resource_controller_; |
| std::unique_ptr<TestBrowserContext> browser_context_; |