WebKit Bugzilla
Attachment 356583 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-20181204223220.patch (text/plain), 14.88 KB, created by
Alex Christensen
on 2018-12-04 22:32:21 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Alex Christensen
Created:
2018-12-04 22:32:21 PST
Size:
14.88 KB
patch
obsolete
>Index: Source/WebKit/ChangeLog >=================================================================== >--- Source/WebKit/ChangeLog (revision 238886) >+++ Source/WebKit/ChangeLog (working copy) >@@ -1,3 +1,36 @@ >+2018-12-04 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-04 Alex Christensen <achristensen@webkit.org> > > Remove source application identifiers from NetworkProcessCreationParameters >Index: Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp >=================================================================== >--- Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp (revision 238886) >+++ 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 238886) >+++ 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 238856) >+++ 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 238856) >+++ 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 238886) >+++ 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 238856) >+++ 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 238856) >+++ Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm (working copy) >@@ -214,6 +214,8 @@ - (instancetype)_initWithConfiguration:( > config.sourceApplicationBundleIdentifier = configuration.sourceApplicationBundleIdentifier; > if (configuration.sourceApplicationSecondaryIdentifier) > config.sourceApplicationSecondaryIdentifier = configuration.sourceApplicationSecondaryIdentifier; >+ if (configuration.socksProxy) >+ config.socksProxy = configuration.socksProxy; > > API::Object::constructInWrapper<API::WebsiteDataStore>(self, config, PAL::SessionID::generatePersistentSessionID()); > >Index: Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h >=================================================================== >--- Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h (revision 238856) >+++ 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 238856) >+++ Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm (working copy) >@@ -46,6 +46,7 @@ static void checkURLArgument(NSURL *url) > RetainPtr<NSURL> _serviceWorkerRegistrationDirectoryURL; > RetainPtr<NSString> _sourceApplicationBundleIdentifier; > RetainPtr<NSString> _sourceApplicationSecondaryIdentifier; >+ RetainPtr<NSURL> _socksProxy; > } > > - (NSURL *)_webStorageDirectory >@@ -81,6 +82,16 @@ - (void)_setWebSQLDatabaseDirectory:(NSU > _webSQLDatabaseDirectoryURL = adoptNS([url copy]); > } > >+- (NSURL *)socksProxy >+{ >+ return _socksProxy.get(); >+} >+ >+- (void)setSocksProxy:(NSURL *)proxy >+{ >+ _socksProxy = proxy; >+} >+ > - (NSURL *)_cookieStorageFile > { > return _cookieStorageFileURL.get(); >Index: Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm >=================================================================== >--- Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm (revision 238886) >+++ 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/WebsiteDataStore.h >=================================================================== >--- Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h (revision 238886) >+++ Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h (working copy) >@@ -101,6 +101,7 @@ public: > String cookieStorageFile; > String sourceApplicationBundleIdentifier; > String sourceApplicationSecondaryIdentifier; >+ URL socksProxy; > > explicit Configuration(); > }; >Index: Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm >=================================================================== >--- Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm (revision 238856) >+++ 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