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 = [
"+net/dns/public",
"+services/network/public/cpp/fetch_api_utils.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)
&ResourceFetcher::ResourceTimingReportTimerFired),
frame_scheduler_(init.frame_scheduler ? init.frame_scheduler->GetWeakPtr()
: nullptr),
blob_registry_remote_(nullptr),
auto_load_images_(true),
images_enabled_(true),
allow_stale_resources_(false),
......@@ -2113,7 +2114,7 @@ void ResourceFetcher::RevalidateStaleResource(Resource* stale_resource) {
}
mojom::blink::BlobRegistry* ResourceFetcher::GetBlobRegistry() {
if (!blob_registry_remote_) {
if (!blob_registry_remote_.is_bound()) {
Platform::Current()->GetBrowserInterfaceBroker()->GetInterface(
blob_registry_remote_.BindNewPipeAndPassReceiver(task_runner_));
}
......@@ -2141,6 +2142,7 @@ void ResourceFetcher::Trace(Visitor* visitor) {
visitor->Trace(preloads_);
visitor->Trace(matched_preloads_);
visitor->Trace(resource_timing_info_map_);
visitor->Trace(blob_registry_remote_);
}
// static
......
......@@ -31,7 +31,6 @@
#include <utility>
#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/service_worker/controller_service_worker_mode.mojom-blink-forward.h"
#include "third_party/blink/renderer/platform/heap/persistent.h"
......@@ -39,6 +38,8 @@
#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_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/timer.h"
#include "third_party/blink/renderer/platform/wtf/hash_map.h"
......@@ -420,7 +421,9 @@ class PLATFORM_EXPORT ResourceFetcher
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.
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