Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 83520b95 authored by Jason Monk's avatar Jason Monk
Browse files

Switch PacUrl storage from String to Uri

Since the interface for creating/accessing PAC URLs through a
ProxyInfo is Uri based, so should the internal storage and
references.

Change-Id: Ibf15c350f4cc526f81aba3ec463070f26af8f535
parent a9c47626
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ import android.hardware.display.DisplayManagerGlobal;
import android.net.IConnectivityManager;
import android.net.Proxy;
import android.net.ProxyInfo;
import android.net.Uri;
import android.opengl.GLUtils;
import android.os.AsyncTask;
import android.os.Binder;
@@ -839,7 +840,7 @@ public final class ActivityThread {
            InetAddress.clearDnsCache();
        }

        public void setHttpProxy(String host, String port, String exclList, String pacFileUrl) {
        public void setHttpProxy(String host, String port, String exclList, Uri pacFileUrl) {
            Proxy.setHttpProxySystemProperty(host, port, exclList, pacFileUrl);
        }

+4 −3
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.content.pm.ProviderInfo;
import android.content.pm.ServiceInfo;
import android.content.res.CompatibilityInfo;
import android.content.res.Configuration;
import android.net.Uri;
import android.os.Binder;
import android.os.Bundle;
import android.os.Debug;
@@ -339,7 +340,7 @@ public abstract class ApplicationThreadNative extends Binder
            final String proxy = data.readString();
            final String port = data.readString();
            final String exclList = data.readString();
            final String pacFileUrl = data.readString();
            final Uri pacFileUrl = Uri.CREATOR.createFromParcel(data);
            setHttpProxy(proxy, port, exclList, pacFileUrl);
            return true;
        }
@@ -1008,13 +1009,13 @@ class ApplicationThreadProxy implements IApplicationThread {
    }

    public void setHttpProxy(String proxy, String port, String exclList,
            String pacFileUrl) throws RemoteException {
            Uri pacFileUrl) throws RemoteException {
        Parcel data = Parcel.obtain();
        data.writeInterfaceToken(IApplicationThread.descriptor);
        data.writeString(proxy);
        data.writeString(port);
        data.writeString(exclList);
        data.writeString(pacFileUrl);
        pacFileUrl.writeToParcel(data, 0);
        mRemote.transact(SET_HTTP_PROXY_TRANSACTION, data, null, IBinder.FLAG_ONEWAY);
        data.recycle();
    }
+2 −1
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.content.pm.ProviderInfo;
import android.content.pm.ServiceInfo;
import android.content.res.CompatibilityInfo;
import android.content.res.Configuration;
import android.net.Uri;
import android.os.Bundle;
import android.os.Debug;
import android.os.ParcelFileDescriptor;
@@ -106,7 +107,7 @@ public interface IApplicationThread extends IInterface {
    void updateTimeZone() throws RemoteException;
    void clearDnsCache() throws RemoteException;
    void setHttpProxy(String proxy, String port, String exclList,
            String pacFileUrl) throws RemoteException;
            Uri pacFileUrl) throws RemoteException;
    void processInBackground() throws RemoteException;
    void dumpService(FileDescriptor fd, IBinder servicetoken, String[] args)
            throws RemoteException;
