Index: third_party/WebKit/Source/platform/weborigin/SchemeRegistry.cpp |
diff --git a/third_party/WebKit/Source/platform/weborigin/SchemeRegistry.cpp b/third_party/WebKit/Source/platform/weborigin/SchemeRegistry.cpp |
index 46964fa41cf75e84717c4e74ee3e34721516e65c..9ed54cd0961078b5b37ebe2aae8f692b998805fa 100644 |
--- a/third_party/WebKit/Source/platform/weborigin/SchemeRegistry.cpp |
+++ b/third_party/WebKit/Source/platform/weborigin/SchemeRegistry.cpp |
@@ -203,6 +203,13 @@ static URLSchemesMap<SchemeRegistry::PolicyAreas>& ContentSecurityPolicyBypassin |
return schemes; |
} |
+static URLSchemesSet& secureContextBypassingSchemes() |
+{ |
+ assertLockHeld(); |
+ DEFINE_STATIC_LOCAL_NOASSERT(URLSchemesSet, secureContextBypassingSchemes, ()); |
+ return secureContextBypassingSchemes; |
+} |
+ |
bool SchemeRegistry::shouldTreatURLSchemeAsLocal(const String& scheme) |
{ |
if (scheme.isEmpty()) |
@@ -425,4 +432,18 @@ bool SchemeRegistry::schemeShouldBypassContentSecurityPolicy(const String& schem |
return (ContentSecurityPolicyBypassingSchemes().get(scheme) & policyAreas) == policyAreas; |
} |
+void SchemeRegistry::registerURLSchemeBypassingSecureContextCheck(const String& scheme) |
+{ |
+ MutexLocker locker(mutex()); |
+ secureContextBypassingSchemes().add(scheme.lower()); |
+} |
+ |
+bool SchemeRegistry::schemeShouldBypassSecureContextCheck(const String& scheme) |
+{ |
+ if (scheme.isEmpty()) |
+ return false; |
+ MutexLocker locker(mutex()); |
+ return secureContextBypassingSchemes().contains(scheme.lower()); |
+} |
+ |
} // namespace blink |