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

Commit 955bee89 authored by Andreas Gampe's avatar Andreas Gampe Committed by Android Git Automerger
Browse files

am dfdc6acc: resolved conflicts for merge of 3c8cf51f into stage-aosp-master

* commit 'dfdc6acc':
  Stop using apache http to download Gps XTRA data.
parents 263829e0 dfdc6acc
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -880,7 +880,7 @@ public class GpsLocationProvider implements LocationProviderInterface {
        AsyncTask.THREAD_POOL_EXECUTOR.execute(new Runnable() {
        AsyncTask.THREAD_POOL_EXECUTOR.execute(new Runnable() {
            @Override
            @Override
            public void run() {
            public void run() {
                GpsXtraDownloader xtraDownloader = new GpsXtraDownloader(mContext, mProperties);
                GpsXtraDownloader xtraDownloader = new GpsXtraDownloader(mProperties);
                byte[] data = xtraDownloader.downloadXtraData();
                byte[] data = xtraDownloader.downloadXtraData();
                if (data != null) {
                if (data != null) {
                    if (DEBUG) {
                    if (DEBUG) {
+20 −66
Original line number Original line Diff line number Diff line
@@ -17,20 +17,14 @@
package com.android.server.location;
package com.android.server.location;


import android.content.Context;
import android.content.Context;
import android.net.Proxy;
import android.net.http.AndroidHttpClient;
import android.text.TextUtils;
import android.text.TextUtils;
import android.util.Log;
import android.util.Log;


import org.apache.http.HttpEntity;
import java.net.HttpURLConnection;
import org.apache.http.HttpHost;
import java.net.URL;
import org.apache.http.HttpResponse;
import libcore.io.IoUtils;
import org.apache.http.StatusLine;
import libcore.io.Streams;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.conn.params.ConnRouteParams;


import java.io.DataInputStream;
import java.io.IOException;
import java.io.IOException;
import java.util.Properties;
import java.util.Properties;
import java.util.Random;
import java.util.Random;
@@ -46,15 +40,12 @@ public class GpsXtraDownloader {
    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
    private static final String DEFAULT_USER_AGENT = "Android";
    private static final String DEFAULT_USER_AGENT = "Android";


    private final Context mContext;
    private final String[] mXtraServers;
    private final String[] mXtraServers;
    // to load balance our server requests
    // to load balance our server requests
    private int mNextServerIndex;
    private int mNextServerIndex;
    private final String mUserAgent;
    private final String mUserAgent;


    GpsXtraDownloader(Context context, Properties properties) {
    GpsXtraDownloader(Properties properties) {
        mContext = context;

        // read XTRA servers from the Properties object
        // read XTRA servers from the Properties object
        int count = 0;
        int count = 0;
        String server1 = properties.getProperty("XTRA_SERVER_1");
        String server1 = properties.getProperty("XTRA_SERVER_1");
@@ -75,7 +66,6 @@ public class GpsXtraDownloader {
        if (count == 0) {
        if (count == 0) {
            Log.e(TAG, "No XTRA servers were specified in the GPS configuration");
            Log.e(TAG, "No XTRA servers were specified in the GPS configuration");
            mXtraServers = null;
            mXtraServers = null;
            return;
        } else {
        } else {
            mXtraServers = new String[count];
            mXtraServers = new String[count];
            count = 0;
            count = 0;
@@ -90,9 +80,6 @@ public class GpsXtraDownloader {
    }
    }


    byte[] downloadXtraData() {
    byte[] downloadXtraData() {
        String proxyHost = Proxy.getHost(mContext);
        int proxyPort = Proxy.getPort(mContext);
        boolean useProxy = (proxyHost != null && proxyPort != -1);
        byte[] result = null;
        byte[] result = null;
        int startIndex = mNextServerIndex;
        int startIndex = mNextServerIndex;


@@ -102,7 +89,7 @@ public class GpsXtraDownloader {


        // load balance our requests among the available servers
        // load balance our requests among the available servers
        while (result == null) {
        while (result == null) {
            result = doDownload(mXtraServers[mNextServerIndex], useProxy, proxyHost, proxyPort);
            result = doDownload(mXtraServers[mNextServerIndex]);


            // increment mNextServerIndex and wrap around if necessary
            // increment mNextServerIndex and wrap around if necessary
            mNextServerIndex++;
            mNextServerIndex++;
@@ -116,65 +103,32 @@ public class GpsXtraDownloader {
        return result;
        return result;
    }
    }


    protected byte[] doDownload(String url, boolean isProxySet,
    protected byte[] doDownload(String url) {
            String proxyHost, int proxyPort) {
        if (DEBUG) Log.d(TAG, "Downloading XTRA data from " + url);
        if (DEBUG) Log.d(TAG, "Downloading XTRA data from " + url);


        AndroidHttpClient client = null;
        HttpURLConnection connection = null;
        try {
        try {
            if (DEBUG) Log.d(TAG, "XTRA user agent: " + mUserAgent);
            connection = (HttpURLConnection) (new URL(url)).openConnection();
            client = AndroidHttpClient.newInstance(mUserAgent);
            connection.setRequestProperty(
            HttpUriRequest req = new HttpGet(url);

            if (isProxySet) {
                HttpHost proxy = new HttpHost(proxyHost, proxyPort);
                ConnRouteParams.setDefaultProxy(req.getParams(), proxy);
            }

            req.addHeader(
                    "Accept",
                    "Accept",
                    "*/*, application/vnd.wap.mms-message, application/vnd.wap.sic");
                    "*/*, application/vnd.wap.mms-message, application/vnd.wap.sic");

            connection.setRequestProperty(
            req.addHeader(
                    "x-wap-profile",
                    "x-wap-profile",
                    "http://www.openmobilealliance.org/tech/profiles/UAPROF/ccppschema-20021212#");
                    "http://www.openmobilealliance.org/tech/profiles/UAPROF/ccppschema-20021212#");


            HttpResponse response = client.execute(req);
            connection.connect();
            StatusLine status = response.getStatusLine();
            int statusCode = connection.getResponseCode();
            if (status.getStatusCode() != 200) { // HTTP 200 is success.
            if (statusCode != HttpURLConnection.HTTP_OK) {
                if (DEBUG) Log.d(TAG, "HTTP error: " + status.getReasonPhrase());
                if (DEBUG) Log.d(TAG, "HTTP error downloading gps XTRA: " + statusCode);
                return null;
                return null;
            }
            }


            HttpEntity entity = response.getEntity();
            return Streams.readFully(connection.getInputStream());
            byte[] body = null;
        } catch (IOException ioe) {
            if (entity != null) {
            if (DEBUG) Log.d(TAG, "Error downloading gps XTRA: ", ioe);
                try {
                    if (entity.getContentLength() > 0) {
                        body = new byte[(int) entity.getContentLength()];
                        DataInputStream dis = new DataInputStream(entity.getContent());
                        try {
                            dis.readFully(body);
                        } finally {
                            try {
                                dis.close();
                            } catch (IOException e) {
                                Log.e(TAG, "Unexpected IOException.", e);
                            }
                        }
                    }
                } finally {
                    if (entity != null) {
                        entity.consumeContent();
                    }
                }
            }
            return body;
        } catch (Exception e) {
            if (DEBUG) Log.d(TAG, "error " + e);
        } finally {
        } finally {
            if (client != null) {
            if (connection != null) {
                client.close();
                connection.disconnect();
            }
            }
        }
        }
        return null;
        return null;