From cfae43ca6f649bfc6427b0132a9068ef6ded4e74 Mon Sep 17 00:00:00 2001 From: Omair Majid Date: Tue, 1 Oct 2013 23:43:31 -0400 Subject: Unit tests for BrowserAwareProxySelector Also move duplicate code for selecting a host and port depending on the protocol into JNLPProxySelector.getFromArguments. The semantics of 'sameProxy' are different between BrowserAwareProxySelector and JNLPProxySelector; the socks proxy is included in firefox. --- .../jnlp/runtime/JNLPProxySelector.java | 36 +++++++++++++++++++--- 1 file changed, 32 insertions(+), 4 deletions(-) (limited to 'netx/net/sourceforge/jnlp/runtime/JNLPProxySelector.java') diff --git a/netx/net/sourceforge/jnlp/runtime/JNLPProxySelector.java b/netx/net/sourceforge/jnlp/runtime/JNLPProxySelector.java index e92b2c9..4fb760a 100644 --- a/netx/net/sourceforge/jnlp/runtime/JNLPProxySelector.java +++ b/netx/net/sourceforge/jnlp/runtime/JNLPProxySelector.java @@ -288,15 +288,42 @@ public abstract class JNLPProxySelector extends ProxySelector { * @return a List of Proxy objects */ private List getFromConfiguration(URI uri) { + return getFromArguments(uri, sameProxy, false, + proxyHttpsHost, proxyHttpsPort, + proxyHttpHost, proxyHttpPort, + proxyFtpHost, proxyFtpPort, + proxySocks4Host, proxySocks4Port); + } + + /** + * Returns a list of proxies by using the arguments + * + * @return a List of Proxy objects + */ + protected static List getFromArguments(URI uri, + boolean sameProxy, boolean sameProxyIncludesSocket, + String proxyHttpsHost, int proxyHttpsPort, + String proxyHttpHost, int proxyHttpPort, + String proxyFtpHost, int proxyFtpPort, + String proxySocks4Host, int proxySocks4Port) { + List proxies = new ArrayList(); String scheme = uri.getScheme(); + boolean socksProxyAdded = false; + if (sameProxy) { - if (proxyHttpHost != null && (scheme.equals("https") || scheme.equals("http") || scheme.equals("ftp"))) { + if (proxyHttpHost != null) { SocketAddress sa = new InetSocketAddress(proxyHttpHost, proxyHttpPort); - Proxy proxy = new Proxy(Type.HTTP, sa); - proxies.add(proxy); + if ((scheme.equals("https") || scheme.equals("http") || scheme.equals("ftp"))) { + Proxy proxy = new Proxy(Type.HTTP, sa); + proxies.add(proxy); + } else if (scheme.equals("socket") && sameProxyIncludesSocket) { + Proxy proxy = new Proxy(Type.SOCKS, sa); + proxies.add(proxy); + socksProxyAdded = true; + } } } else if (scheme.equals("http") && proxyHttpHost != null) { SocketAddress sa = new InetSocketAddress(proxyHttpHost, proxyHttpPort); @@ -309,9 +336,10 @@ public abstract class JNLPProxySelector extends ProxySelector { proxies.add(new Proxy(Type.HTTP, sa)); } - if (proxySocks4Host != null) { + if (!socksProxyAdded && (proxySocks4Host != null)) { SocketAddress sa = new InetSocketAddress(proxySocks4Host, proxySocks4Port); proxies.add(new Proxy(Type.SOCKS, sa)); + socksProxyAdded = true; } if (proxies.size() == 0) { -- cgit v1.2.3