From 1ec652b514e2096afb161d411cf162f614e77c6d Mon Sep 17 00:00:00 2001 From: Kenichi Ishibashi Date: Wed, 20 Jul 2022 07:23:08 +0000 Subject: [PATCH] Disable network service memory cache when DevTools is attached The in-memory cache doesn't support DevTools yet. Fixes request-paused-network-id-internal.js in http/tests/inspector-protocol/fetch/. Bug: 1339708 Change-Id: I565fab3fe2000a3371f6e23117da1a793ec69c0a Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3773578 Reviewed-by: Yutaka Hirano Commit-Queue: Kenichi Ishibashi Cr-Commit-Position: refs/heads/main@{#1026138} --- services/network/cors/cors_url_loader.cc | 3 ++- .../network/network_service_memory_cache_unittest.cc | 10 ++++++++++ services/network/url_loader.cc | 3 ++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/services/network/cors/cors_url_loader.cc b/services/network/cors/cors_url_loader.cc index 0929d1629380ff..7dd783f235f01d 100644 --- a/services/network/cors/cors_url_loader.cc +++ b/services/network/cors/cors_url_loader.cc @@ -856,8 +856,9 @@ void CorsURLLoader::StartNetworkRequest() { network_loader_start_time_ = base::TimeTicks::Now(); // Check whether a fresh entry exists in the in-memory cache. + // TODO(https://crbug.com/1339708): In-memory cache should support DevTools. absl::optional cache_key; - if (memory_cache_) { + if (memory_cache_ && !request_.devtools_request_id.has_value()) { cache_key = memory_cache_->CanServe(request_, isolation_info_.network_isolation_key(), cross_origin_embedder_policy_); diff --git a/services/network/network_service_memory_cache_unittest.cc b/services/network/network_service_memory_cache_unittest.cc index ef7dfe0c815088..e1794c30f99760 100644 --- a/services/network/network_service_memory_cache_unittest.cc +++ b/services/network/network_service_memory_cache_unittest.cc @@ -747,6 +747,16 @@ TEST_F(NetworkServiceMemoryCacheTest, CanServe_UnsupportedMultipleVaryHeader) { ASSERT_FALSE(CanServeFromMemoryCache(request)); } +TEST_F(NetworkServiceMemoryCacheTest, CanServe_DevToolsAttached) { + ResourceRequest request = CreateRequest("/cacheable"); + request.devtools_request_id = "fake-id"; + StoreResponseToMemoryCache(request); + + // TODO(https://crbug.com/1339708): Change the the expectation when the + // in-memory supports DevTools. + ASSERT_FALSE(CanServeFromMemoryCache(request)); +} + TEST_F(NetworkServiceMemoryCacheTest, UpdateStoredCache) { ResourceRequest request = CreateRequest("/cacheable"); diff --git a/services/network/url_loader.cc b/services/network/url_loader.cc index 6805b5f3976f60..dc11c70c900fb1 100644 --- a/services/network/url_loader.cc +++ b/services/network/url_loader.cc @@ -1554,7 +1554,8 @@ void URLLoader::OnResponseStarted(net::URLRequest* url_request, int net_error) { return; } - if (memory_cache_) { + // TODO(https://crbug.com/1339708): In-memory cache should support DevTools. + if (memory_cache_ && !devtools_request_id().has_value()) { memory_cache_writer_ = memory_cache_->MaybeCreateWriter( url_request_.get(), request_destination_, response_); }