| Index: Source/modules/fetch/FetchManager.cpp
|
| diff --git a/Source/modules/fetch/FetchManager.cpp b/Source/modules/fetch/FetchManager.cpp
|
| index 3bc85626789af65ff5d3f21a72cbd496518ea0c4..e6739b2eef20b54b1537a0e9ab3f33c0c818acd8 100644
|
| --- a/Source/modules/fetch/FetchManager.cpp
|
| +++ b/Source/modules/fetch/FetchManager.cpp
|
| @@ -34,6 +34,7 @@
|
| #include "platform/network/ResourceError.h"
|
| #include "platform/network/ResourceRequest.h"
|
| #include "platform/network/ResourceResponse.h"
|
| +#include "platform/weborigin/SchemeRegistry.h"
|
| #include "platform/weborigin/SecurityOrigin.h"
|
| #include "public/platform/WebURLRequest.h"
|
| #include "wtf/HashSet.h"
|
| @@ -396,7 +397,9 @@ void FetchManager::Loader::start()
|
| }
|
|
|
| // "- |request|'s url's scheme is not one of 'http' and 'https'"
|
| - if (!m_request->url().protocolIsInHTTPFamily()) {
|
| + // This may include other HTTP-like schemes if the embedder has added them
|
| + // to SchemeRegistry::registerURLSchemeAsSupportingFetchAPI.
|
| + if (!SchemeRegistry::shouldTreatURLSchemeAsSupportingFetchAPI(m_request->url().protocol())) {
|
| // "A network error."
|
| performNetworkError("Fetch API cannot load " + m_request->url().string() + ". URL scheme must be \"http\" or \"https\" for CORS request.");
|
| return;
|
| @@ -440,7 +443,7 @@ void FetchManager::Loader::performBasicFetch()
|
| {
|
| // "To perform a basic fetch using |request|, switch on |request|'s url's
|
| // scheme, and run the associated steps:"
|
| - if (m_request->url().protocolIsInHTTPFamily()) {
|
| + if (SchemeRegistry::shouldTreatURLSchemeAsSupportingFetchAPI(m_request->url().protocol())) {
|
| // "Return the result of performing an HTTP fetch using |request|."
|
| performHTTPFetch(false, false);
|
| } else {
|
| @@ -456,7 +459,7 @@ void FetchManager::Loader::performNetworkError(const String& message)
|
|
|
| void FetchManager::Loader::performHTTPFetch(bool corsFlag, bool corsPreflightFlag)
|
| {
|
| - ASSERT(m_request->url().protocolIsInHTTPFamily());
|
| + ASSERT(SchemeRegistry::shouldTreatURLSchemeAsSupportingFetchAPI(m_request->url().protocol()));
|
| // CORS preflight fetch procedure is implemented inside DocumentThreadableLoader.
|
|
|
| // "1. Let |HTTPRequest| be a copy of |request|, except that |HTTPRequest|'s
|
|
|