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

Commit b8d6c0a9 authored by Alex Stetson's avatar Alex Stetson
Browse files

Replace getCurrentUser() calls with UserTracker

Replacing getCurrentUser calls in SystemUI with UserTracker to help
centralize source of truth.

Bug: 249831072
Test: atest SystemUITests

Change-Id: I23bd747192adcd715b96442f0834254ad0bb44a3
Merged-In: I23bd747192adcd715b96442f0834254ad0bb44a3
parent 504bed43
Loading
Loading
Loading
Loading
+9 −17
Original line number Diff line number Diff line
@@ -145,6 +145,7 @@ import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.log.SessionTracker;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.shared.system.TaskStackChangeListener;
import com.android.systemui.shared.system.TaskStackChangeListeners;
import com.android.systemui.statusbar.StatusBarState;
@@ -279,6 +280,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
    }

    private final Context mContext;
    private final UserTracker mUserTracker;
    private final KeyguardUpdateMonitorLogger mLogger;
    private final boolean mIsPrimaryUser;
    private final AuthController mAuthController;
@@ -864,13 +866,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
            mHandler.removeCallbacks(mFpCancelNotReceived);
        }
        try {
            final int userId;
            try {
                userId = ActivityManager.getService().getCurrentUser().id;
            } catch (RemoteException e) {
                mLogger.logException(e, "Failed to get current user id");
                return;
            }
            final int userId = mUserTracker.getUserId();
            if (userId != authUserId) {
                mLogger.logFingerprintAuthForWrongUser(authUserId);
                return;
@@ -1088,13 +1084,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
                mLogger.d("Aborted successful auth because device is going to sleep.");
                return;
            }
            final int userId;
            try {
                userId = ActivityManager.getService().getCurrentUser().id;
            } catch (RemoteException e) {
                mLogger.logException(e, "Failed to get current user id");
                return;
            }
            final int userId = mUserTracker.getUserId();
            if (userId != authUserId) {
                mLogger.logFaceAuthForWrongUser(authUserId);
                return;
@@ -1944,6 +1934,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
    @Inject
    protected KeyguardUpdateMonitor(
            Context context,
            UserTracker userTracker,
            @Main Looper mainLooper,
            BroadcastDispatcher broadcastDispatcher,
            SecureSettings secureSettings,
@@ -1976,6 +1967,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
            FaceWakeUpTriggersConfig faceWakeUpTriggersConfig) {
        mContext = context;
        mSubscriptionManager = subscriptionManager;
        mUserTracker = userTracker;
        mTelephonyListenerManager = telephonyListenerManager;
        mDeviceProvisioned = isDeviceProvisionedInSettingsDb();
        mStrongAuthTracker = new StrongAuthTracker(context, this::notifyStrongAuthStateChanged,
@@ -2207,7 +2199,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab

        TaskStackChangeListeners.getInstance().registerTaskStackListener(mTaskStackListener);
        mIsPrimaryUser = mUserManager.isPrimaryUser();
        int user = ActivityManager.getCurrentUser();
        int user = mUserTracker.getUserId();
        mUserIsUnlocked.put(user, mUserManager.isUserUnlocked(user));
        mLogoutEnabled = mDevicePolicyManager.isLogoutEnabled();
        updateSecondaryLockscreenRequirement(user);
@@ -3833,7 +3825,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
            pw.println("    " + subId + "=" + mServiceStates.get(subId));
        }
        if (mFpm != null && mFpm.isHardwareDetected()) {
            final int userId = ActivityManager.getCurrentUser();
            final int userId = mUserTracker.getUserId();
            final int strongAuthFlags = mStrongAuthTracker.getStrongAuthForUser(userId);
            BiometricAuthenticated fingerprint = mUserFingerprintAuthenticated.get(userId);
            pw.println("  Fingerprint state (user=" + userId + ")");
@@ -3871,7 +3863,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
            }
        }
        if (mFaceManager != null && mFaceManager.isHardwareDetected()) {
            final int userId = ActivityManager.getCurrentUser();
            final int userId = mUserTracker.getUserId();
            final int strongAuthFlags = mStrongAuthTracker.getStrongAuthForUser(userId);
            BiometricAuthenticated face = mUserFaceAuthenticated.get(userId);
            pw.println("  Face authentication state (user=" + userId + ")");
+24 −14
Original line number Diff line number Diff line
@@ -29,17 +29,17 @@ import android.util.ArrayMap;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;

import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
import androidx.lifecycle.Observer;

import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.colorextraction.SysuiColorExtractor;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dock.DockManager;
import com.android.systemui.dock.DockManager.DockEventListener;
import com.android.systemui.plugins.ClockPlugin;
import com.android.systemui.plugins.PluginListener;
import com.android.systemui.settings.CurrentUserObservable;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.shared.plugins.PluginManager;

import java.util.ArrayList;
@@ -47,6 +47,7 @@ import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.Executor;
import java.util.function.Supplier;

import javax.inject.Inject;
@@ -69,7 +70,8 @@ public final class ClockManager {
    private final ContentResolver mContentResolver;
    private final SettingsWrapper mSettingsWrapper;
    private final Handler mMainHandler = new Handler(Looper.getMainLooper());
    private final CurrentUserObservable mCurrentUserObservable;
    private final UserTracker mUserTracker;
    private final Executor mMainExecutor;

    /**
     * Observe settings changes to know when to switch the clock face.
@@ -80,7 +82,7 @@ public final class ClockManager {
                public void onChange(boolean selfChange, Collection<Uri> uris,
                        int flags, int userId) {
                    if (Objects.equals(userId,
                            mCurrentUserObservable.getCurrentUser().getValue())) {
                            mUserTracker.getUserId())) {
                        reload();
                    }
                }
@@ -89,7 +91,13 @@ public final class ClockManager {
    /**
     * Observe user changes and react by potentially loading the custom clock for the new user.
     */
    private final Observer<Integer> mCurrentUserObserver = (newUserId) -> reload();
    private final UserTracker.Callback mUserChangedCallback =
            new UserTracker.Callback() {
                @Override
                public void onUserChanged(int newUser, @NonNull Context userContext) {
                    reload();
                }
            };

    private final PluginManager mPluginManager;
    @Nullable private final DockManager mDockManager;
@@ -129,22 +137,24 @@ public final class ClockManager {
    @Inject
    public ClockManager(Context context, LayoutInflater layoutInflater,
            PluginManager pluginManager, SysuiColorExtractor colorExtractor,
            @Nullable DockManager dockManager, BroadcastDispatcher broadcastDispatcher) {
            @Nullable DockManager dockManager, UserTracker userTracker,
            @Main Executor mainExecutor) {
        this(context, layoutInflater, pluginManager, colorExtractor,
                context.getContentResolver(), new CurrentUserObservable(broadcastDispatcher),
                context.getContentResolver(), userTracker, mainExecutor,
                new SettingsWrapper(context.getContentResolver()), dockManager);
    }

    @VisibleForTesting
    ClockManager(Context context, LayoutInflater layoutInflater,
            PluginManager pluginManager, SysuiColorExtractor colorExtractor,
            ContentResolver contentResolver, CurrentUserObservable currentUserObservable,
            ContentResolver contentResolver, UserTracker userTracker, Executor mainExecutor,
            SettingsWrapper settingsWrapper, DockManager dockManager) {
        mContext = context;
        mPluginManager = pluginManager;
        mContentResolver = contentResolver;
        mSettingsWrapper = settingsWrapper;
        mCurrentUserObservable = currentUserObservable;
        mUserTracker = userTracker;
        mMainExecutor = mainExecutor;
        mDockManager = dockManager;
        mPreviewClocks = new AvailableClocks();

@@ -226,7 +236,7 @@ public final class ClockManager {
        mContentResolver.registerContentObserver(
                Settings.Secure.getUriFor(Settings.Secure.DOCKED_CLOCK_FACE),
                false, mContentObserver, UserHandle.USER_ALL);
        mCurrentUserObservable.getCurrentUser().observeForever(mCurrentUserObserver);
        mUserTracker.addCallback(mUserChangedCallback, mMainExecutor);
        if (mDockManager != null) {
            mDockManager.addListener(mDockEventListener);
        }
@@ -235,7 +245,7 @@ public final class ClockManager {
    private void unregister() {
        mPluginManager.removePluginListener(mPreviewClocks);
        mContentResolver.unregisterContentObserver(mContentObserver);
        mCurrentUserObservable.getCurrentUser().removeObserver(mCurrentUserObserver);
        mUserTracker.removeCallback(mUserChangedCallback);
        if (mDockManager != null) {
            mDockManager.removeListener(mDockEventListener);
        }
@@ -363,7 +373,7 @@ public final class ClockManager {
            ClockPlugin plugin = null;
            if (ClockManager.this.isDocked()) {
                final String name = mSettingsWrapper.getDockedClockFace(
                        mCurrentUserObservable.getCurrentUser().getValue());
                        mUserTracker.getUserId());
                if (name != null) {
                    plugin = mClocks.get(name);
                    if (plugin != null) {
@@ -372,7 +382,7 @@ public final class ClockManager {
                }
            }
            final String name = mSettingsWrapper.getLockScreenCustomClockFace(
                    mCurrentUserObservable.getCurrentUser().getValue());
                    mUserTracker.getUserId());
            if (name != null) {
                plugin = mClocks.get(name);
            }
+3 −0
Original line number Diff line number Diff line
@@ -70,6 +70,7 @@ import com.android.systemui.qs.ReduceBrightColorsController;
import com.android.systemui.qs.tiles.dialog.InternetDialogFactory;
import com.android.systemui.recents.OverviewProxyService;
import com.android.systemui.screenrecord.RecordingController;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.shade.ShadeController;
import com.android.systemui.shared.plugins.PluginManager;
import com.android.systemui.shared.system.ActivityManagerWrapper;
@@ -357,6 +358,7 @@ public class Dependency {
    @Inject Lazy<GroupExpansionManager> mGroupExpansionManagerLazy;
    @Inject Lazy<SystemUIDialogManager> mSystemUIDialogManagerLazy;
    @Inject Lazy<DialogLaunchAnimator> mDialogLaunchAnimatorLazy;
    @Inject Lazy<UserTracker> mUserTrackerLazy;

    @Inject
    public Dependency() {
@@ -564,6 +566,7 @@ public class Dependency {
        mProviders.put(GroupExpansionManager.class, mGroupExpansionManagerLazy::get);
        mProviders.put(SystemUIDialogManager.class, mSystemUIDialogManagerLazy::get);
        mProviders.put(DialogLaunchAnimator.class, mDialogLaunchAnimatorLazy::get);
        mProviders.put(UserTracker.class, mUserTrackerLazy::get);

        Dependency.setInstance(this);
    }
+1 −2
Original line number Diff line number Diff line
@@ -26,7 +26,6 @@ import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_M
import android.annotation.IdRes;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.ActivityManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -901,7 +900,7 @@ public class ScreenDecorations implements CoreStartable, Tunable , Dumpable {
    private final BroadcastReceiver mUserSwitchIntentReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            int newUserId = ActivityManager.getCurrentUser();
            int newUserId = mUserTracker.getUserId();
            if (DEBUG) {
                Log.d(TAG, "UserSwitched newUserId=" + newUserId);
            }
+24 −17
Original line number Diff line number Diff line
@@ -17,21 +17,23 @@ package com.android.systemui.battery;

import static android.provider.Settings.System.SHOW_BATTERY_PERCENT;

import android.app.ActivityManager;
import android.content.ContentResolver;
import android.content.Context;
import android.database.ContentObserver;
import android.net.Uri;
import android.os.Handler;
import android.os.HandlerExecutor;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.ArraySet;
import android.view.View;

import com.android.systemui.broadcast.BroadcastDispatcher;
import androidx.annotation.NonNull;

import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.settings.CurrentUserTracker;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.ConfigurationController;
@@ -44,12 +46,13 @@ import javax.inject.Inject;
public class BatteryMeterViewController extends ViewController<BatteryMeterView> {
    private final ConfigurationController mConfigurationController;
    private final TunerService mTunerService;
    private final Handler mMainHandler;
    private final ContentResolver mContentResolver;
    private final BatteryController mBatteryController;

    private final String mSlotBattery;
    private final SettingObserver mSettingObserver;
    private final CurrentUserTracker mCurrentUserTracker;
    private final UserTracker mUserTracker;

    private final ConfigurationController.ConfigurationListener mConfigurationListener =
            new ConfigurationController.ConfigurationListener() {
@@ -93,6 +96,16 @@ public class BatteryMeterViewController extends ViewController<BatteryMeterView>
                }
            };

    private final UserTracker.Callback mUserChangedCallback =
            new UserTracker.Callback() {
                @Override
                public void onUserChanged(int newUser, @NonNull Context userContext) {
                    mContentResolver.unregisterContentObserver(mSettingObserver);
                    registerShowBatteryPercentObserver(newUser);
                    mView.updateShowPercent();
                }
            };

    // Some places may need to show the battery conditionally, and not obey the tuner
    private boolean mIgnoreTunerUpdates;
    private boolean mIsSubscribedForTunerUpdates;
@@ -100,16 +113,18 @@ public class BatteryMeterViewController extends ViewController<BatteryMeterView>
    @Inject
    public BatteryMeterViewController(
            BatteryMeterView view,
            UserTracker userTracker,
            ConfigurationController configurationController,
            TunerService tunerService,
            BroadcastDispatcher broadcastDispatcher,
            @Main Handler mainHandler,
            ContentResolver contentResolver,
            FeatureFlags featureFlags,
            BatteryController batteryController) {
        super(view);
        mUserTracker = userTracker;
        mConfigurationController = configurationController;
        mTunerService = tunerService;
        mMainHandler = mainHandler;
        mContentResolver = contentResolver;
        mBatteryController = batteryController;

@@ -117,15 +132,7 @@ public class BatteryMeterViewController extends ViewController<BatteryMeterView>
        mView.setDisplayShieldEnabled(featureFlags.isEnabled(Flags.BATTERY_SHIELD_ICON));

        mSlotBattery = getResources().getString(com.android.internal.R.string.status_bar_battery);
        mSettingObserver = new SettingObserver(mainHandler);
        mCurrentUserTracker = new CurrentUserTracker(broadcastDispatcher) {
            @Override
            public void onUserSwitched(int newUserId) {
                contentResolver.unregisterContentObserver(mSettingObserver);
                registerShowBatteryPercentObserver(newUserId);
                mView.updateShowPercent();
            }
        };
        mSettingObserver = new SettingObserver(mMainHandler);
    }

    @Override
@@ -134,9 +141,9 @@ public class BatteryMeterViewController extends ViewController<BatteryMeterView>
        subscribeForTunerUpdates();
        mBatteryController.addCallback(mBatteryStateChangeCallback);

        registerShowBatteryPercentObserver(ActivityManager.getCurrentUser());
        registerShowBatteryPercentObserver(mUserTracker.getUserId());
        registerGlobalBatteryUpdateObserver();
        mCurrentUserTracker.startTracking();
        mUserTracker.addCallback(mUserChangedCallback, new HandlerExecutor(mMainHandler));

        mView.updateShowPercent();
    }
@@ -147,7 +154,7 @@ public class BatteryMeterViewController extends ViewController<BatteryMeterView>
        unsubscribeFromTunerUpdates();
        mBatteryController.removeCallback(mBatteryStateChangeCallback);

        mCurrentUserTracker.stopTracking();
        mUserTracker.removeCallback(mUserChangedCallback);
        mContentResolver.unregisterContentObserver(mSettingObserver);
    }

Loading