diff options
| author | 2022-04-27 10:25:02 +0000 | |
|---|---|---|
| committer | 2022-04-27 10:25:02 +0000 | |
| commit | 8944a2ed80a10094a8a51273721b9d5ee92591b4 (patch) | |
| tree | 1bb765290e6f918e08636ac3b03986134cfc2b22 | |
| parent | 0ef5142b6bc2a46e5af76cd92e04a2786681f47d (diff) | |
| parent | b9109dd6aebf1d90c7c0f9b6cbc4e1d465c5878f (diff) | |
Merge "Move kids mode relative logic to wm shell" into tm-dev am: b9109dd6ae
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17903530
Change-Id: Ice17e5ace9e090a6fd0e99fad488c518b1498a7a
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | core/java/com/android/internal/policy/ForceShowNavBarSettingsObserver.java | 75 | ||||
| -rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/kidsmode/KidsModeSettingsObserver.java (renamed from core/java/com/android/internal/policy/KidsModeSettingsObserver.java) | 2 | ||||
| -rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/kidsmode/KidsModeTaskOrganizer.java | 1 | ||||
| -rw-r--r-- | libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/kidsmode/KidsModeTaskOrganizerTest.java | 1 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/DisplayPolicy.java | 16 |
5 files changed, 84 insertions, 11 deletions
diff --git a/core/java/com/android/internal/policy/ForceShowNavBarSettingsObserver.java b/core/java/com/android/internal/policy/ForceShowNavBarSettingsObserver.java new file mode 100644 index 000000000000..fc064ea1ff10 --- /dev/null +++ b/core/java/com/android/internal/policy/ForceShowNavBarSettingsObserver.java @@ -0,0 +1,75 @@ +/* + * Copyright (C) 2022 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.internal.policy; + +import android.content.ContentResolver; +import android.content.Context; +import android.database.ContentObserver; +import android.os.Handler; +import android.os.UserHandle; +import android.provider.Settings; + +/** + * A ContentObserver for listening {@link Settings.Secure#NAV_BAR_FORCE_VISIBLE} setting key. + * + * @hide + */ +public class ForceShowNavBarSettingsObserver extends ContentObserver { + private Context mContext; + private Runnable mOnChangeRunnable; + + public ForceShowNavBarSettingsObserver(Handler handler, Context context) { + super(handler); + mContext = context; + } + + public void setOnChangeRunnable(Runnable r) { + mOnChangeRunnable = r; + } + + /** + * Registers the observer. + */ + public void register() { + final ContentResolver r = mContext.getContentResolver(); + r.registerContentObserver( + Settings.Secure.getUriFor(Settings.Secure.NAV_BAR_FORCE_VISIBLE), + false, this, UserHandle.USER_ALL); + } + + /** + * Unregisters the observer. + */ + public void unregister() { + mContext.getContentResolver().unregisterContentObserver(this); + } + + @Override + public void onChange(boolean selfChange) { + if (mOnChangeRunnable != null) { + mOnChangeRunnable.run(); + } + } + + /** + * Returns true only when it's in orce show navigation bar mode. Otherwise, return false. + */ + public boolean isEnabled() { + return Settings.Secure.getIntForUser(mContext.getContentResolver(), + Settings.Secure.NAV_BAR_FORCE_VISIBLE, 0, UserHandle.USER_CURRENT) == 1; + } +} diff --git a/core/java/com/android/internal/policy/KidsModeSettingsObserver.java b/libs/WindowManager/Shell/src/com/android/wm/shell/kidsmode/KidsModeSettingsObserver.java index 8a1d407382bc..f8f9d6b8f8a0 100644 --- a/core/java/com/android/internal/policy/KidsModeSettingsObserver.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/kidsmode/KidsModeSettingsObserver.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.policy; +package com.android.wm.shell.kidsmode; import android.content.ContentResolver; import android.content.Context; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/kidsmode/KidsModeTaskOrganizer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/kidsmode/KidsModeTaskOrganizer.java index 28681526b4f2..dc703583a449 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/kidsmode/KidsModeTaskOrganizer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/kidsmode/KidsModeTaskOrganizer.java @@ -40,7 +40,6 @@ import android.window.WindowContainerTransaction; import androidx.annotation.NonNull; import com.android.internal.annotations.VisibleForTesting; -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; diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/kidsmode/KidsModeTaskOrganizerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/kidsmode/KidsModeTaskOrganizerTest.java index 5526d5be7594..440a6f8fb59a 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/kidsmode/KidsModeTaskOrganizerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/kidsmode/KidsModeTaskOrganizerTest.java @@ -44,7 +44,6 @@ import android.window.WindowContainerTransaction; import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.SmallTest; -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; diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index 2d7d7055a03b..014bb9f5e6ad 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -138,8 +138,8 @@ import android.window.ClientWindowFrames; import com.android.internal.R; import com.android.internal.annotations.VisibleForTesting; +import com.android.internal.policy.ForceShowNavBarSettingsObserver; 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 KidsModeSettingsObserver mKidsModeSettingsObserver; + private final ForceShowNavBarSettingsObserver mForceShowNavBarSettingsObserver; private boolean mForceShowNavigationBarEnabled; private class PolicyHandler extends Handler { @@ -653,17 +653,17 @@ public class DisplayPolicy { }); mHandler.post(mGestureNavigationSettingsObserver::register); - mKidsModeSettingsObserver = new KidsModeSettingsObserver( + mForceShowNavBarSettingsObserver = new ForceShowNavBarSettingsObserver( mHandler, mContext); - mKidsModeSettingsObserver.setOnChangeRunnable(() -> { + mForceShowNavBarSettingsObserver.setOnChangeRunnable(() -> { synchronized (mLock) { mForceShowNavigationBarEnabled = - mKidsModeSettingsObserver.isEnabled(); + mForceShowNavBarSettingsObserver.isEnabled(); updateSystemBarAttributes(); } }); - mForceShowNavigationBarEnabled = mKidsModeSettingsObserver.isEnabled(); - mHandler.post(mKidsModeSettingsObserver::register); + mForceShowNavigationBarEnabled = mForceShowNavBarSettingsObserver.isEnabled(); + mHandler.post(mForceShowNavBarSettingsObserver::register); } /** @@ -2861,7 +2861,7 @@ public class DisplayPolicy { void release() { mDisplayContent.mTransitionController.unregisterLegacyListener(mAppTransitionListener); mHandler.post(mGestureNavigationSettingsObserver::unregister); - mHandler.post(mKidsModeSettingsObserver::unregister); + mHandler.post(mForceShowNavBarSettingsObserver::unregister); mImmersiveModeConfirmation.release(); } |