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

Commit 623d18cf authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Remove GnssNi related code" into main

parents 2ba239b2 db7847fe
Loading
Loading
Loading
Loading
+0 −130
Original line number Original line Diff line number Diff line
/*
 * Copyright (C) 2007 Google Inc.
 *
 * 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 com.android.internal.app;

import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.location.LocationManagerInternal;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;

import com.android.internal.R;
import com.android.internal.location.GpsNetInitiatedHandler;
import com.android.server.LocalServices;

/**
 * This activity is shown to the user for them to accept or deny network-initiated
 * requests. It uses the alert dialog style. It will be launched from a notification.
 */
public class NetInitiatedActivity extends AlertActivity implements DialogInterface.OnClickListener {

    private static final String TAG = "NetInitiatedActivity";

    private static final boolean DEBUG = true;

    private static final int POSITIVE_BUTTON = AlertDialog.BUTTON_POSITIVE;
    private static final int NEGATIVE_BUTTON = AlertDialog.BUTTON_NEGATIVE;

    private static final int GPS_NO_RESPONSE_TIME_OUT = 1;
    // Received ID from intent, -1 when no notification is in progress
    private int notificationId = -1;
    private int timeout = -1;
    private int default_response = -1;
    private int default_response_timeout = 6;

    private final Handler mHandler = new Handler() {
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case GPS_NO_RESPONSE_TIME_OUT: {
                    if (notificationId != -1) {
                        sendUserResponse(default_response);
                    }
                    finish();
                }
                break;
                default:
            }
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);

        // Set up the "dialog"
        final Intent intent = getIntent();
        final AlertController.AlertParams p = mAlertParams;
        Context context = getApplicationContext();
        p.mTitle = intent.getStringExtra(GpsNetInitiatedHandler.NI_INTENT_KEY_TITLE);
        p.mMessage = intent.getStringExtra(GpsNetInitiatedHandler.NI_INTENT_KEY_MESSAGE);
        p.mPositiveButtonText = String.format(context.getString(R.string.gpsVerifYes));
        p.mPositiveButtonListener = this;
        p.mNegativeButtonText = String.format(context.getString(R.string.gpsVerifNo));
        p.mNegativeButtonListener = this;

        notificationId = intent.getIntExtra(GpsNetInitiatedHandler.NI_INTENT_KEY_NOTIF_ID, -1);
        timeout = intent.getIntExtra(GpsNetInitiatedHandler.NI_INTENT_KEY_TIMEOUT, default_response_timeout);
        default_response = intent.getIntExtra(GpsNetInitiatedHandler.NI_INTENT_KEY_DEFAULT_RESPONSE, GpsNetInitiatedHandler.GPS_NI_RESPONSE_ACCEPT);
        if (DEBUG) Log.d(TAG, "onCreate() : notificationId: " + notificationId + " timeout: " + timeout + " default_response:" + default_response);

        mHandler.sendMessageDelayed(mHandler.obtainMessage(GPS_NO_RESPONSE_TIME_OUT), (timeout * 1000));
        setupAlert();
    }

    @Override
    protected void onResume() {
        super.onResume();
        if (DEBUG) Log.d(TAG, "onResume");
    }

    @Override
    protected void onPause() {
        super.onPause();
        if (DEBUG) Log.d(TAG, "onPause");
    }

    /**
     * {@inheritDoc}
     */
    public void onClick(DialogInterface dialog, int which) {
        if (which == POSITIVE_BUTTON) {
            sendUserResponse(GpsNetInitiatedHandler.GPS_NI_RESPONSE_ACCEPT);
        }
        if (which == NEGATIVE_BUTTON) {
            sendUserResponse(GpsNetInitiatedHandler.GPS_NI_RESPONSE_DENY);
        }

        // No matter what, finish the activity
        finish();
        notificationId = -1;
    }

    // Respond to NI Handler under GnssLocationProvider, 1 = accept, 2 = deny
    private void sendUserResponse(int response) {
        if (DEBUG) Log.d(TAG, "sendUserResponse, response: " + response);
        LocationManagerInternal lm = LocalServices.getService(LocationManagerInternal.class);
        lm.sendNiResponse(notificationId, response);
    }
}
+0 −6
Original line number Original line Diff line number Diff line
@@ -86,12 +86,6 @@ public abstract class LocationManagerInternal {
     */
     */
    public abstract boolean isProvider(@Nullable String provider, @NonNull CallerIdentity identity);
    public abstract boolean isProvider(@Nullable String provider, @NonNull CallerIdentity identity);


    /**
     * Should only be used by GNSS code.
     */
    // TODO: there is no reason for this to exist as part of any API. move all the logic into gnss
    public abstract void sendNiResponse(int notifId, int userResponse);

    /**
    /**
     * Returns the GNSS provided time.
     * Returns the GNSS provided time.
     *
     *
+0 −483

File changed.

Preview size limit exceeded, changes collapsed.

+0 −7
Original line number Original line Diff line number Diff line
@@ -1749,13 +1749,6 @@ public class LocationManagerService extends ILocationManager.Stub implements
            return false;
            return false;
        }
        }


        @Override
        public void sendNiResponse(int notifId, int userResponse) {
            if (mGnssManagerService != null) {
                mGnssManagerService.sendNiResponse(notifId, userResponse);
            }
        }

        @Override
        @Override
        public @Nullable LocationTime getGnssTimeMillis() {
        public @Nullable LocationTime getGnssTimeMillis() {
            LocationProviderManager gpsManager = getLocationProviderManager(GPS_PROVIDER);
            LocationProviderManager gpsManager = getLocationProviderManager(GPS_PROVIDER);
+0 −102
Original line number Original line Diff line number Diff line
@@ -62,7 +62,6 @@ import android.content.pm.PackageManager;
import android.database.ContentObserver;
import android.database.ContentObserver;
import android.location.GnssCapabilities;
import android.location.GnssCapabilities;
import android.location.GnssStatus;
import android.location.GnssStatus;
import android.location.INetInitiatedListener;
import android.location.Location;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.LocationManager;
@@ -109,7 +108,6 @@ import android.util.TimeUtils;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.app.IBatteryStats;
import com.android.internal.app.IBatteryStats;
import com.android.internal.location.GpsNetInitiatedHandler;
import com.android.internal.location.GpsNetInitiatedHandler;
import com.android.internal.location.GpsNetInitiatedHandler.GpsNiNotification;
import com.android.internal.util.FrameworkStatsLog;
import com.android.internal.util.FrameworkStatsLog;
import com.android.internal.util.HexDump;
import com.android.internal.util.HexDump;
import com.android.server.FgThread;
import com.android.server.FgThread;
@@ -396,7 +394,6 @@ public class GnssLocationProvider extends AbstractLocationProvider implements
        mC2KServerPort = mGnssConfiguration.getC2KPort(TCP_MIN_PORT);
        mC2KServerPort = mGnssConfiguration.getC2KPort(TCP_MIN_PORT);
        mNIHandler.setEmergencyExtensionSeconds(mGnssConfiguration.getEsExtensionSec());
        mNIHandler.setEmergencyExtensionSeconds(mGnssConfiguration.getEsExtensionSec());
        mSuplEsEnabled = mGnssConfiguration.getSuplEs(0) == 1;
        mSuplEsEnabled = mGnssConfiguration.getSuplEs(0) == 1;
        mNIHandler.setSuplEsEnabled(mSuplEsEnabled);
        if (mGnssVisibilityControl != null) {
        if (mGnssVisibilityControl != null) {
            mGnssVisibilityControl.onConfigurationUpdated(mGnssConfiguration);
            mGnssVisibilityControl.onConfigurationUpdated(mGnssConfiguration);
        }
        }
@@ -465,7 +462,6 @@ public class GnssLocationProvider extends AbstractLocationProvider implements
                    }
                    }
                };
                };
        mNIHandler = new GpsNetInitiatedHandler(context,
        mNIHandler = new GpsNetInitiatedHandler(context,
                mNetInitiatedListener,
                emergencyCallCallback,
                emergencyCallCallback,
                mSuplEsEnabled);
                mSuplEsEnabled);
        // Trigger PSDS data download when the network comes up after booting.
        // Trigger PSDS data download when the network comes up after booting.
@@ -1435,96 +1431,6 @@ public class GnssLocationProvider extends AbstractLocationProvider implements
        updateRequirements();
        updateRequirements();
    }
    }


    //=============================================================
    // NI Client support
    //=============================================================
    private final INetInitiatedListener mNetInitiatedListener = new INetInitiatedListener.Stub() {
        // Sends a response for an NI request to HAL.
        @Override
        public boolean sendNiResponse(int notificationId, int userResponse) {
            // TODO Add Permission check

            if (DEBUG) {
                Log.d(TAG, "sendNiResponse, notifId: " + notificationId
                        + ", response: " + userResponse);
            }
            mGnssNative.sendNiResponse(notificationId, userResponse);

            FrameworkStatsLog.write(FrameworkStatsLog.GNSS_NI_EVENT_REPORTED,
                    FrameworkStatsLog.GNSS_NI_EVENT_REPORTED__EVENT_TYPE__NI_RESPONSE,
                    notificationId,
                    /* niType= */ 0,
                    /* needNotify= */ false,
                    /* needVerify= */ false,
                    /* privacyOverride= */ false,
                    /* timeout= */ 0,
                    /* defaultResponse= */ 0,
                    /* requestorId= */ null,
                    /* text= */ null,
                    /* requestorIdEncoding= */ 0,
                    /* textEncoding= */ 0,
                    mSuplEsEnabled,
                    isGpsEnabled(),
                    userResponse);

            return true;
        }
    };

    public INetInitiatedListener getNetInitiatedListener() {
        return mNetInitiatedListener;
    }

    /** Reports a NI notification. */
    private void reportNiNotification(int notificationId, int niType, int notifyFlags, int timeout,
            int defaultResponse, String requestorId, String text, int requestorIdEncoding,
            int textEncoding) {
        Log.i(TAG, "reportNiNotification: entered");
        Log.i(TAG, "notificationId: " + notificationId
                + ", niType: " + niType
                + ", notifyFlags: " + notifyFlags
                + ", timeout: " + timeout
                + ", defaultResponse: " + defaultResponse);

        Log.i(TAG, "requestorId: " + requestorId
                + ", text: " + text
                + ", requestorIdEncoding: " + requestorIdEncoding
                + ", textEncoding: " + textEncoding);

        GpsNiNotification notification = new GpsNiNotification();

        notification.notificationId = notificationId;
        notification.niType = niType;
        notification.needNotify = (notifyFlags & GpsNetInitiatedHandler.GPS_NI_NEED_NOTIFY) != 0;
        notification.needVerify = (notifyFlags & GpsNetInitiatedHandler.GPS_NI_NEED_VERIFY) != 0;
        notification.privacyOverride =
                (notifyFlags & GpsNetInitiatedHandler.GPS_NI_PRIVACY_OVERRIDE) != 0;
        notification.timeout = timeout;
        notification.defaultResponse = defaultResponse;
        notification.requestorId = requestorId;
        notification.text = text;
        notification.requestorIdEncoding = requestorIdEncoding;
        notification.textEncoding = textEncoding;

        mNIHandler.handleNiNotification(notification);
        FrameworkStatsLog.write(FrameworkStatsLog.GNSS_NI_EVENT_REPORTED,
                FrameworkStatsLog.GNSS_NI_EVENT_REPORTED__EVENT_TYPE__NI_REQUEST,
                notification.notificationId,
                notification.niType,
                notification.needNotify,
                notification.needVerify,
                notification.privacyOverride,
                notification.timeout,
                notification.defaultResponse,
                notification.requestorId,
                notification.text,
                notification.requestorIdEncoding,
                notification.textEncoding,
                mSuplEsEnabled,
                isGpsEnabled(),
                /* userResponse= */ 0);
    }

    private void demandUtcTimeInjection() {
    private void demandUtcTimeInjection() {
        if (DEBUG) Log.d(TAG, "demandUtcTimeInjection");
        if (DEBUG) Log.d(TAG, "demandUtcTimeInjection");
        postWithWakeLockHeld(mNetworkTimeHelper::demandUtcTimeInjection);
        postWithWakeLockHeld(mNetworkTimeHelper::demandUtcTimeInjection);
@@ -1828,14 +1734,6 @@ public class GnssLocationProvider extends AbstractLocationProvider implements
        postWithWakeLockHeld(() -> handleDownloadPsdsData(psdsType));
        postWithWakeLockHeld(() -> handleDownloadPsdsData(psdsType));
    }
    }


    @Override
    public void onReportNiNotification(int notificationId, int niType, int notifyFlags,
            int timeout, int defaultResponse, String requestorId, String text,
            int requestorIdEncoding, int textEncoding) {
        reportNiNotification(notificationId, niType, notifyFlags, timeout,
                defaultResponse, requestorId, text, requestorIdEncoding, textEncoding);
    }

    @Override
    @Override
    public void onRequestSetID(@GnssNative.AGpsCallbacks.AgpsSetIdFlags int flags) {
    public void onRequestSetID(@GnssNative.AGpsCallbacks.AgpsSetIdFlags int flags) {
        TelephonyManager phone = (TelephonyManager)
        TelephonyManager phone = (TelephonyManager)
Loading