Title: [238659] trunk/Source/WebKit
- Revision
- 238659
- Author
- commit-qu...@webkit.org
- Date
- 2018-11-28 20:14:02 -0800 (Wed, 28 Nov 2018)
Log Message
Consult dummy storage for HTTPS Upgrade, Apply If Appropriate
https://bugs.webkit.org/show_bug.cgi?id=192094
<rdar://problem/45851103> HTTPS Upgrade: Consult dummy storage for HTTPS Upgrade, Apply If Appropriate
Patch by Vivek Seth <v_s...@apple.com> on 2018-11-28
Reviewed by Chris Dumez.
For main page loads upgrade HTTP requests to HTTPS if the hostname belongs to a set of upgradable hostnames.
* NetworkProcess/NetworkLoadChecker.cpp:
(WebKit::NetworkLoadChecker::applyHTTPSUpgradeIfNeeded):
(WebKit::NetworkLoadChecker::checkRequest):
* NetworkProcess/NetworkLoadChecker.h:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::start):
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (238658 => 238659)
--- trunk/Source/WebKit/ChangeLog 2018-11-29 03:54:32 UTC (rev 238658)
+++ trunk/Source/WebKit/ChangeLog 2018-11-29 04:14:02 UTC (rev 238659)
@@ -1,3 +1,20 @@
+2018-11-28 Vivek Seth <v_s...@apple.com>
+
+ Consult dummy storage for HTTPS Upgrade, Apply If Appropriate
+ https://bugs.webkit.org/show_bug.cgi?id=192094
+ <rdar://problem/45851103> HTTPS Upgrade: Consult dummy storage for HTTPS Upgrade, Apply If Appropriate
+
+ Reviewed by Chris Dumez.
+
+ For main page loads upgrade HTTP requests to HTTPS if the hostname belongs to a set of upgradable hostnames.
+
+ * NetworkProcess/NetworkLoadChecker.cpp:
+ (WebKit::NetworkLoadChecker::applyHTTPSUpgradeIfNeeded):
+ (WebKit::NetworkLoadChecker::checkRequest):
+ * NetworkProcess/NetworkLoadChecker.h:
+ * NetworkProcess/NetworkResourceLoader.cpp:
+ (WebKit::NetworkResourceLoader::start):
+
2018-11-28 Simon Fraser <simon.fra...@apple.com>
REGRESSION (r234980): Crash in -[WKWebView _restorePageStateToUnobscuredCenter:scale:]
Modified: trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp (238658 => 238659)
--- trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp 2018-11-29 03:54:32 UTC (rev 238658)
+++ trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp 2018-11-29 04:14:02 UTC (rev 238659)
@@ -190,8 +190,45 @@
return makeUnexpected(ResourceError { String { }, 0, m_url, WTFMove(message), ResourceError::Type::AccessControl });
}
+#if ENABLE(HTTPS_UPGRADE)
+bool NetworkLoadChecker::applyHTTPSUpgradeIfNeeded(ResourceRequest& request)
+{
+ // Use dummy list for now.
+ static NeverDestroyed<HashSet<String>> upgradableHosts = std::initializer_list<String> {
+ "www.bbc.com"_s, // (source: https://whynohttps.com)
+ "www.speedtest.net"_s, // (source: https://whynohttps.com)
+ "www.bea.gov"_s // (source: https://pulse.cio.gov/data/domains/https.csv)
+ };
+
+ auto& url = ""
+
+ // Only upgrade http urls.
+ if (!url.protocolIs("http"))
+ return false;
+
+ if (!upgradableHosts.get().contains(url.host().toString()))
+ return false;
+
+ auto newURL = url;
+ newURL.setProtocol("https"_s);
+ request.setURL(newURL);
+ return true;
+
+ return false;
+}
+#endif // ENABLE(HTTPS_UPGRADE)
+
void NetworkLoadChecker::checkRequest(ResourceRequest&& request, ContentSecurityPolicyClient* client, ValidationHandler&& handler)
{
+
+#if ENABLE(HTTPS_UPGRADE)
+ if (request.requester() == ResourceRequest::Requester::Main) {
+ if (applyHTTPSUpgradeIfNeeded(request))
+ ASSERT(request.url().protocolIs("https"));
+ }
+
+#endif // ENABLE(HTTPS_UPGRADE)
+
if (auto* contentSecurityPolicy = this->contentSecurityPolicy()) {
if (isRedirected()) {
auto type = m_options.mode == FetchOptions::Mode::Navigate ? ContentSecurityPolicy::InsecureRequestType::Navigation : ContentSecurityPolicy::InsecureRequestType::Load;
Modified: trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.h (238658 => 238659)
--- trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.h 2018-11-29 03:54:32 UTC (rev 238658)
+++ trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.h 2018-11-29 04:14:02 UTC (rev 238659)
@@ -138,6 +138,11 @@
bool m_checkContentExtensions { false };
bool m_shouldCaptureExtraNetworkLoadMetrics { false };
WebCore::NetworkLoadInformation m_loadInformation;
+
+#if ENABLE(HTTPS_UPGRADE)
+ static bool applyHTTPSUpgradeIfNeeded(WebCore::ResourceRequest&);
+#endif // ENABLE(HTTPS_UPGRADE)
+
};
}
Modified: trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp (238658 => 238659)
--- trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp 2018-11-29 03:54:32 UTC (rev 238658)
+++ trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp 2018-11-29 04:14:02 UTC (rev 238659)
@@ -192,9 +192,11 @@
this->didFailLoading(result.error());
return;
}
- if (this->canUseCache(this->originalRequest())) {
+
+ auto currentRequest = result.value();
+ if (this->canUseCache(currentRequest)) {
RELEASE_LOG_IF_ALLOWED("start: Checking cache for resource (pageID = %" PRIu64 ", frameID = %" PRIu64 ", resourceID = %" PRIu64 ", isMainResource = %d, isSynchronous = %d)", m_parameters.webPageID, m_parameters.webFrameID, m_parameters.identifier, this->isMainResource(), this->isSynchronous());
- this->retrieveCacheEntry(this->originalRequest());
+ this->retrieveCacheEntry(currentRequest);
return;
}
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes