Diff
Modified: branches/safari-605-branch/Source/WebCore/PAL/ChangeLog (232417 => 232418)
--- branches/safari-605-branch/Source/WebCore/PAL/ChangeLog 2018-06-01 21:28:40 UTC (rev 232417)
+++ branches/safari-605-branch/Source/WebCore/PAL/ChangeLog 2018-06-01 21:40:58 UTC (rev 232418)
@@ -1,3 +1,16 @@
+2018-06-01 Kocsen Chung <[email protected]>
+
+ Apply patch. rdar://problem/40688638
+
+ 2018-06-01 Alex Christensen <[email protected]>
+
+ Add WKWebsiteDataStorePrivate._proxyConfiguration SPI
+ https://bugs.webkit.org/show_bug.cgi?id=185179
+
+ Reviewed by Andy Estes.
+
+ * pal/spi/cf/CFNetworkSPI.h:
+
2018-05-02 Jason Marcell <[email protected]>
Cherry-pick r231242. rdar://problem/39860939
Modified: branches/safari-605-branch/Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h (232417 => 232418)
--- branches/safari-605-branch/Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h 2018-06-01 21:28:40 UTC (rev 232417)
+++ branches/safari-605-branch/Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h 2018-06-01 21:40:58 UTC (rev 232418)
@@ -105,7 +105,7 @@
+ (void)setAllowsSpecificHTTPSCertificate:(NSArray *)allow forHost:(NSString *)host;
+ (void)setDefaultTimeoutInterval:(NSTimeInterval)seconds;
- (NSArray *)contentDispositionEncodingFallbackArray;
-- (CFURLRequestRef)_CFURLRequest;
+- (CFMutableURLRequestRef)_CFURLRequest;
- (id)_initWithCFURLRequest:(CFURLRequestRef)request;
- (id)_propertyForKey:(NSString *)key;
- (void)_setProperty:(id)value forKey:(NSString *)key;
@@ -277,6 +277,7 @@
Boolean _CFHostIsDomainTopLevel(CFStringRef domain);
void _CFURLRequestCreateArchiveList(CFAllocatorRef, CFURLRequestRef, CFIndex* version, CFTypeRef** objects, CFIndex* objectCount, CFDictionaryRef* protocolProperties);
CFMutableURLRequestRef _CFURLRequestCreateFromArchiveList(CFAllocatorRef, CFIndex version, CFTypeRef* objects, CFIndex objectCount, CFDictionaryRef protocolProperties);
+void CFURLRequestSetProxySettings(CFMutableURLRequestRef, CFDictionaryRef);
#endif // !PLATFORM(WIN)
Modified: branches/safari-605-branch/Source/WebKit/ChangeLog (232417 => 232418)
--- branches/safari-605-branch/Source/WebKit/ChangeLog 2018-06-01 21:28:40 UTC (rev 232417)
+++ branches/safari-605-branch/Source/WebKit/ChangeLog 2018-06-01 21:40:58 UTC (rev 232418)
@@ -1,3 +1,37 @@
+2018-06-01 Kocsen Chung <[email protected]>
+
+ Apply patch. rdar://problem/40688638
+
+ 2018-06-01 Alex Christensen <[email protected]>
+
+ Add WKWebsiteDataStorePrivate._proxyConfiguration SPI
+ https://bugs.webkit.org/show_bug.cgi?id=185179
+
+ Reviewed by Andy Estes.
+
+ * NetworkProcess/NetworkSessionCreationParameters.h:
+ (WebKit::NetworkSessionCreationParameters::encode const):
+ (WebKit::NetworkSessionCreationParameters::decode):
+ * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
+ (WebKit::NetworkDataTaskCocoa::applySniffingPoliciesAndBindRequestToInferfaceIfNeeded):
+ * NetworkProcess/cocoa/NetworkSessionCocoa.h:
+ * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
+ (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
+ * Shared/WebsiteDataStoreParameters.cpp:
+ (WebKit::WebsiteDataStoreParameters::privateSessionParameters):
+ * Shared/cf/ArgumentCodersCF.cpp:
+ (IPC::encode):
+ (IPC::decode):
+ * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
+ (-[WKWebsiteDataStore _setProxyConfiguration:]):
+ (-[WKWebsiteDataStore _proxyConfiguration]):
+ * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
+ * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
+ (WebKit::WebsiteDataStore::parameters):
+ * UIProcess/WebsiteData/WebsiteDataStore.h:
+ (WebKit::WebsiteDataStore::setProxyConfiguration):
+ (WebKit::WebsiteDataStore::proxyConfiguration):
+
2018-05-31 Kocsen Chung <[email protected]>
Cherry-pick r232281. rdar://problem/40641066
Modified: branches/safari-605-branch/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h (232417 => 232418)
--- branches/safari-605-branch/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h 2018-06-01 21:28:40 UTC (rev 232417)
+++ branches/safari-605-branch/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h 2018-06-01 21:40:58 UTC (rev 232418)
@@ -30,6 +30,10 @@
#include <wtf/EnumTraits.h>
#include <wtf/text/WTFString.h>
+#if PLATFORM(COCOA)
+#include "ArgumentCodersCF.h"
+#endif
+
namespace WebKit {
class LegacyCustomProtocolManager;
@@ -44,6 +48,9 @@
LegacyCustomProtocolManager* legacyCustomProtocolManager { nullptr };
String boundInterfaceIdentifier;
AllowsCellularAccess allowsCellularAccess { AllowsCellularAccess::Yes };
+#if PLATFORM(COCOA)
+ RetainPtr<CFDictionaryRef> proxyConfiguration;
+#endif
};
inline void NetworkSessionCreationParameters::encode(IPC::Encoder& encoder) const
@@ -51,6 +58,9 @@
encoder << sessionID;
encoder << boundInterfaceIdentifier;
encoder << allowsCellularAccess;
+#if PLATFORM(COCOA)
+ IPC::encode(encoder, proxyConfiguration.get());
+#endif
}
inline std::optional<NetworkSessionCreationParameters> NetworkSessionCreationParameters::decode(IPC::Decoder& decoder)
@@ -69,7 +79,20 @@
if (!allowsCellularAccess)
return std::nullopt;
- return {{ sessionID, nullptr, WTFMove(*boundInterfaceIdentifier), WTFMove(*allowsCellularAccess) }};
+#if PLATFORM(COCOA)
+ RetainPtr<CFDictionaryRef> proxyConfiguration;
+ if (!IPC::decode(decoder, proxyConfiguration))
+ return std::nullopt;
+#endif
+
+ return {{ sessionID
+ , nullptr
+ , WTFMove(*boundInterfaceIdentifier)
+ , WTFMove(*allowsCellularAccess)
+#if PLATFORM(COCOA)
+ , WTFMove(proxyConfiguration)
+#endif
+ }};
}
} // namespace WebKit
Modified: branches/safari-605-branch/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm (232417 => 232418)
--- branches/safari-605-branch/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm 2018-06-01 21:28:40 UTC (rev 232417)
+++ branches/safari-605-branch/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm 2018-06-01 21:40:58 UTC (rev 232418)
@@ -82,7 +82,10 @@
shouldContentEncodingSniff = true;
#endif
auto& cocoaSession = static_cast<NetworkSessionCocoa&>(m_session.get());
- if (shouldContentSniff && shouldContentEncodingSniff && cocoaSession.m_boundInterfaceIdentifier.isNull())
+ if (shouldContentSniff
+ && shouldContentEncodingSniff
+ && cocoaSession.m_boundInterfaceIdentifier.isNull()
+ && !cocoaSession.m_proxyConfiguration)
return;
auto mutableRequest = adoptNS([nsRequest mutableCopy]);
@@ -98,6 +101,8 @@
if (!cocoaSession.m_boundInterfaceIdentifier.isNull())
[mutableRequest setBoundInterfaceIdentifier:cocoaSession.m_boundInterfaceIdentifier];
+ if (cocoaSession.m_proxyConfiguration)
+ CFURLRequestSetProxySettings([mutableRequest _CFURLRequest], cocoaSession.m_proxyConfiguration.get());
nsRequest = mutableRequest.autorelease();
}
Modified: branches/safari-605-branch/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h (232417 => 232418)
--- branches/safari-605-branch/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h 2018-06-01 21:28:40 UTC (rev 232417)
+++ branches/safari-605-branch/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h 2018-06-01 21:40:58 UTC (rev 232418)
@@ -84,6 +84,7 @@
RetainPtr<WKNetworkSessionDelegate> m_statelessSessionDelegate;
String m_boundInterfaceIdentifier;
+ RetainPtr<CFDictionaryRef> m_proxyConfiguration;
};
} // namespace WebKit
Modified: branches/safari-605-branch/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm (232417 => 232418)
--- branches/safari-605-branch/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm 2018-06-01 21:28:40 UTC (rev 232417)
+++ branches/safari-605-branch/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm 2018-06-01 21:40:58 UTC (rev 232418)
@@ -653,6 +653,7 @@
NetworkSessionCocoa::NetworkSessionCocoa(NetworkSessionCreationParameters&& parameters)
: NetworkSession(parameters.sessionID)
, m_boundInterfaceIdentifier(parameters.boundInterfaceIdentifier)
+ , m_proxyConfiguration(parameters.proxyConfiguration)
{
relaxAdoptionRequirement();
Modified: branches/safari-605-branch/Source/WebKit/Shared/WebsiteDataStoreParameters.cpp (232417 => 232418)
--- branches/safari-605-branch/Source/WebKit/Shared/WebsiteDataStoreParameters.cpp 2018-06-01 21:28:40 UTC (rev 232417)
+++ branches/safari-605-branch/Source/WebKit/Shared/WebsiteDataStoreParameters.cpp 2018-06-01 21:40:58 UTC (rev 232418)
@@ -89,7 +89,11 @@
WebsiteDataStoreParameters WebsiteDataStoreParameters::privateSessionParameters(PAL::SessionID sessionID)
{
ASSERT(sessionID.isEphemeral());
- return { { }, { }, { }, { }, WebsiteDataStore::defaultCacheStoragePerOriginQuota, { }, { sessionID, { }, { }, AllowsCellularAccess::Yes }};
+ return { { }, { }, { }, { }, WebsiteDataStore::defaultCacheStoragePerOriginQuota, { }, { sessionID, { }, { }, AllowsCellularAccess::Yes
+#if PLATFORM(COCOA)
+ , nullptr
+#endif
+ }};
}
} // namespace WebKit
Modified: branches/safari-605-branch/Source/WebKit/Shared/cf/ArgumentCodersCF.cpp (232417 => 232418)
--- branches/safari-605-branch/Source/WebKit/Shared/cf/ArgumentCodersCF.cpp 2018-06-01 21:28:40 UTC (rev 232417)
+++ branches/safari-605-branch/Source/WebKit/Shared/cf/ArgumentCodersCF.cpp 2018-06-01 21:40:58 UTC (rev 232418)
@@ -408,6 +408,12 @@
void encode(Encoder& encoder, CFDictionaryRef dictionary)
{
+ if (!dictionary) {
+ encoder << true;
+ return;
+ }
+ encoder << false;
+
CFIndex size = CFDictionaryGetCount(dictionary);
Vector<CFTypeRef, 32> keys(size);
Vector<CFTypeRef, 32> values(size);
@@ -432,6 +438,14 @@
bool decode(Decoder& decoder, RetainPtr<CFDictionaryRef>& result)
{
+ bool isNull = false;
+ if (!decoder.decode(isNull))
+ return false;
+ if (isNull) {
+ result = nullptr;
+ return true;
+ }
+
uint64_t size;
if (!decoder.decode(size))
return false;
Modified: branches/safari-605-branch/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm (232417 => 232418)
--- branches/safari-605-branch/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm 2018-06-01 21:28:40 UTC (rev 232417)
+++ branches/safari-605-branch/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm 2018-06-01 21:40:58 UTC (rev 232418)
@@ -552,6 +552,16 @@
WebKit::WebResourceLoadStatisticsTelemetry::setNotifyPagesWhenTelemetryWasCaptured(value);
}
+- (void)_setProxyConfiguration:(NSDictionary *)configuration
+{
+ _websiteDataStore-bsiteDataStore().setProxyConfiguration((CFDictionaryRef)configuration);
+}
+
+- (NSDictionary *)_proxyConfiguration
+{
+ return (NSDictionary *)_websiteDataStore->websiteDataStore().proxyConfiguration();
+}
+
- (void)_resourceLoadStatisticsSetShouldSubmitTelemetry:(BOOL)value
{
auto* store = _websiteDataStore->websiteDataStore().resourceLoadStatistics();
Modified: branches/safari-605-branch/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h (232417 => 232418)
--- branches/safari-605-branch/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h 2018-06-01 21:28:40 UTC (rev 232417)
+++ branches/safari-605-branch/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h 2018-06-01 21:40:58 UTC (rev 232418)
@@ -51,6 +51,7 @@
@property (nonatomic, setter=_setBoundInterfaceIdentifier:) NSString *_boundInterfaceIdentifier WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
@property (nonatomic, setter=_setAllowsCellularAccess:) BOOL _allowsCellularAccess WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
+@property (nonatomic, setter=_setProxyConfiguration:) NSDictionary *_proxyConfiguration WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
// ResourceLoadStatistics SPI for testing.
- (void)_resourceLoadStatisticsSetLastSeen:(double)seconds forHost:(NSString *)host WK_API_AVAILABLE(macosx(10.13), ios(11.0));
Modified: branches/safari-605-branch/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm (232417 => 232418)
--- branches/safari-605-branch/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm 2018-06-01 21:28:40 UTC (rev 232417)
+++ branches/safari-605-branch/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm 2018-06-01 21:40:58 UTC (rev 232418)
@@ -55,7 +55,7 @@
resolveDirectoriesIfNecessary();
WebsiteDataStoreParameters parameters;
- parameters.networkSessionParameters = { m_sessionID, nullptr, m_boundInterfaceIdentifier, m_allowsCellularAccess };
+ parameters.networkSessionParameters = { m_sessionID, nullptr, m_boundInterfaceIdentifier, m_allowsCellularAccess, m_proxyConfiguration };
auto cookieFile = resolvedCookieStorageFile();
Modified: branches/safari-605-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h (232417 => 232418)
--- branches/safari-605-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h 2018-06-01 21:28:40 UTC (rev 232417)
+++ branches/safari-605-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h 2018-06-01 21:40:58 UTC (rev 232418)
@@ -159,6 +159,10 @@
void setAllowsCellularAccess(AllowsCellularAccess allows) { m_allowsCellularAccess = allows; }
AllowsCellularAccess allowsCellularAccess() { return m_allowsCellularAccess; }
+#if PLATFORM(COCOA)
+ void setProxyConfiguration(CFDictionaryRef configuration) { m_proxyConfiguration = figuration; }
+ CFDictionaryRef proxyConfiguration() { return m_proxyConfiguration.get(); }
+#endif
static void allowWebsiteDataRecordsForAllOrigins();
private:
@@ -205,6 +209,7 @@
#if PLATFORM(COCOA)
Vector<uint8_t> m_uiProcessCookieStorageIdentifier;
RetainPtr<CFHTTPCookieStorageRef> m_cfCookieStorage;
+ RetainPtr<CFDictionaryRef> m_proxyConfiguration;
#endif
HashSet<WebCore::Cookie> m_pendingCookies;