+4 −6
Original line number Diff line number Diff line
@@ -273,21 +273,19 @@ public final class Proxy {
        String host = null;
        String port = null;
        String exclList = null;
        String pacFileUrl = null;
        Uri pacFileUrl = Uri.EMPTY;
        if (p != null) {
            host = p.getHost();
            port = Integer.toString(p.getPort());
            exclList = p.getExclusionListAsString();
            if (p.getPacFileUrl() != null) {
                pacFileUrl = p.getPacFileUrl().toString();
            }
            pacFileUrl = p.getPacFileUrl();
        }
        setHttpProxySystemProperty(host, port, exclList, pacFileUrl);
    }

    /** @hide */
    public static final void setHttpProxySystemProperty(String host, String port, String exclList,
            String pacFileUrl) {
            Uri pacFileUrl) {
        if (exclList != null) exclList = exclList.replace(",", "|");
        if (false) Log.d(TAG, "setHttpProxySystemProperty :"+host+":"+port+" - "+exclList);
        if (host != null) {
@@ -311,7 +309,7 @@ public final class Proxy {
            System.clearProperty("http.nonProxyHosts");
            System.clearProperty("https.nonProxyHosts");
        }
        if (!TextUtils.isEmpty(pacFileUrl)) {
        if (!Uri.EMPTY.equals(pacFileUrl)) {
            ProxySelector.setDefault(new PacProxySelector());
        } else {
            ProxySelector.setDefault(sDefaultProxySelector);
+37 −17
Original line number Diff line number Diff line
@@ -44,7 +44,7 @@ public class ProxyInfo implements Parcelable {
    private String mExclusionList;
    private String[] mParsedExclusionList;

    private String mPacFileUrl;
    private Uri mPacFileUrl;
    /**
     *@hide
     */
@@ -85,7 +85,7 @@ public class ProxyInfo implements Parcelable {
     * at the specified URL.
     */
    public static ProxyInfo buildPacProxy(Uri pacUri) {
        return new ProxyInfo(pacUri.toString());
        return new ProxyInfo(pacUri);
    }

    /**
@@ -96,27 +96,45 @@ public class ProxyInfo implements Parcelable {
        mHost = host;
        mPort = port;
        setExclusionList(exclList);
        mPacFileUrl = Uri.EMPTY;
    }

    /**
     * Create a ProxyProperties that points at a PAC URL.
     * @hide
     */
    public ProxyInfo(String pacFileUrl) {
    public ProxyInfo(Uri pacFileUrl) {
        mHost = LOCAL_HOST;
        mPort = LOCAL_PORT;
        setExclusionList(LOCAL_EXCL_LIST);
        if (pacFileUrl == null) {
            throw new NullPointerException();
        }
        mPacFileUrl = pacFileUrl;
    }

    /**
     * Create a ProxyProperties that points at a PAC URL.
     * @hide
     */
    public ProxyInfo(String pacFileUrl) {
        mHost = LOCAL_HOST;
        mPort = LOCAL_PORT;
        setExclusionList(LOCAL_EXCL_LIST);
        mPacFileUrl = Uri.parse(pacFileUrl);
    }

    /**
     * Only used in PacManager after Local Proxy is bound.
     * @hide
     */
    public ProxyInfo(String pacFileUrl, int localProxyPort) {
    public ProxyInfo(Uri pacFileUrl, int localProxyPort) {
        mHost = LOCAL_HOST;
        mPort = localProxyPort;
        setExclusionList(LOCAL_EXCL_LIST);
        if (pacFileUrl == null) {
            throw new NullPointerException();
        }
        mPacFileUrl = pacFileUrl;
    }

@@ -125,7 +143,7 @@ public class ProxyInfo implements Parcelable {
        mPort = port;
        mExclusionList = exclList;
        mParsedExclusionList = parsedExclList;
        mPacFileUrl = null;
        mPacFileUrl = Uri.EMPTY;
    }

    // copy constructor instead of clone
@@ -137,6 +155,9 @@ public class ProxyInfo implements Parcelable {
            mHost = source.getHost();
            mPort = source.getPort();
            mPacFileUrl = source.mPacFileUrl;
            if (mPacFileUrl == null) {
                mPacFileUrl = Uri.EMPTY;
            }
            mExclusionList = source.getExclusionListAsString();
            mParsedExclusionList = source.mParsedExclusionList;
        }
@@ -158,10 +179,7 @@ public class ProxyInfo implements Parcelable {
     * no PAC script.
     */
    public Uri getPacFileUrl() {
        if (TextUtils.isEmpty(mPacFileUrl)) {
            return null;
        }
        return Uri.parse(mPacFileUrl);
        return mPacFileUrl;
    }

    /**
@@ -210,7 +228,7 @@ public class ProxyInfo implements Parcelable {
     * @hide
     */
    public boolean isValid() {
        if (!TextUtils.isEmpty(mPacFileUrl)) return true;
        if (!Uri.EMPTY.equals(mPacFileUrl)) return true;
        return Proxy.PROXY_VALID == Proxy.validate(mHost == null ? "" : mHost,
                                                mPort == 0 ? "" : Integer.toString(mPort),
                                                mExclusionList == null ? "" : mExclusionList);
@@ -234,7 +252,7 @@ public class ProxyInfo implements Parcelable {
    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        if (mPacFileUrl != null) {
        if (!Uri.EMPTY.equals(mPacFileUrl)) {
            sb.append("PAC Script: ");
            sb.append(mPacFileUrl);
        } else if (mHost != null) {
@@ -257,13 +275,15 @@ public class ProxyInfo implements Parcelable {
        ProxyInfo p = (ProxyInfo)o;
        // If PAC URL is present in either then they must be equal.
        // Other parameters will only be for fall back.
        if (!TextUtils.isEmpty(mPacFileUrl)) {
        if (!Uri.EMPTY.equals(mPacFileUrl)) {
            return mPacFileUrl.equals(p.getPacFileUrl()) && mPort == p.mPort;
        }
        if (!TextUtils.isEmpty(p.mPacFileUrl)) {
        if (!Uri.EMPTY.equals(p.mPacFileUrl)) {
            return false;
        }
        if (mExclusionList != null && !mExclusionList.equals(p.getExclusionListAsString())) {
            return false;
        }
        if (mExclusionList != null && !mExclusionList.equals(p.getExclusionListAsString())) return false;
        if (mHost != null && p.getHost() != null && mHost.equals(p.getHost()) == false) {
            return false;
        }
@@ -296,9 +316,9 @@ public class ProxyInfo implements Parcelable {
     * @hide
     */
    public void writeToParcel(Parcel dest, int flags) {
        if (mPacFileUrl != null) {
        if (!Uri.EMPTY.equals(mPacFileUrl)) {
            dest.writeByte((byte)1);
            dest.writeString(mPacFileUrl);
            mPacFileUrl.writeToParcel(dest, 0);
            dest.writeInt(mPort);
            return;
        } else {
@@ -325,7 +345,7 @@ public class ProxyInfo implements Parcelable {
                String host = null;
                int port = 0;
                if (in.readByte() != 0) {
                    String url = in.readString();
                    Uri url = Uri.CREATOR.createFromParcel(in);
                    int localPort = in.readInt();
                    return new ProxyInfo(url, localPort);
                }
Loading