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

Commit ef5d43a7 authored by Narayan Kamath's avatar Narayan Kamath Committed by Gerrit Code Review
Browse files

Merge "Revert "Revert "Remove unused apache related API."""

parents c8dce896 4b8f1846
Loading
Loading
Loading
Loading
+0 −77
Original line number Diff line number Diff line
@@ -22,18 +22,9 @@ import android.content.Context;
import android.text.TextUtils;
import android.util.Log;


import org.apache.http.HttpHost;
import org.apache.http.HttpRequest;
import org.apache.http.conn.routing.HttpRoute;
import org.apache.http.conn.routing.HttpRoutePlanner;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.protocol.HttpContext;

import java.net.InetSocketAddress;
import java.net.ProxySelector;
import java.net.URI;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

@@ -43,8 +34,6 @@ import java.util.regex.Pattern;
 */
public final class Proxy {

    // Set to true to enable extra debugging.
    private static final boolean DEBUG = false;
    private static final String TAG = "Proxy";

    private static final ProxySelector sDefaultProxySelector;
@@ -190,30 +179,6 @@ public final class Proxy {
        }
    }

    /**
     * Returns the preferred proxy to be used by clients. This is a wrapper
     * around {@link android.net.Proxy#getHost()}.
     *
     * @param context the context which will be passed to
     * {@link android.net.Proxy#getHost()}
     * @param url the target URL for the request
     * @note Calling this method requires permission
     * android.permission.ACCESS_NETWORK_STATE
     * @return The preferred proxy to be used by clients, or null if there
     * is no proxy.
     * {@hide}
     */
    public static final HttpHost getPreferredHttpHost(Context context,
            String url) {
        java.net.Proxy prefProxy = getProxy(context, url);
        if (prefProxy.equals(java.net.Proxy.NO_PROXY)) {
            return null;
        } else {
            InetSocketAddress sa = (InetSocketAddress)prefProxy.address();
            return new HttpHost(sa.getHostName(), sa.getPort(), "http");
        }
    }

    private static final boolean isLocalHost(String host) {
        if (host == null) {
            return false;
@@ -268,48 +233,6 @@ public final class Proxy {
        }
    }

    static class AndroidProxySelectorRoutePlanner
            extends org.apache.http.impl.conn.ProxySelectorRoutePlanner {

        private Context mContext;

        public AndroidProxySelectorRoutePlanner(SchemeRegistry schreg, ProxySelector prosel,
                Context context) {
            super(schreg, prosel);
            mContext = context;
        }

        @Override
        protected java.net.Proxy chooseProxy(List<java.net.Proxy> proxies, HttpHost target,
                HttpRequest request, HttpContext context) {
            return getProxy(mContext, target.getHostName());
        }

        @Override
        protected HttpHost determineProxy(HttpHost target, HttpRequest request,
                HttpContext context) {
            return getPreferredHttpHost(mContext, target.getHostName());
        }

        @Override
        public HttpRoute determineRoute(HttpHost target, HttpRequest request,
                HttpContext context) {
            HttpHost proxy = getPreferredHttpHost(mContext, target.getHostName());
            if (proxy == null) {
                return new HttpRoute(target);
            } else {
                return new HttpRoute(target, null, proxy, false);
            }
        }
    }

    /** @hide */
    public static final HttpRoutePlanner getAndroidProxySelectorRoutePlanner(Context context) {
        AndroidProxySelectorRoutePlanner ret = new AndroidProxySelectorRoutePlanner(
                new SchemeRegistry(), ProxySelector.getDefault(), context);
        return ret;
    }

    /** @hide */
    public static final void setHttpProxySystemProperty(ProxyProperties p) {
        String host = null;
+0 −93
Original line number Diff line number Diff line
/*
 * Copyright (C) 2010 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.core;

import org.apache.http.HttpHost;

import android.content.Context;
import android.net.Proxy;
import android.test.AndroidTestCase;

/**
 * Proxy tests
 */
public class ProxyTest extends AndroidTestCase {
    private Context mContext;
    private HttpHost mHttpHost;

    @Override
    protected void setUp() throws Exception {
        super.setUp();

        mContext = getContext();
        mHttpHost = null;
        String proxyHost = Proxy.getHost(mContext);
        int proxyPort = Proxy.getPort(mContext);
        if (proxyHost != null) {
            mHttpHost = new HttpHost(proxyHost, proxyPort, "http");
        }
    }

    @Override
    protected void tearDown() throws Exception {
        super.tearDown();
    }

    /**
     * Bad url parameter should not cause any exception.
     */
    public void testProxyGetPreferredHttpHost_UrlBad() throws Exception {
        assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, null));
        assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, ""));
        assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, "bad:"));
        assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, "bad"));
        assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, "bad:\\"));
        assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, "bad://#"));
        assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, "://#"));
    }

    /**
     * Proxy (if available) should be returned when url parameter is not localhost.
     */
    public void testProxyGetPreferredHttpHost_UrlNotlLocalhost() throws Exception {
        assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, "http://"));
        assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, "http://example.com"));
        assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, "http://example.com/"));
        assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, "http://192.168.0.1/"));
        assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, "file:///foo/bar"));
        assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, "rtsp://example.com"));
        assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, "rtsp://example.com/"));
        assertEquals(mHttpHost, Proxy.getPreferredHttpHost(mContext, "javascript:alert(1)"));
    }

    /**
     * No proxy should be returned when url parameter is localhost.
     */
    public void testProxyGetPreferredHttpHost_UrlLocalhost() throws Exception {
        assertNull(Proxy.getPreferredHttpHost(mContext, "http://localhost"));
        assertNull(Proxy.getPreferredHttpHost(mContext, "http://localhost/"));
        assertNull(Proxy.getPreferredHttpHost(mContext, "http://localhost/hej.html"));
        assertNull(Proxy.getPreferredHttpHost(mContext, "http://127.0.0.1"));
        assertNull(Proxy.getPreferredHttpHost(mContext, "http://127.0.0.1/"));
        assertNull(Proxy.getPreferredHttpHost(mContext, "http://127.0.0.1/hej.html"));
        assertNull(Proxy.getPreferredHttpHost(mContext, "http://127.0.0.1:80/"));
        assertNull(Proxy.getPreferredHttpHost(mContext, "http://127.0.0.1:8080/"));
        assertNull(Proxy.getPreferredHttpHost(mContext, "rtsp://127.0.0.1/"));
        assertNull(Proxy.getPreferredHttpHost(mContext, "rtsp://localhost/"));
        assertNull(Proxy.getPreferredHttpHost(mContext, "https://localhost/"));
    }
}