summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Behnam Heydarshahi <bhnm@google.com> 2025-04-08 13:59:15 -0700
committer Kampalus <kampalus@protonmail.ch> 2025-09-18 09:04:57 +0200
commit04b990a536494e1fe871a5f70eade792a4ca25c9 (patch)
tree23abe9ffb92b32fd36dfbfaad1cef80585b61a78
parent14ff3d2a1c4e4e234c6b4639d401d70f29c63117 (diff)
[SP 2025-09-01] Unexport ControlsActivity
Also do not draw non-system windows on top of ControlsSettingsDialog Bug: 404256832 Flag: EXEMPT bugfix Test: atest ControlsSettingsDialogManagerImplTest Change-Id: I63e98794e1a93e3c208ee421654d73542d2bd34a (cherry picked from commit 0042369de2a626f462b3d0dff8db2294aa24ffec)
-rw-r--r--packages/SystemUI/AndroidManifest.xml1
-rw-r--r--packages/SystemUI/src/com/android/systemui/controls/settings/ControlsSettingsDialogManager.kt3
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/controls/settings/ControlsSettingsDialogManagerImplTest.kt14
3 files changed, 17 insertions, 1 deletions
diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml
index f628a420d8fa..90dcde683e66 100644
--- a/packages/SystemUI/AndroidManifest.xml
+++ b/packages/SystemUI/AndroidManifest.xml
@@ -948,7 +948,6 @@
android:launchMode="singleInstance"
android:configChanges="screenSize|smallestScreenSize|screenLayout|keyboard|keyboardHidden|orientation"
android:visibleToInstantApps="true"
- android:exported="true"
/>
<activity android:name=".wallet.ui.WalletActivity"
diff --git a/packages/SystemUI/src/com/android/systemui/controls/settings/ControlsSettingsDialogManager.kt b/packages/SystemUI/src/com/android/systemui/controls/settings/ControlsSettingsDialogManager.kt
index 4e391b7662e3..3544bde553ff 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/settings/ControlsSettingsDialogManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/settings/ControlsSettingsDialogManager.kt
@@ -23,6 +23,7 @@ import android.content.Context.MODE_PRIVATE
import android.content.DialogInterface
import android.content.SharedPreferences
import android.provider.Settings
+import android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS
import androidx.annotation.VisibleForTesting
import com.android.systemui.res.R
import com.android.systemui.controls.settings.ControlsSettingsDialogManager.Companion.MAX_NUMBER_ATTEMPTS_CONTROLS_DIALOG
@@ -148,6 +149,8 @@ internal constructor(
}
}
+ d.window?.addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS)
+
SystemUIDialog.registerDismissListener(d) { dialog = null }
SystemUIDialog.setDialogSize(d)
SystemUIDialog.setShowForAllUsers(d, true)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/settings/ControlsSettingsDialogManagerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/settings/ControlsSettingsDialogManagerImplTest.kt
index aee334f82f63..be4a1c6ece7c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/settings/ControlsSettingsDialogManagerImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/settings/ControlsSettingsDialogManagerImplTest.kt
@@ -23,6 +23,7 @@ import android.database.ContentObserver
import android.provider.Settings.Secure.LOCKSCREEN_ALLOW_TRIVIAL_CONTROLS
import android.provider.Settings.Secure.LOCKSCREEN_SHOW_CONTROLS
import android.testing.TestableLooper
+import android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
@@ -327,6 +328,19 @@ class ControlsSettingsDialogManagerImplTest : SysuiTestCase() {
assertThat(secureSettings.getBool(SETTING_ACTION)).isTrue()
}
+ @Test
+ fun dialogHidesNonSystemOverlayWindows() {
+ sharedPreferences.putAttempts(0)
+ secureSettings.putBool(SETTING_SHOW, false)
+ secureSettings.putBool(SETTING_ACTION, false)
+
+ underTest.maybeShowDialog(context, completedRunnable)
+
+ val flags = dialog!!.window!!.attributes.privateFlags
+ assertThat(flags and SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS)
+ .isEqualTo(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS)
+ }
+
private fun clickButton(which: Int) {
dialog?.clickButton(which)
}