Diff
Modified: trunk/Source/WebKit/ChangeLog (239422 => 239423)
--- trunk/Source/WebKit/ChangeLog 2018-12-20 04:00:01 UTC (rev 239422)
+++ trunk/Source/WebKit/ChangeLog 2018-12-20 04:04:06 UTC (rev 239423)
@@ -1,3 +1,28 @@
+2018-12-19 Vivek Seth <[email protected]>
+
+ HTTPS Upgrade: Use full sqlite upgrade list
+ https://bugs.webkit.org/show_bug.cgi?id=192736
+ <rdar://problem/45851427>
+
+ Reviewed by Chris Dumez.
+
+ * NetworkProcess/NetworkHTTPSUpgradeChecker.cpp: Added.
+ (WebKit::NetworkHTTPSUpgradeCheckerDatabasePath):
+ (WebKit::NetworkHTTPSUpgradeChecker::NetworkHTTPSUpgradeChecker):
+ (WebKit::NetworkHTTPSUpgradeChecker::~NetworkHTTPSUpgradeChecker):
+ (WebKit::NetworkHTTPSUpgradeChecker::query):
+ (WebKit::NetworkHTTPSUpgradeChecker::isAlwaysOnLoggingAllowed const):
+ * NetworkProcess/NetworkHTTPSUpgradeChecker.h: Added.
+ (WebKit::NetworkHTTPSUpgradeChecker::didSetupCompleteSuccessfully const):
+ * NetworkProcess/NetworkLoadChecker.cpp:
+ (WebKit::NetworkLoadChecker::applyHTTPSUpgradeIfNeeded const):
+ (WebKit::NetworkLoadChecker::checkRequest):
+ * NetworkProcess/NetworkLoadChecker.h:
+ * NetworkProcess/NetworkProcess.h:
+ (WebKit::NetworkProcess::networkHTTPSUpgradeChecker):
+ * Sources.txt:
+ * WebKit.xcodeproj/project.pbxproj:
+
2018-12-19 Tim Horton <[email protected]>
Use delegate instead of drawingDelegate in WKDrawingView
Added: trunk/Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp (0 => 239423)
--- trunk/Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp (rev 0)
+++ trunk/Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp 2018-12-20 04:04:06 UTC (rev 239423)
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2018 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "NetworkHTTPSUpgradeChecker.h"
+
+#if ENABLE(HTTPS_UPGRADE)
+
+#include "Logging.h"
+#include <WebCore/SQLiteDatabase.h>
+#include <WebCore/SQLiteStatement.h>
+#include <pal/SessionID.h>
+#include <wtf/CompletionHandler.h>
+#include <wtf/NeverDestroyed.h>
+#include <wtf/RunLoop.h>
+#include <wtf/WorkQueue.h>
+
+#define RELEASE_LOG_IF_ALLOWED(sessionID, fmt, ...) RELEASE_LOG_IF(sessionID.isAlwaysOnLoggingAllowed(), Network, "%p - NetworkHTTPSUpgradeChecker::" fmt, this, ##__VA_ARGS__)
+
+namespace WebKit {
+
+static const String& networkHTTPSUpgradeCheckerDatabasePath()
+{
+ static NeverDestroyed<String> networkHTTPSUpgradeCheckerDatabasePath;
+#if PLATFORM(COCOA)
+ if (networkHTTPSUpgradeCheckerDatabasePath.get().isNull()) {
+ CFBundleRef webKitBundle = CFBundleGetBundleWithIdentifier(CFSTR("com.apple.WebKit"));
+ networkHTTPSUpgradeCheckerDatabasePath.get() = CFURLGetString(adoptCF(CFBundleCopyResourceURL(webKitBundle, CFSTR("HTTPSUpgradeList"), CFSTR("db"), nullptr)).get());
+ }
+#endif // PLATFORM(COCOA)
+ return networkHTTPSUpgradeCheckerDatabasePath;
+}
+
+NetworkHTTPSUpgradeChecker::NetworkHTTPSUpgradeChecker()
+ : m_workQueue(WorkQueue::create("HTTPS Upgrade Checker Thread"))
+ , m_database(makeUniqueRef<WebCore::SQLiteDatabase>())
+ , m_statement(makeUniqueRef<WebCore::SQLiteStatement>(m_database.get(), "SELECT host FROM hosts WHERE host = ?;"_s))
+{
+ ASSERT(RunLoop::isMain());
+
+ m_workQueue->dispatch([this] {
+ auto path = networkHTTPSUpgradeCheckerDatabasePath();
+ ASSERT(path);
+
+ bool isDatabaseOpen = m_database->open(path);
+ ASSERT(isDatabaseOpen);
+ if (!isDatabaseOpen)
+ return;
+
+ // Since we are using a workerQueue, the sequential dispatch blocks may be called by different threads.
+ m_database->disableThreadingChecks();
+
+ int isStatementPrepared = (m_statement->prepare() == SQLITE_OK);
+ ASSERT(isStatementPrepared);
+ if (!isStatementPrepared)
+ return;
+
+ m_didSetupCompleteSuccessfully = true;
+ });
+}
+
+NO_RETURN_DUE_TO_ASSERT NetworkHTTPSUpgradeChecker::~NetworkHTTPSUpgradeChecker()
+{
+ // This object should be owned by a singleton object.
+ ASSERT_NOT_REACHED();
+}
+
+void NetworkHTTPSUpgradeChecker::query(String&& host, PAL::SessionID sessionID, CompletionHandler<void(bool)>&& callback)
+{
+ ASSERT(RunLoop::isMain());
+
+ m_workQueue->dispatch([this, host = host.isolatedCopy(), sessionID, callback = WTFMove(callback)] () mutable {
+ ASSERT(m_didSetupCompleteSuccessfully);
+
+ int bindTextResult = m_statement->bindText(1, WTFMove(host));
+ ASSERT(bindTextResult == SQLITE_OK);
+
+ int stepResult = m_statement->step();
+ ASSERT(stepResult == SQLITE_ROW || stepResult == SQLITE_DONE);
+
+ int resetResult = m_statement->reset();
+ ASSERT(resetResult == SQLITE_OK);
+
+ bool foundHost = (stepResult == SQLITE_ROW);
+ RELEASE_LOG_IF_ALLOWED(sessionID, "query - Ran successfully. Result = %s", (foundHost ? "true" : "false"));
+ RunLoop::main().dispatch([foundHost, callback = WTFMove(callback)] () mutable {
+ callback(foundHost);
+ });
+ });
+}
+
+} // namespace WebKit
+
+#endif // ENABLE(HTTPS_UPGRADE)
Added: trunk/Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.h (0 => 239423)
--- trunk/Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.h (rev 0)
+++ trunk/Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.h 2018-12-20 04:04:06 UTC (rev 239423)
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2018 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(HTTPS_UPGRADE)
+
+#include <wtf/UniqueRef.h>
+
+namespace WTF {
+class WorkQueue;
+}
+
+namespace WebCore {
+class SQLiteDatabase;
+class SQLiteStatement;
+}
+
+namespace PAL {
+class SessionID;
+}
+
+namespace WebKit {
+
+class NetworkHTTPSUpgradeChecker {
+public:
+ NetworkHTTPSUpgradeChecker();
+ ~NetworkHTTPSUpgradeChecker();
+
+ // Returns `true` after internal setup is successfully completed. If there is an error with setup, or if setup is in-progress, it will return `false`.
+ bool didSetupCompleteSuccessfully() const { return m_didSetupCompleteSuccessfully; };
+
+ // Queries database after setup is complete.
+ void query(String&&, PAL::SessionID, CompletionHandler<void(bool)>&&);
+
+private:
+ Ref<WTF::WorkQueue> m_workQueue;
+ WTF::UniqueRef<WebCore::SQLiteDatabase> m_database;
+ WTF::UniqueRef<WebCore::SQLiteStatement> m_statement;
+ std::atomic<bool> m_didSetupCompleteSuccessfully { false };
+};
+
+} // namespace WebKit
+
+#endif // ENABLE(HTTPS_UPGRADE)
Modified: trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp (239422 => 239423)
--- trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp 2018-12-20 04:00:01 UTC (rev 239422)
+++ trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp 2018-12-20 04:04:06 UTC (rev 239423)
@@ -30,6 +30,7 @@
#include "NetworkCORSPreflightChecker.h"
#include "NetworkProcess.h"
#include <WebCore/ContentSecurityPolicy.h>
+#include <WebCore/CrossOriginAccessControl.h>
#include <WebCore/CrossOriginPreflightResultCache.h>
#include <WebCore/SchemeRegistry.h>
#include <wtf/Scope.h>
@@ -191,32 +192,38 @@
}
#if ENABLE(HTTPS_UPGRADE)
-void NetworkLoadChecker::applyHTTPSUpgradeIfNeeded(ResourceRequest& request) const
+void NetworkLoadChecker::applyHTTPSUpgradeIfNeeded(ResourceRequest&& request, CompletionHandler<void(ResourceRequest&&)>&& handler) const
{
- if (m_requestLoadType != LoadType::MainFrame)
+ if (m_requestLoadType != LoadType::MainFrame) {
+ handler(WTFMove(request));
return;
+ }
- // 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"))
+ if (!url.protocolIs("http")) {
+ handler(WTFMove(request));
return;
+ }
- if (!upgradableHosts.get().contains(url.host().toString()))
+ auto& httpsUpgradeChecker = NetworkProcess::singleton().networkHTTPSUpgradeChecker();
+
+ // Do not wait for httpsUpgradeChecker to complete its setup.
+ if (!httpsUpgradeChecker.didSetupCompleteSuccessfully()) {
+ handler(WTFMove(request));
return;
+ }
- auto newURL = url;
- newURL.setProtocol("https"_s);
- request.setURL(newURL);
+ httpsUpgradeChecker.query(url.host().toString(), m_sessionID, [request = WTFMove(request), handler = WTFMove(handler)] (bool foundHost) mutable {
+ if (foundHost) {
+ auto newURL = request.url();
+ newURL.setProtocol("https"_s);
+ request.setURL(newURL);
+ }
- RELEASE_LOG_IF_ALLOWED("applyHTTPSUpgradeIfNeeded - Upgrade URL from HTTP to HTTPS");
+ handler(WTFMove(request));
+ });
}
#endif // ENABLE(HTTPS_UPGRADE)
@@ -225,37 +232,42 @@
ResourceRequest originalRequest = request;
#if ENABLE(HTTPS_UPGRADE)
- applyHTTPSUpgradeIfNeeded(request);
+ applyHTTPSUpgradeIfNeeded(WTFMove(request), [this, client, handler = WTFMove(handler), originalRequest = WTFMove(originalRequest)](auto request) mutable {
#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;
- contentSecurityPolicy->upgradeInsecureRequestIfNeeded(request, type);
+ if (auto* contentSecurityPolicy = this->contentSecurityPolicy()) {
+ if (isRedirected()) {
+ auto type = m_options.mode == FetchOptions::Mode::Navigate ? ContentSecurityPolicy::InsecureRequestType::Navigation : ContentSecurityPolicy::InsecureRequestType::Load;
+ contentSecurityPolicy->upgradeInsecureRequestIfNeeded(request, type);
+ }
+ if (!isAllowedByContentSecurityPolicy(request, client)) {
+ handler(accessControlErrorForValidationHandler("Blocked by Content Security Policy."_s));
+ return;
+ }
}
- if (!isAllowedByContentSecurityPolicy(request, client)) {
- handler(accessControlErrorForValidationHandler("Blocked by Content Security Policy."_s));
- return;
- }
- }
#if ENABLE(CONTENT_EXTENSIONS)
- processContentExtensionRulesForLoad(WTFMove(request), [this, handler = WTFMove(handler), originalRequest = WTFMove(originalRequest)](auto result) mutable {
- if (!result.has_value()) {
- ASSERT(result.error().isCancellation());
- handler(WTFMove(result.error()));
- return;
- }
- if (result.value().status.blockedLoad) {
- handler(this->accessControlErrorForValidationHandler("Blocked by content extension"_s));
- return;
- }
+ processContentExtensionRulesForLoad(WTFMove(request), [this, handler = WTFMove(handler), originalRequest = WTFMove(originalRequest)](auto result) mutable {
+ if (!result.has_value()) {
+ ASSERT(result.error().isCancellation());
+ handler(WTFMove(result.error()));
+ return;
+ }
+ if (result.value().status.blockedLoad) {
+ handler(this->accessControlErrorForValidationHandler("Blocked by content extension"_s));
+ return;
+ }
- continueCheckingRequestOrDoSyntheticRedirect(WTFMove(originalRequest), WTFMove(result.value().request), WTFMove(handler));
- });
+ continueCheckingRequestOrDoSyntheticRedirect(WTFMove(originalRequest), WTFMove(result.value().request), WTFMove(handler));
+ });
#else
- continueCheckingRequestOrDoSyntheticRedirect(WTFMove(originalRequest), WTFMove(request), WTFMove(handler));
+ continueCheckingRequestOrDoSyntheticRedirect(WTFMove(originalRequest), WTFMove(request), WTFMove(handler));
#endif
+
+#if ENABLE(HTTPS_UPGRADE)
+ });
+#endif // ENABLE(HTTPS_UPGRADE)
+
}
void NetworkLoadChecker::continueCheckingRequestOrDoSyntheticRedirect(ResourceRequest&& originalRequest, ResourceRequest&& currentRequest, ValidationHandler&& handler)
Modified: trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.h (239422 => 239423)
--- trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.h 2018-12-20 04:00:01 UTC (rev 239422)
+++ trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.h 2018-12-20 04:04:06 UTC (rev 239423)
@@ -25,16 +25,23 @@
#pragma once
+#include "UserContentControllerIdentifier.h"
#include <WebCore/ContentExtensionActions.h>
+#include <WebCore/ContentSecurityPolicyResponseHeaders.h>
+#include <WebCore/FetchOptions.h>
#include <WebCore/NetworkLoadInformation.h>
#include <WebCore/ResourceError.h>
#include <wtf/CompletionHandler.h>
#include <wtf/Expected.h>
#include <wtf/Variant.h>
+#include <wtf/WeakPtr.h>
namespace WebCore {
class ContentSecurityPolicy;
struct ContentSecurityPolicyClient;
+class SecurityOrigin;
+enum class PreflightPolicy : uint8_t;
+enum class StoredCredentialsPolicy : bool;
}
namespace WebKit {
@@ -113,7 +120,7 @@
#endif
#if ENABLE(HTTPS_UPGRADE)
- void applyHTTPSUpgradeIfNeeded(WebCore::ResourceRequest&) const;
+ void applyHTTPSUpgradeIfNeeded(WebCore::ResourceRequest&&, CompletionHandler<void(WebCore::ResourceRequest&&)>&&) const;
#endif // ENABLE(HTTPS_UPGRADE)
WebCore::FetchOptions m_options;
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.h (239422 => 239423)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.h 2018-12-20 04:00:01 UTC (rev 239422)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.h 2018-12-20 04:04:06 UTC (rev 239423)
@@ -29,6 +29,7 @@
#include "ChildProcess.h"
#include "DownloadManager.h"
#include "NetworkContentRuleListManager.h"
+#include "NetworkHTTPSUpgradeChecker.h"
#include "SandboxExtension.h"
#include <WebCore/DiagnosticLoggingClient.h>
#include <WebCore/FetchIdentifier.h>
@@ -204,6 +205,10 @@
bool parentProcessHasServiceWorkerEntitlement() const { return true; }
#endif
+#if ENABLE(HTTPS_UPGRADE)
+ NetworkHTTPSUpgradeChecker& networkHTTPSUpgradeChecker() { return m_networkHTTPSUpgradeChecker; };
+#endif // ENABLE(HTTPS_UPGRADE)
+
private:
NetworkProcess();
~NetworkProcess();
@@ -393,6 +398,9 @@
HashMap<WebCore::SWServerConnectionIdentifier, WebSWServerConnection*> m_swServerConnections;
#endif
+#if ENABLE(HTTPS_UPGRADE)
+ NetworkHTTPSUpgradeChecker m_networkHTTPSUpgradeChecker;
+#endif // ENABLE(HTTPS_UPGRADE)
};
} // namespace WebKit
Modified: trunk/Source/WebKit/Sources.txt (239422 => 239423)
--- trunk/Source/WebKit/Sources.txt 2018-12-20 04:00:01 UTC (rev 239422)
+++ trunk/Source/WebKit/Sources.txt 2018-12-20 04:04:06 UTC (rev 239423)
@@ -27,6 +27,7 @@
NetworkProcess/NetworkContentRuleListManager.cpp
NetworkProcess/NetworkDataTask.cpp
NetworkProcess/NetworkDataTaskBlob.cpp
+NetworkProcess/NetworkHTTPSUpgradeChecker.cpp
NetworkProcess/NetworkLoad.cpp
NetworkProcess/NetworkLoadChecker.cpp
NetworkProcess/NetworkProcess.cpp
Modified: trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj (239422 => 239423)
--- trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj 2018-12-20 04:00:01 UTC (rev 239422)
+++ trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj 2018-12-20 04:04:06 UTC (rev 239423)
@@ -1037,6 +1037,7 @@
57DCEDC3214F114C0016B847 /* MockLocalService.h in Headers */ = {isa = PBXBuildFile; fileRef = 57DCEDC1214F114C0016B847 /* MockLocalService.h */; };
57DCEDC7214F18300016B847 /* MockLocalConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 57DCEDC5214F18300016B847 /* MockLocalConnection.h */; };
57DCEDCB214F4E420016B847 /* MockAuthenticatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 57DCEDC9214F4E420016B847 /* MockAuthenticatorManager.h */; };
+ 58E977DF21C49A00005D92A6 /* NetworkHTTPSUpgradeChecker.h in Headers */ = {isa = PBXBuildFile; fileRef = 58E977DD21C49A00005D92A6 /* NetworkHTTPSUpgradeChecker.h */; };
587743A621C30BBE00AE9084 /* HTTPSUpgradeList.db in Resources */ = {isa = PBXBuildFile; fileRef = 587743A421C30AD800AE9084 /* HTTPSUpgradeList.db */; };
5C0B17781E7C880E00E9123C /* NetworkSocketStreamMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5C0B17741E7C879C00E9123C /* NetworkSocketStreamMessageReceiver.cpp */; };
5C0B17791E7C882100E9123C /* WebSocketStreamMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5C0B17761E7C879C00E9123C /* WebSocketStreamMessageReceiver.cpp */; };
@@ -3402,6 +3403,8 @@
57DCEDC6214F18300016B847 /* MockLocalConnection.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MockLocalConnection.mm; sourceTree = "<group>"; };
57DCEDC9214F4E420016B847 /* MockAuthenticatorManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MockAuthenticatorManager.h; sourceTree = "<group>"; };
57DCEDCD214F51680016B847 /* MockAuthenticatorManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MockAuthenticatorManager.cpp; sourceTree = "<group>"; };
+ 58E977DC21C499FE005D92A6 /* NetworkHTTPSUpgradeChecker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkHTTPSUpgradeChecker.cpp; sourceTree = "<group>"; };
+ 58E977DD21C49A00005D92A6 /* NetworkHTTPSUpgradeChecker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkHTTPSUpgradeChecker.h; sourceTree = "<group>"; };
587743A421C30AD800AE9084 /* HTTPSUpgradeList.db */ = {isa = PBXFileReference; lastKnownFileType = file; name = HTTPSUpgradeList.db; path = DerivedSources/WebKit2/HTTPSUpgradeList.db; sourceTree = BUILT_PRODUCTS_DIR; };
5C0B17741E7C879C00E9123C /* NetworkSocketStreamMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkSocketStreamMessageReceiver.cpp; path = DerivedSources/WebKit2/NetworkSocketStreamMessageReceiver.cpp; sourceTree = BUILT_PRODUCTS_DIR; };
5C0B17751E7C879C00E9123C /* NetworkSocketStreamMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetworkSocketStreamMessages.h; path = DerivedSources/WebKit2/NetworkSocketStreamMessages.h; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -6422,6 +6425,8 @@
5CBC9B891C6524A500A8FDCF /* NetworkDataTask.h */,
539EB5461DC2EE40009D48CF /* NetworkDataTaskBlob.cpp */,
539EB5471DC2EE40009D48CF /* NetworkDataTaskBlob.h */,
+ 58E977DC21C499FE005D92A6 /* NetworkHTTPSUpgradeChecker.cpp */,
+ 58E977DD21C49A00005D92A6 /* NetworkHTTPSUpgradeChecker.h */,
839901FF1BE9A01B000F3653 /* NetworkLoad.cpp */,
839901FE1BE9A01B000F3653 /* NetworkLoad.h */,
4103FBA22061BDB800C2EAF8 /* NetworkLoadChecker.cpp */,
@@ -9113,6 +9118,7 @@
5CBC9B8E1C652CA000A8FDCF /* NetworkDataTask.h in Headers */,
53BA47D11DC2EF5E004DF4AD /* NetworkDataTaskBlob.h in Headers */,
532159561DBAE72D0054AA3C /* NetworkDataTaskCocoa.h in Headers */,
+ 58E977DF21C49A00005D92A6 /* NetworkHTTPSUpgradeChecker.h in Headers */,
839902031BE9A02B000F3653 /* NetworkLoad.h in Headers */,
83D454D71BE9D3C4006C93BD /* NetworkLoadClient.h in Headers */,
839149651BEA838500D2D953 /* NetworkLoadParameters.h in Headers */,