Snap for 12854492 from 47d59ab974 to 25Q2-release
Change-Id: I748c316901e32c98e4d96d15064c916a4414cbd5
This commit is contained in:
@@ -4460,19 +4460,6 @@
|
|||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity android:name=".security.ActionDisabledByAdvancedProtectionDialog"
|
|
||||||
android:theme="@style/Theme.AlertDialog"
|
|
||||||
android:taskAffinity="com.android.settings.security"
|
|
||||||
android:excludeFromRecents="true"
|
|
||||||
android:exported="false"
|
|
||||||
android:launchMode="singleTop"
|
|
||||||
android:featureFlag="android.security.aapm_api">
|
|
||||||
<intent-filter android:priority="1">
|
|
||||||
<action android:name="android.security.advancedprotection.action.SHOW_ADVANCED_PROTECTION_SUPPORT_DIALOG" />
|
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
|
||||||
</intent-filter>
|
|
||||||
</activity>
|
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name="Settings$ManageExternalStorageActivity"
|
android:name="Settings$ManageExternalStorageActivity"
|
||||||
android:knownActivityEmbeddingCerts="@array/config_known_host_certs"
|
android:knownActivityEmbeddingCerts="@array/config_known_host_certs"
|
||||||
|
|||||||
@@ -28,13 +28,6 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"/>
|
android:layout_height="wrap_content"/>
|
||||||
|
|
||||||
<com.android.settings.widget.SettingsMainSwitchBar
|
|
||||||
android:id="@+id/expressive_switch_bar"
|
|
||||||
android:visibility="gone"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginHorizontal="16dip"/>
|
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@+id/main_content"
|
android:id="@+id/main_content"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|||||||
@@ -10696,11 +10696,6 @@
|
|||||||
<string name="admin_financed_message">Your device administrator may be able to access data
|
<string name="admin_financed_message">Your device administrator may be able to access data
|
||||||
associated with this device, manage apps, and change this device\’s settings.</string>
|
associated with this device, manage apps, and change this device\’s settings.</string>
|
||||||
|
|
||||||
<!-- Title for dialog displayed when user taps a setting on their phone that's blocked by Advanced Protection. [CHAR LIMIT=50] -->
|
|
||||||
<string name="disabled_by_advanced_protection_title">Prevented by Advanced Protection</string>
|
|
||||||
<!-- Short summary for dialog displayed when user taps a setting on their phone that's blocked by Advanced Protection. [CHAR LIMIT=NONE] -->
|
|
||||||
<string name="disabled_by_advanced_protection_message">This action is not allowed because Advanced Protection is on for your device.</string>
|
|
||||||
|
|
||||||
<!-- Turn off a conditional state of the device (e.g. airplane mode, or hotspot) [CHAR LIMIT=30] -->
|
<!-- Turn off a conditional state of the device (e.g. airplane mode, or hotspot) [CHAR LIMIT=30] -->
|
||||||
<string name="condition_turn_off">Turn off</string>
|
<string name="condition_turn_off">Turn off</string>
|
||||||
|
|
||||||
|
|||||||
@@ -311,10 +311,7 @@ public class SettingsActivity extends SettingsBaseActivity
|
|||||||
}
|
}
|
||||||
|
|
||||||
setContentView(R.layout.settings_main_prefs);
|
setContentView(R.layout.settings_main_prefs);
|
||||||
|
mMainSwitch = findViewById(R.id.switch_bar);
|
||||||
mMainSwitch = SettingsThemeHelper.isExpressiveTheme(this)
|
|
||||||
? findViewById(R.id.expressive_switch_bar)
|
|
||||||
: findViewById(R.id.switch_bar);
|
|
||||||
if (mMainSwitch != null) {
|
if (mMainSwitch != null) {
|
||||||
mMainSwitch.setMetricsCategory(lookupMetricsCategory());
|
mMainSwitch.setMetricsCategory(lookupMetricsCategory());
|
||||||
mMainSwitch.setTranslationZ(findViewById(R.id.main_content).getTranslationZ() + 1);
|
mMainSwitch.setTranslationZ(findViewById(R.id.main_content).getTranslationZ() + 1);
|
||||||
|
|||||||
@@ -43,7 +43,8 @@ import com.android.settings.overlay.FeatureFactoryImpl;
|
|||||||
import com.android.settings.spa.SettingsSpaEnvironment;
|
import com.android.settings.spa.SettingsSpaEnvironment;
|
||||||
import com.android.settingslib.applications.AppIconCacheManager;
|
import com.android.settingslib.applications.AppIconCacheManager;
|
||||||
import com.android.settingslib.datastore.BackupRestoreStorageManager;
|
import com.android.settingslib.datastore.BackupRestoreStorageManager;
|
||||||
import com.android.settingslib.metadata.PreferenceScreenMetadata;
|
import com.android.settingslib.metadata.FixedArrayMap;
|
||||||
|
import com.android.settingslib.metadata.PreferenceScreenMetadataCreator;
|
||||||
import com.android.settingslib.metadata.PreferenceScreenRegistry;
|
import com.android.settingslib.metadata.PreferenceScreenRegistry;
|
||||||
import com.android.settingslib.metadata.ProvidePreferenceScreenOptions;
|
import com.android.settingslib.metadata.ProvidePreferenceScreenOptions;
|
||||||
import com.android.settingslib.preference.PreferenceBindingFactory;
|
import com.android.settingslib.preference.PreferenceBindingFactory;
|
||||||
@@ -52,7 +53,6 @@ import com.android.settingslib.spa.framework.common.SpaEnvironmentFactory;
|
|||||||
import com.google.android.setupcompat.util.WizardManagerHelper;
|
import com.google.android.setupcompat.util.WizardManagerHelper;
|
||||||
|
|
||||||
import java.lang.ref.WeakReference;
|
import java.lang.ref.WeakReference;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/** Settings application which sets up activity embedding rules for the large screen device. */
|
/** Settings application which sets up activity embedding rules for the large screen device. */
|
||||||
@ProvidePreferenceScreenOptions(
|
@ProvidePreferenceScreenOptions(
|
||||||
@@ -75,8 +75,8 @@ public class SettingsApplication extends Application {
|
|||||||
super.onCreate();
|
super.onCreate();
|
||||||
|
|
||||||
if (Flags.catalyst()) {
|
if (Flags.catalyst()) {
|
||||||
PreferenceScreenRegistry.INSTANCE.setPreferenceScreensSupplier(
|
PreferenceScreenRegistry.INSTANCE.setPreferenceScreenMetadataCreators(
|
||||||
this::getPreferenceScreens);
|
getPreferenceScreenCreators());
|
||||||
PreferenceBindingFactory.setDefaultFactory(new SettingsPreferenceBindingFactory());
|
PreferenceBindingFactory.setDefaultFactory(new SettingsPreferenceBindingFactory());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -106,11 +106,11 @@ public class SettingsApplication extends Application {
|
|||||||
registerActivityLifecycleCallbacks(new DeveloperOptionsActivityLifecycle());
|
registerActivityLifecycleCallbacks(new DeveloperOptionsActivityLifecycle());
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Returns the screens using metadata. */
|
/** Returns the creators of preference screen metadata. */
|
||||||
protected List<PreferenceScreenMetadata> getPreferenceScreens() {
|
protected FixedArrayMap<String, PreferenceScreenMetadataCreator> getPreferenceScreenCreators() {
|
||||||
// PreferenceScreenCollector is generated by annotation processor from classes annotated
|
// PreferenceScreenCollector is generated by annotation processor from classes annotated
|
||||||
// with @ProvidePreferenceScreen
|
// with @ProvidePreferenceScreen
|
||||||
return PreferenceScreenCollector.get(this);
|
return PreferenceScreenCollector.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
|
|||||||
import com.android.settingslib.metadata.preferenceHierarchy
|
import com.android.settingslib.metadata.preferenceHierarchy
|
||||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||||
|
|
||||||
@ProvidePreferenceScreen
|
@ProvidePreferenceScreen(ColorAndMotionScreen.KEY)
|
||||||
class ColorAndMotionScreen : PreferenceScreenCreator {
|
class ColorAndMotionScreen : PreferenceScreenCreator {
|
||||||
override val key: String
|
override val key: String
|
||||||
get() = KEY
|
get() = KEY
|
||||||
@@ -44,7 +44,7 @@ class ColorAndMotionScreen : PreferenceScreenCreator {
|
|||||||
override fun fragmentClass() = ColorAndMotionFragment::class.java
|
override fun fragmentClass() = ColorAndMotionFragment::class.java
|
||||||
|
|
||||||
override fun getPreferenceHierarchy(context: Context) =
|
override fun getPreferenceHierarchy(context: Context) =
|
||||||
preferenceHierarchy(this) {
|
preferenceHierarchy(context, this) {
|
||||||
+RemoveAnimationsPreference()
|
+RemoveAnimationsPreference()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -54,6 +54,9 @@ public class HighContrastTextMigrationReceiver extends BroadcastReceiver {
|
|||||||
static final String ACTION_RESTORED =
|
static final String ACTION_RESTORED =
|
||||||
"com.android.settings.accessibility.ACTION_HIGH_CONTRAST_TEXT_RESTORED";
|
"com.android.settings.accessibility.ACTION_HIGH_CONTRAST_TEXT_RESTORED";
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
|
static final String ACTION_OPEN_SETTINGS =
|
||||||
|
"com.android.settings.accessibility.ACTION_OPEN_HIGH_CONTRAST_TEXT_SETTINGS";
|
||||||
|
@VisibleForTesting
|
||||||
static final int NOTIFICATION_ID = 1;
|
static final int NOTIFICATION_ID = 1;
|
||||||
|
|
||||||
@Retention(RetentionPolicy.SOURCE)
|
@Retention(RetentionPolicy.SOURCE)
|
||||||
@@ -74,7 +77,16 @@ public class HighContrastTextMigrationReceiver extends BroadcastReceiver {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ACTION_RESTORED.equals(intent.getAction())) {
|
if (ACTION_OPEN_SETTINGS.equals(intent.getAction())) {
|
||||||
|
// Close notification drawer before opening the HCT setting.
|
||||||
|
context.sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
|
||||||
|
|
||||||
|
Intent settingsIntent = createHighContrastTextSettingsIntent(context);
|
||||||
|
settingsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
|
context.startActivity(settingsIntent);
|
||||||
|
|
||||||
|
context.getSystemService(NotificationManager.class).cancel(NOTIFICATION_ID);
|
||||||
|
} else if (ACTION_RESTORED.equals(intent.getAction())) {
|
||||||
Log.i(TAG, "HCT attempted to be restored from backup; showing notification for userId: "
|
Log.i(TAG, "HCT attempted to be restored from backup; showing notification for userId: "
|
||||||
+ context.getUserId());
|
+ context.getUserId());
|
||||||
Settings.Secure.putInt(context.getContentResolver(),
|
Settings.Secure.putInt(context.getContentResolver(),
|
||||||
@@ -125,21 +137,20 @@ public class HighContrastTextMigrationReceiver extends BroadcastReceiver {
|
|||||||
R.string.accessibility_notification_high_contrast_text_content))
|
R.string.accessibility_notification_high_contrast_text_content))
|
||||||
.setFlag(Notification.FLAG_NO_CLEAR, true);
|
.setFlag(Notification.FLAG_NO_CLEAR, true);
|
||||||
|
|
||||||
Intent settingsIntent = new Intent(Settings.ACTION_TEXT_READING_SETTINGS);
|
Intent settingsIntent = createHighContrastTextSettingsIntent(context);
|
||||||
settingsIntent.setPackage(context.getPackageName());
|
|
||||||
if (settingsIntent.resolveActivity(context.getPackageManager()) != null) {
|
if (settingsIntent.resolveActivity(context.getPackageManager()) != null) {
|
||||||
Bundle fragmentArgs = new Bundle();
|
|
||||||
fragmentArgs.putString(EXTRA_FRAGMENT_ARG_KEY,
|
|
||||||
TextReadingPreferenceFragment.HIGH_TEXT_CONTRAST_KEY);
|
|
||||||
settingsIntent.putExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS, fragmentArgs);
|
|
||||||
PendingIntent settingsPendingIntent = PendingIntent.getActivity(context,
|
PendingIntent settingsPendingIntent = PendingIntent.getActivity(context,
|
||||||
/* requestCode = */ 0, settingsIntent, PendingIntent.FLAG_IMMUTABLE);
|
/* requestCode = */ 0, settingsIntent, PendingIntent.FLAG_IMMUTABLE);
|
||||||
|
|
||||||
|
Intent actionIntent = new Intent(context, HighContrastTextMigrationReceiver.class);
|
||||||
|
actionIntent.setAction(ACTION_OPEN_SETTINGS);
|
||||||
|
PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context, 0,
|
||||||
|
actionIntent, PendingIntent.FLAG_IMMUTABLE);
|
||||||
Notification.Action settingsAction = new Notification.Action.Builder(
|
Notification.Action settingsAction = new Notification.Action.Builder(
|
||||||
/* icon= */ null,
|
/* icon= */ null,
|
||||||
context.getString(
|
context.getString(
|
||||||
R.string.accessibility_notification_high_contrast_text_action),
|
R.string.accessibility_notification_high_contrast_text_action),
|
||||||
settingsPendingIntent
|
actionPendingIntent
|
||||||
).build();
|
).build();
|
||||||
|
|
||||||
notificationBuilder
|
notificationBuilder
|
||||||
@@ -156,4 +167,14 @@ public class HighContrastTextMigrationReceiver extends BroadcastReceiver {
|
|||||||
notificationManager.createNotificationChannel(notificationChannel);
|
notificationManager.createNotificationChannel(notificationChannel);
|
||||||
notificationManager.notify(NOTIFICATION_ID, notificationBuilder.build());
|
notificationManager.notify(NOTIFICATION_ID, notificationBuilder.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Intent createHighContrastTextSettingsIntent(Context context) {
|
||||||
|
Intent settingsIntent = new Intent(Settings.ACTION_TEXT_READING_SETTINGS);
|
||||||
|
settingsIntent.setPackage(context.getPackageName());
|
||||||
|
Bundle fragmentArgs = new Bundle();
|
||||||
|
fragmentArgs.putString(EXTRA_FRAGMENT_ARG_KEY,
|
||||||
|
TextReadingPreferenceFragment.HIGH_TEXT_CONTRAST_KEY);
|
||||||
|
settingsIntent.putExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS, fragmentArgs);
|
||||||
|
return settingsIntent;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
|
|||||||
import com.android.settingslib.metadata.preferenceHierarchy
|
import com.android.settingslib.metadata.preferenceHierarchy
|
||||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||||
|
|
||||||
@ProvidePreferenceScreen
|
@ProvidePreferenceScreen(TextReadingScreen.KEY)
|
||||||
class TextReadingScreen : PreferenceScreenCreator {
|
class TextReadingScreen : PreferenceScreenCreator {
|
||||||
override val key: String
|
override val key: String
|
||||||
get() = KEY
|
get() = KEY
|
||||||
@@ -36,7 +36,7 @@ class TextReadingScreen : PreferenceScreenCreator {
|
|||||||
|
|
||||||
override fun hasCompleteHierarchy() = false
|
override fun hasCompleteHierarchy() = false
|
||||||
|
|
||||||
override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}
|
override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(context, this) {}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val KEY = "text_reading_screen"
|
const val KEY = "text_reading_screen"
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ import com.android.settingslib.preference.PreferenceScreenCreator
|
|||||||
// We might be able to consolidate this into VibrationScreen with PreferenceHierarchy choosing
|
// We might be able to consolidate this into VibrationScreen with PreferenceHierarchy choosing
|
||||||
// between toggle or slider preferences based on device config, depending on how overlays are done.
|
// between toggle or slider preferences based on device config, depending on how overlays are done.
|
||||||
// LINT.IfChange
|
// LINT.IfChange
|
||||||
@ProvidePreferenceScreen
|
@ProvidePreferenceScreen(VibrationIntensityScreen.KEY)
|
||||||
class VibrationIntensityScreen : PreferenceScreenCreator, PreferenceAvailabilityProvider {
|
class VibrationIntensityScreen : PreferenceScreenCreator, PreferenceAvailabilityProvider {
|
||||||
override val key: String
|
override val key: String
|
||||||
get() = KEY
|
get() = KEY
|
||||||
@@ -52,7 +52,7 @@ class VibrationIntensityScreen : PreferenceScreenCreator, PreferenceAvailability
|
|||||||
override fun fragmentClass(): Class<out Fragment>? =
|
override fun fragmentClass(): Class<out Fragment>? =
|
||||||
VibrationIntensitySettingsFragment::class.java
|
VibrationIntensitySettingsFragment::class.java
|
||||||
|
|
||||||
override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {
|
override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(context, this) {
|
||||||
+VibrationMainSwitchPreference()
|
+VibrationMainSwitchPreference()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ import com.android.settingslib.preference.PreferenceScreenCreator
|
|||||||
* Accessibility settings for vibration.
|
* Accessibility settings for vibration.
|
||||||
*/
|
*/
|
||||||
// LINT.IfChange
|
// LINT.IfChange
|
||||||
@ProvidePreferenceScreen
|
@ProvidePreferenceScreen(VibrationScreen.KEY)
|
||||||
class VibrationScreen : PreferenceScreenCreator, PreferenceAvailabilityProvider {
|
class VibrationScreen : PreferenceScreenCreator, PreferenceAvailabilityProvider {
|
||||||
override val key: String
|
override val key: String
|
||||||
get() = KEY
|
get() = KEY
|
||||||
@@ -49,7 +49,7 @@ class VibrationScreen : PreferenceScreenCreator, PreferenceAvailabilityProvider
|
|||||||
|
|
||||||
override fun fragmentClass(): Class<out Fragment>? = VibrationSettings::class.java
|
override fun fragmentClass(): Class<out Fragment>? = VibrationSettings::class.java
|
||||||
|
|
||||||
override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {
|
override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(context, this) {
|
||||||
+VibrationMainSwitchPreference()
|
+VibrationMainSwitchPreference()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ import static com.android.settings.Utils.isPrivateProfile;
|
|||||||
import static com.android.settings.biometrics.BiometricEnrollBase.BIOMETRIC_AUTH_REQUEST;
|
import static com.android.settings.biometrics.BiometricEnrollBase.BIOMETRIC_AUTH_REQUEST;
|
||||||
import static com.android.settings.biometrics.BiometricEnrollBase.EXTRA_FROM_SETTINGS_SUMMARY;
|
import static com.android.settings.biometrics.BiometricEnrollBase.EXTRA_FROM_SETTINGS_SUMMARY;
|
||||||
import static com.android.settings.biometrics.BiometricEnrollBase.EXTRA_KEY_CHALLENGE;
|
import static com.android.settings.biometrics.BiometricEnrollBase.EXTRA_KEY_CHALLENGE;
|
||||||
import static com.android.settings.flags.Flags.screenOffUnlockPowerOptimization;
|
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
@@ -603,11 +602,6 @@ public class FingerprintSettings extends SubSettings {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean isUltrasnoicUdfps() {
|
private boolean isUltrasnoicUdfps() {
|
||||||
// b/368465560 Gate either ultrasonic or optical UDFPS if the power do not optimized
|
|
||||||
if (!screenOffUnlockPowerOptimization()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
mFingerprintManager = Utils.getFingerprintManagerOrNull(getActivity());
|
mFingerprintManager = Utils.getFingerprintManagerOrNull(getActivity());
|
||||||
if (mFingerprintManager != null) {
|
if (mFingerprintManager != null) {
|
||||||
mSensorProperties = mFingerprintManager.getSensorPropertiesInternal();
|
mSensorProperties = mFingerprintManager.getSensorPropertiesInternal();
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
|
|||||||
import com.android.settingslib.metadata.preferenceHierarchy
|
import com.android.settingslib.metadata.preferenceHierarchy
|
||||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||||
|
|
||||||
@ProvidePreferenceScreen
|
@ProvidePreferenceScreen(BluetoothDashboardScreen.KEY)
|
||||||
class BluetoothDashboardScreen : PreferenceScreenCreator {
|
class BluetoothDashboardScreen : PreferenceScreenCreator {
|
||||||
override val key: String
|
override val key: String
|
||||||
get() = KEY
|
get() = KEY
|
||||||
@@ -46,7 +46,7 @@ class BluetoothDashboardScreen : PreferenceScreenCreator {
|
|||||||
makeLaunchIntent(context, BluetoothDashboardActivity::class.java, metadata?.key)
|
makeLaunchIntent(context, BluetoothDashboardActivity::class.java, metadata?.key)
|
||||||
|
|
||||||
override fun getPreferenceHierarchy(context: Context) =
|
override fun getPreferenceHierarchy(context: Context) =
|
||||||
preferenceHierarchy(this) {
|
preferenceHierarchy(context, this) {
|
||||||
val bluetoothDataStore = BluetoothPreference.createDataStore(context)
|
val bluetoothDataStore = BluetoothPreference.createDataStore(context)
|
||||||
+BluetoothPreference(bluetoothDataStore)
|
+BluetoothPreference(bluetoothDataStore)
|
||||||
+BluetoothFooterPreference(bluetoothDataStore)
|
+BluetoothFooterPreference(bluetoothDataStore)
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package com.android.settings.connecteddevice
|
package com.android.settings.connecteddevice
|
||||||
|
|
||||||
|
import android.Manifest
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.bluetooth.BluetoothAdapter
|
import android.bluetooth.BluetoothAdapter
|
||||||
import android.content.BroadcastReceiver
|
import android.content.BroadcastReceiver
|
||||||
@@ -35,6 +36,7 @@ import com.android.settingslib.WirelessUtils
|
|||||||
import com.android.settingslib.datastore.AbstractKeyedDataObservable
|
import com.android.settingslib.datastore.AbstractKeyedDataObservable
|
||||||
import com.android.settingslib.datastore.DataChangeReason
|
import com.android.settingslib.datastore.DataChangeReason
|
||||||
import com.android.settingslib.datastore.KeyValueStore
|
import com.android.settingslib.datastore.KeyValueStore
|
||||||
|
import com.android.settingslib.datastore.Permissions
|
||||||
import com.android.settingslib.metadata.PreferenceMetadata
|
import com.android.settingslib.metadata.PreferenceMetadata
|
||||||
import com.android.settingslib.metadata.ReadWritePermit
|
import com.android.settingslib.metadata.ReadWritePermit
|
||||||
import com.android.settingslib.metadata.SensitivityLevel
|
import com.android.settingslib.metadata.SensitivityLevel
|
||||||
@@ -52,6 +54,11 @@ class BluetoothPreference(private val bluetoothDataStore: BluetoothDataStore) :
|
|||||||
override val restrictionKeys: Array<String>
|
override val restrictionKeys: Array<String>
|
||||||
get() = arrayOf(UserManager.DISALLOW_BLUETOOTH, UserManager.DISALLOW_CONFIG_BLUETOOTH)
|
get() = arrayOf(UserManager.DISALLOW_BLUETOOTH, UserManager.DISALLOW_CONFIG_BLUETOOTH)
|
||||||
|
|
||||||
|
override fun getReadPermissions(context: Context) = Permissions.EMPTY
|
||||||
|
|
||||||
|
override fun getWritePermissions(context: Context) =
|
||||||
|
Permissions.allOf(Manifest.permission.BLUETOOTH_CONNECT)
|
||||||
|
|
||||||
override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) =
|
override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) =
|
||||||
ReadWritePermit.ALLOW
|
ReadWritePermit.ALLOW
|
||||||
|
|
||||||
|
|||||||
@@ -16,12 +16,14 @@
|
|||||||
|
|
||||||
package com.android.settings.datausage
|
package com.android.settings.datausage
|
||||||
|
|
||||||
|
import android.Manifest
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import com.android.settings.R
|
import com.android.settings.R
|
||||||
import com.android.settings.widget.MainSwitchBarMetadata
|
import com.android.settings.widget.MainSwitchBarMetadata
|
||||||
import com.android.settingslib.datastore.AbstractKeyedDataObservable
|
import com.android.settingslib.datastore.AbstractKeyedDataObservable
|
||||||
import com.android.settingslib.datastore.DataChangeReason
|
import com.android.settingslib.datastore.DataChangeReason
|
||||||
import com.android.settingslib.datastore.KeyValueStore
|
import com.android.settingslib.datastore.KeyValueStore
|
||||||
|
import com.android.settingslib.datastore.Permissions
|
||||||
import com.android.settingslib.metadata.PreferenceLifecycleProvider
|
import com.android.settingslib.metadata.PreferenceLifecycleProvider
|
||||||
import com.android.settingslib.metadata.ReadWritePermit
|
import com.android.settingslib.metadata.ReadWritePermit
|
||||||
import com.android.settingslib.metadata.SensitivityLevel
|
import com.android.settingslib.metadata.SensitivityLevel
|
||||||
@@ -36,6 +38,12 @@ class DataSaverMainSwitchPreference : MainSwitchBarMetadata, PreferenceLifecycle
|
|||||||
|
|
||||||
override fun storage(context: Context) = createDataStore(context)
|
override fun storage(context: Context) = createDataStore(context)
|
||||||
|
|
||||||
|
override fun getReadPermissions(context: Context) =
|
||||||
|
Permissions.allOf(Manifest.permission.MANAGE_NETWORK_POLICY)
|
||||||
|
|
||||||
|
override fun getWritePermissions(context: Context) =
|
||||||
|
Permissions.allOf(Manifest.permission.MANAGE_NETWORK_POLICY)
|
||||||
|
|
||||||
override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) =
|
override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) =
|
||||||
ReadWritePermit.ALLOW
|
ReadWritePermit.ALLOW
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import android.content.Context
|
|||||||
import android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID
|
import android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID
|
||||||
import com.android.settings.R
|
import com.android.settings.R
|
||||||
import com.android.settings.Settings.DataSaverSummaryActivity
|
import com.android.settings.Settings.DataSaverSummaryActivity
|
||||||
|
import com.android.settings.datausage.DataSaverMainSwitchPreference.Companion.KEY as DATA_SAVER_KEY
|
||||||
import com.android.settings.flags.Flags
|
import com.android.settings.flags.Flags
|
||||||
import com.android.settings.utils.makeLaunchIntent
|
import com.android.settings.utils.makeLaunchIntent
|
||||||
import com.android.settingslib.datastore.HandlerExecutor
|
import com.android.settingslib.datastore.HandlerExecutor
|
||||||
@@ -32,9 +33,8 @@ import com.android.settingslib.metadata.PreferenceSummaryProvider
|
|||||||
import com.android.settingslib.metadata.ProvidePreferenceScreen
|
import com.android.settingslib.metadata.ProvidePreferenceScreen
|
||||||
import com.android.settingslib.metadata.preferenceHierarchy
|
import com.android.settingslib.metadata.preferenceHierarchy
|
||||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||||
import com.android.settings.datausage.DataSaverMainSwitchPreference.Companion.KEY as DATA_SAVER_KEY
|
|
||||||
|
|
||||||
@ProvidePreferenceScreen
|
@ProvidePreferenceScreen(DataSaverScreen.KEY)
|
||||||
class DataSaverScreen(context: Context) :
|
class DataSaverScreen(context: Context) :
|
||||||
PreferenceScreenCreator,
|
PreferenceScreenCreator,
|
||||||
PreferenceAvailabilityProvider,
|
PreferenceAvailabilityProvider,
|
||||||
@@ -75,7 +75,7 @@ class DataSaverScreen(context: Context) :
|
|||||||
makeLaunchIntent(context, DataSaverSummaryActivity::class.java, metadata?.key)
|
makeLaunchIntent(context, DataSaverSummaryActivity::class.java, metadata?.key)
|
||||||
|
|
||||||
override fun getPreferenceHierarchy(context: Context) =
|
override fun getPreferenceHierarchy(context: Context) =
|
||||||
preferenceHierarchy(this) { +DataSaverMainSwitchPreference() }
|
preferenceHierarchy(context, this) { +DataSaverMainSwitchPreference() }
|
||||||
|
|
||||||
override fun hasCompleteHierarchy() = false
|
override fun hasCompleteHierarchy() = false
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
|
|||||||
import com.android.settingslib.metadata.preferenceHierarchy
|
import com.android.settingslib.metadata.preferenceHierarchy
|
||||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||||
|
|
||||||
@ProvidePreferenceScreen
|
@ProvidePreferenceScreen(MyDeviceInfoScreen.KEY)
|
||||||
class MyDeviceInfoScreen :
|
class MyDeviceInfoScreen :
|
||||||
PreferenceScreenCreator, PreferenceSummaryProvider, PreferenceIconProvider {
|
PreferenceScreenCreator, PreferenceSummaryProvider, PreferenceIconProvider {
|
||||||
override val key: String
|
override val key: String
|
||||||
@@ -52,7 +52,7 @@ class MyDeviceInfoScreen :
|
|||||||
|
|
||||||
override fun fragmentClass() = MyDeviceInfoFragment::class.java
|
override fun fragmentClass() = MyDeviceInfoFragment::class.java
|
||||||
|
|
||||||
override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}
|
override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(context, this) {}
|
||||||
|
|
||||||
override fun hasCompleteHierarchy() = false
|
override fun hasCompleteHierarchy() = false
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
|
|||||||
import com.android.settingslib.metadata.preferenceHierarchy
|
import com.android.settingslib.metadata.preferenceHierarchy
|
||||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||||
|
|
||||||
@ProvidePreferenceScreen
|
@ProvidePreferenceScreen(FirmwareVersionScreen.KEY)
|
||||||
class FirmwareVersionScreen : PreferenceScreenCreator, PreferenceSummaryProvider {
|
class FirmwareVersionScreen : PreferenceScreenCreator, PreferenceSummaryProvider {
|
||||||
|
|
||||||
override fun isFlagEnabled(context: Context) = Flags.catalystFirmwareVersion()
|
override fun isFlagEnabled(context: Context) = Flags.catalystFirmwareVersion()
|
||||||
@@ -45,7 +45,7 @@ class FirmwareVersionScreen : PreferenceScreenCreator, PreferenceSummaryProvider
|
|||||||
override fun fragmentClass() = FirmwareVersionSettings::class.java
|
override fun fragmentClass() = FirmwareVersionSettings::class.java
|
||||||
|
|
||||||
override fun getPreferenceHierarchy(context: Context) =
|
override fun getPreferenceHierarchy(context: Context) =
|
||||||
preferenceHierarchy(this) {
|
preferenceHierarchy(context, this) {
|
||||||
+FirmwareVersionDetailPreference()
|
+FirmwareVersionDetailPreference()
|
||||||
+SecurityPatchLevelPreference()
|
+SecurityPatchLevelPreference()
|
||||||
+MainlineModuleVersionPreference()
|
+MainlineModuleVersionPreference()
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
|
|||||||
import com.android.settingslib.metadata.preferenceHierarchy
|
import com.android.settingslib.metadata.preferenceHierarchy
|
||||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||||
|
|
||||||
@ProvidePreferenceScreen
|
@ProvidePreferenceScreen(LegalSettingsScreen.KEY)
|
||||||
open class LegalSettingsScreen : PreferenceScreenCreator {
|
open class LegalSettingsScreen : PreferenceScreenCreator {
|
||||||
override val key: String
|
override val key: String
|
||||||
get() = KEY
|
get() = KEY
|
||||||
@@ -36,7 +36,7 @@ open class LegalSettingsScreen : PreferenceScreenCreator {
|
|||||||
override fun fragmentClass() = LegalSettings::class.java
|
override fun fragmentClass() = LegalSettings::class.java
|
||||||
|
|
||||||
override fun getPreferenceHierarchy(context: Context) =
|
override fun getPreferenceHierarchy(context: Context) =
|
||||||
preferenceHierarchy(this) {
|
preferenceHierarchy(context, this) {
|
||||||
+LegalPreference("copyright", R.string.copyright_title, "android.settings.COPYRIGHT")
|
+LegalPreference("copyright", R.string.copyright_title, "android.settings.COPYRIGHT")
|
||||||
+LegalPreference("license", R.string.license_title, "android.settings.LICENSE")
|
+LegalPreference("license", R.string.license_title, "android.settings.LICENSE")
|
||||||
+LegalPreference("terms", R.string.terms_title, "android.settings.TERMS")
|
+LegalPreference("terms", R.string.terms_title, "android.settings.TERMS")
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import com.android.settingslib.metadata.preferenceHierarchy
|
|||||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||||
|
|
||||||
// LINT.IfChange
|
// LINT.IfChange
|
||||||
@ProvidePreferenceScreen
|
@ProvidePreferenceScreen(ModuleLicensesScreen.KEY)
|
||||||
class ModuleLicensesScreen : PreferenceScreenCreator, PreferenceAvailabilityProvider {
|
class ModuleLicensesScreen : PreferenceScreenCreator, PreferenceAvailabilityProvider {
|
||||||
override val key: String
|
override val key: String
|
||||||
get() = KEY
|
get() = KEY
|
||||||
@@ -39,7 +39,7 @@ class ModuleLicensesScreen : PreferenceScreenCreator, PreferenceAvailabilityProv
|
|||||||
|
|
||||||
override fun fragmentClass() = ModuleLicensesDashboard::class.java
|
override fun fragmentClass() = ModuleLicensesDashboard::class.java
|
||||||
|
|
||||||
override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}
|
override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(context, this) {}
|
||||||
|
|
||||||
override fun isAvailable(context: Context): Boolean {
|
override fun isAvailable(context: Context): Boolean {
|
||||||
val modules = context.packageManager.getInstalledModules(/* flags= */ 0)
|
val modules = context.packageManager.getInstalledModules(/* flags= */ 0)
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ import com.android.settingslib.metadata.preferenceHierarchy
|
|||||||
import com.android.settingslib.preference.PreferenceScreenBinding
|
import com.android.settingslib.preference.PreferenceScreenBinding
|
||||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||||
|
|
||||||
@ProvidePreferenceScreen
|
@ProvidePreferenceScreen(AutoBrightnessScreen.KEY)
|
||||||
class AutoBrightnessScreen :
|
class AutoBrightnessScreen :
|
||||||
PreferenceScreenCreator,
|
PreferenceScreenCreator,
|
||||||
PreferenceScreenBinding,
|
PreferenceScreenBinding,
|
||||||
@@ -60,7 +60,7 @@ class AutoBrightnessScreen :
|
|||||||
|
|
||||||
override fun hasCompleteHierarchy() = false
|
override fun hasCompleteHierarchy() = false
|
||||||
|
|
||||||
override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}
|
override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(context, this) {}
|
||||||
|
|
||||||
override fun storage(context: Context): KeyValueStore =
|
override fun storage(context: Context): KeyValueStore =
|
||||||
AutoBrightnessDataStore(SettingsSystemStore.get(context))
|
AutoBrightnessDataStore(SettingsSystemStore.get(context))
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
|
|||||||
import com.android.settingslib.metadata.preferenceHierarchy
|
import com.android.settingslib.metadata.preferenceHierarchy
|
||||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||||
|
|
||||||
@ProvidePreferenceScreen
|
@ProvidePreferenceScreen(DisplayScreen.KEY)
|
||||||
open class DisplayScreen :
|
open class DisplayScreen :
|
||||||
PreferenceScreenCreator, PreferenceAvailabilityProvider, PreferenceIconProvider {
|
PreferenceScreenCreator, PreferenceAvailabilityProvider, PreferenceIconProvider {
|
||||||
override val key: String
|
override val key: String
|
||||||
@@ -52,7 +52,7 @@ open class DisplayScreen :
|
|||||||
override fun fragmentClass() = DisplaySettings::class.java
|
override fun fragmentClass() = DisplaySettings::class.java
|
||||||
|
|
||||||
override fun getPreferenceHierarchy(context: Context) =
|
override fun getPreferenceHierarchy(context: Context) =
|
||||||
preferenceHierarchy(this) {
|
preferenceHierarchy(context, this) {
|
||||||
+BrightnessLevelPreference()
|
+BrightnessLevelPreference()
|
||||||
+AutoBrightnessScreen.KEY
|
+AutoBrightnessScreen.KEY
|
||||||
+LockScreenPreferenceScreen.KEY
|
+LockScreenPreferenceScreen.KEY
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ import com.android.settingslib.metadata.preferenceHierarchy
|
|||||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||||
|
|
||||||
// TODO(b/368359967): The entry point logic is not yet migrated
|
// TODO(b/368359967): The entry point logic is not yet migrated
|
||||||
@ProvidePreferenceScreen
|
@ProvidePreferenceScreen(ScreenTimeoutScreen.KEY)
|
||||||
class ScreenTimeoutScreen : PreferenceScreenCreator {
|
class ScreenTimeoutScreen : PreferenceScreenCreator {
|
||||||
|
|
||||||
override val key: String
|
override val key: String
|
||||||
@@ -43,7 +43,7 @@ class ScreenTimeoutScreen : PreferenceScreenCreator {
|
|||||||
override fun hasCompleteHierarchy() = false
|
override fun hasCompleteHierarchy() = false
|
||||||
|
|
||||||
override fun getPreferenceHierarchy(context: Context) =
|
override fun getPreferenceHierarchy(context: Context) =
|
||||||
preferenceHierarchy(this) { +AdaptiveSleepPreference() }
|
preferenceHierarchy(context, this) { +AdaptiveSleepPreference() }
|
||||||
|
|
||||||
override fun getLaunchIntent(context: Context, metadata: PreferenceMetadata?) =
|
override fun getLaunchIntent(context: Context, metadata: PreferenceMetadata?) =
|
||||||
makeLaunchIntent(context, ScreenTimeoutActivity::class.java, metadata?.key)
|
makeLaunchIntent(context, ScreenTimeoutActivity::class.java, metadata?.key)
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ import com.android.settingslib.preference.PreferenceScreenBinding
|
|||||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||||
|
|
||||||
// LINT.IfChange
|
// LINT.IfChange
|
||||||
@ProvidePreferenceScreen
|
@ProvidePreferenceScreen(DarkModeScreen.KEY)
|
||||||
class DarkModeScreen(context: Context) :
|
class DarkModeScreen(context: Context) :
|
||||||
PreferenceScreenCreator,
|
PreferenceScreenCreator,
|
||||||
PreferenceScreenBinding,
|
PreferenceScreenBinding,
|
||||||
@@ -80,7 +80,7 @@ class DarkModeScreen(context: Context) :
|
|||||||
|
|
||||||
override fun hasCompleteHierarchy() = false
|
override fun hasCompleteHierarchy() = false
|
||||||
|
|
||||||
override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}
|
override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(context, this) {}
|
||||||
|
|
||||||
override fun storage(context: Context): KeyValueStore = darkModeStorage
|
override fun storage(context: Context): KeyValueStore = darkModeStorage
|
||||||
|
|
||||||
@@ -89,8 +89,8 @@ class DarkModeScreen(context: Context) :
|
|||||||
override fun bind(preference: Preference, metadata: PreferenceMetadata) {
|
override fun bind(preference: Preference, metadata: PreferenceMetadata) {
|
||||||
super.bind(preference, metadata)
|
super.bind(preference, metadata)
|
||||||
if (preference is DarkModePreference) preference.setCatalystEnabled(true)
|
if (preference is DarkModePreference) preference.setCatalystEnabled(true)
|
||||||
(preference as PrimarySwitchPreference).apply {
|
(preference as? PrimarySwitchPreference)?.apply {
|
||||||
isSwitchEnabled = isEnabled()
|
isSwitchEnabled = isEnabled
|
||||||
isChecked = darkModeStorage.getBoolean(KEY) == true
|
isChecked = darkModeStorage.getBoolean(KEY) == true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -109,9 +109,12 @@ public class ActionDisabledByAdminDialog extends Activity
|
|||||||
}
|
}
|
||||||
if (enforcingAdmin.getAuthority() instanceof UnknownAuthority authority
|
if (enforcingAdmin.getAuthority() instanceof UnknownAuthority authority
|
||||||
&& ADVANCED_PROTECTION_SYSTEM_ENTITY.equals(authority.getName())) {
|
&& ADVANCED_PROTECTION_SYSTEM_ENTITY.equals(authority.getName())) {
|
||||||
Intent apmSupportIntent = AdvancedProtectionManager
|
AdvancedProtectionManager apm = getSystemService(AdvancedProtectionManager.class);
|
||||||
.createSupportIntentForPolicyIdentifierOrRestriction(restriction,
|
if (apm == null) {
|
||||||
AdvancedProtectionManager.SUPPORT_DIALOG_TYPE_UNKNOWN);
|
return;
|
||||||
|
}
|
||||||
|
Intent apmSupportIntent = apm.createSupportIntentForPolicyIdentifierOrRestriction(
|
||||||
|
restriction, /* type */ null);
|
||||||
startActivityAsUser(apmSupportIntent, UserHandle.of(userId));
|
startActivityAsUser(apmSupportIntent, UserHandle.of(userId));
|
||||||
finish();
|
finish();
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
|
|||||||
import com.android.settingslib.metadata.preferenceHierarchy
|
import com.android.settingslib.metadata.preferenceHierarchy
|
||||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||||
|
|
||||||
@ProvidePreferenceScreen
|
@ProvidePreferenceScreen(BatterySaverScreen.KEY)
|
||||||
open class BatterySaverScreen : PreferenceScreenCreator {
|
open class BatterySaverScreen : PreferenceScreenCreator {
|
||||||
override val key: String
|
override val key: String
|
||||||
get() = KEY
|
get() = KEY
|
||||||
@@ -40,7 +40,7 @@ open class BatterySaverScreen : PreferenceScreenCreator {
|
|||||||
override fun hasCompleteHierarchy() = false
|
override fun hasCompleteHierarchy() = false
|
||||||
|
|
||||||
override fun getPreferenceHierarchy(context: Context) =
|
override fun getPreferenceHierarchy(context: Context) =
|
||||||
preferenceHierarchy(this) { +BatterySaverPreference() order -100 }
|
preferenceHierarchy(context, this) { +BatterySaverPreference() order -100 }
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val KEY = "battery_saver_screen"
|
const val KEY = "battery_saver_screen"
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
|
|||||||
import com.android.settingslib.metadata.preferenceHierarchy
|
import com.android.settingslib.metadata.preferenceHierarchy
|
||||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||||
|
|
||||||
@ProvidePreferenceScreen
|
@ProvidePreferenceScreen(PowerUsageSummaryScreen.KEY)
|
||||||
class PowerUsageSummaryScreen :
|
class PowerUsageSummaryScreen :
|
||||||
PreferenceScreenCreator, PreferenceAvailabilityProvider, PreferenceIconProvider {
|
PreferenceScreenCreator, PreferenceAvailabilityProvider, PreferenceIconProvider {
|
||||||
override val key: String
|
override val key: String
|
||||||
@@ -54,7 +54,8 @@ class PowerUsageSummaryScreen :
|
|||||||
R.drawable.ic_settings_battery_white
|
R.drawable.ic_settings_battery_white
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {
|
override fun getPreferenceHierarchy(context: Context) =
|
||||||
|
preferenceHierarchy(context, this) {
|
||||||
+BatteryHeaderPreference()
|
+BatteryHeaderPreference()
|
||||||
+BatteryPercentageSwitchPreference()
|
+BatteryPercentageSwitchPreference()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,18 +15,14 @@
|
|||||||
*/
|
*/
|
||||||
package com.android.settings.language
|
package com.android.settings.language
|
||||||
|
|
||||||
import android.content.ComponentName
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.pm.PackageManager
|
|
||||||
import com.android.settings.R
|
import com.android.settings.R
|
||||||
import com.android.settings.Settings.LanguageSettingsActivity
|
|
||||||
import com.android.settings.flags.Flags
|
import com.android.settings.flags.Flags
|
||||||
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
|
|
||||||
import com.android.settingslib.metadata.ProvidePreferenceScreen
|
import com.android.settingslib.metadata.ProvidePreferenceScreen
|
||||||
import com.android.settingslib.metadata.preferenceHierarchy
|
import com.android.settingslib.metadata.preferenceHierarchy
|
||||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||||
|
|
||||||
@ProvidePreferenceScreen
|
@ProvidePreferenceScreen(LanguageSettingScreen.KEY)
|
||||||
class LanguageSettingScreen : PreferenceScreenCreator {
|
class LanguageSettingScreen : PreferenceScreenCreator {
|
||||||
override val key: String
|
override val key: String
|
||||||
get() = KEY
|
get() = KEY
|
||||||
@@ -46,7 +42,7 @@ class LanguageSettingScreen: PreferenceScreenCreator {
|
|||||||
|
|
||||||
override fun fragmentClass() = LanguageSettings::class.java
|
override fun fragmentClass() = LanguageSettings::class.java
|
||||||
|
|
||||||
override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}
|
override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(context, this) {}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val KEY = "language_setting"
|
const val KEY = "language_setting"
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
|
|||||||
import com.android.settingslib.metadata.preferenceHierarchy
|
import com.android.settingslib.metadata.preferenceHierarchy
|
||||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||||
|
|
||||||
@ProvidePreferenceScreen
|
@ProvidePreferenceScreen(LocationScreen.KEY)
|
||||||
class LocationScreen : PreferenceScreenCreator, PreferenceSummaryProvider, PreferenceIconProvider {
|
class LocationScreen : PreferenceScreenCreator, PreferenceSummaryProvider, PreferenceIconProvider {
|
||||||
override val key: String
|
override val key: String
|
||||||
get() = KEY
|
get() = KEY
|
||||||
@@ -57,7 +57,7 @@ class LocationScreen : PreferenceScreenCreator, PreferenceSummaryProvider, Prefe
|
|||||||
|
|
||||||
override fun fragmentClass() = LocationSettings::class.java
|
override fun fragmentClass() = LocationSettings::class.java
|
||||||
|
|
||||||
override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}
|
override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(context, this) {}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val KEY = "location_settings"
|
const val KEY = "location_settings"
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
|
|||||||
import com.android.settingslib.metadata.preferenceHierarchy
|
import com.android.settingslib.metadata.preferenceHierarchy
|
||||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||||
|
|
||||||
@ProvidePreferenceScreen
|
@ProvidePreferenceScreen(AdaptiveConnectivityScreen.KEY)
|
||||||
class AdaptiveConnectivityScreen : PreferenceScreenCreator {
|
class AdaptiveConnectivityScreen : PreferenceScreenCreator {
|
||||||
override val key
|
override val key
|
||||||
get() = KEY
|
get() = KEY
|
||||||
@@ -35,7 +35,7 @@ class AdaptiveConnectivityScreen : PreferenceScreenCreator {
|
|||||||
|
|
||||||
override fun fragmentClass() = AdaptiveConnectivitySettings::class.java
|
override fun fragmentClass() = AdaptiveConnectivitySettings::class.java
|
||||||
|
|
||||||
override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {
|
override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(context, this) {
|
||||||
+AdaptiveConnectivityTogglePreference()
|
+AdaptiveConnectivityTogglePreference()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package com.android.settings.network
|
package com.android.settings.network
|
||||||
|
|
||||||
|
import android.Manifest
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.net.wifi.WifiManager
|
import android.net.wifi.WifiManager
|
||||||
import android.provider.Settings.Secure.ADAPTIVE_CONNECTIVITY_ENABLED
|
import android.provider.Settings.Secure.ADAPTIVE_CONNECTIVITY_ENABLED
|
||||||
@@ -24,6 +25,7 @@ import com.android.settingslib.datastore.KeyValueStore
|
|||||||
import com.android.settingslib.datastore.KeyedObservableDelegate
|
import com.android.settingslib.datastore.KeyedObservableDelegate
|
||||||
import com.android.settingslib.datastore.SettingsSecureStore
|
import com.android.settingslib.datastore.SettingsSecureStore
|
||||||
import com.android.settingslib.datastore.SettingsStore
|
import com.android.settingslib.datastore.SettingsStore
|
||||||
|
import com.android.settingslib.datastore.and
|
||||||
import com.android.settingslib.metadata.MainSwitchPreference
|
import com.android.settingslib.metadata.MainSwitchPreference
|
||||||
import com.android.settingslib.metadata.ReadWritePermit
|
import com.android.settingslib.metadata.ReadWritePermit
|
||||||
import com.android.settingslib.metadata.SensitivityLevel
|
import com.android.settingslib.metadata.SensitivityLevel
|
||||||
@@ -35,6 +37,11 @@ class AdaptiveConnectivityTogglePreference :
|
|||||||
override fun storage(context: Context): KeyValueStore =
|
override fun storage(context: Context): KeyValueStore =
|
||||||
AdaptiveConnectivityToggleStorage(context, SettingsSecureStore.get(context))
|
AdaptiveConnectivityToggleStorage(context, SettingsSecureStore.get(context))
|
||||||
|
|
||||||
|
override fun getReadPermissions(context: Context) = SettingsSecureStore.getReadPermissions()
|
||||||
|
|
||||||
|
override fun getWritePermissions(context: Context) =
|
||||||
|
SettingsSecureStore.getWritePermissions() and Manifest.permission.NETWORK_SETTINGS
|
||||||
|
|
||||||
override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) =
|
override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) =
|
||||||
ReadWritePermit.ALLOW
|
ReadWritePermit.ALLOW
|
||||||
|
|
||||||
|
|||||||
@@ -65,6 +65,10 @@ class AirplaneModePreference :
|
|||||||
override val restrictionKeys
|
override val restrictionKeys
|
||||||
get() = arrayOf(UserManager.DISALLOW_AIRPLANE_MODE)
|
get() = arrayOf(UserManager.DISALLOW_AIRPLANE_MODE)
|
||||||
|
|
||||||
|
override fun getReadPermissions(context: Context) = SettingsGlobalStore.getReadPermissions()
|
||||||
|
|
||||||
|
override fun getWritePermissions(context: Context) = SettingsGlobalStore.getWritePermissions()
|
||||||
|
|
||||||
override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) =
|
override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) =
|
||||||
ReadWritePermit.ALLOW
|
ReadWritePermit.ALLOW
|
||||||
|
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ import com.android.settingslib.metadata.preferenceHierarchy
|
|||||||
import com.android.settingslib.preference.PreferenceScreenBinding
|
import com.android.settingslib.preference.PreferenceScreenBinding
|
||||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||||
|
|
||||||
@ProvidePreferenceScreen
|
@ProvidePreferenceScreen(MobileNetworkListScreen.KEY)
|
||||||
class MobileNetworkListScreen :
|
class MobileNetworkListScreen :
|
||||||
PreferenceScreenCreator,
|
PreferenceScreenCreator,
|
||||||
PreferenceScreenBinding,
|
PreferenceScreenBinding,
|
||||||
@@ -160,7 +160,7 @@ class MobileNetworkListScreen :
|
|||||||
override fun fragmentClass() = MobileNetworkListFragment::class.java
|
override fun fragmentClass() = MobileNetworkListFragment::class.java
|
||||||
|
|
||||||
override fun getPreferenceHierarchy(context: Context) =
|
override fun getPreferenceHierarchy(context: Context) =
|
||||||
preferenceHierarchy(this) { +MobileDataPreference() }
|
preferenceHierarchy(context, this) { +MobileDataPreference() }
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val KEY = "mobile_network_list"
|
const val KEY = "mobile_network_list"
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
|
|||||||
import com.android.settingslib.metadata.preferenceHierarchy
|
import com.android.settingslib.metadata.preferenceHierarchy
|
||||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||||
|
|
||||||
@ProvidePreferenceScreen
|
@ProvidePreferenceScreen(NetworkDashboardScreen.KEY)
|
||||||
class NetworkDashboardScreen : PreferenceScreenCreator, PreferenceIconProvider {
|
class NetworkDashboardScreen : PreferenceScreenCreator, PreferenceIconProvider {
|
||||||
override val key: String
|
override val key: String
|
||||||
get() = KEY
|
get() = KEY
|
||||||
@@ -51,7 +51,7 @@ class NetworkDashboardScreen : PreferenceScreenCreator, PreferenceIconProvider {
|
|||||||
makeLaunchIntent(context, NetworkDashboardActivity::class.java, metadata?.key)
|
makeLaunchIntent(context, NetworkDashboardActivity::class.java, metadata?.key)
|
||||||
|
|
||||||
override fun getPreferenceHierarchy(context: Context) =
|
override fun getPreferenceHierarchy(context: Context) =
|
||||||
preferenceHierarchy(this) {
|
preferenceHierarchy(context, this) {
|
||||||
+MobileNetworkListScreen.KEY order -15
|
+MobileNetworkListScreen.KEY order -15
|
||||||
+AirplaneModePreference() order -5
|
+AirplaneModePreference() order -5
|
||||||
+DataSaverScreen.KEY order 10
|
+DataSaverScreen.KEY order 10
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
|
|||||||
import com.android.settingslib.metadata.preferenceHierarchy
|
import com.android.settingslib.metadata.preferenceHierarchy
|
||||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||||
|
|
||||||
@ProvidePreferenceScreen
|
@ProvidePreferenceScreen(NetworkProviderScreen.KEY)
|
||||||
class NetworkProviderScreen :
|
class NetworkProviderScreen :
|
||||||
PreferenceScreenCreator, PreferenceAvailabilityProvider, PreferenceRestrictionMixin {
|
PreferenceScreenCreator, PreferenceAvailabilityProvider, PreferenceRestrictionMixin {
|
||||||
override val key: String
|
override val key: String
|
||||||
@@ -55,7 +55,7 @@ class NetworkProviderScreen :
|
|||||||
|
|
||||||
override fun fragmentClass() = NetworkProviderSettings::class.java
|
override fun fragmentClass() = NetworkProviderSettings::class.java
|
||||||
|
|
||||||
override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {
|
override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(context, this) {
|
||||||
+WifiSwitchPreference()
|
+WifiSwitchPreference()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
|
|||||||
import com.android.settingslib.metadata.preferenceHierarchy
|
import com.android.settingslib.metadata.preferenceHierarchy
|
||||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||||
|
|
||||||
@ProvidePreferenceScreen
|
@ProvidePreferenceScreen(TetherScreen.KEY)
|
||||||
class TetherScreen :
|
class TetherScreen :
|
||||||
PreferenceScreenCreator,
|
PreferenceScreenCreator,
|
||||||
PreferenceTitleProvider,
|
PreferenceTitleProvider,
|
||||||
@@ -76,7 +76,7 @@ class TetherScreen :
|
|||||||
makeLaunchIntent(context, TetherSettingsActivity::class.java, metadata?.key)
|
makeLaunchIntent(context, TetherSettingsActivity::class.java, metadata?.key)
|
||||||
|
|
||||||
override fun getPreferenceHierarchy(context: Context) =
|
override fun getPreferenceHierarchy(context: Context) =
|
||||||
preferenceHierarchy(this) {
|
preferenceHierarchy(context, this) {
|
||||||
val dataSaverStore = DataSaverMainSwitchPreference.createDataStore(context)
|
val dataSaverStore = DataSaverMainSwitchPreference.createDataStore(context)
|
||||||
+WifiHotspotSwitchPreference(context, dataSaverStore)
|
+WifiHotspotSwitchPreference(context, dataSaverStore)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,11 @@
|
|||||||
|
|
||||||
package com.android.settings.notification
|
package com.android.settings.notification
|
||||||
|
|
||||||
|
import android.Manifest.permission.MODIFY_AUDIO_SETTINGS
|
||||||
|
import android.Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED
|
||||||
|
import android.Manifest.permission.MODIFY_PHONE_STATE
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.content.pm.PackageManager.FEATURE_AUTOMOTIVE
|
||||||
import android.media.AudioManager
|
import android.media.AudioManager
|
||||||
import android.media.AudioManager.STREAM_BLUETOOTH_SCO
|
import android.media.AudioManager.STREAM_BLUETOOTH_SCO
|
||||||
import android.media.AudioManager.STREAM_VOICE_CALL
|
import android.media.AudioManager.STREAM_VOICE_CALL
|
||||||
@@ -26,6 +30,8 @@ import com.android.settings.PreferenceRestrictionMixin
|
|||||||
import com.android.settings.R
|
import com.android.settings.R
|
||||||
import com.android.settingslib.datastore.KeyValueStore
|
import com.android.settingslib.datastore.KeyValueStore
|
||||||
import com.android.settingslib.datastore.NoOpKeyedObservable
|
import com.android.settingslib.datastore.NoOpKeyedObservable
|
||||||
|
import com.android.settingslib.datastore.Permissions
|
||||||
|
import com.android.settingslib.datastore.and
|
||||||
import com.android.settingslib.metadata.PersistentPreference
|
import com.android.settingslib.metadata.PersistentPreference
|
||||||
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
|
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
|
||||||
import com.android.settingslib.metadata.PreferenceIconProvider
|
import com.android.settingslib.metadata.PreferenceIconProvider
|
||||||
@@ -76,9 +82,19 @@ open class CallVolumePreference :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun getReadPermissions(context: Context) = Permissions.EMPTY
|
||||||
|
|
||||||
override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) =
|
override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) =
|
||||||
ReadWritePermit.ALLOW
|
ReadWritePermit.ALLOW
|
||||||
|
|
||||||
|
override fun getWritePermissions(context: Context): Permissions? {
|
||||||
|
var permissions = Permissions.allOf(MODIFY_AUDIO_SETTINGS, MODIFY_PHONE_STATE)
|
||||||
|
if (context.packageManager.hasSystemFeature(FEATURE_AUTOMOTIVE)) {
|
||||||
|
permissions = permissions and MODIFY_AUDIO_SETTINGS_PRIVILEGED
|
||||||
|
}
|
||||||
|
return permissions
|
||||||
|
}
|
||||||
|
|
||||||
override fun getWritePermit(context: Context, value: Int?, callingPid: Int, callingUid: Int) =
|
override fun getWritePermit(context: Context, value: Int?, callingPid: Int, callingUid: Int) =
|
||||||
ReadWritePermit.ALLOW
|
ReadWritePermit.ALLOW
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,10 @@
|
|||||||
|
|
||||||
package com.android.settings.notification
|
package com.android.settings.notification
|
||||||
|
|
||||||
|
import android.Manifest.permission.MODIFY_AUDIO_SETTINGS
|
||||||
|
import android.Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.content.pm.PackageManager.FEATURE_AUTOMOTIVE
|
||||||
import android.media.AudioManager.STREAM_MUSIC
|
import android.media.AudioManager.STREAM_MUSIC
|
||||||
import android.os.UserManager
|
import android.os.UserManager
|
||||||
import androidx.preference.Preference
|
import androidx.preference.Preference
|
||||||
@@ -24,6 +27,8 @@ import com.android.settings.PreferenceRestrictionMixin
|
|||||||
import com.android.settings.R
|
import com.android.settings.R
|
||||||
import com.android.settingslib.datastore.KeyValueStore
|
import com.android.settingslib.datastore.KeyValueStore
|
||||||
import com.android.settingslib.datastore.NoOpKeyedObservable
|
import com.android.settingslib.datastore.NoOpKeyedObservable
|
||||||
|
import com.android.settingslib.datastore.Permissions
|
||||||
|
import com.android.settingslib.datastore.and
|
||||||
import com.android.settingslib.metadata.PersistentPreference
|
import com.android.settingslib.metadata.PersistentPreference
|
||||||
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
|
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
|
||||||
import com.android.settingslib.metadata.PreferenceIconProvider
|
import com.android.settingslib.metadata.PreferenceIconProvider
|
||||||
@@ -77,9 +82,19 @@ open class MediaVolumePreference :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun getReadPermissions(context: Context) = Permissions.EMPTY
|
||||||
|
|
||||||
override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) =
|
override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) =
|
||||||
ReadWritePermit.ALLOW
|
ReadWritePermit.ALLOW
|
||||||
|
|
||||||
|
override fun getWritePermissions(context: Context): Permissions? {
|
||||||
|
var permissions = Permissions.allOf(MODIFY_AUDIO_SETTINGS)
|
||||||
|
if (context.packageManager.hasSystemFeature(FEATURE_AUTOMOTIVE)) {
|
||||||
|
permissions = permissions and MODIFY_AUDIO_SETTINGS_PRIVILEGED
|
||||||
|
}
|
||||||
|
return permissions
|
||||||
|
}
|
||||||
|
|
||||||
override fun getWritePermit(context: Context, value: Int?, callingPid: Int, callingUid: Int) =
|
override fun getWritePermit(context: Context, value: Int?, callingPid: Int, callingUid: Int) =
|
||||||
ReadWritePermit.ALLOW
|
ReadWritePermit.ALLOW
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
package com.android.settings.notification
|
package com.android.settings.notification
|
||||||
|
|
||||||
|
import android.Manifest.permission.MODIFY_AUDIO_SETTINGS
|
||||||
|
import android.Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED
|
||||||
import android.app.INotificationManager
|
import android.app.INotificationManager
|
||||||
import android.app.NotificationManager
|
import android.app.NotificationManager
|
||||||
import android.app.NotificationManager.ACTION_EFFECTS_SUPPRESSOR_CHANGED
|
import android.app.NotificationManager.ACTION_EFFECTS_SUPPRESSOR_CHANGED
|
||||||
@@ -24,6 +26,7 @@ import android.content.Context
|
|||||||
import android.content.Context.NOTIFICATION_SERVICE
|
import android.content.Context.NOTIFICATION_SERVICE
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.IntentFilter
|
import android.content.IntentFilter
|
||||||
|
import android.content.pm.PackageManager.FEATURE_AUTOMOTIVE
|
||||||
import android.media.AudioManager
|
import android.media.AudioManager
|
||||||
import android.media.AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION
|
import android.media.AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION
|
||||||
import android.media.AudioManager.RINGER_MODE_NORMAL
|
import android.media.AudioManager.RINGER_MODE_NORMAL
|
||||||
@@ -40,6 +43,8 @@ import com.android.settings.PreferenceRestrictionMixin
|
|||||||
import com.android.settings.R
|
import com.android.settings.R
|
||||||
import com.android.settingslib.datastore.KeyValueStore
|
import com.android.settingslib.datastore.KeyValueStore
|
||||||
import com.android.settingslib.datastore.NoOpKeyedObservable
|
import com.android.settingslib.datastore.NoOpKeyedObservable
|
||||||
|
import com.android.settingslib.datastore.Permissions
|
||||||
|
import com.android.settingslib.datastore.and
|
||||||
import com.android.settingslib.metadata.PersistentPreference
|
import com.android.settingslib.metadata.PersistentPreference
|
||||||
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
|
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
|
||||||
import com.android.settingslib.metadata.PreferenceIconProvider
|
import com.android.settingslib.metadata.PreferenceIconProvider
|
||||||
@@ -94,9 +99,19 @@ open class SeparateRingVolumePreference :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun getReadPermissions(context: Context) = Permissions.EMPTY
|
||||||
|
|
||||||
override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) =
|
override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) =
|
||||||
ReadWritePermit.ALLOW
|
ReadWritePermit.ALLOW
|
||||||
|
|
||||||
|
override fun getWritePermissions(context: Context): Permissions? {
|
||||||
|
var permissions = Permissions.allOf(MODIFY_AUDIO_SETTINGS)
|
||||||
|
if (context.packageManager.hasSystemFeature(FEATURE_AUTOMOTIVE)) {
|
||||||
|
permissions = permissions and MODIFY_AUDIO_SETTINGS_PRIVILEGED
|
||||||
|
}
|
||||||
|
return permissions
|
||||||
|
}
|
||||||
|
|
||||||
override fun getWritePermit(context: Context, value: Int?, callingPid: Int, callingUid: Int) =
|
override fun getWritePermit(context: Context, value: Int?, callingPid: Int, callingUid: Int) =
|
||||||
ReadWritePermit.ALLOW
|
ReadWritePermit.ALLOW
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
|
|||||||
import com.android.settingslib.metadata.preferenceHierarchy
|
import com.android.settingslib.metadata.preferenceHierarchy
|
||||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||||
|
|
||||||
@ProvidePreferenceScreen
|
@ProvidePreferenceScreen(SoundScreen.KEY)
|
||||||
class SoundScreen : PreferenceScreenCreator, PreferenceIconProvider {
|
class SoundScreen : PreferenceScreenCreator, PreferenceIconProvider {
|
||||||
override val key: String
|
override val key: String
|
||||||
get() = KEY
|
get() = KEY
|
||||||
@@ -51,7 +51,7 @@ class SoundScreen : PreferenceScreenCreator, PreferenceIconProvider {
|
|||||||
override fun fragmentClass(): Class<out Fragment>? = SoundSettings::class.java
|
override fun fragmentClass(): Class<out Fragment>? = SoundSettings::class.java
|
||||||
|
|
||||||
override fun getPreferenceHierarchy(context: Context) =
|
override fun getPreferenceHierarchy(context: Context) =
|
||||||
preferenceHierarchy(this) {
|
preferenceHierarchy(context, this) {
|
||||||
+MediaVolumePreference() order -180
|
+MediaVolumePreference() order -180
|
||||||
+CallVolumePreference() order -170
|
+CallVolumePreference() order -170
|
||||||
+SeparateRingVolumePreference() order -155
|
+SeparateRingVolumePreference() order -155
|
||||||
|
|||||||
@@ -1,59 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2024 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.settings.security;
|
|
||||||
|
|
||||||
import android.app.Activity
|
|
||||||
import android.content.DialogInterface
|
|
||||||
import android.os.Bundle
|
|
||||||
import android.view.View
|
|
||||||
import android.view.ViewGroup
|
|
||||||
import android.widget.TextView
|
|
||||||
import com.android.settings.R
|
|
||||||
|
|
||||||
import androidx.appcompat.app.AlertDialog;
|
|
||||||
|
|
||||||
class ActionDisabledByAdvancedProtectionDialog : Activity(), DialogInterface.OnDismissListener {
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
|
||||||
super.onCreate(savedInstanceState)
|
|
||||||
val dialogView = layoutInflater.inflate(R.layout.support_details_dialog, null) as ViewGroup
|
|
||||||
val builder = AlertDialog.Builder(this)
|
|
||||||
.setPositiveButton(R.string.okay, null)
|
|
||||||
.setView(dialogView)
|
|
||||||
.setOnDismissListener(this)
|
|
||||||
initializeDialogView(dialogView)
|
|
||||||
builder.show()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onDismiss(dialog: DialogInterface) {
|
|
||||||
finish()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun initializeDialogView(dialogView: View) {
|
|
||||||
setSupportTitle(dialogView)
|
|
||||||
setSupportDetails(dialogView)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun setSupportTitle(root: View) {
|
|
||||||
val titleView: TextView = root.findViewById(R.id.admin_support_dialog_title) ?: return
|
|
||||||
titleView.setText(R.string.disabled_by_advanced_protection_title)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun setSupportDetails(root: View) {
|
|
||||||
val textView: TextView = root.findViewById(R.id.admin_support_msg)
|
|
||||||
textView.setText(R.string.disabled_by_advanced_protection_message)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -28,7 +28,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
|
|||||||
import com.android.settingslib.metadata.preferenceHierarchy
|
import com.android.settingslib.metadata.preferenceHierarchy
|
||||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||||
|
|
||||||
@ProvidePreferenceScreen
|
@ProvidePreferenceScreen(LockScreenPreferenceScreen.KEY)
|
||||||
open class LockScreenPreferenceScreen : PreferenceScreenCreator, PreferenceSummaryProvider {
|
open class LockScreenPreferenceScreen : PreferenceScreenCreator, PreferenceSummaryProvider {
|
||||||
override val key: String
|
override val key: String
|
||||||
get() = KEY
|
get() = KEY
|
||||||
@@ -52,7 +52,7 @@ open class LockScreenPreferenceScreen : PreferenceScreenCreator, PreferenceSumma
|
|||||||
makeLaunchIntent(context, LockScreenSettingsActivity::class.java, metadata?.key)
|
makeLaunchIntent(context, LockScreenSettingsActivity::class.java, metadata?.key)
|
||||||
|
|
||||||
override fun getPreferenceHierarchy(context: Context) =
|
override fun getPreferenceHierarchy(context: Context) =
|
||||||
preferenceHierarchy(this) {
|
preferenceHierarchy(context, this) {
|
||||||
+AmbientDisplayAlwaysOnPreference()
|
+AmbientDisplayAlwaysOnPreference()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -162,10 +162,10 @@ class WepNetworksPreferenceController(context: Context, preferenceKey: String) :
|
|||||||
emit(aapmManager?.isAdvancedProtectionEnabled ?: false) }.flowOn(Dispatchers.Default)
|
emit(aapmManager?.isAdvancedProtectionEnabled ?: false) }.flowOn(Dispatchers.Default)
|
||||||
|
|
||||||
private fun startSupportIntent() {
|
private fun startSupportIntent() {
|
||||||
AdvancedProtectionManager.createSupportIntent(
|
aapmManager?.createSupportIntent(
|
||||||
AdvancedProtectionManager.FEATURE_ID_DISALLOW_WEP,
|
AdvancedProtectionManager.FEATURE_ID_DISALLOW_WEP,
|
||||||
AdvancedProtectionManager.SUPPORT_DIALOG_TYPE_DISABLED_SETTING
|
AdvancedProtectionManager.SUPPORT_DIALOG_TYPE_DISABLED_SETTING
|
||||||
).let { mContext.startActivity(it) }
|
)?.let { mContext.startActivity(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
val wepAllowedFlow =
|
val wepAllowedFlow =
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package com.android.settings.wifi
|
package com.android.settings.wifi
|
||||||
|
|
||||||
|
import android.Manifest
|
||||||
import android.content.BroadcastReceiver
|
import android.content.BroadcastReceiver
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
@@ -37,6 +38,7 @@ import com.android.settingslib.WirelessUtils
|
|||||||
import com.android.settingslib.datastore.AbstractKeyedDataObservable
|
import com.android.settingslib.datastore.AbstractKeyedDataObservable
|
||||||
import com.android.settingslib.datastore.DataChangeReason
|
import com.android.settingslib.datastore.DataChangeReason
|
||||||
import com.android.settingslib.datastore.KeyValueStore
|
import com.android.settingslib.datastore.KeyValueStore
|
||||||
|
import com.android.settingslib.datastore.Permissions
|
||||||
import com.android.settingslib.metadata.PreferenceLifecycleProvider
|
import com.android.settingslib.metadata.PreferenceLifecycleProvider
|
||||||
import com.android.settingslib.metadata.PreferenceMetadata
|
import com.android.settingslib.metadata.PreferenceMetadata
|
||||||
import com.android.settingslib.metadata.ReadWritePermit
|
import com.android.settingslib.metadata.ReadWritePermit
|
||||||
@@ -94,6 +96,15 @@ class WifiSwitchPreference :
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun getReadPermissions(context: Context) =
|
||||||
|
Permissions.allOf(Manifest.permission.ACCESS_WIFI_STATE)
|
||||||
|
|
||||||
|
override fun getWritePermissions(context: Context) =
|
||||||
|
Permissions.anyOf(
|
||||||
|
Manifest.permission.NETWORK_SETTINGS,
|
||||||
|
Manifest.permission.CHANGE_WIFI_STATE,
|
||||||
|
)
|
||||||
|
|
||||||
override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) =
|
override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) =
|
||||||
ReadWritePermit.ALLOW
|
ReadWritePermit.ALLOW
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,9 @@
|
|||||||
|
|
||||||
package com.android.settings.wifi.calling
|
package com.android.settings.wifi.calling
|
||||||
|
|
||||||
|
import android.Manifest.permission.MODIFY_PHONE_STATE
|
||||||
|
import android.Manifest.permission.READ_PRECISE_PHONE_STATE
|
||||||
|
import android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.telephony.SubscriptionManager
|
import android.telephony.SubscriptionManager
|
||||||
import android.telephony.TelephonyManager
|
import android.telephony.TelephonyManager
|
||||||
@@ -28,6 +31,8 @@ import com.android.settings.widget.SettingsMainSwitchPreference
|
|||||||
import com.android.settings.wifi.calling.WifiCallingSettingsForSub.getCarrierActivityIntent
|
import com.android.settings.wifi.calling.WifiCallingSettingsForSub.getCarrierActivityIntent
|
||||||
import com.android.settingslib.datastore.KeyValueStore
|
import com.android.settingslib.datastore.KeyValueStore
|
||||||
import com.android.settingslib.datastore.NoOpKeyedObservable
|
import com.android.settingslib.datastore.NoOpKeyedObservable
|
||||||
|
import com.android.settingslib.datastore.Permissions
|
||||||
|
import com.android.settingslib.datastore.and
|
||||||
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
|
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
|
||||||
import com.android.settingslib.metadata.ReadWritePermit
|
import com.android.settingslib.metadata.ReadWritePermit
|
||||||
import com.android.settingslib.metadata.SensitivityLevel
|
import com.android.settingslib.metadata.SensitivityLevel
|
||||||
@@ -60,9 +65,16 @@ class WifiCallingMainSwitchPreference(private val subId: Int) :
|
|||||||
|
|
||||||
override fun createWidget(context: Context) = SettingsMainSwitchPreference(context)
|
override fun createWidget(context: Context) = SettingsMainSwitchPreference(context)
|
||||||
|
|
||||||
|
override fun getReadPermissions(context: Context) =
|
||||||
|
Permissions.anyOf(READ_PRIVILEGED_PHONE_STATE, READ_PRECISE_PHONE_STATE)
|
||||||
|
|
||||||
override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) =
|
override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) =
|
||||||
ReadWritePermit.ALLOW
|
ReadWritePermit.ALLOW
|
||||||
|
|
||||||
|
override fun getWritePermissions(context: Context) =
|
||||||
|
Permissions.anyOf(READ_PRIVILEGED_PHONE_STATE, READ_PRECISE_PHONE_STATE) and
|
||||||
|
MODIFY_PHONE_STATE
|
||||||
|
|
||||||
override fun getWritePermit(
|
override fun getWritePermit(
|
||||||
context: Context,
|
context: Context,
|
||||||
value: Boolean?,
|
value: Boolean?,
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
|
|||||||
import com.android.settingslib.metadata.preferenceHierarchy
|
import com.android.settingslib.metadata.preferenceHierarchy
|
||||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||||
|
|
||||||
@ProvidePreferenceScreen
|
@ProvidePreferenceScreen(WifiCallingScreen.KEY)
|
||||||
class WifiCallingScreen : PreferenceScreenCreator {
|
class WifiCallingScreen : PreferenceScreenCreator {
|
||||||
override val key: String
|
override val key: String
|
||||||
get() = KEY
|
get() = KEY
|
||||||
@@ -41,7 +41,7 @@ class WifiCallingScreen : PreferenceScreenCreator {
|
|||||||
override fun hasCompleteHierarchy() = false
|
override fun hasCompleteHierarchy() = false
|
||||||
|
|
||||||
override fun getPreferenceHierarchy(context: Context) =
|
override fun getPreferenceHierarchy(context: Context) =
|
||||||
preferenceHierarchy(this) {
|
preferenceHierarchy(context, this) {
|
||||||
val subId = SubscriptionManager.getDefaultSubscriptionId()
|
val subId = SubscriptionManager.getDefaultSubscriptionId()
|
||||||
if (SubscriptionManager.isValidSubscriptionId(subId)) {
|
if (SubscriptionManager.isValidSubscriptionId(subId)) {
|
||||||
+WifiCallingMainSwitchPreference(subId)
|
+WifiCallingMainSwitchPreference(subId)
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import static com.android.settings.SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENT
|
|||||||
import static com.android.settings.accessibility.AccessibilityUtil.State.OFF;
|
import static com.android.settings.accessibility.AccessibilityUtil.State.OFF;
|
||||||
import static com.android.settings.accessibility.AccessibilityUtil.State.ON;
|
import static com.android.settings.accessibility.AccessibilityUtil.State.ON;
|
||||||
import static com.android.settings.accessibility.HighContrastTextMigrationReceiver.ACTION_RESTORED;
|
import static com.android.settings.accessibility.HighContrastTextMigrationReceiver.ACTION_RESTORED;
|
||||||
|
import static com.android.settings.accessibility.HighContrastTextMigrationReceiver.ACTION_OPEN_SETTINGS;
|
||||||
import static com.android.settings.accessibility.HighContrastTextMigrationReceiver.NOTIFICATION_CHANNEL;
|
import static com.android.settings.accessibility.HighContrastTextMigrationReceiver.NOTIFICATION_CHANNEL;
|
||||||
import static com.android.settings.accessibility.HighContrastTextMigrationReceiver.NOTIFICATION_ID;
|
import static com.android.settings.accessibility.HighContrastTextMigrationReceiver.NOTIFICATION_ID;
|
||||||
import static com.android.settings.accessibility.HighContrastTextMigrationReceiver.PromptState.PROMPT_SHOWN;
|
import static com.android.settings.accessibility.HighContrastTextMigrationReceiver.PromptState.PROMPT_SHOWN;
|
||||||
@@ -28,9 +29,9 @@ import static com.android.settings.accessibility.HighContrastTextMigrationReceiv
|
|||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import android.app.Application;
|
||||||
import android.app.Notification;
|
import android.app.Notification;
|
||||||
import android.app.NotificationManager;
|
import android.app.NotificationManager;
|
||||||
import android.app.PendingIntent;
|
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
@@ -54,10 +55,13 @@ import org.junit.Test;
|
|||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.Shadows;
|
import org.robolectric.Shadows;
|
||||||
|
import org.robolectric.shadows.ShadowApplication;
|
||||||
import org.robolectric.shadows.ShadowNotification;
|
import org.robolectric.shadows.ShadowNotification;
|
||||||
import org.robolectric.shadows.ShadowNotificationManager;
|
import org.robolectric.shadows.ShadowNotificationManager;
|
||||||
import org.robolectric.shadows.ShadowPackageManager;
|
import org.robolectric.shadows.ShadowPackageManager;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/** Tests for {@link HighContrastTextMigrationReceiver}. */
|
/** Tests for {@link HighContrastTextMigrationReceiver}. */
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
public class HighContrastTextMigrationReceiverTest {
|
public class HighContrastTextMigrationReceiverTest {
|
||||||
@@ -66,6 +70,7 @@ public class HighContrastTextMigrationReceiverTest {
|
|||||||
public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
|
public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
|
||||||
private final Context mContext = ApplicationProvider.getApplicationContext();
|
private final Context mContext = ApplicationProvider.getApplicationContext();
|
||||||
private HighContrastTextMigrationReceiver mReceiver;
|
private HighContrastTextMigrationReceiver mReceiver;
|
||||||
|
private ShadowApplication mShadowApplication;
|
||||||
private ShadowNotificationManager mShadowNotificationManager;
|
private ShadowNotificationManager mShadowNotificationManager;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
@@ -73,6 +78,7 @@ public class HighContrastTextMigrationReceiverTest {
|
|||||||
NotificationManager notificationManager =
|
NotificationManager notificationManager =
|
||||||
mContext.getSystemService(NotificationManager.class);
|
mContext.getSystemService(NotificationManager.class);
|
||||||
mShadowNotificationManager = Shadows.shadowOf(notificationManager);
|
mShadowNotificationManager = Shadows.shadowOf(notificationManager);
|
||||||
|
mShadowApplication = Shadows.shadowOf((Application) mContext);
|
||||||
|
|
||||||
// Setup Settings app as a system app
|
// Setup Settings app as a system app
|
||||||
ShadowPackageManager shadowPm = Shadows.shadowOf(mContext.getPackageManager());
|
ShadowPackageManager shadowPm = Shadows.shadowOf(mContext.getPackageManager());
|
||||||
@@ -187,6 +193,28 @@ public class HighContrastTextMigrationReceiverTest {
|
|||||||
verifyNotificationNotSent();
|
verifyNotificationNotSent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@EnableFlags(Flags.FLAG_HIGH_CONTRAST_TEXT_SMALL_TEXT_RECT)
|
||||||
|
public void onReceive_openSettingsIntent_openHighContrastTextPreference() {
|
||||||
|
Intent intent = new Intent(ACTION_OPEN_SETTINGS);
|
||||||
|
mReceiver.onReceive(mContext, intent);
|
||||||
|
|
||||||
|
List<Intent> broadcastIntents = mShadowApplication.getBroadcastIntents();
|
||||||
|
assertThat(broadcastIntents.size()).isEqualTo(1);
|
||||||
|
assertThat(broadcastIntents.get(0).getAction())
|
||||||
|
.isEqualTo(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
|
||||||
|
|
||||||
|
Intent startedActivitie = mShadowApplication.getNextStartedActivity();
|
||||||
|
assertThat(startedActivitie).isNotNull();
|
||||||
|
Bundle fragmentArgs = startedActivitie.getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS);
|
||||||
|
assertThat(fragmentArgs).isNotNull();
|
||||||
|
assertThat(fragmentArgs.getString(EXTRA_FRAGMENT_ARG_KEY))
|
||||||
|
.isEqualTo(TextReadingPreferenceFragment.HIGH_TEXT_CONTRAST_KEY);
|
||||||
|
|
||||||
|
Notification notification = mShadowNotificationManager.getNotification(NOTIFICATION_ID);
|
||||||
|
assertThat(notification).isNull();
|
||||||
|
}
|
||||||
|
|
||||||
private void verifyNotificationNotSent() {
|
private void verifyNotificationNotSent() {
|
||||||
Notification notification = mShadowNotificationManager.getNotification(NOTIFICATION_ID);
|
Notification notification = mShadowNotificationManager.getNotification(NOTIFICATION_ID);
|
||||||
assertThat(notification).isNull();
|
assertThat(notification).isNull();
|
||||||
@@ -210,13 +238,6 @@ public class HighContrastTextMigrationReceiverTest {
|
|||||||
assertThat(notification.actions.length).isEqualTo(1);
|
assertThat(notification.actions.length).isEqualTo(1);
|
||||||
assertThat(notification.actions[0].title.toString()).isEqualTo(
|
assertThat(notification.actions[0].title.toString()).isEqualTo(
|
||||||
mContext.getString(R.string.accessibility_notification_high_contrast_text_action));
|
mContext.getString(R.string.accessibility_notification_high_contrast_text_action));
|
||||||
|
|
||||||
PendingIntent pendingIntent = notification.actions[0].actionIntent;
|
|
||||||
Intent settingsIntent = Shadows.shadowOf(pendingIntent).getSavedIntent();
|
|
||||||
Bundle fragmentArgs = settingsIntent.getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS);
|
|
||||||
assertThat(fragmentArgs).isNotNull();
|
|
||||||
assertThat(fragmentArgs.getString(EXTRA_FRAGMENT_ARG_KEY))
|
|
||||||
.isEqualTo(TextReadingPreferenceFragment.HIGH_TEXT_CONTRAST_KEY);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void assertPromptStateAndHctState(
|
private void assertPromptStateAndHctState(
|
||||||
|
|||||||
@@ -20,14 +20,9 @@ import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
|
|||||||
import static android.security.advancedprotection.AdvancedProtectionManager.ACTION_SHOW_ADVANCED_PROTECTION_SUPPORT_DIALOG;
|
import static android.security.advancedprotection.AdvancedProtectionManager.ACTION_SHOW_ADVANCED_PROTECTION_SUPPORT_DIALOG;
|
||||||
import static android.security.advancedprotection.AdvancedProtectionManager.ADVANCED_PROTECTION_SYSTEM_ENTITY;
|
import static android.security.advancedprotection.AdvancedProtectionManager.ADVANCED_PROTECTION_SYSTEM_ENTITY;
|
||||||
import static android.security.advancedprotection.AdvancedProtectionManager.EXTRA_SUPPORT_DIALOG_FEATURE;
|
import static android.security.advancedprotection.AdvancedProtectionManager.EXTRA_SUPPORT_DIALOG_FEATURE;
|
||||||
import static android.security.advancedprotection.AdvancedProtectionManager.EXTRA_SUPPORT_DIALOG_TYPE;
|
|
||||||
import static android.security.advancedprotection.AdvancedProtectionManager.FEATURE_ID_DISALLOW_INSTALL_UNKNOWN_SOURCES;
|
|
||||||
import static android.security.advancedprotection.AdvancedProtectionManager.SUPPORT_DIALOG_TYPE_UNKNOWN;
|
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
|
||||||
import static org.mockito.Mockito.doNothing;
|
import static org.mockito.Mockito.doNothing;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
@@ -45,6 +40,7 @@ import android.os.UserManager;
|
|||||||
import android.platform.test.annotations.RequiresFlagsEnabled;
|
import android.platform.test.annotations.RequiresFlagsEnabled;
|
||||||
import android.platform.test.flag.junit.CheckFlagsRule;
|
import android.platform.test.flag.junit.CheckFlagsRule;
|
||||||
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
|
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
|
||||||
|
import android.security.advancedprotection.AdvancedProtectionManager;
|
||||||
|
|
||||||
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
||||||
|
|
||||||
@@ -52,7 +48,6 @@ import org.junit.Before;
|
|||||||
import org.junit.Rule;
|
import org.junit.Rule;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.ArgumentCaptor;
|
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
@@ -64,6 +59,8 @@ public class ActionDisabledByAdminDialogTest {
|
|||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private DevicePolicyManager mDevicePolicyManager;
|
private DevicePolicyManager mDevicePolicyManager;
|
||||||
|
@Mock
|
||||||
|
private AdvancedProtectionManager mAdvancedProtectionManager;
|
||||||
|
|
||||||
private ActionDisabledByAdminDialog mDialog;
|
private ActionDisabledByAdminDialog mDialog;
|
||||||
private final ComponentName mAdminComponent = new ComponentName("admin", "adminclass");
|
private final ComponentName mAdminComponent = new ComponentName("admin", "adminclass");
|
||||||
@@ -73,6 +70,8 @@ public class ActionDisabledByAdminDialogTest {
|
|||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
mDialog = spy(new ActionDisabledByAdminDialog());
|
mDialog = spy(new ActionDisabledByAdminDialog());
|
||||||
doReturn(mDevicePolicyManager).when(mDialog).getSystemService(DevicePolicyManager.class);
|
doReturn(mDevicePolicyManager).when(mDialog).getSystemService(DevicePolicyManager.class);
|
||||||
|
doReturn(mAdvancedProtectionManager).when(mDialog).getSystemService(
|
||||||
|
AdvancedProtectionManager.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -119,28 +118,24 @@ public class ActionDisabledByAdminDialogTest {
|
|||||||
advancedProtectionAuthority, UserHandle.of(userId), mAdminComponent);
|
advancedProtectionAuthority, UserHandle.of(userId), mAdminComponent);
|
||||||
final String userRestriction = UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY;
|
final String userRestriction = UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY;
|
||||||
|
|
||||||
|
final Intent apmIntent = new Intent(ACTION_SHOW_ADVANCED_PROTECTION_SUPPORT_DIALOG);
|
||||||
|
apmIntent.setFlags(FLAG_ACTIVITY_NEW_TASK);
|
||||||
|
apmIntent.putExtra(EXTRA_SUPPORT_DIALOG_FEATURE, "featureId");
|
||||||
|
|
||||||
final Intent dialogIntent = new Intent();
|
final Intent dialogIntent = new Intent();
|
||||||
dialogIntent.putExtra(Intent.EXTRA_USER_ID, userId);
|
dialogIntent.putExtra(Intent.EXTRA_USER_ID, userId);
|
||||||
dialogIntent.putExtra(DevicePolicyManager.EXTRA_RESTRICTION, userRestriction);
|
dialogIntent.putExtra(DevicePolicyManager.EXTRA_RESTRICTION, userRestriction);
|
||||||
|
|
||||||
when(mDevicePolicyManager.getEnforcingAdmin(userId, userRestriction))
|
when(mDevicePolicyManager.getEnforcingAdmin(userId, userRestriction))
|
||||||
.thenReturn(advancedProtectionEnforcingAdmin);
|
.thenReturn(advancedProtectionEnforcingAdmin);
|
||||||
doNothing().when(mDialog).startActivityAsUser(any(), eq(UserHandle.of(userId)));
|
when(mAdvancedProtectionManager.createSupportIntentForPolicyIdentifierOrRestriction(
|
||||||
|
userRestriction, /* type */ null)).thenReturn(apmIntent);
|
||||||
|
doNothing().when(mDialog).startActivityAsUser(apmIntent, UserHandle.of(userId));
|
||||||
|
|
||||||
mDialog.getAdminDetailsFromIntent(dialogIntent);
|
mDialog.getAdminDetailsFromIntent(dialogIntent);
|
||||||
|
|
||||||
ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
|
verify(mDialog).startActivityAsUser(apmIntent, UserHandle.of(userId));
|
||||||
verify(mDialog).startActivityAsUser(intentCaptor.capture(), eq(UserHandle.of(userId)));
|
|
||||||
assertTrue(mDialog.isFinishing());
|
assertTrue(mDialog.isFinishing());
|
||||||
|
|
||||||
Intent launchedIntent = intentCaptor.getValue();
|
|
||||||
assertEquals("Intent action is incorrect", ACTION_SHOW_ADVANCED_PROTECTION_SUPPORT_DIALOG,
|
|
||||||
launchedIntent.getAction());
|
|
||||||
assertEquals("Feature ID extra is incorrect", FEATURE_ID_DISALLOW_INSTALL_UNKNOWN_SOURCES,
|
|
||||||
launchedIntent.getIntExtra(EXTRA_SUPPORT_DIALOG_FEATURE, -1));
|
|
||||||
assertEquals("Type is incorrect", SUPPORT_DIALOG_TYPE_UNKNOWN,
|
|
||||||
launchedIntent.getIntExtra(EXTRA_SUPPORT_DIALOG_TYPE, -1));
|
|
||||||
assertEquals(FLAG_ACTIVITY_NEW_TASK, launchedIntent.getFlags());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresFlagsEnabled(android.security.Flags.FLAG_AAPM_API)
|
@RequiresFlagsEnabled(android.security.Flags.FLAG_AAPM_API)
|
||||||
|
|||||||
@@ -200,6 +200,7 @@ class WepNetworksPreferenceControllerTest {
|
|||||||
fun whenClick_aapmEnabled_openDialog() {
|
fun whenClick_aapmEnabled_openDialog() {
|
||||||
mockAapmManager.stub {
|
mockAapmManager.stub {
|
||||||
on { isAdvancedProtectionEnabled } doReturn true
|
on { isAdvancedProtectionEnabled } doReturn true
|
||||||
|
on { createSupportIntent(any(), any()) } doReturn Intent()
|
||||||
}
|
}
|
||||||
doNothing().whenever(context).startActivity(any())
|
doNothing().whenever(context).startActivity(any())
|
||||||
composeTestRule.setContent { controller.Content() }
|
composeTestRule.setContent { controller.Content() }
|
||||||
|
|||||||
Reference in New Issue
Block a user