WebKit Bugzilla
Attachment 356623 Details for
Bug 192374
: Enable HTTP and HTTPS proxies on iOS and make it a property of the NSURLSession
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-192374-20181205111127.patch (text/plain), 17.45 KB, created by
Alex Christensen
on 2018-12-05 11:11:28 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Alex Christensen
Created:
2018-12-05 11:11:28 PST
Size:
17.45 KB
patch
obsolete
>Index: Source/WebCore/PAL/ChangeLog >=================================================================== >--- Source/WebCore/PAL/ChangeLog (revision 238900) >+++ Source/WebCore/PAL/ChangeLog (working copy) >@@ -1,3 +1,13 @@ >+2018-12-05 Alex Christensen <achristensen@webkit.org> >+ >+ Enable SOCKS proxies on iOS >+ https://bugs.webkit.org/show_bug.cgi?id=192374 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * pal/spi/cf/CFNetworkSPI.h: >+ Remove now unused SPI. >+ > 2018-12-02 Zalan Bujtas <zalan@apple.com> > > Add a runtime feature flag for LayoutFormattingContext. >Index: Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h >=================================================================== >--- Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h (revision 238899) >+++ Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h (working copy) >@@ -265,7 +265,6 @@ typedef void (*CFHTTPCookieStorageChange > void CFHTTPCookieStorageAddObserver(CFHTTPCookieStorageRef, CFRunLoopRef, CFStringRef, CFHTTPCookieStorageChangedProcPtr, void*); > void CFHTTPCookieStorageRemoveObserver(CFHTTPCookieStorageRef, CFRunLoopRef, CFStringRef, CFHTTPCookieStorageChangedProcPtr, void*); > >-void _CFNetworkSetOverrideSystemProxySettings(CFDictionaryRef); > CFURLCredentialStorageRef CFURLCredentialStorageCreate(CFAllocatorRef); > CFURLCredentialRef CFURLCredentialStorageCopyDefaultCredentialForProtectionSpace(CFURLCredentialStorageRef, CFURLProtectionSpaceRef); > CFURLRequestPriority CFURLRequestGetRequestPriority(CFURLRequestRef); >Index: Source/WebKit/ChangeLog >=================================================================== >--- Source/WebKit/ChangeLog (revision 238900) >+++ Source/WebKit/ChangeLog (working copy) >@@ -1,3 +1,36 @@ >+2018-12-05 Alex Christensen <achristensen@webkit.org> >+ >+ Enable SOCKS proxies on iOS >+ https://bugs.webkit.org/show_bug.cgi?id=192374 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * NetworkProcess/NetworkProcessCreationParameters.cpp: >+ (WebKit::NetworkProcessCreationParameters::encode const): >+ (WebKit::NetworkProcessCreationParameters::decode): >+ * NetworkProcess/NetworkProcessCreationParameters.h: >+ * NetworkProcess/NetworkSessionCreationParameters.cpp: >+ (WebKit::NetworkSessionCreationParameters::privateSessionParameters): >+ (WebKit::NetworkSessionCreationParameters::encode const): >+ (WebKit::NetworkSessionCreationParameters::decode): >+ * NetworkProcess/NetworkSessionCreationParameters.h: >+ * NetworkProcess/cocoa/NetworkSessionCocoa.mm: >+ (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): >+ * NetworkProcess/mac/NetworkProcessMac.mm: >+ (WebKit::NetworkProcess::platformInitializeNetworkProcess): >+ (WebKit::overrideSystemProxies): Deleted. >+ * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: >+ (-[WKWebsiteDataStore _initWithConfiguration:]): >+ * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h: >+ * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm: >+ (-[_WKWebsiteDataStoreConfiguration socksProxy]): >+ (-[_WKWebsiteDataStoreConfiguration setSocksProxy:]): >+ * UIProcess/Cocoa/WebProcessPoolCocoa.mm: >+ (WebKit::WebProcessPool::platformInitializeNetworkProcess): >+ * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: >+ (WebKit::WebsiteDataStore::parameters): >+ * UIProcess/WebsiteData/WebsiteDataStore.h: >+ > 2018-12-05 Alex Christensen <achristensen@webkit.org> > > Make WebsiteDataStoreConfiguration a proper API object >Index: Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp >=================================================================== >--- Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp (revision 238899) >+++ Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp (working copy) >@@ -71,8 +71,6 @@ void NetworkProcessCreationParameters::e > #if PLATFORM(IOS_FAMILY) > encoder << ctDataConnectionServiceType; > #endif >- encoder << httpProxy; >- encoder << httpsProxy; > IPC::encode(encoder, networkATSContext.get()); > encoder << storageAccessAPIEnabled; > encoder << suppressesConnectionTerminationOnSystemChange; >@@ -181,10 +179,6 @@ bool NetworkProcessCreationParameters::d > if (!decoder.decode(result.ctDataConnectionServiceType)) > return false; > #endif >- if (!decoder.decode(result.httpProxy)) >- return false; >- if (!decoder.decode(result.httpsProxy)) >- return false; > if (!IPC::decode(decoder, result.networkATSContext)) > return false; > if (!decoder.decode(result.storageAccessAPIEnabled)) >Index: Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h >=================================================================== >--- Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h (revision 238899) >+++ Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h (working copy) >@@ -85,8 +85,6 @@ struct NetworkProcessCreationParameters > #if PLATFORM(IOS_FAMILY) > String ctDataConnectionServiceType; > #endif >- String httpProxy; >- String httpsProxy; > RetainPtr<CFDataRef> networkATSContext; > bool storageAccessAPIEnabled; > bool suppressesConnectionTerminationOnSystemChange; >Index: Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.cpp >=================================================================== >--- Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.cpp (revision 238899) >+++ Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.cpp (working copy) >@@ -42,7 +42,7 @@ NetworkSessionCreationParameters Network > { > return { sessionID, { }, AllowsCellularAccess::Yes > #if PLATFORM(COCOA) >- , { }, { }, { }, false, { } >+ , { }, { }, { }, false, { }, { } > #endif > #if USE(CURL) > , { } >@@ -61,6 +61,7 @@ void NetworkSessionCreationParameters::e > encoder << sourceApplicationSecondaryIdentifier; > encoder << shouldLogCookieInformation; > encoder << loadThrottleLatency; >+ encoder << socksProxy; > #endif > #if USE(CURL) > encoder << proxySettings; >@@ -107,6 +108,11 @@ std::optional<NetworkSessionCreationPara > decoder >> loadThrottleLatency; > if (!loadThrottleLatency) > return std::nullopt; >+ >+ std::optional<URL> socksProxy; >+ decoder >> socksProxy; >+ if (!socksProxy) >+ return std::nullopt; > #endif > > #if USE(CURL) >@@ -126,6 +132,7 @@ std::optional<NetworkSessionCreationPara > , WTFMove(*sourceApplicationSecondaryIdentifier) > , WTFMove(*shouldLogCookieInformation) > , WTFMove(*loadThrottleLatency) >+ , WTFMove(*socksProxy) > #endif > #if USE(CURL) > , WTFMove(*proxySettings) >Index: Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h >=================================================================== >--- Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h (revision 238899) >+++ Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h (working copy) >@@ -27,6 +27,7 @@ > > #include <pal/SessionID.h> > #include <wtf/Seconds.h> >+#include <wtf/URL.h> > #include <wtf/text/WTFString.h> > > #if USE(CURL) >@@ -56,6 +57,7 @@ struct NetworkSessionCreationParameters > String sourceApplicationSecondaryIdentifier; > bool shouldLogCookieInformation { false }; > Seconds loadThrottleLatency; >+ URL socksProxy; > #endif > #if USE(CURL) > WebCore::CurlProxySettings proxySettings; >Index: Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm >=================================================================== >--- Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm (revision 238899) >+++ Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm (working copy) >@@ -643,6 +643,15 @@ NetworkSessionCocoa::NetworkSessionCocoa > if (!parameters.sourceApplicationSecondaryIdentifier.isEmpty()) > configuration._sourceApplicationSecondaryIdentifier = parameters.sourceApplicationSecondaryIdentifier; > >+ if (parameters.socksProxy.isValid()) { >+ configuration.connectionProxyDictionary = @{ >+ (NSString *)kCFStreamPropertySOCKSProxy:@{ >+ (NSString *)kCFStreamPropertySOCKSProxyHost:parameters.socksProxy.host().toString(), >+ (NSString *)kCFStreamPropertySOCKSProxyPort:@(parameters.socksProxy.port().value_or(0)) >+ } >+ }; >+ } >+ > #if PLATFORM(IOS_FAMILY) > auto& ctDataConnectionServiceType = globalCTDataConnectionServiceType(); > if (!ctDataConnectionServiceType.isEmpty()) >Index: Source/WebKit/NetworkProcess/mac/NetworkProcessMac.mm >=================================================================== >--- Source/WebKit/NetworkProcess/mac/NetworkProcessMac.mm (revision 238899) >+++ Source/WebKit/NetworkProcess/mac/NetworkProcessMac.mm (working copy) >@@ -65,41 +65,6 @@ void NetworkProcess::initializeProcessNa > #endif > } > >-static void overrideSystemProxies(const String& httpProxy, const String& httpsProxy) >-{ >- NSMutableDictionary *proxySettings = [NSMutableDictionary dictionary]; >- >- if (!httpProxy.isNull()) { >- URL httpProxyURL(URL(), httpProxy); >- if (httpProxyURL.isValid()) { >- [proxySettings setObject:nsStringFromWebCoreString(httpProxyURL.host().toString()) forKey:(NSString *)kCFNetworkProxiesHTTPProxy]; >- if (httpProxyURL.port()) { >- NSNumber *port = [NSNumber numberWithInt:httpProxyURL.port().value()]; >- [proxySettings setObject:port forKey:(NSString *)kCFNetworkProxiesHTTPPort]; >- } >- } >- else >- NSLog(@"Malformed HTTP Proxy URL '%s'. Expected 'http://<hostname>[:<port>]'\n", httpProxy.utf8().data()); >- } >- >- if (!httpsProxy.isNull()) { >- URL httpsProxyURL(URL(), httpsProxy); >- if (httpsProxyURL.isValid()) { >-#if !PLATFORM(IOSMAC) >- [proxySettings setObject:nsStringFromWebCoreString(httpsProxyURL.host().toString()) forKey:(NSString *)kCFNetworkProxiesHTTPSProxy]; >- if (httpsProxyURL.port()) { >- NSNumber *port = [NSNumber numberWithInt:httpsProxyURL.port().value()]; >- [proxySettings setObject:port forKey:(NSString *)kCFNetworkProxiesHTTPSPort]; >- } >-#endif >- } else >- NSLog(@"Malformed HTTPS Proxy URL '%s'. Expected 'https://<hostname>[:<port>]'\n", httpsProxy.utf8().data()); >- } >- >- if ([proxySettings count] > 0) >- _CFNetworkSetOverrideSystemProxySettings((__bridge CFDictionaryRef)proxySettings); >-} >- > void NetworkProcess::platformInitializeNetworkProcess(const NetworkProcessCreationParameters& parameters) > { > platformInitializeNetworkProcessCocoa(parameters); >@@ -108,9 +73,6 @@ void NetworkProcess::platformInitializeN > // SecItemShim is needed for CFNetwork APIs that query Keychains beneath us. > initializeSecItemShim(*this); > #endif >- >- if (!parameters.httpProxy.isNull() || !parameters.httpsProxy.isNull()) >- overrideSystemProxies(parameters.httpProxy, parameters.httpsProxy); > } > > void NetworkProcess::allowSpecificHTTPSCertificateForHost(const CertificateInfo& certificateInfo, const String& host) >Index: Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm >=================================================================== >--- Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm (revision 238900) >+++ Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm (working copy) >@@ -214,6 +214,8 @@ - (instancetype)_initWithConfiguration:( > config->setSourceApplicationBundleIdentifier(configuration.sourceApplicationBundleIdentifier); > if (configuration.sourceApplicationSecondaryIdentifier) > config->setSourceApplicationSecondaryIdentifier(configuration.sourceApplicationSecondaryIdentifier); >+ if (configuration.socksProxy) >+ config->setSocksProxy(configuration.socksProxy); > > API::Object::constructInWrapper<API::WebsiteDataStore>(self, WTFMove(config), PAL::SessionID::generatePersistentSessionID()); > >Index: Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h >=================================================================== >--- Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h (revision 238899) >+++ Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h (working copy) >@@ -43,6 +43,7 @@ WK_CLASS_AVAILABLE(macosx(10.13), ios(11 > @property (nonatomic, copy, setter=_setServiceWorkerRegistrationDirectory:) NSURL *_serviceWorkerRegistrationDirectory WK_API_AVAILABLE(macosx(10.13.4), ios(11.3)); > @property (nonatomic, nullable, copy) NSString *sourceApplicationBundleIdentifier WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA)); > @property (nonatomic, nullable, copy) NSString *sourceApplicationSecondaryIdentifier WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA)); >+@property (nonatomic, nullable, copy) NSURL *socksProxy WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA)); > > @end > >Index: Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm >=================================================================== >--- Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm (revision 238900) >+++ Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm (working copy) >@@ -71,6 +71,16 @@ - (void)_setWebSQLDatabaseDirectory:(NSU > _configuration->setWebSQLDatabaseDirectory(url.path); > } > >+- (NSURL *)socksProxy >+{ >+ return _configuration->socksProxy(); >+} >+ >+- (void)setSocksProxy:(NSURL *)proxy >+{ >+ _configuration->setSocksProxy(proxy); >+} >+ > - (NSURL *)_cookieStorageFile > { > return [NSURL fileURLWithPath:_configuration->cookieStorageFile() isDirectory:NO]; >Index: Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm >=================================================================== >--- Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm (revision 238899) >+++ Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm (working copy) >@@ -69,9 +69,6 @@ NSString *WebKitJSCFTLJITEnabledDefaults > static NSString *WebKitApplicationDidChangeAccessibilityEnhancedUserInterfaceNotification = @"NSApplicationDidChangeAccessibilityEnhancedUserInterfaceNotification"; > #endif > >-static NSString * const WebKit2HTTPProxyDefaultsKey = @"WebKit2HTTPProxy"; >-static NSString * const WebKit2HTTPSProxyDefaultsKey = @"WebKit2HTTPSProxy"; >- > static NSString * const WebKitNetworkCacheEfficacyLoggingEnabledDefaultsKey = @"WebKitNetworkCacheEfficacyLoggingEnabled"; > > static NSString * const WebKitSuppressMemoryPressureHandlerDefaultsKey = @"WebKitSuppressMemoryPressureHandler"; >@@ -259,8 +256,6 @@ void WebProcessPool::platformInitializeN > > NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; > >- parameters.httpProxy = [defaults stringForKey:WebKit2HTTPProxyDefaultsKey]; >- parameters.httpsProxy = [defaults stringForKey:WebKit2HTTPSProxyDefaultsKey]; > parameters.networkATSContext = adoptCF(_CFNetworkCopyATSContext()); > > parameters.shouldEnableNetworkCacheEfficacyLogging = [defaults boolForKey:WebKitNetworkCacheEfficacyLoggingEnabledDefaultsKey]; >Index: Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp >=================================================================== >--- Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp (revision 238900) >+++ Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp (working copy) >@@ -55,6 +55,7 @@ Ref<WebsiteDataStoreConfiguration> Websi > copy->m_cookieStorageFile = this->m_cookieStorageFile; > copy->m_sourceApplicationBundleIdentifier = this->m_sourceApplicationBundleIdentifier; > copy->m_sourceApplicationSecondaryIdentifier = this->m_sourceApplicationSecondaryIdentifier; >+ copy->m_socksProxy = this->m_socksProxy; > > return copy; > } >Index: Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h >=================================================================== >--- Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h (revision 238900) >+++ Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h (working copy) >@@ -26,6 +26,7 @@ > #pragma once > > #include "APIObject.h" >+#include <wtf/URL.h> > #include <wtf/text/WTFString.h> > > namespace WebKit { >@@ -87,6 +88,9 @@ public: > const String& sourceApplicationSecondaryIdentifier() const { return m_sourceApplicationSecondaryIdentifier; } > void setSourceApplicationSecondaryIdentifier(String&& identifier) { m_sourceApplicationSecondaryIdentifier = WTFMove(identifier); } > >+ const URL& socksProxy() const { return m_socksProxy; } >+ void setSocksProxy(URL&& proxy) { m_socksProxy = WTFMove(proxy); } >+ > constexpr static uint64_t defaultCacheStoragePerOriginQuota = 50 * 1024 * 1024; > > private: >@@ -110,6 +114,7 @@ private: > String m_cookieStorageFile; > String m_sourceApplicationBundleIdentifier; > String m_sourceApplicationSecondaryIdentifier; >+ URL m_socksProxy; > }; > > } >Index: Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm >=================================================================== >--- Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm (revision 238900) >+++ Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm (working copy) >@@ -76,7 +76,8 @@ WebsiteDataStoreParameters WebsiteDataSt > m_configuration->sourceApplicationBundleIdentifier(), > m_configuration->sourceApplicationSecondaryIdentifier(), > shouldLogCookieInformation, >- Seconds { [defaults integerForKey:WebKitNetworkLoadThrottleLatencyMillisecondsDefaultsKey] / 1000. } >+ Seconds { [defaults integerForKey:WebKitNetworkLoadThrottleLatencyMillisecondsDefaultsKey] / 1000. }, >+ m_configuration->socksProxy(), > }; > > auto cookieFile = resolvedCookieStorageFile();
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 192374
:
356565
|
356583
|
356586
|
356623
|
356712
|
356713
|
356714
|
356739
|
356931
|
357506