Merge "Add ACCESS_FINE_LOCATION to permissions"
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 5c7d1ae..f1d5f27 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -436,7 +436,7 @@
android:exported="true"
android:permission="android.permission.TETHER_PRIVILEGED" />
- <activity android:name="TetherProvisioningActivity"
+ <activity android:name="network.TetherProvisioningActivity"
android:exported="true"
android:permission="android.permission.TETHER_PRIVILEGED"
android:excludeFromRecents="true"
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index 938f5b7..acc9a76 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -74,6 +74,7 @@
import androidx.annotation.StringRes;
import androidx.preference.Preference;
import androidx.preference.PreferenceGroup;
+import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.text.Spannable;
import android.text.SpannableString;
@@ -966,4 +967,13 @@
return packageManager.getDefaultActivityIcon();
}
}
+
+ /** Get {@link Resources} by subscription id if subscription id is valid. */
+ public static Resources getResourcesForSubId(Context context, int subId) {
+ if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+ return SubscriptionManager.getResourcesForSubId(context, subId);
+ } else {
+ return context.getResources();
+ }
+ }
}
diff --git a/src/com/android/settings/development/ClearAdbKeysPreferenceController.java b/src/com/android/settings/development/ClearAdbKeysPreferenceController.java
index 9598b37..d94d428 100644
--- a/src/com/android/settings/development/ClearAdbKeysPreferenceController.java
+++ b/src/com/android/settings/development/ClearAdbKeysPreferenceController.java
@@ -20,8 +20,8 @@
import android.hardware.usb.IUsbManager;
import android.os.RemoteException;
import android.os.ServiceManager;
-import android.os.SystemProperties;
import android.os.UserManager;
+import android.sysprop.AdbProperties;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
@@ -38,9 +38,6 @@
private static final String TAG = "ClearAdbPrefCtrl";
private static final String CLEAR_ADB_KEYS = "clear_adb_keys";
- @VisibleForTesting
- static final String RO_ADB_SECURE_PROPERTY_KEY = "ro.adb.secure";
-
private final IUsbManager mUsbManager;
private final DevelopmentSettingsDashboardFragment mFragment;
@@ -54,7 +51,7 @@
@Override
public boolean isAvailable() {
- return SystemProperties.getBoolean(RO_ADB_SECURE_PROPERTY_KEY, false /* default */);
+ return AdbProperties.secure().orElse(false);
}
@Override
diff --git a/src/com/android/settings/development/ForceMSAAPreferenceController.java b/src/com/android/settings/development/ForceMSAAPreferenceController.java
index 17b5e4b..cb3afa5 100644
--- a/src/com/android/settings/development/ForceMSAAPreferenceController.java
+++ b/src/com/android/settings/development/ForceMSAAPreferenceController.java
@@ -17,7 +17,7 @@
package com.android.settings.development;
import android.content.Context;
-import android.os.SystemProperties;
+import android.sysprop.DisplayProperties;
import androidx.annotation.VisibleForTesting;
import androidx.preference.SwitchPreference;
import androidx.preference.Preference;
@@ -31,9 +31,6 @@
private static final String FORCE_MSAA_KEY = "force_msaa";
- @VisibleForTesting
- static final String MSAA_PROPERTY = "debug.egl.force_msaa";
-
public ForceMSAAPreferenceController(Context context) {
super(context);
}
@@ -46,22 +43,21 @@
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
final boolean isEnabled = (Boolean) newValue;
- SystemProperties.set(MSAA_PROPERTY,
- isEnabled ? Boolean.toString(true) : Boolean.toString(false));
+ DisplayProperties.debug_force_msaa(isEnabled);
SystemPropPoker.getInstance().poke();
return true;
}
@Override
public void updateState(Preference preference) {
- final boolean isEnabled = SystemProperties.getBoolean(MSAA_PROPERTY, false /* default */);
+ final boolean isEnabled = DisplayProperties.debug_force_msaa().orElse(false);
((SwitchPreference) mPreference).setChecked(isEnabled);
}
@Override
protected void onDeveloperOptionsSwitchDisabled() {
super.onDeveloperOptionsSwitchDisabled();
- SystemProperties.set(MSAA_PROPERTY, Boolean.toString(false));
+ DisplayProperties.debug_force_msaa(false);
((SwitchPreference) mPreference).setChecked(false);
}
}
diff --git a/src/com/android/settings/development/RtlLayoutPreferenceController.java b/src/com/android/settings/development/RtlLayoutPreferenceController.java
index a88f16f..9abd997 100644
--- a/src/com/android/settings/development/RtlLayoutPreferenceController.java
+++ b/src/com/android/settings/development/RtlLayoutPreferenceController.java
@@ -17,8 +17,8 @@
package com.android.settings.development;
import android.content.Context;
-import android.os.SystemProperties;
import android.provider.Settings;
+import android.sysprop.DisplayProperties;
import androidx.annotation.VisibleForTesting;
import androidx.preference.SwitchPreference;
import androidx.preference.Preference;
@@ -78,8 +78,6 @@
Settings.Global.putInt(mContext.getContentResolver(),
Settings.Global.DEVELOPMENT_FORCE_RTL,
isEnabled ? SETTING_VALUE_ON : SETTING_VALUE_OFF);
- SystemProperties.set(Settings.Global.DEVELOPMENT_FORCE_RTL,
- isEnabled ? Integer.toString(SETTING_VALUE_ON)
- : Integer.toString(SETTING_VALUE_OFF));
+ DisplayProperties.debug_force_rtl(isEnabled);
}
}
diff --git a/src/com/android/settings/development/ShowLayoutBoundsPreferenceController.java b/src/com/android/settings/development/ShowLayoutBoundsPreferenceController.java
index 4d3fdbf..67be6f8 100644
--- a/src/com/android/settings/development/ShowLayoutBoundsPreferenceController.java
+++ b/src/com/android/settings/development/ShowLayoutBoundsPreferenceController.java
@@ -17,7 +17,7 @@
package com.android.settings.development;
import android.content.Context;
-import android.os.SystemProperties;
+import android.sysprop.DisplayProperties;
import androidx.preference.SwitchPreference;
import androidx.preference.Preference;
import android.view.View;
@@ -43,23 +43,21 @@
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
final boolean isEnabled = (Boolean) newValue;
- SystemProperties.set(View.DEBUG_LAYOUT_PROPERTY,
- isEnabled ? Boolean.toString(true) : Boolean.toString(false));
+ DisplayProperties.debug_layout(isEnabled);
SystemPropPoker.getInstance().poke();
return true;
}
@Override
public void updateState(Preference preference) {
- final boolean isEnabled = SystemProperties.getBoolean(View.DEBUG_LAYOUT_PROPERTY,
- false /* default */);
+ final boolean isEnabled = DisplayProperties.debug_layout().orElse(false);
((SwitchPreference) mPreference).setChecked(isEnabled);
}
@Override
protected void onDeveloperOptionsSwitchDisabled() {
super.onDeveloperOptionsSwitchDisabled();
- SystemProperties.set(View.DEBUG_LAYOUT_PROPERTY, Boolean.toString(false));
+ DisplayProperties.debug_layout(false);
((SwitchPreference) mPreference).setChecked(false);
}
}
diff --git a/src/com/android/settings/development/qstile/DevelopmentTiles.java b/src/com/android/settings/development/qstile/DevelopmentTiles.java
index 1094ab9..8dd56d5 100644
--- a/src/com/android/settings/development/qstile/DevelopmentTiles.java
+++ b/src/com/android/settings/development/qstile/DevelopmentTiles.java
@@ -25,6 +25,7 @@
import android.provider.Settings;
import android.service.quicksettings.Tile;
import android.service.quicksettings.TileService;
+import android.sysprop.DisplayProperties;
import androidx.annotation.VisibleForTesting;
import android.util.Log;
import android.view.IWindowManager;
@@ -68,12 +69,12 @@
@Override
protected boolean isEnabled() {
- return SystemProperties.getBoolean(View.DEBUG_LAYOUT_PROPERTY, false);
+ return DisplayProperties.debug_layout().orElse(false);
}
@Override
protected void setIsEnabled(boolean isEnabled) {
- SystemProperties.set(View.DEBUG_LAYOUT_PROPERTY, isEnabled ? "true" : "false");
+ DisplayProperties.debug_layout(isEnabled);
}
}
@@ -109,7 +110,7 @@
protected void setIsEnabled(boolean isEnabled) {
Settings.Global.putInt(
getContentResolver(), Settings.Global.DEVELOPMENT_FORCE_RTL, isEnabled ? 1 : 0);
- SystemProperties.set(Settings.Global.DEVELOPMENT_FORCE_RTL, isEnabled ? "1" : "0");
+ DisplayProperties.debug_force_rtl(isEnabled);
LocalePicker.updateLocales(getResources().getConfiguration().getLocales());
}
}
diff --git a/src/com/android/settings/TetherProvisioningActivity.java b/src/com/android/settings/network/TetherProvisioningActivity.java
similarity index 89%
rename from src/com/android/settings/TetherProvisioningActivity.java
rename to src/com/android/settings/network/TetherProvisioningActivity.java
index e842db1..b30950e 100644
--- a/src/com/android/settings/TetherProvisioningActivity.java
+++ b/src/com/android/settings/network/TetherProvisioningActivity.java
@@ -14,17 +14,21 @@
* limitations under the License.
*/
-package com.android.settings;
+package com.android.settings.network;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
+import android.content.res.Resources;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.os.ResultReceiver;
import android.os.UserHandle;
+import android.telephony.SubscriptionManager;
import android.util.Log;
+import com.android.settings.Utils;
+
/**
* Activity which acts as a proxy to the tether provisioning app for sanity checks and permission
* restrictions. Specifically, the provisioning apps require
@@ -47,7 +51,9 @@
int tetherType = getIntent().getIntExtra(ConnectivityManager.EXTRA_ADD_TETHER_TYPE,
ConnectivityManager.TETHERING_INVALID);
- String[] provisionApp = getResources().getStringArray(
+ final int subId = SubscriptionManager.getDefaultDataSubscriptionId();
+ final Resources res = Utils.getResourcesForSubId(this, subId);
+ final String[] provisionApp = res.getStringArray(
com.android.internal.R.array.config_mobile_hotspot_provision_app);
Intent intent = new Intent(Intent.ACTION_MAIN);
diff --git a/src/com/android/settings/wifi/tether/TetherService.java b/src/com/android/settings/wifi/tether/TetherService.java
index e491de8..d1e8652 100644
--- a/src/com/android/settings/wifi/tether/TetherService.java
+++ b/src/com/android/settings/wifi/tether/TetherService.java
@@ -32,16 +32,20 @@
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
+import android.content.res.Resources;
import android.net.ConnectivityManager;
import android.os.IBinder;
import android.os.ResultReceiver;
import android.os.SystemClock;
+import android.telephony.SubscriptionManager;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.Log;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.settings.Utils;
+
import java.util.ArrayList;
import java.util.List;
@@ -65,7 +69,7 @@
private int mCurrentTypeIndex;
private boolean mInProvisionCheck;
- private UsageStatsManagerWrapper mUsageManagerWrapper;
+ private TetherServiceWrapper mWrapper;
private ArrayList<Integer> mCurrentTethers;
private ArrayMap<Integer, List<ResultReceiver>> mPendingCallbacks;
private HotspotOffReceiver mHotspotReceiver;
@@ -79,7 +83,7 @@
public void onCreate() {
super.onCreate();
if (DEBUG) Log.d(TAG, "Creating TetherService");
- String provisionResponse = getResources().getString(
+ String provisionResponse = getResourceForDefaultDataSubId().getString(
com.android.internal.R.string.config_mobile_hotspot_provision_response);
registerReceiver(mReceiver, new IntentFilter(provisionResponse),
android.Manifest.permission.CONNECTIVITY_INTERNAL, null);
@@ -91,9 +95,6 @@
mPendingCallbacks.put(ConnectivityManager.TETHERING_USB, new ArrayList<ResultReceiver>());
mPendingCallbacks.put(
ConnectivityManager.TETHERING_BLUETOOTH, new ArrayList<ResultReceiver>());
- if (mUsageManagerWrapper == null) {
- mUsageManagerWrapper = new UsageStatsManagerWrapper(this);
- }
mHotspotReceiver = new HotspotOffReceiver(this);
}
@@ -258,7 +259,7 @@
}
private Intent getProvisionBroadcastIntent(int index) {
- String provisionAction = getResources().getString(
+ String provisionAction = getResourceForDefaultDataSubId().getString(
com.android.internal.R.string.config_mobile_hotspot_provision_app_no_ui);
Intent intent = new Intent(provisionAction);
int type = mCurrentTethers.get(index);
@@ -282,7 +283,7 @@
for (ResolveInfo resolver : resolvers) {
if (resolver.activityInfo.applicationInfo.isSystemApp()) {
String packageName = resolver.activityInfo.packageName;
- mUsageManagerWrapper.setAppInactive(packageName, false);
+ getTetherServiceWrapper().setAppInactive(packageName, false);
}
}
}
@@ -294,7 +295,7 @@
PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
- int period = getResources().getInteger(
+ int period = getResourceForDefaultDataSubId().getInteger(
com.android.internal.R.integer.config_mobile_hotspot_provision_check_period);
long periodMs = period * MS_PER_HOUR;
long firstTime = SystemClock.elapsedRealtime() + periodMs;
@@ -347,7 +348,7 @@
@Override
public void onReceive(Context context, Intent intent) {
if (DEBUG) Log.d(TAG, "Got provision result " + intent);
- String provisionResponse = getResources().getString(
+ String provisionResponse = getResourceForDefaultDataSubId().getString(
com.android.internal.R.string.config_mobile_hotspot_provision_response);
if (provisionResponse.equals(intent.getAction())) {
@@ -385,19 +386,27 @@
};
@VisibleForTesting
- void setUsageStatsManagerWrapper(UsageStatsManagerWrapper wrapper) {
- mUsageManagerWrapper = wrapper;
+ void setTetherServiceWrapper(TetherServiceWrapper wrapper) {
+ mWrapper = wrapper;
+ }
+
+ private TetherServiceWrapper getTetherServiceWrapper() {
+ if (mWrapper == null) {
+ mWrapper = new TetherServiceWrapper(this);
+ }
+ return mWrapper;
}
/**
- * A static helper class used for tests. UsageStatsManager cannot be mocked out becasue
- * it's marked final. This class can be mocked out instead.
+ * A static helper class used for tests. UsageStatsManager cannot be mocked out because
+ * it's marked final. Static method SubscriptionManager#getResourcesForSubId also cannot
+ * be mocked. This class can be mocked out instead.
*/
@VisibleForTesting
- public static class UsageStatsManagerWrapper {
+ public static class TetherServiceWrapper {
private final UsageStatsManager mUsageStatsManager;
- UsageStatsManagerWrapper(Context context) {
+ TetherServiceWrapper(Context context) {
mUsageStatsManager = (UsageStatsManager)
context.getSystemService(Context.USAGE_STATS_SERVICE);
}
@@ -405,5 +414,15 @@
void setAppInactive(String packageName, boolean isInactive) {
mUsageStatsManager.setAppInactive(packageName, isInactive);
}
+
+ int getDefaultDataSubscriptionId() {
+ return SubscriptionManager.getDefaultDataSubscriptionId();
+ }
+ }
+
+ @VisibleForTesting
+ Resources getResourceForDefaultDataSubId() {
+ final int subId = getTetherServiceWrapper().getDefaultDataSubscriptionId();
+ return Utils.getResourcesForSubId(this, subId);
}
}
diff --git a/tests/robotests/src/com/android/settings/development/ClearAdbKeysPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/ClearAdbKeysPreferenceControllerTest.java
index 6f7c224..772a32f 100644
--- a/tests/robotests/src/com/android/settings/development/ClearAdbKeysPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/ClearAdbKeysPreferenceControllerTest.java
@@ -16,7 +16,6 @@
package com.android.settings.development;
-import static com.android.settings.development.ClearAdbKeysPreferenceController.RO_ADB_SECURE_PROPERTY_KEY;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never;
@@ -28,7 +27,7 @@
import android.content.Context;
import android.hardware.usb.IUsbManager;
import android.os.RemoteException;
-import android.os.SystemProperties;
+import android.sysprop.AdbProperties;
import androidx.preference.SwitchPreference;
import androidx.preference.PreferenceScreen;
@@ -79,21 +78,21 @@
@Test
public void isAvailable_roAdbSecureEnabled_shouldBeTrue() {
- SystemProperties.set(RO_ADB_SECURE_PROPERTY_KEY, Boolean.toString(true));
+ AdbProperties.secure(true);
assertThat(mController.isAvailable()).isTrue();
}
@Test
public void isAvailable_roAdbSecureDisabled_shouldBeFalse() {
- SystemProperties.set(RO_ADB_SECURE_PROPERTY_KEY, Boolean.toString(false));
+ AdbProperties.secure(false);
assertThat(mController.isAvailable()).isFalse();
}
@Test
public void displayPreference_isNotAdminUser_preferenceShouldBeDisabled() {
- SystemProperties.set(RO_ADB_SECURE_PROPERTY_KEY, Boolean.toString(true));
+ AdbProperties.secure(true);
doReturn(false).when(mController).isAdminUser();
mController.displayPreference(mScreen);
@@ -104,7 +103,7 @@
@Test
@Config(shadows = ShadowClearAdbKeysWarningDialog.class)
public void handlePreferenceTreeClick_clearAdbKeysPreference_shouldShowWarningDialog() {
- SystemProperties.set(RO_ADB_SECURE_PROPERTY_KEY, Boolean.toString(true));
+ AdbProperties.secure(true);
doReturn(true).when(mController).isAdminUser();
mController.displayPreference(mScreen);
final String preferenceKey = mController.getPreferenceKey();
@@ -117,7 +116,7 @@
@Test
public void handlePreferenceTreeClick_notClearAdbKeysPreference_shouldReturnFalse() {
- SystemProperties.set(RO_ADB_SECURE_PROPERTY_KEY, Boolean.toString(true));
+ AdbProperties.secure(true);
doReturn(true).when(mController).isAdminUser();
mController.displayPreference(mScreen);
when(mPreference.getKey()).thenReturn("Some random key!!!");
@@ -128,7 +127,7 @@
@Test
public void handlePreferenceTreeClick_monkeyUser_shouldReturnFalse() {
- SystemProperties.set(RO_ADB_SECURE_PROPERTY_KEY, Boolean.toString(true));
+ AdbProperties.secure(true);
doReturn(true).when(mController).isAdminUser();
ShadowUtils.setIsUserAMonkey(true);
mController.displayPreference(mScreen);
@@ -142,7 +141,7 @@
@Test
public void onDeveloperOptionsSwitchEnabled_isAdminUser_shouldEnablePreference() {
- SystemProperties.set(RO_ADB_SECURE_PROPERTY_KEY, Boolean.toString(true));
+ AdbProperties.secure(true);
doReturn(true).when(mController).isAdminUser();
mController.displayPreference(mScreen);
mController.onDeveloperOptionsSwitchEnabled();
@@ -152,7 +151,7 @@
@Test
public void onDeveloperOptionsSwitchEnabled_isNotAdminUser_shouldNotEnablePreference() {
- SystemProperties.set(RO_ADB_SECURE_PROPERTY_KEY, Boolean.toString(true));
+ AdbProperties.secure(true);
doReturn(false).when(mController).isAdminUser();
mController.displayPreference(mScreen);
mController.onDeveloperOptionsSwitchEnabled();
diff --git a/tests/robotests/src/com/android/settings/development/ForceMSAAPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/ForceMSAAPreferenceControllerTest.java
index aceb714..4829d3e 100644
--- a/tests/robotests/src/com/android/settings/development/ForceMSAAPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/ForceMSAAPreferenceControllerTest.java
@@ -21,7 +21,7 @@
import static org.mockito.Mockito.when;
import android.content.Context;
-import android.os.SystemProperties;
+import android.sysprop.DisplayProperties;
import androidx.preference.SwitchPreference;
import androidx.preference.PreferenceScreen;
@@ -59,8 +59,7 @@
public void onPreferenceChanged_settingEnabled_turnOnForceMsaa() {
mController.onPreferenceChange(mPreference, true /* new value */);
- final boolean mode = SystemProperties
- .getBoolean(ForceMSAAPreferenceController.MSAA_PROPERTY, false /* default */);
+ final boolean mode = DisplayProperties.debug_force_msaa().orElse(false);
assertThat(mode).isTrue();
}
@@ -69,15 +68,14 @@
public void onPreferenceChanged_settingDisabled_turnOffForceMsaa() {
mController.onPreferenceChange(mPreference, false /* new value */);
- final boolean mode = SystemProperties
- .getBoolean(ForceMSAAPreferenceController.MSAA_PROPERTY, false /* default */);
+ final boolean mode = DisplayProperties.debug_force_msaa().orElse(false);
assertThat(mode).isFalse();
}
@Test
public void updateState_settingEnabled_preferenceShouldBeChecked() {
- SystemProperties.set(ForceMSAAPreferenceController.MSAA_PROPERTY, Boolean.toString(true));
+ DisplayProperties.debug_force_msaa(true);
mController.updateState(mPreference);
verify(mPreference).setChecked(true);
@@ -85,7 +83,7 @@
@Test
public void updateState_settingDisabled_preferenceShouldNotBeChecked() {
- SystemProperties.set(ForceMSAAPreferenceController.MSAA_PROPERTY, Boolean.toString(false));
+ DisplayProperties.debug_force_msaa(false);
mController.updateState(mPreference);
verify(mPreference).setChecked(false);
diff --git a/tests/robotests/src/com/android/settings/development/ShowLayoutBoundsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/ShowLayoutBoundsPreferenceControllerTest.java
index c18857a..af90c15 100644
--- a/tests/robotests/src/com/android/settings/development/ShowLayoutBoundsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/ShowLayoutBoundsPreferenceControllerTest.java
@@ -20,7 +20,7 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-import android.os.SystemProperties;
+import android.sysprop.DisplayProperties;
import androidx.preference.SwitchPreference;
import androidx.preference.PreferenceScreen;
import android.view.View;
@@ -57,8 +57,7 @@
public void onPreferenceChanged_settingEnabled_turnOnShowLayoutBounds() {
mController.onPreferenceChange(mPreference, true /* new value */);
- final boolean mode =
- SystemProperties.getBoolean(View.DEBUG_LAYOUT_PROPERTY, false /* default */);
+ final boolean mode = DisplayProperties.debug_layout().orElse(false);
assertThat(mode).isTrue();
}
@@ -67,15 +66,14 @@
public void onPreferenceChanged_settingDisabled_turnOffShowLayoutBounds() {
mController.onPreferenceChange(mPreference, false /* new value */);
- final boolean mode =
- SystemProperties.getBoolean(View.DEBUG_LAYOUT_PROPERTY, false /* default */);
+ final boolean mode = DisplayProperties.debug_layout().orElse(false);
assertThat(mode).isFalse();
}
@Test
public void updateState_settingEnabled_preferenceShouldBeChecked() {
- SystemProperties.set(View.DEBUG_LAYOUT_PROPERTY, Boolean.toString(true));
+ DisplayProperties.debug_layout(true);
mController.updateState(mPreference);
verify(mPreference).setChecked(true);
@@ -83,7 +81,7 @@
@Test
public void updateState_settingDisabled_preferenceShouldNotBeChecked() {
- SystemProperties.set(View.DEBUG_LAYOUT_PROPERTY, Boolean.toString(false));
+ DisplayProperties.debug_layout(false);
mController.updateState(mPreference);
verify(mPreference).setChecked(false);
@@ -93,8 +91,7 @@
public void onDeveloperOptionsDisabled_shouldDisablePreference() {
mController.onDeveloperOptionsDisabled();
- final boolean mode =
- SystemProperties.getBoolean(View.DEBUG_LAYOUT_PROPERTY, false /* default */);
+ final boolean mode = DisplayProperties.debug_layout().orElse(false);
assertThat(mode).isFalse();
verify(mPreference).setEnabled(false);
diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowTextUtils.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowTextUtils.java
index 03991e6..f56b45d 100644
--- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowTextUtils.java
+++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowTextUtils.java
@@ -17,8 +17,8 @@
package com.android.settings.testutils.shadow;
import android.icu.util.ULocale;
-import android.os.SystemProperties;
import android.provider.Settings;
+import android.sysprop.DisplayProperties;
import android.text.TextUtils;
import android.view.View;
import java.util.Locale;
@@ -38,7 +38,7 @@
return ((locale != null && !locale.equals(Locale.ROOT)
&& ULocale.forLocale(locale).isRightToLeft())
// If forcing into RTL layout mode, return RTL as default
- || SystemProperties.getBoolean(Settings.Global.DEVELOPMENT_FORCE_RTL, false))
+ || DisplayProperties.debug_force_rtl().orElse(false))
? View.LAYOUT_DIRECTION_RTL
: View.LAYOUT_DIRECTION_LTR;
}
diff --git a/tests/unit/src/com/android/settings/wifi/tether/TetherServiceTest.java b/tests/unit/src/com/android/settings/wifi/tether/TetherServiceTest.java
index 7bf5798..dc96c02 100644
--- a/tests/unit/src/com/android/settings/wifi/tether/TetherServiceTest.java
+++ b/tests/unit/src/com/android/settings/wifi/tether/TetherServiceTest.java
@@ -31,6 +31,7 @@
import static android.net.ConnectivityManager.TETHERING_WIFI;
import static android.net.ConnectivityManager.TETHER_ERROR_NO_ERROR;
import static android.net.ConnectivityManager.TETHER_ERROR_PROVISION_FAILED;
+import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
import android.app.Activity;
import android.app.AlarmManager;
@@ -82,7 +83,7 @@
private TetherService mService;
private MockResources mResources;
- private FakeUsageStatsManagerWrapper mUsageStatsManagerWrapper;
+ private MockTetherServiceWrapper mWrapper;
int mLastReceiverResultCode = BOGUS_RECEIVER_RESULT;
private int mLastTetherRequestType = TETHERING_INVALID;
private int mProvisionResponse = BOGUS_RECEIVER_RESULT;
@@ -124,7 +125,7 @@
when(mPrefs.edit()).thenReturn(mPrefEditor);
when(mPrefEditor.putString(eq(CURRENT_TYPES), mStoredTypes.capture())).thenReturn(
mPrefEditor);
- mUsageStatsManagerWrapper = new FakeUsageStatsManagerWrapper(mContext);
+ mWrapper = new MockTetherServiceWrapper(mContext);
ResolveInfo systemAppResolveInfo = new ResolveInfo();
ActivityInfo systemActivityInfo = new ActivityInfo();
@@ -145,6 +146,8 @@
resolvers.add(systemAppResolveInfo);
when(mPackageManager.queryBroadcastReceivers(
any(Intent.class), eq(PackageManager.MATCH_ALL))).thenReturn(resolvers);
+ setupService();
+ getService().setTetherServiceWrapper(mWrapper);
}
@Override
@@ -170,16 +173,13 @@
}
public void testStartKeepsProvisionAppActive() {
- setupService();
- getService().setUsageStatsManagerWrapper(mUsageStatsManagerWrapper);
-
runProvisioningForType(TETHERING_WIFI);
assertTrue(waitForProvisionRequest(TETHERING_WIFI));
assertTrue(waitForProvisionResponse(TETHER_ERROR_NO_ERROR));
- assertFalse(mUsageStatsManagerWrapper.isAppInactive(ENTITLEMENT_PACKAGE_NAME));
+ assertFalse(mWrapper.isAppInactive(ENTITLEMENT_PACKAGE_NAME));
// Non-system handler of the intent action should stay idle.
- assertTrue(mUsageStatsManagerWrapper.isAppInactive(FAKE_PACKAGE_NAME));
+ assertTrue(mWrapper.isAppInactive(FAKE_PACKAGE_NAME));
}
public void testScheduleRechecks() {
@@ -418,11 +418,11 @@
}
}
- private static class FakeUsageStatsManagerWrapper
- extends TetherService.UsageStatsManagerWrapper {
+ private static class MockTetherServiceWrapper
+ extends TetherService.TetherServiceWrapper {
private final Set<String> mActivePackages;
- FakeUsageStatsManagerWrapper(Context context) {
+ MockTetherServiceWrapper(Context context) {
super(context);
mActivePackages = new HashSet<>();
}
@@ -439,5 +439,10 @@
boolean isAppInactive(String packageName) {
return !mActivePackages.contains(packageName);
}
+
+ @Override
+ int getDefaultDataSubscriptionId() {
+ return INVALID_SUBSCRIPTION_ID;
+ }
}
}