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

Commit 1c0dba50 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge changes I30e39943,I4b5fb782,I8fe0ddbd into cw-f-dev

* changes:
  DO NOT MERGE ANYWHERE: Listen TRANSPORT_BLUETOOTH network change in GnssLocationProvider
  DO NOT MERGE ANYWHERE: GnssLocationProvider: listening to conn lost event
  DO NOT MERGE ANYWHERE: Restoring Network Available Notification to AGnssRil
parents a5ba83e2 03c0f16f
Loading
Loading
Loading
Loading
+29 −14
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.hardware.location.GeofenceHardware;
import android.hardware.location.GeofenceHardwareImpl;
@@ -463,6 +464,12 @@ public class GnssLocationProvider implements LocationProviderInterface {
            if (mDownloadXtraDataPending == STATE_PENDING_NETWORK) {
                xtraDownloadRequest();
            }
            sendMessage(UPDATE_NETWORK_STATE, 0 /*arg*/, network);
        }

        @Override
        public void onLost(Network network) {
            sendMessage(UPDATE_NETWORK_STATE, 0 /*arg*/, network);
        }
    };

@@ -473,11 +480,6 @@ public class GnssLocationProvider implements LocationProviderInterface {
     */
    private final ConnectivityManager.NetworkCallback mSuplConnectivityCallback =
            new ConnectivityManager.NetworkCallback() {
        @Override
        public void onAvailable(Network network) {
            sendMessage(UPDATE_NETWORK_STATE, 0 /*arg*/, network);
        }

        @Override
        public void onLost(Network network) {
            releaseSuplConnection(GPS_RELEASE_AGPS_DATA_CONN);
@@ -832,11 +834,21 @@ public class GnssLocationProvider implements LocationProviderInterface {
    private void handleUpdateNetworkState(Network network) {
        // retrieve NetworkInfo for this UID
        NetworkInfo info = mConnMgr.getNetworkInfo(network);
        if (info == null) {
            return;

        boolean networkAvailable = false;
        boolean isConnected = false;
        int type = ConnectivityManager.TYPE_NONE;
        boolean isRoaming = false;
        String apnName = null;

        if (info != null) {
            networkAvailable = info.isAvailable() && TelephonyManager.getDefault().getDataEnabled();
            isConnected = info.isConnected();
            type = info.getType();
            isRoaming = info.isRoaming();
            apnName = info.getExtraInfo();
        }

        boolean isConnected = info.isConnected();
        if (DEBUG) {
            String message = String.format(
                    "UpdateNetworkState, state=%s, connected=%s, info=%s, capabilities=%S",
@@ -848,8 +860,6 @@ public class GnssLocationProvider implements LocationProviderInterface {
        }

        if (native_is_agps_ril_supported()) {
            boolean dataEnabled = TelephonyManager.getDefault().getDataEnabled();
            boolean networkAvailable = info.isAvailable() && dataEnabled;
            String defaultApn = getSelectedApn();
            if (defaultApn == null) {
                defaultApn = "dummy-apn";
@@ -857,10 +867,10 @@ public class GnssLocationProvider implements LocationProviderInterface {

            native_update_network_state(
                    isConnected,
                    info.getType(),
                    info.isRoaming(),
                    type,
                    isRoaming,
                    networkAvailable,
                    info.getExtraInfo(),
                    apnName,
                    defaultApn);
        } else if (DEBUG) {
            Log.d(TAG, "Skipped network state update because GPS HAL AGPS-RIL is not  supported");
@@ -868,7 +878,6 @@ public class GnssLocationProvider implements LocationProviderInterface {

        if (mAGpsDataConnectionState == AGPS_DATA_CONNECTION_OPENING) {
            if (isConnected) {
                String apnName = info.getExtraInfo();
                if (apnName == null) {
                    // assign a dummy value in the case of C2K as otherwise we will have a runtime
                    // exception in the following call to native_agps_data_conn_open
@@ -2242,6 +2251,12 @@ public class GnssLocationProvider implements LocationProviderInterface {
            NetworkRequest.Builder networkRequestBuilder = new NetworkRequest.Builder();
            networkRequestBuilder.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
            networkRequestBuilder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
            // On watches, Bluetooth is the most important network type.
            boolean isWatch =
                mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_WATCH);
            if (isWatch) {
                networkRequestBuilder.addTransportType(NetworkCapabilities.TRANSPORT_BLUETOOTH);
            }
            NetworkRequest networkRequest = networkRequestBuilder.build();
            mConnMgr.registerNetworkCallback(networkRequest, mNetworkConnectivityCallback);