diff --git a/third_party/blink/renderer/core/css/css_font_face_src_value.cc b/third_party/blink/renderer/core/css/css_font_face_src_value.cc index a5fd1688e6ee3..d718e81d2e7ef 100644 --- a/third_party/blink/renderer/core/css/css_font_face_src_value.cc +++ b/third_party/blink/renderer/core/css/css_font_face_src_value.cc @@ -147,7 +147,13 @@ FontResource& CSSFontFaceSrcValue::Fetch(ExecutionContext* context, const CSSUrlData& url_data = src_value_->UrlData(); const CSSUrlRequestModifiers& modifiers = url_data.GetModifiers(); const Referrer& referrer = url_data.GetReferrer(); - ResourceRequest resource_request(url_data.ResolvedUrl()); + KURL request_url(url_data.ResolvedUrl()); + if (url_data.PotentiallyDanglingMarkup()) { + // The flag is lost when the canonicalized string is re-parsed; restore + // it so BaseFetchContext::CanRequestInternal blocks the load. + request_url.SetPotentiallyDanglingMarkup(); + } + ResourceRequest resource_request(std::move(request_url)); if (modifiers.referrer_policy) { resource_request.SetReferrerPolicy(*modifiers.referrer_policy); diff --git a/third_party/blink/renderer/core/css/css_uri_value.cc b/third_party/blink/renderer/core/css/css_uri_value.cc index 829258fa89e30..b4aa6382e9611 100644 --- a/third_party/blink/renderer/core/css/css_uri_value.cc +++ b/third_party/blink/renderer/core/css/css_uri_value.cc @@ -60,7 +60,13 @@ const AtomicString& CSSURIValue::NormalizedFragmentIdentifier() const { } KURL CSSURIValue::AbsoluteUrl() const { - return KURL(UrlData().ResolvedUrl()); + KURL url(UrlData().ResolvedUrl()); + if (UrlData().PotentiallyDanglingMarkup()) { + // The flag is lost when the canonicalized string is re-parsed; restore it + // so BaseFetchContext::CanRequestInternal blocks the load. + url.SetPotentiallyDanglingMarkup(); + } + return url; } bool CSSURIValue::IsLocal(const Document& document) const { diff --git a/third_party/blink/renderer/core/css/css_url_data.h b/third_party/blink/renderer/core/css/css_url_data.h index c11d1399754e1..eea59807e202a 100644 --- a/third_party/blink/renderer/core/css/css_url_data.h +++ b/third_party/blink/renderer/core/css/css_url_data.h @@ -114,6 +114,9 @@ class CORE_EXPORT CSSUrlData : public GarbageCollected { return is_from_origin_clean_style_sheet_; } bool IsAdRelated() const { return is_ad_related_; } + bool PotentiallyDanglingMarkup() const { + return potentially_dangling_markup_; + } const CSSUrlRequestModifiers& GetModifiers() const { return modifiers_; } // Returns true if this URL is "local" to the specified Document (either by