Commit 6bb4c8c2 authored by Wolfgang Beyer's avatar Wolfgang Beyer Committed by Commit Bot

Add core probe to set DevToolsId and DevToolsToken

The probe sets DevToolsId and DevToolsToken, so that they can be sent
to the DevTools frontend whenever an issue is detected in the mixed
content check.

Previously DevToolsId and DevToolsToken were set in PrepareRequest(),
which is executed only after the check for mixed content has already
happened. When generating a DevTools issue in the mixed content check,
we need DevToolsId and DevToolsToken to be available. Therefore this
CL adds a core probe, which allows setting DevToolsId and DevToolsToken
earlier.

Bug: chromium:1053468

Change-Id: I42f50ae34dad7a09095447fb398f2af2cc23bd0e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2117735
Commit-Queue: Wolfgang Beyer <wolfi@chromium.org>
Reviewed-by: default avatarAndrey Kosyakov <caseq@chromium.org>
Reviewed-by: default avatarMike West <mkwst@chromium.org>
Reviewed-by: default avatarJoey Arhar <jarhar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#757049}
parent 22367647
......@@ -880,6 +880,19 @@ void InspectorNetworkAgent::WillSendNavigationRequest(
InspectorPageAgent::kDocumentResource);
}
// This method was pulled out of PrepareRequest(), because we want to be able
// to create DevTools issues before the PrepareRequest() call. We need these
// IDs to be set, to properly create a DevTools issue.
void InspectorNetworkAgent::SetDevToolsIds(ResourceRequest& request) {
request.SetDevToolsToken(devtools_token_);
// The loader parameter is for generating a browser generated ID for a browser
// initiated request. We pass it null here because we are reporting a renderer
// generated ID for a renderer initiated request.
request.SetDevToolsId(IdentifiersFactory::RequestId(/* loader */ nullptr,
request.InspectorId()));
}
void InspectorNetworkAgent::PrepareRequest(
DocumentLoader* loader,
ResourceRequest& request,
......@@ -893,7 +906,7 @@ void InspectorNetworkAgent::PrepareRequest(
for (const WTF::String& key : extra_request_headers_.Keys()) {
const WTF::String& value = extra_request_headers_.Get(key);
AtomicString header_name = AtomicString(key);
// When overriding referer, also override referrer policy
// When overriding referrer, also override referrer policy
// for this request to assure the request will be allowed.
// TODO: Should we store the referrer header somewhere other than
// |extra_request_headers_|?
......@@ -908,8 +921,6 @@ void InspectorNetworkAgent::PrepareRequest(
request.SetReportRawHeaders(true);
request.SetDevToolsToken(devtools_token_);
if (cache_disabled_.Get()) {
if (LoadsFromCacheOnly(request) &&
request.GetRequestContext() != mojom::RequestContextType::INTERNAL) {
......@@ -921,12 +932,6 @@ void InspectorNetworkAgent::PrepareRequest(
}
if (bypass_service_worker_.Get())
request.SetSkipServiceWorker(true);
// The loader parameter is for generating a browser generated ID for a browser
// initiated request. We pass it null here because we are reporting a renderer
// generated ID for a renderer initiated request.
request.SetDevToolsId(IdentifiersFactory::RequestId(/* loader */ nullptr,
request.InspectorId()));
}
void InspectorNetworkAgent::WillSendRequest(
......
......@@ -192,6 +192,7 @@ class CORE_EXPORT InspectorNetworkAgent final
const char* payload,
size_t payload_length);
void DidReceiveWebSocketMessageError(uint64_t identifier, const String&);
void SetDevToolsIds(ResourceRequest& request);
// Called from frontend
protocol::Response enable(Maybe<int> total_buffer_size,
......
......@@ -763,6 +763,9 @@ void FrameFetchContext::PopulateResourceRequest(
// (i.e. "CSP: active, active") on asynchronous "stale-while-revalidate"
// revalidation requests and if this is unexpected behavior.
request.AddHttpHeaderField("CSP", "active");
if (!GetResourceFetcherProperties().IsDetached())
probe::SetDevToolsIds(Probe(), request);
}
void FrameFetchContext::SetFirstPartyCookie(ResourceRequest& request) {
......
......@@ -242,6 +242,8 @@ void WorkerFetchContext::PopulateResourceRequest(
const ClientHintsPreferences& hints_preferences,
const FetchParameters::ResourceWidth& resource_width,
ResourceRequest& out_request) {
if (!GetResourceFetcherProperties().IsDetached())
probe::SetDevToolsIds(Probe(), out_request);
MixedContentChecker::UpgradeInsecureRequest(
out_request,
&GetResourceFetcherProperties().GetFetchClientSettingsObject(),
......
......@@ -163,6 +163,7 @@
"WillSendRequest",
"WillSendNavigationRequest",
"WillSendWebSocketHandshakeRequest",
"SetDevToolsIds",
]
},
InspectorPageAgent: {
......
......@@ -177,4 +177,5 @@ interface CoreProbes {
void PlayerEventsAdded(LocalFrame* frame, String player_id, const Vector<InspectorPlayerEvent>& events);
void PlayerPropertiesChanged(LocalFrame* frame, String player_id, const Vector<InspectorPlayerProperty>& properties);
void PlayersCreated(LocalFrame* frame, const Vector<WebString>& players);
void SetDevToolsIds(CoreProbeSink*, ResourceRequest& request);
}
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