Commit 186f9ae1 authored by Minoru Chikamune's avatar Minoru Chikamune Committed by Commit Bot

Migrate ResourceFetcher to use GC mojo wrappers.

No behavior change. This CL reduces potential risks of use-after-free bugs.

Bug: 1049056
Change-Id: Icb0a4d27b2bc6559642b1735dffcd4211d03190e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2136572Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Commit-Queue: Minoru Chikamune <chikamune@chromium.org>
Cr-Commit-Position: refs/heads/master@{#756595}
parent a3f2827e
...@@ -2,4 +2,5 @@ include_rules = [ ...@@ -2,4 +2,5 @@ include_rules = [
"+net/dns/public", "+net/dns/public",
"+services/network/public/cpp/fetch_api_utils.h", "+services/network/public/cpp/fetch_api_utils.h",
"+services/network/public/cpp/optional_trust_token_params.h", "+services/network/public/cpp/optional_trust_token_params.h",
"+third_party/blink/renderer/platform/mojo",
] ]
...@@ -546,6 +546,7 @@ ResourceFetcher::ResourceFetcher(const ResourceFetcherInit& init) ...@@ -546,6 +546,7 @@ ResourceFetcher::ResourceFetcher(const ResourceFetcherInit& init)
&ResourceFetcher::ResourceTimingReportTimerFired), &ResourceFetcher::ResourceTimingReportTimerFired),
frame_scheduler_(init.frame_scheduler ? init.frame_scheduler->GetWeakPtr() frame_scheduler_(init.frame_scheduler ? init.frame_scheduler->GetWeakPtr()
: nullptr), : nullptr),
blob_registry_remote_(nullptr),
auto_load_images_(true), auto_load_images_(true),
images_enabled_(true), images_enabled_(true),
allow_stale_resources_(false), allow_stale_resources_(false),
...@@ -2113,7 +2114,7 @@ void ResourceFetcher::RevalidateStaleResource(Resource* stale_resource) { ...@@ -2113,7 +2114,7 @@ void ResourceFetcher::RevalidateStaleResource(Resource* stale_resource) {
} }
mojom::blink::BlobRegistry* ResourceFetcher::GetBlobRegistry() { mojom::blink::BlobRegistry* ResourceFetcher::GetBlobRegistry() {
if (!blob_registry_remote_) { if (!blob_registry_remote_.is_bound()) {
Platform::Current()->GetBrowserInterfaceBroker()->GetInterface( Platform::Current()->GetBrowserInterfaceBroker()->GetInterface(
blob_registry_remote_.BindNewPipeAndPassReceiver(task_runner_)); blob_registry_remote_.BindNewPipeAndPassReceiver(task_runner_));
} }
...@@ -2141,6 +2142,7 @@ void ResourceFetcher::Trace(Visitor* visitor) { ...@@ -2141,6 +2142,7 @@ void ResourceFetcher::Trace(Visitor* visitor) {
visitor->Trace(preloads_); visitor->Trace(preloads_);
visitor->Trace(matched_preloads_); visitor->Trace(matched_preloads_);
visitor->Trace(resource_timing_info_map_); visitor->Trace(resource_timing_info_map_);
visitor->Trace(blob_registry_remote_);
} }
// static // static
......
...@@ -31,7 +31,6 @@ ...@@ -31,7 +31,6 @@
#include <utility> #include <utility>
#include "base/single_thread_task_runner.h" #include "base/single_thread_task_runner.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "third_party/blink/public/mojom/blob/blob_registry.mojom-blink.h" #include "third_party/blink/public/mojom/blob/blob_registry.mojom-blink.h"
#include "third_party/blink/public/mojom/service_worker/controller_service_worker_mode.mojom-blink-forward.h" #include "third_party/blink/public/mojom/service_worker/controller_service_worker_mode.mojom-blink-forward.h"
#include "third_party/blink/renderer/platform/heap/persistent.h" #include "third_party/blink/renderer/platform/heap/persistent.h"
...@@ -39,6 +38,8 @@ ...@@ -39,6 +38,8 @@
#include "third_party/blink/renderer/platform/loader/fetch/preload_key.h" #include "third_party/blink/renderer/platform/loader/fetch/preload_key.h"
#include "third_party/blink/renderer/platform/loader/fetch/resource_load_priority.h" #include "third_party/blink/renderer/platform/loader/fetch/resource_load_priority.h"
#include "third_party/blink/renderer/platform/loader/fetch/resource_load_scheduler.h" #include "third_party/blink/renderer/platform/loader/fetch/resource_load_scheduler.h"
#include "third_party/blink/renderer/platform/mojo/heap_mojo_remote.h"
#include "third_party/blink/renderer/platform/mojo/heap_mojo_wrapper_mode.h"
#include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/platform_export.h"
#include "third_party/blink/renderer/platform/timer.h" #include "third_party/blink/renderer/platform/timer.h"
#include "third_party/blink/renderer/platform/wtf/hash_map.h" #include "third_party/blink/renderer/platform/wtf/hash_map.h"
...@@ -420,7 +421,9 @@ class PLATFORM_EXPORT ResourceFetcher ...@@ -420,7 +421,9 @@ class PLATFORM_EXPORT ResourceFetcher
uint32_t inflight_keepalive_bytes_ = 0; uint32_t inflight_keepalive_bytes_ = 0;
mojo::Remote<mojom::blink::BlobRegistry> blob_registry_remote_; HeapMojoRemote<mojom::blink::BlobRegistry,
HeapMojoWrapperMode::kWithoutContextObserver>
blob_registry_remote_;
// This is not in the bit field below because we want to use AutoReset. // This is not in the bit field below because we want to use AutoReset.
bool is_in_request_resource_ = false; bool is_in_request_resource_ = false;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment