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

Commit 8b8de88b authored by Shawn Lin's avatar Shawn Lin Committed by Android (Google) Code Review
Browse files

Merge "Update to use NAV_BAR_KIDS_MODE settings key for kids mode organizer" into tm-dev

parents e6d80e53 7439e386
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -24,17 +24,17 @@ import android.os.UserHandle;
import android.provider.Settings;

/**
 * A ContentObserver for listening force show navigation bar relative setting keys:
 * A ContentObserver for listening kids mode relative setting keys:
 *  - {@link Settings.Secure#NAVIGATION_MODE}
 *  - {@link Settings.Secure#NAV_BAR_FORCE_VISIBLE}
 *  - {@link Settings.Secure#NAV_BAR_KIDS_MODE}
 *
 * @hide
 */
public class ForceShowNavigationBarSettingsObserver extends ContentObserver {
public class KidsModeSettingsObserver extends ContentObserver {
    private Context mContext;
    private Runnable mOnChangeRunnable;

    public ForceShowNavigationBarSettingsObserver(Handler handler, Context context) {
    public KidsModeSettingsObserver(Handler handler, Context context) {
        super(handler);
        mContext = context;
    }
@@ -52,7 +52,7 @@ public class ForceShowNavigationBarSettingsObserver extends ContentObserver {
                Settings.Secure.getUriFor(Settings.Secure.NAVIGATION_MODE),
                false, this, UserHandle.USER_ALL);
        r.registerContentObserver(
                Settings.Secure.getUriFor(Settings.Secure.NAV_BAR_FORCE_VISIBLE),
                Settings.Secure.getUriFor(Settings.Secure.NAV_BAR_KIDS_MODE),
                false, this, UserHandle.USER_ALL);
    }

@@ -78,6 +78,6 @@ public class ForceShowNavigationBarSettingsObserver extends ContentObserver {
        return Settings.Secure.getIntForUser(mContext.getContentResolver(),
                Settings.Secure.NAVIGATION_MODE, 0, UserHandle.USER_CURRENT) == 0
                && Settings.Secure.getIntForUser(mContext.getContentResolver(),
                Settings.Secure.NAV_BAR_FORCE_VISIBLE, 0, UserHandle.USER_CURRENT) == 1;
                Settings.Secure.NAV_BAR_KIDS_MODE, 0, UserHandle.USER_CURRENT) == 1;
    }
}
+9 −9
Original line number Diff line number Diff line
@@ -40,7 +40,7 @@ import android.window.WindowContainerTransaction;
import androidx.annotation.NonNull;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.policy.ForceShowNavigationBarSettingsObserver;
import com.android.internal.policy.KidsModeSettingsObserver;
import com.android.wm.shell.ShellTaskOrganizer;
import com.android.wm.shell.common.DisplayController;
import com.android.wm.shell.common.DisplayInsetsController;
@@ -85,7 +85,7 @@ public class KidsModeTaskOrganizer extends ShellTaskOrganizer {
    private int mDisplayWidth;
    private int mDisplayHeight;

    private ForceShowNavigationBarSettingsObserver mForceShowNavigationBarSettingsObserver;
    private KidsModeSettingsObserver mKidsModeSettingsObserver;
    private boolean mEnabled;

    DisplayController.OnDisplaysChangedListener mOnDisplaysChangedListener =
@@ -138,14 +138,14 @@ public class KidsModeTaskOrganizer extends ShellTaskOrganizer {
            DisplayController displayController,
            DisplayInsetsController displayInsetsController,
            Optional<RecentTasksController> recentTasks,
            ForceShowNavigationBarSettingsObserver forceShowNavigationBarSettingsObserver) {
            KidsModeSettingsObserver kidsModeSettingsObserver) {
        super(taskOrganizerController, mainExecutor, context, /* compatUI= */ null, recentTasks);
        mContext = context;
        mMainHandler = mainHandler;
        mSyncQueue = syncTransactionQueue;
        mDisplayController = displayController;
        mDisplayInsetsController = displayInsetsController;
        mForceShowNavigationBarSettingsObserver = forceShowNavigationBarSettingsObserver;
        mKidsModeSettingsObserver = kidsModeSettingsObserver;
    }

    public KidsModeTaskOrganizer(
@@ -169,13 +169,13 @@ public class KidsModeTaskOrganizer extends ShellTaskOrganizer {
     */
    public void initialize(StartingWindowController startingWindowController) {
        initStartingWindow(startingWindowController);
        if (mForceShowNavigationBarSettingsObserver == null) {
            mForceShowNavigationBarSettingsObserver = new ForceShowNavigationBarSettingsObserver(
        if (mKidsModeSettingsObserver == null) {
            mKidsModeSettingsObserver = new KidsModeSettingsObserver(
                    mMainHandler, mContext);
        }
        mForceShowNavigationBarSettingsObserver.setOnChangeRunnable(() -> updateKidsModeState());
        mKidsModeSettingsObserver.setOnChangeRunnable(() -> updateKidsModeState());
        updateKidsModeState();
        mForceShowNavigationBarSettingsObserver.register();
        mKidsModeSettingsObserver.register();
    }

    @Override
@@ -211,7 +211,7 @@ public class KidsModeTaskOrganizer extends ShellTaskOrganizer {

    @VisibleForTesting
    void updateKidsModeState() {
        final boolean enabled = mForceShowNavigationBarSettingsObserver.isEnabled();
        final boolean enabled = mKidsModeSettingsObserver.isEnabled();
        if (mEnabled == enabled) {
            return;
        }
+2 −2
Original line number Diff line number Diff line
@@ -44,7 +44,7 @@ import android.window.WindowContainerTransaction;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;

import com.android.internal.policy.ForceShowNavigationBarSettingsObserver;
import com.android.internal.policy.KidsModeSettingsObserver;
import com.android.wm.shell.common.DisplayController;
import com.android.wm.shell.common.DisplayInsetsController;
import com.android.wm.shell.common.ShellExecutor;
@@ -72,7 +72,7 @@ public class KidsModeTaskOrganizerTest {
    @Mock private SurfaceControl mLeash;
    @Mock private WindowContainerToken mToken;
    @Mock private WindowContainerTransaction mTransaction;
    @Mock private ForceShowNavigationBarSettingsObserver mObserver;
    @Mock private KidsModeSettingsObserver mObserver;
    @Mock private StartingWindowController mStartingWindowController;
    @Mock private DisplayInsetsController mDisplayInsetsController;

+8 −8
Original line number Diff line number Diff line
@@ -138,8 +138,8 @@ import android.window.ClientWindowFrames;

import com.android.internal.R;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.policy.ForceShowNavigationBarSettingsObserver;
import com.android.internal.policy.GestureNavigationSettingsObserver;
import com.android.internal.policy.KidsModeSettingsObserver;
import com.android.internal.policy.ScreenDecorationsUtils;
import com.android.internal.policy.SystemBarUtils;
import com.android.internal.protolog.common.ProtoLog;
@@ -378,7 +378,7 @@ public class DisplayPolicy {

    private final WindowManagerInternal.AppTransitionListener mAppTransitionListener;

    private final ForceShowNavigationBarSettingsObserver mForceShowNavigationBarSettingsObserver;
    private final KidsModeSettingsObserver mKidsModeSettingsObserver;
    private boolean mForceShowNavigationBarEnabled;

    private class PolicyHandler extends Handler {
@@ -653,17 +653,17 @@ public class DisplayPolicy {
        });
        mHandler.post(mGestureNavigationSettingsObserver::register);

        mForceShowNavigationBarSettingsObserver = new ForceShowNavigationBarSettingsObserver(
        mKidsModeSettingsObserver = new KidsModeSettingsObserver(
                mHandler, mContext);
        mForceShowNavigationBarSettingsObserver.setOnChangeRunnable(() -> {
        mKidsModeSettingsObserver.setOnChangeRunnable(() -> {
            synchronized (mLock) {
                mForceShowNavigationBarEnabled =
                        mForceShowNavigationBarSettingsObserver.isEnabled();
                        mKidsModeSettingsObserver.isEnabled();
                updateSystemBarAttributes();
            }
        });
        mForceShowNavigationBarEnabled = mForceShowNavigationBarSettingsObserver.isEnabled();
        mHandler.post(mForceShowNavigationBarSettingsObserver::register);
        mForceShowNavigationBarEnabled = mKidsModeSettingsObserver.isEnabled();
        mHandler.post(mKidsModeSettingsObserver::register);
    }

    /**
@@ -2861,7 +2861,7 @@ public class DisplayPolicy {
    void release() {
        mDisplayContent.mTransitionController.unregisterLegacyListener(mAppTransitionListener);
        mHandler.post(mGestureNavigationSettingsObserver::unregister);
        mHandler.post(mForceShowNavigationBarSettingsObserver::unregister);
        mHandler.post(mKidsModeSettingsObserver::unregister);
        mImmersiveModeConfirmation.release();
    }