[webkit-changes] [WebKit/WebKit] 6660f0: Add support for HTTPFallback

Matthew Finkel noreply at github.com
Mon Feb 13 11:46:54 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 6660f0c6e9c9e6e921cbcf7d971a9fae05f14541
      https://github.com/WebKit/WebKit/commit/6660f0c6e9c9e6e921cbcf7d971a9fae05f14541
  Author: Matthew Finkel <sysrqb at apple.com>
  Date:   2023-02-13 (Mon, 13 Feb 2023)

  Changed paths:
    M Source/WebCore/loader/EmptyClients.cpp
    M Source/WebCore/loader/EmptyFrameLoaderClient.h
    M Source/WebCore/loader/FrameLoader.cpp
    M Source/WebCore/loader/FrameLoader.h
    M Source/WebCore/loader/FrameLoaderClient.h
    M Source/WebCore/loader/FrameLoaderTypes.h
    M Source/WebCore/platform/network/ResourceErrorBase.h
    M Source/WebCore/platform/network/cf/ResourceError.h
    M Source/WebCore/platform/network/curl/ResourceError.h
    M Source/WebCore/platform/network/mac/ResourceErrorMac.mm
    M Source/WebCore/platform/network/soup/ResourceError.h
    M Source/WebKit/Scripts/webkit/messages.py
    M Source/WebKit/UIProcess/ProvisionalPageProxy.cpp
    M Source/WebKit/UIProcess/ProvisionalPageProxy.h
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Source/WebKit/UIProcess/WebPageProxy.messages.in
    M Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
    M Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.h
    M Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.h
    M Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm
    M Source/WebKitLegacy/win/WebCoreSupport/WebFrameLoaderClient.cpp
    M Source/WebKitLegacy/win/WebCoreSupport/WebFrameLoaderClient.h
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/Navigation.mm

  Log Message:
  -----------
  Add support for HTTPFallback
https://bugs.webkit.org/show_bug.cgi?id=248668
rdar://problem/102911054

Reviewed by Chris Dumez.

When loading a frame results in a failure because of an error related to
establishing a TLS connection, then we may be able to successfully request the
resource as HTTP. We attempt this automatic fallback behavior when the
HTTPSFirst policy is active and we are not currently attempting HTTPFallback
and the request was not itself the result of a HTTP redirect.
For example, an allowed fallback case would be:

https://site1.example doesn't support TLS, so we fallback to
http://site1.example

An unsupported fallback case is:

https://site1.example supports TLS and redirects to https://site2.example, but
https://site2.example doesn't support TLS and we fallback to
http://site1.example. Instead, the load fails on https://site2.example.

The delegate methods didFailProvisionalLoadForFrame and
didFailProvisionalNavigationWithError are not called when we follow this
fallback behavior.

Covered by API tests.

* Source/WebCore/loader/EmptyClients.cpp:
(WebCore::EmptyFrameLoaderClient::dispatchDidFailProvisionalLoad):
* Source/WebCore/loader/EmptyFrameLoaderClient.h:
* Source/WebCore/loader/FrameLoader.cpp:
(WebCore::FrameLoader::dispatchDidFailProvisionalLoad):
(WebCore::FrameLoader::handleLoadFailureRecovery):
(WebCore::FrameLoader::checkLoadCompleteForThisFrame):
* Source/WebCore/loader/FrameLoader.h:
* Source/WebCore/loader/FrameLoaderClient.h:
* Source/WebCore/loader/FrameLoaderTypes.h:
* Source/WebCore/platform/network/ResourceErrorBase.h:
* Source/WebCore/platform/network/cf/ResourceError.h:
* Source/WebCore/platform/network/curl/ResourceError.h:
(WebCore::ResourceError::errorRecoveryMethod const):
* Source/WebCore/platform/network/mac/ResourceErrorMac.mm:
(WebCore::ResourceError::errorRecoveryMethod const):
* Source/WebCore/platform/network/soup/ResourceError.h:
(WebCore::ResourceError::errorRecoveryMethod const):
* Source/WebKit/Scripts/webkit/messages.py:
(headers_for_type):
* Source/WebKit/UIProcess/ProvisionalPageProxy.cpp:
(WebKit::ProvisionalPageProxy::cancel):
(WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame):
* Source/WebKit/UIProcess/ProvisionalPageProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
(WebKit::WebPageProxy::didFailProvisionalLoadForFrameShared):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.messages.in:
* Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDidFailProvisionalLoad):
* Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
* Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.h:
* Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm:
(WebFrameLoaderClient::dispatchDidFailProvisionalLoad):
* Source/WebKitLegacy/win/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebFrameLoaderClient::dispatchDidFailProvisionalLoad):
* Source/WebKitLegacy/win/WebCoreSupport/WebFrameLoaderClient.h:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/Navigation.mm:
(TEST):

Canonical link: https://commits.webkit.org/260213@main




More information about the webkit-changes mailing list