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

Commit b482b751 authored by Soonil Nagarkar's avatar Soonil Nagarkar
Browse files

Add provider start/stop and reorganize packages

The main change here is adding start/stop() methods to control location
providers. This gives location providers a more well defined lifecycle,
where previously setRequest() was the only lifecycle available. There
will be some listeners we want to register more permanently than simply
based on the current provider request, so this gives us a place to do
that from.

As a result, AbstractLocationProvider was getting to a point where the
distinction between controller methods (should be invoked by the
provider owner) and internal methods (should be invoked by subclasses of
the location provider) was non-obvious and difficult to understand.
Instead we split out a LocationProviderController interface which
explicitly separates the two types of methods.

In addition, we move a whole bunch of classes into the appropriate
packages.

Test: manual + presubmits
Change-Id: Id140928bc6f545cb6f99fd87f9006f97f7601ac5
parent 37aaf66e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -156,7 +156,7 @@ java_library_host {

prebuilt_etc {
    name: "gps_debug.conf",
    src: "java/com/android/server/location/gps_debug.conf",
    src: "java/com/android/server/location/gnss/gps_debug.conf",
}

genrule {
+28 −22
Original line number Diff line number Diff line
@@ -87,26 +87,32 @@ import com.android.server.SystemService;
import com.android.server.location.geofence.GeofenceManager;
import com.android.server.location.geofence.GeofenceProxy;
import com.android.server.location.gnss.GnssManagerService;
import com.android.server.location.util.AlarmHelper;
import com.android.server.location.util.AppForegroundHelper;
import com.android.server.location.util.AppOpsHelper;
import com.android.server.location.util.Injector;
import com.android.server.location.util.LocationAttributionHelper;
import com.android.server.location.util.LocationEventLog;
import com.android.server.location.util.LocationPermissionsHelper;
import com.android.server.location.util.LocationPowerSaveModeHelper;
import com.android.server.location.util.LocationUsageLogger;
import com.android.server.location.util.ScreenInteractiveHelper;
import com.android.server.location.util.SettingsHelper;
import com.android.server.location.util.SystemAlarmHelper;
import com.android.server.location.util.SystemAppForegroundHelper;
import com.android.server.location.util.SystemAppOpsHelper;
import com.android.server.location.util.SystemLocationPermissionsHelper;
import com.android.server.location.util.SystemLocationPowerSaveModeHelper;
import com.android.server.location.util.SystemScreenInteractiveHelper;
import com.android.server.location.util.SystemSettingsHelper;
import com.android.server.location.util.SystemUserInfoHelper;
import com.android.server.location.util.UserInfoHelper;
import com.android.server.location.injector.AlarmHelper;
import com.android.server.location.injector.AppForegroundHelper;
import com.android.server.location.injector.AppOpsHelper;
import com.android.server.location.injector.Injector;
import com.android.server.location.injector.LocationAttributionHelper;
import com.android.server.location.injector.LocationEventLog;
import com.android.server.location.injector.LocationPermissionsHelper;
import com.android.server.location.injector.LocationPowerSaveModeHelper;
import com.android.server.location.injector.LocationUsageLogger;
import com.android.server.location.injector.ScreenInteractiveHelper;
import com.android.server.location.injector.SettingsHelper;
import com.android.server.location.injector.SystemAlarmHelper;
import com.android.server.location.injector.SystemAppForegroundHelper;
import com.android.server.location.injector.SystemAppOpsHelper;
import com.android.server.location.injector.SystemLocationPermissionsHelper;
import com.android.server.location.injector.SystemLocationPowerSaveModeHelper;
import com.android.server.location.injector.SystemScreenInteractiveHelper;
import com.android.server.location.injector.SystemSettingsHelper;
import com.android.server.location.injector.SystemUserInfoHelper;
import com.android.server.location.injector.UserInfoHelper;
import com.android.server.location.provider.AbstractLocationProvider;
import com.android.server.location.provider.LocationProviderManager;
import com.android.server.location.provider.MockLocationProvider;
import com.android.server.location.provider.PassiveLocationProvider;
import com.android.server.location.provider.PassiveLocationProviderManager;
import com.android.server.location.provider.proxy.ProxyLocationProvider;
import com.android.server.pm.permission.PermissionManagerServiceInternal;

import java.io.FileDescriptor;
@@ -326,7 +332,7 @@ public class LocationManagerService extends ILocationManager.Stub {
    void onSystemThirdPartyAppsCanStart() {
        // network provider should always be initialized before the gps provider since the gps
        // provider has unfortunate hard dependencies on the network provider
        ProxyLocationProvider networkProvider = ProxyLocationProvider.createAndRegister(
        ProxyLocationProvider networkProvider = ProxyLocationProvider.create(
                mContext,
                NETWORK_LOCATION_SERVICE_ACTION,
                com.android.internal.R.bool.config_enableNetworkLocationOverlay,
@@ -345,7 +351,7 @@ public class LocationManagerService extends ILocationManager.Stub {
                MATCH_DIRECT_BOOT_AWARE | MATCH_SYSTEM_ONLY, UserHandle.USER_SYSTEM).isEmpty(),
                "Unable to find a direct boot aware fused location provider");

        ProxyLocationProvider fusedProvider = ProxyLocationProvider.createAndRegister(
        ProxyLocationProvider fusedProvider = ProxyLocationProvider.create(
                mContext,
                FUSED_LOCATION_SERVICE_ACTION,
                com.android.internal.R.bool.config_enableFusedLocationOverlay,
+9 −9
Original line number Diff line number Diff line
/*
 * Copyright (C) 2012 The Android Open Source Project
 * Copyright (C) 2020 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.
@@ -14,7 +14,7 @@
 * limitations under the License.
 */

package com.android.server.location;
package com.android.server.location.fudger;

import android.annotation.Nullable;
import android.location.Location;
+6 −6
Original line number Diff line number Diff line
@@ -43,14 +43,14 @@ import android.util.ArraySet;
import com.android.internal.annotations.GuardedBy;
import com.android.server.PendingIntentUtils;
import com.android.server.location.LocationPermissions;
import com.android.server.location.injector.Injector;
import com.android.server.location.injector.LocationPermissionsHelper;
import com.android.server.location.injector.LocationUsageLogger;
import com.android.server.location.injector.SettingsHelper;
import com.android.server.location.injector.UserInfoHelper;
import com.android.server.location.injector.UserInfoHelper.UserListener;
import com.android.server.location.listeners.ListenerMultiplexer;
import com.android.server.location.listeners.PendingIntentListenerRegistration;
import com.android.server.location.util.Injector;
import com.android.server.location.util.LocationPermissionsHelper;
import com.android.server.location.util.LocationUsageLogger;
import com.android.server.location.util.SettingsHelper;
import com.android.server.location.util.UserInfoHelper;
import com.android.server.location.util.UserInfoHelper.UserListener;

import java.util.Collection;
import java.util.Objects;
+1 −1
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@ import android.util.Log;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.Preconditions;
import com.android.server.location.util.Injector;
import com.android.server.location.injector.Injector;

import java.util.Collection;
import java.util.List;
Loading