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

Commit 8f3eb826 authored by Neil Fuller's avatar Neil Fuller Committed by Android (Google) Code Review
Browse files

Merge "Fix shell commands to use "current" user"

parents 3e99a4a6 8b57ec0e
Loading
Loading
Loading
Loading
+29 −6
Original line number Original line Diff line number Diff line
@@ -18,6 +18,8 @@ package com.android.server.timezonedetector;


import android.annotation.NonNull;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.app.ActivityManager;
import android.app.time.ITimeZoneDetectorListener;
import android.app.time.ITimeZoneDetectorListener;
import android.app.time.TimeZoneCapabilitiesAndConfig;
import android.app.time.TimeZoneCapabilitiesAndConfig;
import android.app.time.TimeZoneConfiguration;
import android.app.time.TimeZoneConfiguration;
@@ -26,12 +28,14 @@ import android.app.timezonedetector.ManualTimeZoneSuggestion;
import android.app.timezonedetector.TelephonyTimeZoneSuggestion;
import android.app.timezonedetector.TelephonyTimeZoneSuggestion;
import android.content.Context;
import android.content.Context;
import android.location.LocationManager;
import android.location.LocationManager;
import android.os.Binder;
import android.os.Handler;
import android.os.Handler;
import android.os.IBinder;
import android.os.IBinder;
import android.os.RemoteException;
import android.os.RemoteException;
import android.os.ResultReceiver;
import android.os.ResultReceiver;
import android.os.ShellCallback;
import android.os.ShellCallback;
import android.os.SystemProperties;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.util.ArrayMap;
import android.util.ArrayMap;
import android.util.IndentingPrintWriter;
import android.util.IndentingPrintWriter;
import android.util.Slog;
import android.util.Slog;
@@ -163,9 +167,13 @@ public final class TimeZoneDetectorService extends ITimeZoneDetectorService.Stub
    @Override
    @Override
    @NonNull
    @NonNull
    public TimeZoneCapabilitiesAndConfig getCapabilitiesAndConfig() {
    public TimeZoneCapabilitiesAndConfig getCapabilitiesAndConfig() {
        int userId = mCallerIdentityInjector.getCallingUserId();
        return getCapabilitiesAndConfig(userId);
    }

    TimeZoneCapabilitiesAndConfig getCapabilitiesAndConfig(@UserIdInt int userId) {
        enforceManageTimeZoneDetectorPermission();
        enforceManageTimeZoneDetectorPermission();


        int userId = mCallerIdentityInjector.getCallingUserId();
        final long token = mCallerIdentityInjector.clearCallingIdentity();
        final long token = mCallerIdentityInjector.clearCallingIdentity();
        try {
        try {
            ConfigurationInternal configurationInternal =
            ConfigurationInternal configurationInternal =
@@ -178,13 +186,22 @@ public final class TimeZoneDetectorService extends ITimeZoneDetectorService.Stub


    @Override
    @Override
    public boolean updateConfiguration(@NonNull TimeZoneConfiguration configuration) {
    public boolean updateConfiguration(@NonNull TimeZoneConfiguration configuration) {
        int callingUserId = mCallerIdentityInjector.getCallingUserId();
        return updateConfiguration(callingUserId, configuration);
    }

    boolean updateConfiguration(
            @UserIdInt int userId, @NonNull TimeZoneConfiguration configuration) {
        userId = ActivityManager.handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(),
                userId, false, false, "updateConfiguration", null);

        enforceManageTimeZoneDetectorPermission();
        enforceManageTimeZoneDetectorPermission();

        Objects.requireNonNull(configuration);
        Objects.requireNonNull(configuration);


        int callingUserId = mCallerIdentityInjector.getCallingUserId();
        final long token = mCallerIdentityInjector.clearCallingIdentity();
        final long token = mCallerIdentityInjector.clearCallingIdentity();
        try {
        try {
            return mTimeZoneDetectorStrategy.updateConfiguration(callingUserId, configuration);
            return mTimeZoneDetectorStrategy.updateConfiguration(userId, configuration);
        } finally {
        } finally {
            mCallerIdentityInjector.restoreCallingIdentity(token);
            mCallerIdentityInjector.restoreCallingIdentity(token);
        }
        }
@@ -318,11 +335,17 @@ public final class TimeZoneDetectorService extends ITimeZoneDetectorService.Stub
        return isGeoLocationTimeZoneDetectionEnabled(mContext);
        return isGeoLocationTimeZoneDetectionEnabled(mContext);
    }
    }


    boolean isLocationEnabled() {
    boolean isLocationEnabled(@UserIdInt int userId) {
        enforceManageTimeZoneDetectorPermission();
        enforceManageTimeZoneDetectorPermission();


        return mContext.getSystemService(LocationManager.class)
        final long token = mCallerIdentityInjector.clearCallingIdentity();
                .isLocationEnabledForUser(mContext.getUser());
        try {
            UserHandle user = UserHandle.of(userId);
            LocationManager locationManager = mContext.getSystemService(LocationManager.class);
            return locationManager.isLocationEnabledForUser(user);
        } finally {
            mCallerIdentityInjector.restoreCallingIdentity(token);
        }
    }
    }


    @Override
    @Override
+11 −5
Original line number Original line Diff line number Diff line
@@ -29,6 +29,7 @@ import android.app.time.TimeZoneConfiguration;
import android.app.timezonedetector.ManualTimeZoneSuggestion;
import android.app.timezonedetector.ManualTimeZoneSuggestion;
import android.app.timezonedetector.TelephonyTimeZoneSuggestion;
import android.app.timezonedetector.TelephonyTimeZoneSuggestion;
import android.os.ShellCommand;
import android.os.ShellCommand;
import android.os.UserHandle;


import java.io.PrintWriter;
import java.io.PrintWriter;
import java.util.function.Consumer;
import java.util.function.Consumer;
@@ -76,7 +77,8 @@ class TimeZoneDetectorShellCommand extends ShellCommand {


    private int runIsAutoDetectionEnabled() {
    private int runIsAutoDetectionEnabled() {
        final PrintWriter pw = getOutPrintWriter();
        final PrintWriter pw = getOutPrintWriter();
        boolean enabled = mInterface.getCapabilitiesAndConfig()
        int userId = UserHandle.USER_CURRENT;
        boolean enabled = mInterface.getCapabilitiesAndConfig(userId)
                .getConfiguration()
                .getConfiguration()
                .isAutoDetectionEnabled();
                .isAutoDetectionEnabled();
        pw.println(enabled);
        pw.println(enabled);
@@ -92,14 +94,16 @@ class TimeZoneDetectorShellCommand extends ShellCommand {


    private int runIsLocationEnabled() {
    private int runIsLocationEnabled() {
        final PrintWriter pw = getOutPrintWriter();
        final PrintWriter pw = getOutPrintWriter();
        boolean enabled = mInterface.isLocationEnabled();
        int userId = UserHandle.USER_CURRENT;
        boolean enabled = mInterface.isLocationEnabled(userId);
        pw.println(enabled);
        pw.println(enabled);
        return 0;
        return 0;
    }
    }


    private int runIsGeoDetectionEnabled() {
    private int runIsGeoDetectionEnabled() {
        final PrintWriter pw = getOutPrintWriter();
        final PrintWriter pw = getOutPrintWriter();
        boolean enabled = mInterface.getCapabilitiesAndConfig()
        int userId = UserHandle.USER_CURRENT;
        boolean enabled = mInterface.getCapabilitiesAndConfig(userId)
                .getConfiguration()
                .getConfiguration()
                .isGeoDetectionEnabled();
                .isGeoDetectionEnabled();
        pw.println(enabled);
        pw.println(enabled);
@@ -108,18 +112,20 @@ class TimeZoneDetectorShellCommand extends ShellCommand {


    private int runSetAutoDetectionEnabled() {
    private int runSetAutoDetectionEnabled() {
        boolean enabled = Boolean.parseBoolean(getNextArgRequired());
        boolean enabled = Boolean.parseBoolean(getNextArgRequired());
        int userId = UserHandle.USER_CURRENT;
        TimeZoneConfiguration configuration = new TimeZoneConfiguration.Builder()
        TimeZoneConfiguration configuration = new TimeZoneConfiguration.Builder()
                .setAutoDetectionEnabled(enabled)
                .setAutoDetectionEnabled(enabled)
                .build();
                .build();
        return mInterface.updateConfiguration(configuration) ? 0 : 1;
        return mInterface.updateConfiguration(userId, configuration) ? 0 : 1;
    }
    }


    private int runSetGeoDetectionEnabled() {
    private int runSetGeoDetectionEnabled() {
        boolean enabled = Boolean.parseBoolean(getNextArgRequired());
        boolean enabled = Boolean.parseBoolean(getNextArgRequired());
        int userId = UserHandle.USER_CURRENT;
        TimeZoneConfiguration configuration = new TimeZoneConfiguration.Builder()
        TimeZoneConfiguration configuration = new TimeZoneConfiguration.Builder()
                .setGeoDetectionEnabled(enabled)
                .setGeoDetectionEnabled(enabled)
                .build();
                .build();
        return mInterface.updateConfiguration(configuration) ? 0 : 1;
        return mInterface.updateConfiguration(userId, configuration) ? 0 : 1;
    }
    }


    private int runSuggestGeolocationTimeZone() {
    private int runSuggestGeolocationTimeZone() {