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

Unified Diff: content/browser/loader/navigation_url_loader_network_service.cc

Issue 2931623002: Use independent URLLoader in browser-side code (Closed)
Patch Set: . Created 3 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/loader/navigation_url_loader_network_service.cc
diff --git a/content/browser/loader/navigation_url_loader_network_service.cc b/content/browser/loader/navigation_url_loader_network_service.cc
index b557e43829ce21e5a37c97df0e6b40c855e727ed..e9e9ac9cc368356c113185b8715cc05bead861be 100644
--- a/content/browser/loader/navigation_url_loader_network_service.cc
+++ b/content/browser/loader/navigation_url_loader_network_service.cc
@@ -34,6 +34,7 @@
#include "content/public/browser/stream_handle.h"
#include "content/public/common/referrer.h"
#include "content/public/common/url_constants.h"
+#include "mojo/public/cpp/bindings/strong_binding.h"
#include "net/base/load_flags.h"
#include "net/url_request/url_request_context.h"
@@ -55,6 +56,41 @@ WebContents* GetWebContentsFromFrameTreeNodeID(int frame_tree_node_id) {
return WebContentsImpl::FromFrameTreeNode(frame_tree_node);
}
+class AssociatedURLLoaderWrapper final : public mojom::URLLoader {
+ public:
+ static void CreateLoaderAndStart(mojom::URLLoaderFactory* factory,
+ mojom::URLLoaderRequest request,
+ uint32_t options,
+ const ResourceRequest& resource_request,
+ mojom::URLLoaderClientPtr client) {
+ mojom::URLLoaderAssociatedPtr associated_ptr;
+ mojom::URLLoaderAssociatedRequest associated_request =
+ mojo::MakeRequest(&associated_ptr);
+ factory->CreateLoaderAndStart(std::move(associated_request),
+ 0 /* routing_id */, 0 /* request_id */,
+ options, resource_request, std::move(client));
+ mojo::MakeStrongBinding(
+ base::MakeUnique<AssociatedURLLoaderWrapper>(std::move(associated_ptr)),
+ std::move(request));
+ }
+
+ explicit AssociatedURLLoaderWrapper(
+ mojom::URLLoaderAssociatedPtr associated_ptr)
+ : associated_ptr_(std::move(associated_ptr)) {}
+ ~AssociatedURLLoaderWrapper() override {}
+
+ void FollowRedirect() override { associated_ptr_->FollowRedirect(); }
+
+ void SetPriority(net::RequestPriority priority,
+ int intra_priority_value) override {
+ associated_ptr_->SetPriority(priority, intra_priority_value);
+ }
+
+ private:
+ mojom::URLLoaderAssociatedPtr associated_ptr_;
+ DISALLOW_COPY_AND_ASSIGN(AssociatedURLLoaderWrapper);
+};
+
} // namespace
// Kept around during the lifetime of the navigation request, and is
@@ -83,7 +119,7 @@ class NavigationURLLoaderNetworkService::URLLoaderRequestController {
std::unique_ptr<NavigationRequestInfo> request_info,
mojom::URLLoaderFactoryPtrInfo factory_for_webui,
const base::Callback<WebContents*(void)>& web_contents_getter,
- mojom::URLLoaderAssociatedRequest url_loader_request,
+ mojom::URLLoaderRequest url_loader_request,
mojom::URLLoaderClientPtrInfo url_loader_client_ptr_info,
std::unique_ptr<service_manager::Connector> connector) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
@@ -102,10 +138,10 @@ class NavigationURLLoaderNetworkService::URLLoaderRequestController {
if (factory_for_webui.is_valid()) {
mojom::URLLoaderFactoryPtr factory_ptr;
factory_ptr.Bind(std::move(factory_for_webui));
- factory_ptr->CreateLoaderAndStart(
- std::move(url_loader_request), 0 /* routing_id? */,
- 0 /* request_id? */, mojom::kURLLoadOptionSendSSLInfo,
- *resource_request_, std::move(url_loader_client_ptr_));
+ AssociatedURLLoaderWrapper::CreateLoaderAndStart(
+ factory_ptr.get(), std::move(url_loader_request),
+ mojom::kURLLoadOptionSendSSLInfo, *resource_request_,
+ std::move(url_loader_client_ptr_));
return;
}
@@ -137,7 +173,7 @@ class NavigationURLLoaderNetworkService::URLLoaderRequestController {
}
// This could be called multiple times.
- void Restart(mojom::URLLoaderAssociatedRequest url_loader_request,
+ void Restart(mojom::URLLoaderRequest url_loader_request,
mojom::URLLoaderClientPtr url_loader_client_ptr) {
url_loader_request_ = std::move(url_loader_request);
url_loader_client_ptr_ = std::move(url_loader_client_ptr);
@@ -170,10 +206,10 @@ class NavigationURLLoaderNetworkService::URLLoaderRequestController {
} else {
factory = url_loader_factory_getter_->GetNetworkFactory()->get();
}
- factory->CreateLoaderAndStart(
- std::move(url_loader_request_), 0 /* routing_id? */,
- 0 /* request_id? */, mojom::kURLLoadOptionSendSSLInfo,
- *resource_request_, std::move(url_loader_client_ptr_));
+ AssociatedURLLoaderWrapper::CreateLoaderAndStart(
+ factory, std::move(url_loader_request_),
+ mojom::kURLLoadOptionSendSSLInfo, *resource_request_,
+ std::move(url_loader_client_ptr_));
}
private:
@@ -186,7 +222,7 @@ class NavigationURLLoaderNetworkService::URLLoaderRequestController {
scoped_refptr<URLLoaderFactoryGetter> url_loader_factory_getter_;
// Kept around until we create a loader.
- mojom::URLLoaderAssociatedRequest url_loader_request_;
+ mojom::URLLoaderRequest url_loader_request_;
mojom::URLLoaderClientPtr url_loader_client_ptr_;
DISALLOW_COPY_AND_ASSIGN(URLLoaderRequestController);
@@ -240,8 +276,7 @@ NavigationURLLoaderNetworkService::NavigationURLLoaderNetworkService(
int frame_tree_node_id = request_info->frame_tree_node_id;
- mojom::URLLoaderAssociatedRequest loader_associated_request =
- mojo::MakeRequest(&url_loader_associated_ptr_);
+ mojom::URLLoaderRequest loader_request = mojo::MakeRequest(&url_loader_ptr_);
mojom::URLLoaderClientPtr url_loader_client_ptr_to_pass;
binding_.Bind(mojo::MakeRequest(&url_loader_client_ptr_to_pass));
@@ -274,7 +309,7 @@ NavigationURLLoaderNetworkService::NavigationURLLoaderNetworkService(
base::Passed(std::move(request_info)),
base::Passed(std::move(factory_for_webui)),
base::Bind(&GetWebContentsFromFrameTreeNodeID, frame_tree_node_id),
- base::Passed(std::move(loader_associated_request)),
+ base::Passed(std::move(loader_request)),
base::Passed(url_loader_client_ptr_to_pass.PassInterface()),
base::Passed(ServiceManagerConnection::GetForProcess()
->GetConnector()
@@ -287,7 +322,7 @@ NavigationURLLoaderNetworkService::~NavigationURLLoaderNetworkService() {
}
void NavigationURLLoaderNetworkService::FollowRedirect() {
- url_loader_associated_ptr_->FollowRedirect();
+ url_loader_ptr_->FollowRedirect();
}
void NavigationURLLoaderNetworkService::ProceedWithResponse() {}
« no previous file with comments | « content/browser/loader/navigation_url_loader_network_service.h ('k') | content/browser/loader/url_loader_request_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698