Revert "Call stop() before calling setPositionMode()"

This reverts commit 0129bea64b710ea90ade9e69ac11674b4c5739e3.

Reason for revert: b/348666756

Change-Id: Ia14062bf7eb87d3d23e67d6a81569d0a79edd3de
diff --git a/location/java/android/location/flags/location.aconfig b/location/java/android/location/flags/location.aconfig
index 5f84862..acfe473 100644
--- a/location/java/android/location/flags/location.aconfig
+++ b/location/java/android/location/flags/location.aconfig
@@ -45,13 +45,6 @@
 }
 
 flag {
-    name: "gnss_call_stop_before_set_position_mode"
-    namespace: "location"
-    description: "Flag for calling stop() before setPositionMode()"
-    bug: "306874828"
-}
-
-flag {
     name: "gnss_api_measurement_request_work_source"
     namespace: "location"
     description: "Flag for GnssMeasurementRequest WorkSource API"
diff --git a/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java b/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java
index 286e789..1938150 100644
--- a/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java
+++ b/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java
@@ -68,7 +68,6 @@
 import android.location.LocationRequest;
 import android.location.LocationResult;
 import android.location.LocationResult.BadLocationException;
-import android.location.flags.Flags;
 import android.location.provider.ProviderProperties;
 import android.location.provider.ProviderRequest;
 import android.location.util.identity.CallerIdentity;
@@ -1050,22 +1049,10 @@
                 stopBatching();
 
                 if (mStarted && mGnssNative.getCapabilities().hasScheduling()) {
-                    if (Flags.gnssCallStopBeforeSetPositionMode()) {
-                        GnssPositionMode positionMode = new GnssPositionMode(mPositionMode,
-                                GNSS_POSITION_RECURRENCE_PERIODIC, mFixInterval,
-                                /* preferredAccuracy= */ 0,
-                                /* preferredTime= */ 0,
-                                mProviderRequest.isLowPower());
-                        if (!positionMode.equals(mLastPositionMode)) {
-                            stopNavigating();
-                            startNavigating();
-                        }
-                    } else {
-                        // change period and/or lowPowerMode
-                        if (!setPositionMode(mPositionMode, GNSS_POSITION_RECURRENCE_PERIODIC,
-                                mFixInterval, mProviderRequest.isLowPower())) {
-                            Log.e(TAG, "set_position_mode failed in updateRequirements");
-                        }
+                    // change period and/or lowPowerMode
+                    if (!setPositionMode(mPositionMode, GNSS_POSITION_RECURRENCE_PERIODIC,
+                            mFixInterval, mProviderRequest.isLowPower())) {
+                        Log.e(TAG, "set_position_mode failed in updateRequirements");
                     }
                 } else if (!mStarted) {
                     // start GPS
@@ -1248,32 +1235,11 @@
             }
 
             int interval = mGnssNative.getCapabilities().hasScheduling() ? mFixInterval : 1000;
-
-            if (Flags.gnssCallStopBeforeSetPositionMode()) {
-                boolean success = mGnssNative.setPositionMode(mPositionMode,
-                        GNSS_POSITION_RECURRENCE_PERIODIC, interval,
-                        /* preferredAccuracy= */ 0,
-                        /* preferredTime= */ 0,
-                        mProviderRequest.isLowPower());
-                if (success) {
-                    mLastPositionMode = new GnssPositionMode(mPositionMode,
-                            GNSS_POSITION_RECURRENCE_PERIODIC, interval,
-                            /* preferredAccuracy= */ 0,
-                            /* preferredTime= */ 0,
-                            mProviderRequest.isLowPower());
-                } else {
-                    mLastPositionMode = null;
-                    setStarted(false);
-                    Log.e(TAG, "set_position_mode failed in startNavigating()");
-                    return;
-                }
-            } else {
-                if (!setPositionMode(mPositionMode, GNSS_POSITION_RECURRENCE_PERIODIC,
-                        interval, mProviderRequest.isLowPower())) {
-                    setStarted(false);
-                    Log.e(TAG, "set_position_mode failed in startNavigating()");
-                    return;
-                }
+            if (!setPositionMode(mPositionMode, GNSS_POSITION_RECURRENCE_PERIODIC,
+                    interval, mProviderRequest.isLowPower())) {
+                setStarted(false);
+                Log.e(TAG, "set_position_mode failed in startNavigating()");
+                return;
             }
             if (!mGnssNative.start()) {
                 setStarted(false);
diff --git a/services/tests/mockingservicestests/src/com/android/server/location/gnss/GnssLocationProviderTest.java b/services/tests/mockingservicestests/src/com/android/server/location/gnss/GnssLocationProviderTest.java
deleted file mode 100644
index c5e6824..0000000
--- a/services/tests/mockingservicestests/src/com/android/server/location/gnss/GnssLocationProviderTest.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * Copyright (C) 2023 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 com.android.server.location.gnss;
-
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-import android.app.AlarmManager;
-import android.app.AppOpsManager;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.location.GnssCapabilities;
-import android.location.LocationManager;
-import android.location.LocationManagerInternal;
-import android.location.flags.Flags;
-import android.location.provider.ProviderRequest;
-import android.os.PowerManager;
-import android.os.UserHandle;
-import android.os.UserManager;
-import android.platform.test.annotations.Presubmit;
-import android.platform.test.flag.junit.SetFlagsRule;
-import android.provider.Settings;
-import android.telephony.TelephonyManager;
-
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.modules.utils.testing.ExtendedMockitoRule;
-import com.android.server.LocalServices;
-import com.android.server.location.gnss.hal.FakeGnssHal;
-import com.android.server.location.gnss.hal.GnssNative;
-import com.android.server.location.injector.Injector;
-import com.android.server.location.injector.TestInjector;
-import com.android.server.timedetector.TimeDetectorInternal;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.mockito.quality.Strictness;
-
-import java.util.HashSet;
-import java.util.Objects;
-import java.util.Set;
-
-@Presubmit
[email protected]
-@RunWith(AndroidJUnit4.class)
-public class GnssLocationProviderTest {
-
-    @Rule
-    public final ExtendedMockitoRule mExtendedMockitoRule = new ExtendedMockitoRule.Builder(this)
-            .setStrictness(Strictness.WARN)
-            .mockStatic(Settings.Global.class)
-            .build();
-    @Rule
-    public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
-    private @Mock Context mContext;
-    private @Mock LocationManagerInternal mLocationManagerInternal;
-    private @Mock LocationManager mLocationManager;
-    private @Mock TimeDetectorInternal mTimeDetectorInternal;
-    private @Mock GnssConfiguration mMockConfiguration;
-    private @Mock GnssMetrics mGnssMetrics;
-    private @Mock PowerManager mPowerManager;
-    private @Mock TelephonyManager mTelephonyManager;
-    private @Mock AppOpsManager mAppOpsManager;
-    private @Mock AlarmManager mAlarmManager;
-    private @Mock PowerManager.WakeLock mWakeLock;
-    private @Mock ContentResolver mContentResolver;
-    private @Mock UserManager mUserManager;
-    private @Mock UserHandle mUserHandle;
-    private Set<UserHandle> mUserHandleSet = new HashSet<>();
-
-    private GnssNative mGnssNative;
-
-    private GnssLocationProvider mTestProvider;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        doReturn("mypackage").when(mContext).getPackageName();
-        doReturn("attribution").when(mContext).getAttributionTag();
-        doReturn(mPowerManager).when(mContext).getSystemService(PowerManager.class);
-        doReturn(mPowerManager).when(mContext).getSystemService("power");
-        doReturn(mAppOpsManager).when(mContext).getSystemService(AppOpsManager.class);
-        doReturn(mTelephonyManager).when(mContext).getSystemService(Context.TELEPHONY_SERVICE);
-        doReturn(mAlarmManager).when(mContext).getSystemService(Context.ALARM_SERVICE);
-        doReturn(mLocationManager).when(mContext).getSystemService(LocationManager.class);
-        doReturn(mUserManager).when(mContext).getSystemService(UserManager.class);
-        mUserHandleSet.add(mUserHandle);
-        doReturn(true).when(mLocationManager).isLocationEnabledForUser(eq(mUserHandle));
-        doReturn(mUserHandleSet).when(mUserManager).getVisibleUsers();
-        doReturn(mContentResolver).when(mContext).getContentResolver();
-        doReturn(mWakeLock).when(mPowerManager).newWakeLock(anyInt(), anyString());
-        LocalServices.addService(LocationManagerInternal.class, mLocationManagerInternal);
-        LocalServices.addService(TimeDetectorInternal.class, mTimeDetectorInternal);
-        FakeGnssHal fakeGnssHal = new FakeGnssHal();
-        GnssNative.setGnssHalForTest(fakeGnssHal);
-        Injector injector = new TestInjector(mContext);
-        mGnssNative = spy(Objects.requireNonNull(
-                GnssNative.create(injector, mMockConfiguration)));
-        doReturn(true).when(mGnssNative).init();
-        GnssCapabilities gnssCapabilities = new GnssCapabilities.Builder().setHasScheduling(
-                true).build();
-        doReturn(gnssCapabilities).when(mGnssNative).getCapabilities();
-
-        mTestProvider = new GnssLocationProvider(mContext, mGnssNative, mGnssMetrics);
-        mGnssNative.register();
-    }
-
-    @After
-    public void tearDown() {
-        LocalServices.removeServiceForTest(LocationManagerInternal.class);
-        LocalServices.removeServiceForTest(TimeDetectorInternal.class);
-    }
-
-    @Test
-    public void testStartNavigating() {
-        ProviderRequest providerRequest = new ProviderRequest.Builder().setIntervalMillis(
-                0).build();
-
-        mTestProvider.onSetRequest(providerRequest);
-        verify(mGnssNative).start();
-    }
-
-    @Test
-    public void testUpdateRequirements_sameRequest() {
-        mSetFlagsRule.enableFlags(Flags.FLAG_GNSS_CALL_STOP_BEFORE_SET_POSITION_MODE);
-        ProviderRequest providerRequest = new ProviderRequest.Builder().setIntervalMillis(
-                0).build();
-
-        mTestProvider.onSetRequest(providerRequest);
-        verify(mGnssNative).start();
-
-        // set the same request
-        mTestProvider.onSetRequest(providerRequest);
-        verify(mGnssNative, never()).stop();
-        verify(mGnssNative, times(1)).start();
-    }
-
-    @Test
-    public void testUpdateRequirements_differentRequest() {
-        mSetFlagsRule.enableFlags(Flags.FLAG_GNSS_CALL_STOP_BEFORE_SET_POSITION_MODE);
-        ProviderRequest providerRequest = new ProviderRequest.Builder().setIntervalMillis(
-                0).build();
-
-        mTestProvider.onSetRequest(providerRequest);
-        verify(mGnssNative).start();
-
-        // set a different request
-        providerRequest = new ProviderRequest.Builder().setIntervalMillis(2000).build();
-        mTestProvider.onSetRequest(providerRequest);
-        verify(mGnssNative).stop();
-        verify(mGnssNative, times(2)).start();
-    }
-}