Index: third_party/WebKit/Source/core/loader/BaseFetchContext.cpp |
diff --git a/third_party/WebKit/Source/core/loader/BaseFetchContext.cpp b/third_party/WebKit/Source/core/loader/BaseFetchContext.cpp |
index ae92738c45035ba21a2f10cfb4fb665d77eb75c2..7134f9cfb4d51349a7bc472347142dbb5a177979 100644 |
--- a/third_party/WebKit/Source/core/loader/BaseFetchContext.cpp |
+++ b/third_party/WebKit/Source/core/loader/BaseFetchContext.cpp |
@@ -257,13 +257,16 @@ ResourceRequestBlockedReason BaseFetchContext::CanRequestInternal( |
// Measure the number of legacy URL schemes ('ftp://') and the number of |
// embedded-credential ('http://user:password@...') resources embedded as |
// subresources. |
- if (resource_request.GetFrameType() != WebURLRequest::kFrameTypeTopLevel) { |
- if (GetMainResourceSecurityContext() && |
- SchemeRegistry::ShouldTreatURLSchemeAsLegacy(url.Protocol()) && |
+ WebURLRequest::FrameType frame_type = resource_request.GetFrameType(); |
+ if (frame_type != WebURLRequest::kFrameTypeTopLevel) { |
+ bool is_subresource = frame_type == WebURLRequest::kFrameTypeNone; |
+ SecurityContext* embedding_context = |
+ is_subresource ? &execution_context_->GetSecurityContext() |
+ : GetParentSecurityContext(); |
+ DCHECK(embedding_context); |
+ if (SchemeRegistry::ShouldTreatURLSchemeAsLegacy(url.Protocol()) && |
!SchemeRegistry::ShouldTreatURLSchemeAsLegacy( |
- GetMainResourceSecurityContext() |
- ->GetSecurityOrigin() |
- ->Protocol())) { |
+ embedding_context->GetSecurityOrigin()->Protocol())) { |
CountDeprecation(UseCounter::kLegacyProtocolEmbeddedAsSubresource); |
// TODO(mkwst): Enabled by default in M59. Drop the runtime-enabled check |