| Index: third_party/WebKit/Source/core/loader/DocumentLoader.cpp
|
| diff --git a/third_party/WebKit/Source/core/loader/DocumentLoader.cpp b/third_party/WebKit/Source/core/loader/DocumentLoader.cpp
|
| index 0941688f9d7cb391cf48ac5abf71978743334c37..7f689758f73ce58cb90169608e096f5f9c89130e 100644
|
| --- a/third_party/WebKit/Source/core/loader/DocumentLoader.cpp
|
| +++ b/third_party/WebKit/Source/core/loader/DocumentLoader.cpp
|
| @@ -190,7 +190,10 @@ Resource* DocumentLoader::startPreload(Resource::Type type,
|
| NOTREACHED();
|
| }
|
|
|
| - if (resource)
|
| + // CSP layout tests verify that preloads are subject to access checks by
|
| + // seeing if they are in the `preload started` list. Therefore do not add
|
| + // them to the list if the load is immediately denied.
|
| + if (resource && !resource->resourceError().isAccessCheck())
|
| fetcher()->preloadStarted(resource);
|
| return resource;
|
| }
|
| @@ -681,7 +684,13 @@ void DocumentLoader::startLoadingMainResource() {
|
| mainResourceLoadOptions);
|
| m_mainResource =
|
| RawResource::fetchMainResource(fetchRequest, fetcher(), m_substituteData);
|
| - if (!m_mainResource) {
|
| +
|
| + // PlzNavigate:
|
| + // The final access checks are still performed here, potentially rejecting
|
| + // the "provisional" load, but the browser side already expects the renderer
|
| + // to be able to unconditionally commit.
|
| + if (!m_mainResource || (m_frame->settings()->browserSideNavigationEnabled() &&
|
| + m_mainResource->errorOccurred())) {
|
| m_request = ResourceRequest(blankURL());
|
| maybeLoadEmpty();
|
| return;
|
|
|