| Index: Source/platform/weborigin/SchemeRegistry.cpp
|
| diff --git a/Source/platform/weborigin/SchemeRegistry.cpp b/Source/platform/weborigin/SchemeRegistry.cpp
|
| index 84363e578936ba3948e1f84d720e8c8dbb11bb8a..822ae67a5fe8b98591ec9a7d7fae47c79435fcb1 100644
|
| --- a/Source/platform/weborigin/SchemeRegistry.cpp
|
| +++ b/Source/platform/weborigin/SchemeRegistry.cpp
|
| @@ -160,6 +160,22 @@ static URLSchemesSet& CORSEnabledSchemes()
|
| return CORSEnabledSchemes;
|
| }
|
|
|
| +static URLSchemesSet& serviceWorkerSchemes()
|
| +{
|
| + assertLockHeld();
|
| + DEFINE_STATIC_LOCAL_NOASSERT(URLSchemesSet, serviceWorkerSchemes, ());
|
| +
|
| + if (serviceWorkerSchemes.isEmpty()) {
|
| + // HTTP is required because http://localhost is considered secure.
|
| + // Additional checks are performed to ensure that other http pages
|
| + // are filtered out.
|
| + serviceWorkerSchemes.add("http");
|
| + serviceWorkerSchemes.add("https");
|
| + }
|
| +
|
| + return serviceWorkerSchemes;
|
| +}
|
| +
|
| static URLSchemesMap<SchemeRegistry::PolicyAreas>& ContentSecurityPolicyBypassingSchemes()
|
| {
|
| assertLockHeld();
|
| @@ -323,6 +339,20 @@ bool SchemeRegistry::shouldTreatURLSchemeAsLegacy(const String& scheme)
|
| return equalIgnoringCase("ftp", scheme) || equalIgnoringCase("gopher", scheme);
|
| }
|
|
|
| +void SchemeRegistry::registerURLSchemeAsAllowingServiceWorkers(const String& scheme)
|
| +{
|
| + MutexLocker locker(mutex());
|
| + serviceWorkerSchemes().add(scheme);
|
| +}
|
| +
|
| +bool SchemeRegistry::shouldTreatURLSchemeAsAllowingServiceWorkers(const String& scheme)
|
| +{
|
| + if (scheme.isEmpty())
|
| + return false;
|
| + MutexLocker locker(mutex());
|
| + return serviceWorkerSchemes().contains(scheme);
|
| +}
|
| +
|
| void SchemeRegistry::registerURLSchemeAsBypassingContentSecurityPolicy(const String& scheme, PolicyAreas policyAreas)
|
| {
|
| MutexLocker locker(mutex());
|
|
|