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

Commit c273edbb authored by Narayan Kamath's avatar Narayan Kamath
Browse files

Stop using apache http to download Gps XTRA data.

Also, general cleanup of unused parameters.

Change-Id: Iebd1aa05de9cd676b0b6d08c99df8c15b8e8473c
parent ced7ebdb
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -732,7 +732,7 @@ public class GpsLocationProvider implements LocationProviderInterface {
        AsyncTask.THREAD_POOL_EXECUTOR.execute(new Runnable() {
            @Override
            public void run() {
                GpsXtraDownloader xtraDownloader = new GpsXtraDownloader(mContext, mProperties);
                GpsXtraDownloader xtraDownloader = new GpsXtraDownloader(mProperties);
                byte[] data = xtraDownloader.downloadXtraData();
                if (data != null) {
                    if (DEBUG) {
+23 −68
Original line number Diff line number Diff line
@@ -17,20 +17,13 @@
package com.android.server.location;

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

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

import java.io.DataInputStream;
import java.io.IOException;
import java.util.Properties;
import java.util.Random;
@@ -45,14 +38,11 @@ public class GpsXtraDownloader {
    private static final String TAG = "GpsXtraDownloader";
    static final boolean DEBUG = false;

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

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

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

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

@@ -91,7 +78,7 @@ public class GpsXtraDownloader {

        // load balance our requests among the available servers
        while (result == null) {
            result = doDownload(mXtraServers[mNextServerIndex], useProxy, proxyHost, proxyPort);
            result = doDownload(mXtraServers[mNextServerIndex]);
            
            // increment mNextServerIndex and wrap around if necessary
            mNextServerIndex++;
@@ -105,64 +92,32 @@ public class GpsXtraDownloader {
        return result;
    }

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

        AndroidHttpClient client = null;
        HttpURLConnection connection = null;
        try {
            client = AndroidHttpClient.newInstance("Android");
            HttpUriRequest req = new HttpGet(url);

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

            req.addHeader(
            connection = (HttpURLConnection) (new URL(url)).openConnection();
            connection.setRequestProperty(
                    "Accept",
                    "*/*, application/vnd.wap.mms-message, application/vnd.wap.sic");

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

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

            HttpEntity entity = response.getEntity();
            byte[] body = null;
            if (entity != null) {
                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);
            return Streams.readFully(connection.getInputStream());
        } catch (IOException ioe) {
            if (DEBUG) Log.d(TAG, "Error downloading gps XTRA: ", ioe);
        } finally {
            if (client != null) {
                client.close();
            if (connection != null) {
                connection.disconnect();
            }
        }
        return null;