[PT09] Add javadoc comments to all ProxyTracker methods/members.
Also rename some vars and inline a function that is now private. Test: runtest Change-Id: I4b1bca8b29f46d97056973cd38ed8effc3f5b591
This commit is contained in:
@@ -51,15 +51,25 @@ public class ProxyTracker {
|
|||||||
// possible
|
// possible
|
||||||
@NonNull
|
@NonNull
|
||||||
public final Object mProxyLock = new Object();
|
public final Object mProxyLock = new Object();
|
||||||
|
// The global proxy is the proxy that is set device-wide, overriding any network-specific
|
||||||
|
// proxy. Note however that proxies are hints ; the system does not enforce their use. Hence
|
||||||
|
// this value is only for querying.
|
||||||
@Nullable
|
@Nullable
|
||||||
@GuardedBy("mProxyLock")
|
@GuardedBy("mProxyLock")
|
||||||
public ProxyInfo mGlobalProxy = null;
|
public ProxyInfo mGlobalProxy = null;
|
||||||
|
// The default proxy is the proxy that applies to no particular network if the global proxy
|
||||||
|
// is not set. Individual networks have their own settings that override this. This member
|
||||||
|
// is set through setDefaultProxy, which is called when the default network changes proxies
|
||||||
|
// in its LinkProperties, or when ConnectivityService switches to a new default network, or
|
||||||
|
// when PacManager resolves the proxy.
|
||||||
@Nullable
|
@Nullable
|
||||||
@GuardedBy("mProxyLock")
|
@GuardedBy("mProxyLock")
|
||||||
public volatile ProxyInfo mDefaultProxy = null;
|
public volatile ProxyInfo mDefaultProxy = null;
|
||||||
|
// Whether the default proxy is disabled. TODO : make this mDefaultProxyEnabled
|
||||||
@GuardedBy("mProxyLock")
|
@GuardedBy("mProxyLock")
|
||||||
public boolean mDefaultProxyDisabled = false;
|
public boolean mDefaultProxyDisabled = false;
|
||||||
|
|
||||||
|
// The object responsible for Proxy Auto Configuration (PAC).
|
||||||
@NonNull
|
@NonNull
|
||||||
private final PacManager mPacManager;
|
private final PacManager mPacManager;
|
||||||
|
|
||||||
@@ -98,6 +108,16 @@ public class ProxyTracker {
|
|||||||
return Objects.equals(pa, pb) && (pa == null || Objects.equals(pa.getHost(), pb.getHost()));
|
return Objects.equals(pa, pb) && (pa == null || Objects.equals(pa.getHost(), pb.getHost()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the default system-wide proxy.
|
||||||
|
*
|
||||||
|
* This will return the global proxy if set, otherwise the default proxy if in use. Note
|
||||||
|
* that this is not necessarily the proxy that any given process should use, as the right
|
||||||
|
* proxy for a process is the proxy for the network this process will use, which may be
|
||||||
|
* different from this value. This value is simply the default in case there is no proxy set
|
||||||
|
* in the network that will be used by a specific process.
|
||||||
|
* @return The default system-wide proxy or null if none.
|
||||||
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
public ProxyInfo getDefaultProxy() {
|
public ProxyInfo getDefaultProxy() {
|
||||||
// This information is already available as a world read/writable jvm property.
|
// This information is already available as a world read/writable jvm property.
|
||||||
@@ -108,6 +128,11 @@ public class ProxyTracker {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the global proxy.
|
||||||
|
*
|
||||||
|
* @return The global proxy or null if none.
|
||||||
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
public ProxyInfo getGlobalProxy() {
|
public ProxyInfo getGlobalProxy() {
|
||||||
// This information is already available as a world read/writable jvm property.
|
// This information is already available as a world read/writable jvm property.
|
||||||
@@ -116,19 +141,22 @@ public class ProxyTracker {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean setCurrentProxyScriptUrl(@NonNull final ProxyInfo proxy) {
|
/**
|
||||||
return mPacManager.setCurrentProxyScriptUrl(proxy);
|
* Sends the system broadcast informing apps about a new proxy configuration.
|
||||||
}
|
*
|
||||||
|
* Confusingly this method also sets the PAC file URL. TODO : separate this, it has nothing
|
||||||
|
* to do in a "sendProxyBroadcast" method.
|
||||||
|
* @param proxyInfo the proxy spec, or null for no proxy.
|
||||||
|
*/
|
||||||
// TODO : make the argument NonNull final and the method private
|
// TODO : make the argument NonNull final and the method private
|
||||||
public void sendProxyBroadcast(@Nullable ProxyInfo proxy) {
|
public void sendProxyBroadcast(@Nullable ProxyInfo proxyInfo) {
|
||||||
if (proxy == null) proxy = new ProxyInfo("", 0, "");
|
if (proxyInfo == null) proxyInfo = new ProxyInfo("", 0, "");
|
||||||
if (setCurrentProxyScriptUrl(proxy)) return;
|
if (mPacManager.setCurrentProxyScriptUrl(proxyInfo)) return;
|
||||||
if (DBG) Slog.d(TAG, "sending Proxy Broadcast for " + proxy);
|
if (DBG) Slog.d(TAG, "sending Proxy Broadcast for " + proxyInfo);
|
||||||
Intent intent = new Intent(Proxy.PROXY_CHANGE_ACTION);
|
Intent intent = new Intent(Proxy.PROXY_CHANGE_ACTION);
|
||||||
intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING |
|
intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING |
|
||||||
Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
|
Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
|
||||||
intent.putExtra(Proxy.EXTRA_PROXY_INFO, proxy);
|
intent.putExtra(Proxy.EXTRA_PROXY_INFO, proxyInfo);
|
||||||
final long ident = Binder.clearCallingIdentity();
|
final long ident = Binder.clearCallingIdentity();
|
||||||
try {
|
try {
|
||||||
mContext.sendStickyBroadcastAsUser(intent, UserHandle.ALL);
|
mContext.sendStickyBroadcastAsUser(intent, UserHandle.ALL);
|
||||||
@@ -137,29 +165,34 @@ public class ProxyTracker {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setGlobalProxy(@Nullable ProxyInfo proxyProperties) {
|
/**
|
||||||
|
* Sets the global proxy in memory. Also writes the values to the global settings of the device.
|
||||||
|
*
|
||||||
|
* @param proxyInfo the proxy spec, or null for no proxy.
|
||||||
|
*/
|
||||||
|
public void setGlobalProxy(@Nullable ProxyInfo proxyInfo) {
|
||||||
synchronized (mProxyLock) {
|
synchronized (mProxyLock) {
|
||||||
// ProxyInfo#equals is not commutative :( and is public API, so it can't be fixed.
|
// ProxyInfo#equals is not commutative :( and is public API, so it can't be fixed.
|
||||||
if (proxyProperties == mGlobalProxy) return;
|
if (proxyInfo == mGlobalProxy) return;
|
||||||
if (proxyProperties != null && proxyProperties.equals(mGlobalProxy)) return;
|
if (proxyInfo != null && proxyInfo.equals(mGlobalProxy)) return;
|
||||||
if (mGlobalProxy != null && mGlobalProxy.equals(proxyProperties)) return;
|
if (mGlobalProxy != null && mGlobalProxy.equals(proxyInfo)) return;
|
||||||
|
|
||||||
final String host;
|
final String host;
|
||||||
final int port;
|
final int port;
|
||||||
final String exclList;
|
final String exclList;
|
||||||
final String pacFileUrl;
|
final String pacFileUrl;
|
||||||
if (proxyProperties != null && (!TextUtils.isEmpty(proxyProperties.getHost()) ||
|
if (proxyInfo != null && (!TextUtils.isEmpty(proxyInfo.getHost()) ||
|
||||||
!Uri.EMPTY.equals(proxyProperties.getPacFileUrl()))) {
|
!Uri.EMPTY.equals(proxyInfo.getPacFileUrl()))) {
|
||||||
if (!proxyProperties.isValid()) {
|
if (!proxyInfo.isValid()) {
|
||||||
if (DBG) Slog.d(TAG, "Invalid proxy properties, ignoring: " + proxyProperties);
|
if (DBG) Slog.d(TAG, "Invalid proxy properties, ignoring: " + proxyInfo);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mGlobalProxy = new ProxyInfo(proxyProperties);
|
mGlobalProxy = new ProxyInfo(proxyInfo);
|
||||||
host = mGlobalProxy.getHost();
|
host = mGlobalProxy.getHost();
|
||||||
port = mGlobalProxy.getPort();
|
port = mGlobalProxy.getPort();
|
||||||
exclList = mGlobalProxy.getExclusionListAsString();
|
exclList = mGlobalProxy.getExclusionListAsString();
|
||||||
pacFileUrl = Uri.EMPTY.equals(proxyProperties.getPacFileUrl())
|
pacFileUrl = Uri.EMPTY.equals(proxyInfo.getPacFileUrl())
|
||||||
? "" : proxyProperties.getPacFileUrl().toString();
|
? "" : proxyInfo.getPacFileUrl().toString();
|
||||||
} else {
|
} else {
|
||||||
host = "";
|
host = "";
|
||||||
port = 0;
|
port = 0;
|
||||||
@@ -179,18 +212,24 @@ public class ProxyTracker {
|
|||||||
Binder.restoreCallingIdentity(token);
|
Binder.restoreCallingIdentity(token);
|
||||||
}
|
}
|
||||||
|
|
||||||
sendProxyBroadcast(mGlobalProxy == null ? mDefaultProxy : proxyProperties);
|
sendProxyBroadcast(mGlobalProxy == null ? mDefaultProxy : proxyInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDefaultProxy(@Nullable ProxyInfo proxy) {
|
/**
|
||||||
|
* Sets the default proxy for the device.
|
||||||
|
*
|
||||||
|
* The default proxy is the proxy used for networks that do not have a specific proxy.
|
||||||
|
* @param proxyInfo the proxy spec, or null for no proxy.
|
||||||
|
*/
|
||||||
|
public void setDefaultProxy(@Nullable ProxyInfo proxyInfo) {
|
||||||
synchronized (mProxyLock) {
|
synchronized (mProxyLock) {
|
||||||
if (mDefaultProxy != null && mDefaultProxy.equals(proxy)) {
|
if (mDefaultProxy != null && mDefaultProxy.equals(proxyInfo)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (mDefaultProxy == proxy) return; // catches repeated nulls
|
if (mDefaultProxy == proxyInfo) return; // catches repeated nulls
|
||||||
if (proxy != null && !proxy.isValid()) {
|
if (proxyInfo != null && !proxyInfo.isValid()) {
|
||||||
if (DBG) Slog.d(TAG, "Invalid proxy properties, ignoring: " + proxy);
|
if (DBG) Slog.d(TAG, "Invalid proxy properties, ignoring: " + proxyInfo);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -199,18 +238,18 @@ public class ProxyTracker {
|
|||||||
// global (to get the correct local port), and send a broadcast.
|
// global (to get the correct local port), and send a broadcast.
|
||||||
// TODO: Switch PacManager to have its own message to send back rather than
|
// TODO: Switch PacManager to have its own message to send back rather than
|
||||||
// reusing EVENT_HAS_CHANGED_PROXY and this call to handleApplyDefaultProxy.
|
// reusing EVENT_HAS_CHANGED_PROXY and this call to handleApplyDefaultProxy.
|
||||||
if ((mGlobalProxy != null) && (proxy != null)
|
if ((mGlobalProxy != null) && (proxyInfo != null)
|
||||||
&& (!Uri.EMPTY.equals(proxy.getPacFileUrl()))
|
&& (!Uri.EMPTY.equals(proxyInfo.getPacFileUrl()))
|
||||||
&& proxy.getPacFileUrl().equals(mGlobalProxy.getPacFileUrl())) {
|
&& proxyInfo.getPacFileUrl().equals(mGlobalProxy.getPacFileUrl())) {
|
||||||
mGlobalProxy = proxy;
|
mGlobalProxy = proxyInfo;
|
||||||
sendProxyBroadcast(mGlobalProxy);
|
sendProxyBroadcast(mGlobalProxy);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mDefaultProxy = proxy;
|
mDefaultProxy = proxyInfo;
|
||||||
|
|
||||||
if (mGlobalProxy != null) return;
|
if (mGlobalProxy != null) return;
|
||||||
if (!mDefaultProxyDisabled) {
|
if (!mDefaultProxyDisabled) {
|
||||||
sendProxyBroadcast(proxy);
|
sendProxyBroadcast(proxyInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user