summaryrefslogtreecommitdiffstats
path: root/layout/style
diff options
context:
space:
mode:
authorwolfbeast <mcwerewolf@wolfbeast.com>2019-08-14 00:29:44 +0200
committerwolfbeast <mcwerewolf@wolfbeast.com>2019-08-14 00:29:44 +0200
commit31c765b050fdbe361a02cf5aae1eb7f6efc8ffff (patch)
tree73ce7c9282640eac50451f83c316d4a5b78b12b4 /layout/style
parentc54bbf01fda7690f4585b1e329ce1fd0b4abd42a (diff)
downloadUXP-31c765b050fdbe361a02cf5aae1eb7f6efc8ffff.tar
UXP-31c765b050fdbe361a02cf5aae1eb7f6efc8ffff.tar.gz
UXP-31c765b050fdbe361a02cf5aae1eb7f6efc8ffff.tar.lz
UXP-31c765b050fdbe361a02cf5aae1eb7f6efc8ffff.tar.xz
UXP-31c765b050fdbe361a02cf5aae1eb7f6efc8ffff.zip
Issue #1211: Allow the loading of TYPE_FONT from file: URLs.
This bypasses the CORS restriction of unique file: URLs in the case of fonts loaded through CSS. Resolves #1211.
Diffstat (limited to 'layout/style')
-rw-r--r--layout/style/FontFaceSet.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/layout/style/FontFaceSet.cpp b/layout/style/FontFaceSet.cpp
index 1645adfef..81c5ede0e 100644
--- a/layout/style/FontFaceSet.cpp
+++ b/layout/style/FontFaceSet.cpp
@@ -583,6 +583,19 @@ FontFaceSet::StartLoad(gfxUserFontEntry* aUserFontEntry,
nsCOMPtr<nsIStreamLoader> streamLoader;
nsCOMPtr<nsILoadGroup> loadGroup(mDocument->GetDocumentLoadGroup());
+ // We're determining the security flags for font loading here based on
+ // scheme, because we want to allow fonts to be loaded using file:
+ // even if unique origins for file: access is enforced (allow CORS
+ // bypass in this case).
+ uint32_t securityFlags = 0;
+ bool isFile = false;
+ if (NS_SUCCEEDED(aFontFaceSrc->mURI->SchemeIs("file", &isFile)) &&
+ isFile) {
+ securityFlags = nsILoadInfo::SEC_ALLOW_CROSS_ORIGIN_DATA_INHERITS;
+ } else {
+ securityFlags = nsILoadInfo::SEC_REQUIRE_CORS_DATA_INHERITS;
+ }
+
nsCOMPtr<nsIChannel> channel;
// Note we are calling NS_NewChannelWithTriggeringPrincipal() with both a
// node and a principal. This is because the document where the font is
@@ -592,7 +605,7 @@ FontFaceSet::StartLoad(gfxUserFontEntry* aUserFontEntry,
aFontFaceSrc->mURI,
mDocument,
aUserFontEntry->GetPrincipal(),
- nsILoadInfo::SEC_REQUIRE_CORS_DATA_INHERITS,
+ securityFlags,
nsIContentPolicy::TYPE_FONT,
loadGroup);
NS_ENSURE_SUCCESS(rv, rv);