am 8b81a638: Merge "getProxy in ConnectivityService returns port w/PAC" into klp-dev
* commit '8b81a63810ee2eb03c5c7bb389604fdd2dd44aa3': getProxy in ConnectivityService returns port w/PAC
This commit is contained in:
@@ -178,7 +178,7 @@ public class ProxyProperties implements Parcelable {
|
|||||||
// If PAC URL is present in either then they must be equal.
|
// If PAC URL is present in either then they must be equal.
|
||||||
// Other parameters will only be for fall back.
|
// Other parameters will only be for fall back.
|
||||||
if (!TextUtils.isEmpty(mPacFileUrl)) {
|
if (!TextUtils.isEmpty(mPacFileUrl)) {
|
||||||
return mPacFileUrl.equals(p.getPacFileUrl());
|
return mPacFileUrl.equals(p.getPacFileUrl()) && mPort == p.mPort;
|
||||||
}
|
}
|
||||||
if (!TextUtils.isEmpty(p.getPacFileUrl())) {
|
if (!TextUtils.isEmpty(p.getPacFileUrl())) {
|
||||||
return false;
|
return false;
|
||||||
@@ -219,6 +219,7 @@ public class ProxyProperties implements Parcelable {
|
|||||||
if (mPacFileUrl != null) {
|
if (mPacFileUrl != null) {
|
||||||
dest.writeByte((byte)1);
|
dest.writeByte((byte)1);
|
||||||
dest.writeString(mPacFileUrl);
|
dest.writeString(mPacFileUrl);
|
||||||
|
dest.writeInt(mPort);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
dest.writeByte((byte)0);
|
dest.writeByte((byte)0);
|
||||||
@@ -244,7 +245,9 @@ public class ProxyProperties implements Parcelable {
|
|||||||
String host = null;
|
String host = null;
|
||||||
int port = 0;
|
int port = 0;
|
||||||
if (in.readByte() != 0) {
|
if (in.readByte() != 0) {
|
||||||
return new ProxyProperties(in.readString());
|
String url = in.readString();
|
||||||
|
int localPort = in.readInt();
|
||||||
|
return new ProxyProperties(url, localPort);
|
||||||
}
|
}
|
||||||
if (in.readByte() != 0) {
|
if (in.readByte() != 0) {
|
||||||
host = in.readString();
|
host = in.readString();
|
||||||
|
|||||||
@@ -353,6 +353,11 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
*/
|
*/
|
||||||
private static final int EVENT_SAMPLE_INTERVAL_ELAPSED = 15;
|
private static final int EVENT_SAMPLE_INTERVAL_ELAPSED = 15;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PAC manager has received new port.
|
||||||
|
*/
|
||||||
|
private static final int EVENT_PROXY_HAS_CHANGED = 16;
|
||||||
|
|
||||||
/** Handler used for internal events. */
|
/** Handler used for internal events. */
|
||||||
private InternalHandler mHandler;
|
private InternalHandler mHandler;
|
||||||
/** Handler used for incoming {@link NetworkStateTracker} events. */
|
/** Handler used for incoming {@link NetworkStateTracker} events. */
|
||||||
@@ -679,7 +684,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
},
|
},
|
||||||
new IntentFilter(filter));
|
new IntentFilter(filter));
|
||||||
|
|
||||||
mPacManager = new PacManager(mContext);
|
mPacManager = new PacManager(mContext, mHandler, EVENT_PROXY_HAS_CHANGED);
|
||||||
|
|
||||||
filter = new IntentFilter();
|
filter = new IntentFilter();
|
||||||
filter.addAction(CONNECTED_TO_PROVISIONING_NETWORK_ACTION);
|
filter.addAction(CONNECTED_TO_PROVISIONING_NETWORK_ACTION);
|
||||||
@@ -3124,6 +3129,10 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
handleNetworkSamplingTimeout();
|
handleNetworkSamplingTimeout();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case EVENT_PROXY_HAS_CHANGED: {
|
||||||
|
handleApplyDefaultProxy((ProxyProperties)msg.obj);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import android.content.ServiceConnection;
|
|||||||
import android.net.Proxy;
|
import android.net.Proxy;
|
||||||
import android.net.ProxyProperties;
|
import android.net.ProxyProperties;
|
||||||
import android.os.Binder;
|
import android.os.Binder;
|
||||||
|
import android.os.Handler;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.os.RemoteException;
|
import android.os.RemoteException;
|
||||||
import android.os.ServiceManager;
|
import android.os.ServiceManager;
|
||||||
@@ -89,6 +90,9 @@ public class PacManager {
|
|||||||
private boolean mHasSentBroadcast;
|
private boolean mHasSentBroadcast;
|
||||||
private boolean mHasDownloaded;
|
private boolean mHasDownloaded;
|
||||||
|
|
||||||
|
private Handler mConnectivityHandler;
|
||||||
|
private int mProxyMessage;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used for locking when setting mProxyService and all references to mPacUrl or mCurrentPac.
|
* Used for locking when setting mProxyService and all references to mPacUrl or mCurrentPac.
|
||||||
*/
|
*/
|
||||||
@@ -128,7 +132,7 @@ public class PacManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public PacManager(Context context) {
|
public PacManager(Context context, Handler handler, int proxyMessage) {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mLastPort = -1;
|
mLastPort = -1;
|
||||||
|
|
||||||
@@ -136,6 +140,8 @@ public class PacManager {
|
|||||||
context, 0, new Intent(ACTION_PAC_REFRESH), 0);
|
context, 0, new Intent(ACTION_PAC_REFRESH), 0);
|
||||||
context.registerReceiver(new PacRefreshIntentReceiver(),
|
context.registerReceiver(new PacRefreshIntentReceiver(),
|
||||||
new IntentFilter(ACTION_PAC_REFRESH));
|
new IntentFilter(ACTION_PAC_REFRESH));
|
||||||
|
mConnectivityHandler = handler;
|
||||||
|
mProxyMessage = proxyMessage;
|
||||||
}
|
}
|
||||||
|
|
||||||
private AlarmManager getAlarmManager() {
|
private AlarmManager getAlarmManager() {
|
||||||
@@ -156,6 +162,10 @@ public class PacManager {
|
|||||||
*/
|
*/
|
||||||
public synchronized boolean setCurrentProxyScriptUrl(ProxyProperties proxy) {
|
public synchronized boolean setCurrentProxyScriptUrl(ProxyProperties proxy) {
|
||||||
if (!TextUtils.isEmpty(proxy.getPacFileUrl())) {
|
if (!TextUtils.isEmpty(proxy.getPacFileUrl())) {
|
||||||
|
if (proxy.getPacFileUrl().equals(mPacUrl)) {
|
||||||
|
// Allow to send broadcast, nothing to do.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
synchronized (mProxyLock) {
|
synchronized (mProxyLock) {
|
||||||
mPacUrl = proxy.getPacFileUrl();
|
mPacUrl = proxy.getPacFileUrl();
|
||||||
}
|
}
|
||||||
@@ -356,16 +366,7 @@ public class PacManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void sendPacBroadcast(ProxyProperties proxy) {
|
private void sendPacBroadcast(ProxyProperties proxy) {
|
||||||
Intent intent = new Intent(Proxy.PROXY_CHANGE_ACTION);
|
mConnectivityHandler.sendMessage(mConnectivityHandler.obtainMessage(mProxyMessage, proxy));
|
||||||
intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING |
|
|
||||||
Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
|
|
||||||
intent.putExtra(Proxy.EXTRA_PROXY_INFO, proxy);
|
|
||||||
final long ident = Binder.clearCallingIdentity();
|
|
||||||
try {
|
|
||||||
mContext.sendStickyBroadcastAsUser(intent, UserHandle.ALL);
|
|
||||||
} finally {
|
|
||||||
Binder.restoreCallingIdentity(ident);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private synchronized void sendProxyIfNeeded() {
|
private synchronized void sendProxyIfNeeded() {
|
||||||
|
|||||||
Reference in New Issue
Block a user