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

Unified Diff: content/common/throttling_url_loader.h

Issue 2924723002: Network service: SafeBrowsing check for frame-resources from browser. (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
« no previous file with comments | « content/common/possibly_associated_interface_ptr.h ('k') | content/common/throttling_url_loader.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/common/throttling_url_loader.h
diff --git a/content/common/throttling_url_loader.h b/content/common/throttling_url_loader.h
index 00f603c3aea8dff804d14428862fb583252db52a..11e34a2320ab7f6515d736add80fcf7f0559c418 100644
--- a/content/common/throttling_url_loader.h
+++ b/content/common/throttling_url_loader.h
@@ -7,9 +7,11 @@
#include <memory>
+#include "base/callback.h"
#include "base/memory/ref_counted.h"
#include "base/threading/thread_task_runner_handle.h"
#include "content/common/content_export.h"
+#include "content/common/possibly_associated_interface_ptr.h"
#include "content/common/url_loader.mojom.h"
#include "content/common/url_loader_factory.mojom.h"
#include "content/public/common/url_loader_throttle.h"
@@ -33,18 +35,35 @@ class CONTENT_EXPORT ThrottlingURLLoader : public mojom::URLLoaderClient,
public:
// |factory| and |client| must stay alive during the lifetime of the returned
// object.
+ // Please note that the request may not start immediately since it could be
+ // deferred by throttles.
static std::unique_ptr<ThrottlingURLLoader> CreateLoaderAndStart(
mojom::URLLoaderFactory* factory,
std::vector<std::unique_ptr<URLLoaderThrottle>> throttles,
int32_t routing_id,
int32_t request_id,
uint32_t options,
- std::unique_ptr<ResourceRequest> url_request,
+ const ResourceRequest& url_request,
mojom::URLLoaderClient* client,
const net::MutableNetworkTrafficAnnotationTag& traffic_annotation,
scoped_refptr<base::SingleThreadTaskRunner> task_runner =
base::ThreadTaskRunnerHandle::Get());
+ using StartLoaderCallback =
+ base::OnceCallback<void(mojom::URLLoaderRequest request,
+ mojom::URLLoaderClientPtr client)>;
+
+ // Similar to the method above, but uses a |start_loader_callback| instead of
+ // a mojom::URLLoaderFactory to start the loader. The callback must be safe
+ // to call during the lifetime of the returned object.
+ static std::unique_ptr<ThrottlingURLLoader> CreateLoaderAndStart(
+ StartLoaderCallback start_loader_callback,
+ std::vector<std::unique_ptr<URLLoaderThrottle>> throttles,
+ const ResourceRequest& url_request,
+ mojom::URLLoaderClient* client,
+ scoped_refptr<base::SingleThreadTaskRunner> task_runner =
+ base::ThreadTaskRunnerHandle::Get());
+
~ThrottlingURLLoader() override;
void FollowRedirect();
@@ -56,13 +75,25 @@ class CONTENT_EXPORT ThrottlingURLLoader : public mojom::URLLoaderClient,
mojom::URLLoaderClient* client,
const net::MutableNetworkTrafficAnnotationTag& traffic_annotation);
+ // Either of the two sets of arguments below is valid but not both:
+ // - |factory|, |routing_id|, |request_id| and |options|;
+ // - |start_loader_callback|.
void Start(mojom::URLLoaderFactory* factory,
int32_t routing_id,
int32_t request_id,
uint32_t options,
- std::unique_ptr<ResourceRequest> url_request,
+ StartLoaderCallback start_loader_callback,
+ const ResourceRequest& url_request,
scoped_refptr<base::SingleThreadTaskRunner> task_runner);
+ void StartNow(mojom::URLLoaderFactory* factory,
+ int32_t routing_id,
+ int32_t request_id,
+ uint32_t options,
+ StartLoaderCallback start_loader_callback,
+ const ResourceRequest& url_request,
+ scoped_refptr<base::SingleThreadTaskRunner> task_runner);
+
// mojom::URLLoaderClient implementation:
void OnReceiveResponse(const ResourceResponseHead& response_head,
const base::Optional<net::SSLInfo>& ssl_info,
@@ -97,14 +128,15 @@ class CONTENT_EXPORT ThrottlingURLLoader : public mojom::URLLoaderClient,
mojom::URLLoaderClient* forwarding_client_;
mojo::Binding<mojom::URLLoaderClient> client_binding_;
- mojom::URLLoaderAssociatedPtr url_loader_;
+ PossiblyAssociatedInterfacePtr<mojom::URLLoader> url_loader_;
struct StartInfo {
StartInfo(mojom::URLLoaderFactory* in_url_loader_factory,
int32_t in_routing_id,
int32_t in_request_id,
uint32_t in_options,
- std::unique_ptr<ResourceRequest> in_url_request,
+ StartLoaderCallback in_start_loader_callback,
+ const ResourceRequest& in_url_request,
scoped_refptr<base::SingleThreadTaskRunner> in_task_runner);
~StartInfo();
@@ -112,7 +144,10 @@ class CONTENT_EXPORT ThrottlingURLLoader : public mojom::URLLoaderClient,
int32_t routing_id;
int32_t request_id;
uint32_t options;
- std::unique_ptr<ResourceRequest> url_request;
+
+ StartLoaderCallback start_loader_callback;
+
+ ResourceRequest url_request;
// |task_runner_| is used to set up |client_binding_|.
scoped_refptr<base::SingleThreadTaskRunner> task_runner;
};
« no previous file with comments | « content/common/possibly_associated_interface_ptr.h ('k') | content/common/throttling_url_loader.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698