Merge "Extract the logic of MagnificationMode to the controller" into sc-dev
diff --git a/res/values/config.xml b/res/values/config.xml
index 5a8f636..a41e41b 100755
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -269,6 +269,11 @@
<!-- ComponentName to launch a vendor-specific enrollment activity if available -->
<string name="config_face_enroll" translatable="false"></string>
+ <!-- Fully qualified name of the introductory activity for face enrollment. -->
+ <string name="config_face_enroll_introduction" translatable="false">
+ com.android.settings.biometrics.face.FaceEnrollIntroduction
+ </string>
+
<!-- App intent -->
<string name="config_account_intent_uri" translatable="false"></string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 72f57f4..f4b759c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -10017,7 +10017,7 @@
<string name="runtime_permissions_summary_control_app_access">Control app access to your data</string>
<!-- Permissions usage title [CHAR LIMIT=NONE] -->
- <string name="permissions_usage_title">Permissions usage</string>
+ <string name="permissions_usage_title">Privacy dashboard</string>
<!-- Permissions usage summary, which describes what the permissions usage does [CHAR LIMIT=NONE] -->
<string name="permissions_usage_summary">Show which apps recently used permissions</string>
diff --git a/res/xml/transcode_settings.xml b/res/xml/transcode_settings.xml
index c5a9763..5c3bb7c 100644
--- a/res/xml/transcode_settings.xml
+++ b/res/xml/transcode_settings.xml
@@ -40,4 +40,9 @@
android:key="transcode_notification"
android:title="@string/transcode_notification"
settings:controller="com.android.settings.development.transcode.TranscodeNotificationPreferenceController" />
+
+ <SwitchPreference
+ android:key="transcode_disable_cache"
+ android:title="@string/transcode_disable_cache"
+ settings:controller="com.android.settings.development.transcode.TranscodeDisableCachePreferenceController" />
</PreferenceScreen>
diff --git a/src/com/android/settings/biometrics/BiometricUtils.java b/src/com/android/settings/biometrics/BiometricUtils.java
index f338eb5..4f13d0c 100644
--- a/src/com/android/settings/biometrics/BiometricUtils.java
+++ b/src/com/android/settings/biometrics/BiometricUtils.java
@@ -16,6 +16,8 @@
package com.android.settings.biometrics;
+import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME;
+
import android.app.Activity;
import android.app.PendingIntent;
import android.app.admin.DevicePolicyManager;
@@ -30,8 +32,8 @@
import androidx.annotation.Nullable;
import com.android.internal.widget.LockPatternUtils;
+import com.android.settings.R;
import com.android.settings.SetupWizardUtils;
-import com.android.settings.biometrics.face.FaceEnrollIntroduction;
import com.android.settings.biometrics.fingerprint.FingerprintEnrollFindSensor;
import com.android.settings.biometrics.fingerprint.FingerprintEnrollIntroduction;
import com.android.settings.biometrics.fingerprint.SetupFingerprintEnrollIntroduction;
@@ -165,7 +167,9 @@
*/
public static Intent getFaceIntroIntent(@NonNull Context context,
@NonNull Intent activityIntent) {
- Intent intent = new Intent(context, FaceEnrollIntroduction.class);
+ final String className = context.getString(R.string.config_face_enroll_introduction);
+ Intent intent = new Intent();
+ intent.setClassName(SETTINGS_PACKAGE_NAME, className);
WizardManagerHelper.copyWizardManagerExtras(activityIntent, intent);
return intent;
}
diff --git a/src/com/android/settings/biometrics/face/FaceStatusPreferenceController.java b/src/com/android/settings/biometrics/face/FaceStatusPreferenceController.java
index 648da9b..94651d7 100644
--- a/src/com/android/settings/biometrics/face/FaceStatusPreferenceController.java
+++ b/src/com/android/settings/biometrics/face/FaceStatusPreferenceController.java
@@ -68,7 +68,7 @@
@Override
protected String getEnrollClassName() {
- return FaceEnrollIntroduction.class.getName();
+ return mContext.getResources().getString(R.string.config_face_enroll_introduction);
}
}
diff --git a/src/com/android/settings/development/transcode/TranscodeDisableCachePreferenceController.java b/src/com/android/settings/development/transcode/TranscodeDisableCachePreferenceController.java
new file mode 100644
index 0000000..38c3208
--- /dev/null
+++ b/src/com/android/settings/development/transcode/TranscodeDisableCachePreferenceController.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2021 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.development.transcode;
+
+import android.content.Context;
+import android.os.SystemProperties;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.settings.core.TogglePreferenceController;
+
+/**
+ * The controller (in the Media transcoding settings) indicating the user's preference to disable
+ * the cache for transcoding.
+ */
+public class TranscodeDisableCachePreferenceController extends TogglePreferenceController {
+ @VisibleForTesting
+ static final String TRANSCODE_DISABLE_CACHE_SYS_PROP_KEY =
+ "persist.sys.fuse.disable_transcode_cache";
+
+ public TranscodeDisableCachePreferenceController(Context context, String preferenceKey) {
+ super(context, preferenceKey);
+ }
+
+ @Override
+ public boolean isChecked() {
+ return SystemProperties.getBoolean(TRANSCODE_DISABLE_CACHE_SYS_PROP_KEY, false);
+ }
+
+ @Override
+ public boolean setChecked(boolean isChecked) {
+ SystemProperties.set(TRANSCODE_DISABLE_CACHE_SYS_PROP_KEY, String.valueOf(isChecked));
+ return true;
+ }
+
+ @Override
+ public int getAvailabilityStatus() {
+ return AVAILABLE;
+ }
+}
diff --git a/src/com/android/settings/emergency/EmergencyDashboardFragment.java b/src/com/android/settings/emergency/EmergencyDashboardFragment.java
index 1983430..3356645 100644
--- a/src/com/android/settings/emergency/EmergencyDashboardFragment.java
+++ b/src/com/android/settings/emergency/EmergencyDashboardFragment.java
@@ -17,12 +17,18 @@
package com.android.settings.emergency;
import android.app.settings.SettingsEnums;
+import android.content.Context;
import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.notification.EmergencyBroadcastPreferenceController;
import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.search.SearchIndexable;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* {@link DashboardFragment} that hosts emergency/safety related settings.
@@ -31,6 +37,7 @@
public class EmergencyDashboardFragment extends DashboardFragment {
private static final String TAG = "EmergencyDashboard";
+ private static final String WEA_PREF_KEY = "app_and_notif_cell_broadcast_settings";
@Override
protected int getPreferenceScreenResId() {
@@ -47,6 +54,17 @@
return SettingsEnums.EMERGENCY_SETTINGS;
}
+ @Override
+ protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
+ return buildPreferenceControllers(context);
+ }
+
+ private static List<AbstractPreferenceController> buildPreferenceControllers(Context context) {
+ final List<AbstractPreferenceController> controllers = new ArrayList<>();
+ controllers.add(new EmergencyBroadcastPreferenceController(context, WEA_PREF_KEY));
+ return controllers;
+ }
+
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider(R.xml.emergency_settings);
}
diff --git a/src/com/android/settings/fuelgauge/BatteryChartView.java b/src/com/android/settings/fuelgauge/BatteryChartView.java
index 5e4d980..26eb3e4 100644
--- a/src/com/android/settings/fuelgauge/BatteryChartView.java
+++ b/src/com/android/settings/fuelgauge/BatteryChartView.java
@@ -255,7 +255,8 @@
private int getTrapezoidIndex(float x) {
for (int index = 0; index < mTrapezoidSlot.length; index++) {
final TrapezoidSlot slot = mTrapezoidSlot[index];
- if (x >= slot.mLeft && x <= slot.mRight) {
+ if (x >= slot.mLeft - mTrapezoidHOffset
+ && x <= slot.mRight + mTrapezoidHOffset) {
return index;
}
}
diff --git a/src/com/android/settings/fuelgauge/BatteryDiffEntry.java b/src/com/android/settings/fuelgauge/BatteryDiffEntry.java
index efc5554..da3825f 100644
--- a/src/com/android/settings/fuelgauge/BatteryDiffEntry.java
+++ b/src/com/android/settings/fuelgauge/BatteryDiffEntry.java
@@ -26,11 +26,18 @@
import java.time.Duration;
import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
/** A container class to carry battery data in a specific time slot. */
public final class BatteryDiffEntry {
private static final String TAG = "BatteryDiffEntry";
+ static Locale sCurrentLocale = null;
+ // Caches app label and icon to improve loading performance.
+ static final Map<String, BatteryEntry.NameAndIcon> sResourceCache = new HashMap<>();
+
/** A comparator for {@link BatteryDiffEntry} based on consumed percentage. */
public static final Comparator<BatteryDiffEntry> COMPARATOR =
(a, b) -> Double.compare(b.getPercentOfTotal(), a.getPercentOfTotal());
@@ -97,14 +104,7 @@
/** Gets the app icon {@link Drawable} for this entry. */
public Drawable getAppIcon() {
loadLabelAndIcon();
- if (mBatteryHistEntry.mConsumerType !=
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY) {
- return mAppIcon;
- }
- // Returns default application icon if UID_BATTERY icon is null.
- return mAppIcon == null
- ? mContext.getPackageManager().getDefaultActivityIcon()
- : mAppIcon;
+ return mAppIcon;
}
/** Gets the searching package name for UID battery type. */
@@ -140,11 +140,37 @@
}
break;
case ConvertUtils.CONSUMER_TYPE_UID_BATTERY:
+ final BatteryEntry.NameAndIcon nameAndIcon = getCache();
+ if (nameAndIcon != null) {
+ mAppLabel = nameAndIcon.name;
+ mAppIcon = nameAndIcon.icon;
+ break;
+ }
loadNameAndIconForUid();
+ // Uses application default icon if we cannot find it from package.
+ if (mAppIcon == null) {
+ mAppIcon = mContext.getPackageManager().getDefaultActivityIcon();
+ }
+ if (mAppLabel != null && mAppIcon != null) {
+ sResourceCache.put(
+ mBatteryHistEntry.getKey(),
+ new BatteryEntry.NameAndIcon(mAppLabel, mAppIcon, /*iconId=*/ 0));
+ }
break;
}
}
+ private BatteryEntry.NameAndIcon getCache() {
+ final Locale locale = Locale.getDefault();
+ if (sCurrentLocale != locale) {
+ Log.d(TAG, String.format("clearCache() locale is changed from %s to %s",
+ sCurrentLocale, locale));
+ sCurrentLocale = locale;
+ clearCache();
+ }
+ return sResourceCache.get(mBatteryHistEntry.getKey());
+ }
+
private void loadNameAndIconForUid() {
final String packageName = mBatteryHistEntry.mPackageName;
final PackageManager packageManager = mContext.getPackageManager();
@@ -153,7 +179,9 @@
try {
final ApplicationInfo appInfo =
packageManager.getApplicationInfo(packageName, /*no flags*/ 0);
- mAppLabel = packageManager.getApplicationLabel(appInfo).toString();
+ if (appInfo != null) {
+ mAppLabel = packageManager.getApplicationLabel(appInfo).toString();
+ }
} catch (NameNotFoundException e) {
Log.e(TAG, "failed to retrieve ApplicationInfo for: " + packageName);
mAppLabel = packageName;
@@ -203,6 +231,10 @@
return builder.toString();
}
+ static void clearCache() {
+ sResourceCache.clear();
+ }
+
private static <T> T getNonNull(T originalObj, T newObj) {
return newObj != null ? newObj : originalObj;
}
diff --git a/src/com/android/settings/fuelgauge/BatteryHistEntry.java b/src/com/android/settings/fuelgauge/BatteryHistEntry.java
index e8cbce5..9611de1 100644
--- a/src/com/android/settings/fuelgauge/BatteryHistEntry.java
+++ b/src/com/android/settings/fuelgauge/BatteryHistEntry.java
@@ -65,6 +65,7 @@
public final int mBatteryStatus;
public final int mBatteryHealth;
+ private String mKey = null;
private boolean mIsValidEntry = true;
public BatteryHistEntry(ContentValues values) {
@@ -114,7 +115,20 @@
/** Gets an identifier to represent this {@link BatteryHistEntry}. */
public String getKey() {
- return mPackageName + "-" + mUserId;
+ if (mKey == null) {
+ switch (mConsumerType) {
+ case ConvertUtils.CONSUMER_TYPE_UID_BATTERY:
+ mKey = Long.toString(mUid);
+ break;
+ case ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY:
+ mKey = "S|" + mDrainType;
+ break;
+ case ConvertUtils.CONSUMER_TYPE_USER_BATTERY:
+ mKey = "U|" + mUserId;
+ break;
+ }
+ }
+ return mKey;
}
@Override
diff --git a/src/com/android/settings/security/ChangeScreenLockPreferenceController.java b/src/com/android/settings/security/ChangeScreenLockPreferenceController.java
index 1587746..7ea9879 100644
--- a/src/com/android/settings/security/ChangeScreenLockPreferenceController.java
+++ b/src/com/android/settings/security/ChangeScreenLockPreferenceController.java
@@ -28,6 +28,7 @@
import com.android.internal.widget.LockPatternUtils;
import com.android.settings.R;
+import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.core.SubSettingLauncher;
@@ -48,7 +49,7 @@
private static final String KEY_UNLOCK_SET_OR_CHANGE = "unlock_set_or_change";
protected final DevicePolicyManager mDPM;
- protected final SecuritySettings mHost;
+ protected final SettingsPreferenceFragment mHost;
protected final UserManager mUm;
protected final LockPatternUtils mLockPatternUtils;
@@ -58,7 +59,7 @@
protected RestrictedPreference mPreference;
- public ChangeScreenLockPreferenceController(Context context, SecuritySettings host) {
+ public ChangeScreenLockPreferenceController(Context context, SettingsPreferenceFragment host) {
super(context);
mUm = (UserManager) context.getSystemService(Context.USER_SERVICE);
mDPM = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index 97a74d7..ceacefe 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -346,6 +346,10 @@
if (intent.hasExtra(EXTRA_START_CONNECT_SSID)) {
mOpenSsid = intent.getStringExtra(EXTRA_START_CONNECT_SSID);
}
+
+ // After rebooting the device, the Wi-Fi state will not be called back in the airplane
+ // mode, need to call onWifiStateChanged() to update the initial state of the UI.
+ onWifiStateChanged();
}
@Override
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryDiffEntryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryDiffEntryTest.java
index 0f7a407..84ff07b 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryDiffEntryTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryDiffEntryTest.java
@@ -17,6 +17,7 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
@@ -39,6 +40,7 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.Locale;
@RunWith(RobolectricTestRunner.class)
public final class BatteryDiffEntryTest {
@@ -49,6 +51,7 @@
@Mock private PackageManager mockPackageManager;
@Mock private UserManager mockUserManager;
@Mock private Drawable mockDrawable;
+ @Mock private Drawable mockDrawable2;
@Before
public void setUp() {
@@ -56,6 +59,7 @@
mContext = spy(RuntimeEnvironment.application);
doReturn(mockUserManager).when(mContext).getSystemService(UserManager.class);
doReturn(mockPackageManager).when(mContext).getPackageManager();
+ BatteryDiffEntry.clearCache();
}
@Test
@@ -112,6 +116,7 @@
final BatteryDiffEntry entry = createBatteryDiffEntry(10, batteryHistEntry);
assertThat(entry.getAppLabel()).isEqualTo("Ambient display");
+ assertThat(BatteryDiffEntry.sResourceCache).isEmpty();
}
@Test
@@ -127,6 +132,7 @@
assertThat(entry.getAppLabel()).isEqualTo("Removed user");
assertThat(entry.getAppIcon()).isNull();
+ assertThat(BatteryDiffEntry.sResourceCache).isEmpty();
}
@Test
@@ -146,17 +152,28 @@
final BatteryDiffEntry entry = createBatteryDiffEntry(10, batteryHistEntry);
assertThat(entry.getAppLabel()).isEqualTo(expectedAppLabel);
+ assertThat(BatteryDiffEntry.sResourceCache).hasSize(1);
+ // Verifies the app label in the cache.
+ final BatteryEntry.NameAndIcon nameAndIcon =
+ BatteryDiffEntry.sResourceCache.get(batteryHistEntry.getKey());
+ assertThat(nameAndIcon.name).isEqualTo(expectedAppLabel);
}
@Test
public void testGetAppLabel_loadDataFromPreDefinedNameAndUid() {
+ final String expectedAppLabel = "Android OS";
final ContentValues values = getContentValuesWithType(
ConvertUtils.CONSUMER_TYPE_UID_BATTERY);
final BatteryHistEntry batteryHistEntry = new BatteryHistEntry(values);
final BatteryDiffEntry entry = createBatteryDiffEntry(10, batteryHistEntry);
- assertThat(entry.getAppLabel()).isEqualTo("Android OS");
+ assertThat(entry.getAppLabel()).isEqualTo(expectedAppLabel);
+ assertThat(BatteryDiffEntry.sResourceCache).hasSize(1);
+ // Verifies the app label in the cache.
+ final BatteryEntry.NameAndIcon nameAndIcon =
+ BatteryDiffEntry.sResourceCache.get(batteryHistEntry.getKey());
+ assertThat(nameAndIcon.name).isEqualTo(expectedAppLabel);
}
@Test
@@ -171,6 +188,7 @@
entry.mIsLoaded = true;
assertThat(entry.getAppLabel()).isEqualTo(expectedAppLabel);
+ assertThat(BatteryDiffEntry.sResourceCache).isEmpty();
}
@Test
@@ -184,20 +202,39 @@
entry.mIsLoaded = true;
entry.mAppIcon = mockDrawable;
assertThat(entry.getAppIcon()).isEqualTo(mockDrawable);
+ assertThat(BatteryDiffEntry.sResourceCache).isEmpty();
}
@Test
- public void testGetAppIcon_uidConsumerWithNullIcon_returnDefaultActivityIcon() {
- final ContentValues values = getContentValuesWithType(
- ConvertUtils.CONSUMER_TYPE_UID_BATTERY);
- final BatteryHistEntry batteryHistEntry = new BatteryHistEntry(values);
- doReturn(mockDrawable).when(mockPackageManager).getDefaultActivityIcon();
+ public void testGetAppIcon_uidConsumerWithNullIcon_returnDefaultActivityIcon()
+ throws Exception {
+ final BatteryDiffEntry entry = createBatteryDiffEntry(mockDrawable);
- final BatteryDiffEntry entry = createBatteryDiffEntry(10, batteryHistEntry);
-
- entry.mIsLoaded = true;
entry.mAppIcon = null;
assertThat(entry.getAppIcon()).isEqualTo(mockDrawable);
+ assertThat(BatteryDiffEntry.sResourceCache).hasSize(1);
+ // Verifies the app label in the cache.
+ final BatteryEntry.NameAndIcon nameAndIcon =
+ BatteryDiffEntry.sResourceCache.get(entry.mBatteryHistEntry.getKey());
+ assertThat(nameAndIcon.icon).isEqualTo(mockDrawable);
+ }
+
+ @Test
+ public void testClearCache_switchLocale_clearCacheIconAndLabel() throws Exception {
+ Locale.setDefault(new Locale("en_US"));
+ final BatteryDiffEntry entry1 = createBatteryDiffEntry(mockDrawable);
+ assertThat(entry1.getAppIcon()).isEqualTo(mockDrawable);
+ // Switch the locale into another one.
+ Locale.setDefault(new Locale("zh_TW"));
+
+ final BatteryDiffEntry entry2 = createBatteryDiffEntry(mockDrawable2);
+
+ // We should get new drawable without caching.
+ assertThat(entry2.getAppIcon()).isEqualTo(mockDrawable2);
+ // Verifies the cache is updated into the new drawable.
+ final BatteryEntry.NameAndIcon nameAndIcon =
+ BatteryDiffEntry.sResourceCache.get(entry2.mBatteryHistEntry.getKey());
+ assertThat(nameAndIcon.icon).isEqualTo(mockDrawable2);
}
private BatteryDiffEntry createBatteryDiffEntry(
@@ -217,4 +254,17 @@
values.put("consumerType", Integer.valueOf(consumerType));
return values;
}
+
+ private BatteryDiffEntry createBatteryDiffEntry(Drawable drawable) throws Exception {
+ final ContentValues values = getContentValuesWithType(
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY);
+ values.put("uid", 1001);
+ values.put("packageName", "com.a.b.c");
+ final BatteryHistEntry batteryHistEntry = new BatteryHistEntry(values);
+ doReturn(drawable).when(mockPackageManager).getDefaultActivityIcon();
+ doReturn(null).when(mockPackageManager).getApplicationInfo("com.a.b.c", 0);
+ doReturn(new String[] {"com.a.b.c"}).when(mockPackageManager)
+ .getPackagesForUid(1001);
+ return createBatteryDiffEntry(10, batteryHistEntry);
+ }
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryHistEntryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryHistEntryTest.java
index d97b0d2..72ccebe 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryHistEntryTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryHistEntryTest.java
@@ -137,6 +137,42 @@
/*percentOfTotal=*/ 0.3);
}
+ @Test
+ public void testGetKey_consumerUidType_returnExpectedString() {
+ final ContentValues values = getContentValuesWithType(
+ ConvertUtils.CONSUMER_TYPE_UID_BATTERY);
+ values.put("uid", 3);
+ final BatteryHistEntry batteryHistEntry = new BatteryHistEntry(values);
+
+ assertThat(batteryHistEntry.getKey()).isEqualTo("3");
+ }
+
+ @Test
+ public void testGetKey_consumerUserType_returnExpectedString() {
+ final ContentValues values = getContentValuesWithType(
+ ConvertUtils.CONSUMER_TYPE_USER_BATTERY);
+ values.put("userId", 2);
+ final BatteryHistEntry batteryHistEntry = new BatteryHistEntry(values);
+
+ assertThat(batteryHistEntry.getKey()).isEqualTo("U|2");
+ }
+
+ @Test
+ public void testGetKey_consumerSystemType_returnExpectedString() {
+ final ContentValues values = getContentValuesWithType(
+ ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
+ values.put("drainType", 1);
+ final BatteryHistEntry batteryHistEntry = new BatteryHistEntry(values);
+
+ assertThat(batteryHistEntry.getKey()).isEqualTo("S|1");
+ }
+
+ private static ContentValues getContentValuesWithType(int consumerType) {
+ final ContentValues values = new ContentValues();
+ values.put("consumerType", Integer.valueOf(consumerType));
+ return values;
+ }
+
private void assertBatteryHistEntry(
BatteryHistEntry entry, int drainType, double percentOfTotal) {
assertThat(entry.isValidEntry()).isTrue();
@@ -161,7 +197,5 @@
.isEqualTo(BatteryManager.BATTERY_STATUS_FULL);
assertThat(entry.mBatteryHealth)
.isEqualTo(BatteryManager.BATTERY_HEALTH_COLD);
- assertThat(entry.getKey())
- .isEqualTo("com.google.android.settings.battery-" + entry.mUserId);
}
}
diff --git a/tests/unit/src/com/android/settings/development/transcode/TranscodeDefaultOptionPreferenceControllerTest.java b/tests/unit/src/com/android/settings/development/transcode/TranscodeDefaultOptionPreferenceControllerTest.java
index 550613b..e3fa076 100644
--- a/tests/unit/src/com/android/settings/development/transcode/TranscodeDefaultOptionPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/development/transcode/TranscodeDefaultOptionPreferenceControllerTest.java
@@ -70,7 +70,7 @@
}
@Test
- public void getAvailabilityStatus_shouldReturn_isAvailable() {
+ public void getAvailabilityStatus_shouldReturnAVAILABLE() {
assertThat(mUnderTest.getAvailabilityStatus()).isEqualTo(
BasePreferenceController.AVAILABLE);
}
diff --git a/tests/unit/src/com/android/settings/development/transcode/TranscodeDisableCachePreferenceControllerTest.java b/tests/unit/src/com/android/settings/development/transcode/TranscodeDisableCachePreferenceControllerTest.java
new file mode 100644
index 0000000..89c8773
--- /dev/null
+++ b/tests/unit/src/com/android/settings/development/transcode/TranscodeDisableCachePreferenceControllerTest.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2021 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.development.transcode;
+
+import static com.android.settings.development.transcode.TranscodeDisableCachePreferenceController.TRANSCODE_DISABLE_CACHE_SYS_PROP_KEY;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.os.SystemProperties;
+
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.settings.core.BasePreferenceController;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class TranscodeDisableCachePreferenceControllerTest {
+
+ private TranscodeUserControlPreferenceController mUnderTest;
+
+ @Before
+ public void setUp() {
+ Context context = ApplicationProvider.getApplicationContext();
+ mUnderTest = new TranscodeUserControlPreferenceController(context, "some_key");
+ }
+
+ @Test
+ public void isChecked_whenSysPropSet_shouldReturnTrue() {
+ SystemProperties.set(TRANSCODE_DISABLE_CACHE_SYS_PROP_KEY, "true");
+ assertThat(mUnderTest.isChecked()).isTrue();
+ }
+
+ @Test
+ public void isChecked_whenSysPropUnset_shouldReturnFalse() {
+ SystemProperties.set(TRANSCODE_DISABLE_CACHE_SYS_PROP_KEY, "false");
+ assertThat(mUnderTest.isChecked()).isFalse();
+ }
+
+ @Test
+ public void setChecked_withTrue_shouldSetSysProp() {
+ mUnderTest.setChecked(true);
+ assertThat(
+ SystemProperties.getBoolean(TRANSCODE_DISABLE_CACHE_SYS_PROP_KEY, false)).isTrue();
+ }
+
+ @Test
+ public void setChecked_withFalse_shouldUnsetSysProp() {
+ mUnderTest.setChecked(false);
+ assertThat(
+ SystemProperties.getBoolean(TRANSCODE_DISABLE_CACHE_SYS_PROP_KEY, true)).isFalse();
+ }
+
+ @Test
+ public void getAvailabilityStatus_shouldReturnAVAILABLE() {
+ assertThat(mUnderTest.getAvailabilityStatus()).isEqualTo(
+ BasePreferenceController.AVAILABLE);
+ }
+}
diff --git a/tests/unit/src/com/android/settings/development/transcode/TranscodeNotificationPreferenceControllerTest.java b/tests/unit/src/com/android/settings/development/transcode/TranscodeNotificationPreferenceControllerTest.java
index 0903c72..65bfbf5 100644
--- a/tests/unit/src/com/android/settings/development/transcode/TranscodeNotificationPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/development/transcode/TranscodeNotificationPreferenceControllerTest.java
@@ -69,7 +69,7 @@
}
@Test
- public void getAvailabilityStatus_shouldReturn_isAvailable() {
+ public void getAvailabilityStatus_shouldReturnAVAILABLE() {
assertThat(mUnderTest.getAvailabilityStatus()).isEqualTo(
BasePreferenceController.AVAILABLE);
}
diff --git a/tests/unit/src/com/android/settings/development/transcode/TranscodeUserControlPreferenceControllerTest.java b/tests/unit/src/com/android/settings/development/transcode/TranscodeUserControlPreferenceControllerTest.java
index 3caf8ae..63a6ac6 100644
--- a/tests/unit/src/com/android/settings/development/transcode/TranscodeUserControlPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/development/transcode/TranscodeUserControlPreferenceControllerTest.java
@@ -70,7 +70,7 @@
}
@Test
- public void getAvailabilityStatus_shouldReturn_isAvailable() {
+ public void getAvailabilityStatus_shouldReturnAVAILABLE() {
assertThat(mUnderTest.getAvailabilityStatus()).isEqualTo(
BasePreferenceController.AVAILABLE);
}