[automerger skipped] Import translations. DO NOT MERGE
am: f20fa5b865 -s ours
am skip reason: subject contains skip directive
Change-Id: I00e06f87ecd29895585bdfc45291c6a25e63ec10
diff --git a/Android.mk b/Android.mk
index f7bddf2..4bb74f4 100644
--- a/Android.mk
+++ b/Android.mk
@@ -21,13 +21,15 @@
LOCAL_MODULE_TAGS := optional
LOCAL_PROGUARD_FLAG_FILES := proguard.cfg
+LOCAL_PRODUCT_MODULE := true
LOCAL_PRIVILEGED_MODULE := true
+LOCAL_REQUIRED_MODULES := privapp_whitelist_com.android.storagemanager
LOCAL_STATIC_ANDROID_LIBRARIES := \
- android-support-v14-preference \
- android-support-v7-appcompat \
- android-support-v7-preference \
- android-support-v7-recyclerview
+ androidx.legacy_legacy-preference-v14 \
+ androidx.appcompat_appcompat \
+ androidx.preference_preference \
+ androidx.recyclerview_recyclerview
LOCAL_USE_AAPT2 := true
@@ -43,4 +45,4 @@
# Use the following include to make our test apk.
ifeq (,$(ONE_SHOT_MAKEFILE))
include $(call all-makefiles-under,$(LOCAL_PATH))
-endif
\ No newline at end of file
+endif
diff --git a/CleanSpec.mk b/CleanSpec.mk
new file mode 100644
index 0000000..e844614
--- /dev/null
+++ b/CleanSpec.mk
@@ -0,0 +1,50 @@
+# Copyright (C) 2019 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.
+#
+
+# If you don't need to do a full clean build but would like to touch
+# a file or delete some intermediate files, add a clean step to the end
+# of the list. These steps will only be run once, if they haven't been
+# run before.
+#
+# E.g.:
+# $(call add-clean-step, touch -c external/sqlite/sqlite3.h)
+# $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libz_intermediates)
+#
+# Always use "touch -c" and "rm -f" or "rm -rf" to gracefully deal with
+# files that are missing or have been moved.
+#
+# Use $(PRODUCT_OUT) to get to the "out/target/product/blah/" directory.
+# Use $(OUT_DIR) to refer to the "out" directory.
+#
+# If you need to re-do something that's already mentioned, just copy
+# the command and add it to the bottom of the list. E.g., if a change
+# that you made last week required touching a file and a change you
+# made today requires touching the same file, just copy the old
+# touch step and add it to the end of the list.
+#
+# ************************************************
+# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
+# ************************************************
+
+# For example:
+#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/AndroidTests_intermediates)
+#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/core_intermediates)
+#$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/priv-app/StorageManager)
+
+# ************************************************
+# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
+# ************************************************
diff --git a/proguard.cfg b/proguard.cfg
index b4e8c79..4fc57b4 100644
--- a/proguard.cfg
+++ b/proguard.cfg
@@ -1,22 +1,7 @@
--optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
--optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-
--keep public class * extends android.app.Activity
--keep public class * extends android.app.Application
--keep public class * extends android.app.Service
--keep public class * extends android.content.BroadcastReceiver
--keep public class * extends android.content.ContentProvider
--keep public class * extends android.preference.Preference
--keep public class android.support.v7.preference.Preference {
- public <init>(android.content.Context, android.util.AttributeSet);
-}
--keep public class * extends android.support.v7.preference.Preference {
- public <init>(android.content.Context, android.util.AttributeSet);
-}
-keepclasseswithmembernames class * {
native <methods>;
@@ -43,9 +28,9 @@
public static final android.os.Parcelable$Creator *;
}
--keep @android.support.annotation.Keep class *
+-keep @androidx.annotation.Keep class *
-keepclassmembers class * {
- @android.support.annotation.Keep *;
+ @androidx.annotation.Keep *;
}
-keep class com.android.storagemanager.overlay.FeatureFactoryImpl
diff --git a/robotests/Android.mk b/robotests/Android.mk
index 0ef13d7..dbc010d 100644
--- a/robotests/Android.mk
+++ b/robotests/Android.mk
@@ -1,40 +1,47 @@
-#############################################
-# Add app-specific Robolectric test target. #
-#############################################
+#############################################################
+# StorageManager Robolectric test target. #
+#############################################################
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
+LOCAL_MODULE := StorageManagerRoboTests
+LOCAL_MODULE_CLASS := JAVA_LIBRARIES
+
LOCAL_SRC_FILES := $(call all-java-files-under, src)
-# Include the testing libraries (JUnit4 + Robolectric libs).
-LOCAL_STATIC_JAVA_LIBRARIES := \
- platform-robolectric-android-all-stubs \
+LOCAL_JAVA_RESOURCE_DIRS := config
+
+LOCAL_JAVA_LIBRARIES := \
+ robolectric_android-all-stub \
+ Robolectric_all-target \
mockito-robolectric-prebuilt \
truth-prebuilt
-LOCAL_JAVA_LIBRARIES := \
- junit \
- platform-robolectric-3.6.1-prebuilt
-
LOCAL_INSTRUMENTATION_FOR := StorageManager
-LOCAL_MODULE := StorageManagerRoboTests
LOCAL_MODULE_TAGS := optional
+# Generate test_config.properties
+include external/robolectric-shadows/gen_test_config.mk
+
include $(BUILD_STATIC_JAVA_LIBRARY)
#############################################################
-# Add Robolectric runner target to run the previous target. #
+# StorageManager runner target to run the previous target. #
#############################################################
include $(CLEAR_VARS)
LOCAL_MODULE := RunStorageManagerRoboTests
-LOCAL_SDK_VERSION := current
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
- StorageManagerRoboTests
+LOCAL_JAVA_LIBRARIES := \
+ StorageManagerRoboTests \
+ robolectric_android-all-stub \
+ Robolectric_all-target \
+ mockito-robolectric-prebuilt \
+ truth-prebuilt
LOCAL_TEST_PACKAGE := StorageManager
-include prebuilts/misc/common/robolectric/3.6.1/run_robotests.mk
+LOCAL_ROBOTEST_TIMEOUT := 36000
+
+include external/robolectric-shadows/run_robotests.mk
diff --git a/robotests/config/robolectric.properties b/robotests/config/robolectric.properties
new file mode 100644
index 0000000..850557a
--- /dev/null
+++ b/robotests/config/robolectric.properties
@@ -0,0 +1 @@
+sdk=NEWEST_SDK
\ No newline at end of file
diff --git a/robotests/src/android/util/IconDrawableFactory.java b/robotests/src/android/util/IconDrawableFactory.java
deleted file mode 100644
index 47f9b55..0000000
--- a/robotests/src/android/util/IconDrawableFactory.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2017 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 android.util;
-
-import android.content.Context;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageItemInfo;
-import android.graphics.drawable.ColorDrawable;
-import android.graphics.drawable.Drawable;
-
-/** This class is only needed to get around Robolectric issue. */
-public class IconDrawableFactory {
-
- public static IconDrawableFactory newInstance(Context context) {
- return new IconDrawableFactory();
- }
-
- public Drawable getBadgedIcon(ApplicationInfo appInfo) {
- return getBadgedIcon(appInfo, 0);
- }
-
- public Drawable getBadgedIcon(ApplicationInfo appInfo, int userId) {
- return getBadgedIcon(appInfo, appInfo, userId);
- }
-
- public Drawable getBadgedIcon(PackageItemInfo itemInfo, ApplicationInfo appInfo, int userId) {
- return new ColorDrawable(0);
- }
-}
diff --git a/robotests/src/com/android/storagemanager/automatic/AutomaticStorageBroadcastReceiverTest.java b/robotests/src/com/android/storagemanager/automatic/AutomaticStorageBroadcastReceiverTest.java
index 3056b7c..2840003 100644
--- a/robotests/src/com/android/storagemanager/automatic/AutomaticStorageBroadcastReceiverTest.java
+++ b/robotests/src/com/android/storagemanager/automatic/AutomaticStorageBroadcastReceiverTest.java
@@ -16,30 +16,28 @@
package com.android.storagemanager.automatic;
-import android.app.job.JobInfo;
-import android.app.job.JobScheduler;
-import android.content.Context;
-import android.content.Intent;
-import com.android.storagemanager.testing.TestingConstants;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
-
-import java.util.List;
-
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
+import android.app.job.JobInfo;
+import android.app.job.JobScheduler;
+import android.content.Context;
+import android.content.Intent;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.List;
+import org.robolectric.RobolectricTestRunner;
+
@RunWith(RobolectricTestRunner.class)
-@Config(manifest=TestingConstants.MANIFEST, sdk=TestingConstants.SDK_VERSION)
public class AutomaticStorageBroadcastReceiverTest {
@Mock private Context mMockContext;
@Mock private JobScheduler mJobScheduler;
diff --git a/robotests/src/com/android/storagemanager/automatic/AutomaticStorageManagementJobServiceTest.java b/robotests/src/com/android/storagemanager/automatic/AutomaticStorageManagementJobServiceTest.java
index 27bd7c8..0ccc893 100644
--- a/robotests/src/com/android/storagemanager/automatic/AutomaticStorageManagementJobServiceTest.java
+++ b/robotests/src/com/android/storagemanager/automatic/AutomaticStorageManagementJobServiceTest.java
@@ -17,12 +17,12 @@
package com.android.storagemanager.automatic;
import static com.google.common.truth.Truth.assertThat;
-
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.nullable;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -35,6 +35,7 @@
import android.content.Intent;
import android.content.res.Resources;
import android.os.BatteryManager;
+import android.os.SystemProperties;
import android.os.storage.StorageManager;
import android.os.storage.VolumeInfo;
import android.provider.Settings;
@@ -42,10 +43,7 @@
import com.android.settingslib.deviceinfo.StorageVolumeProvider;
import com.android.storagemanager.overlay.FeatureFactory;
import com.android.storagemanager.overlay.StorageManagementJobProvider;
-import com.android.storagemanager.testing.StorageManagerShadowSystemProperties;
-import com.android.storagemanager.testing.TestingConstants;
-import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -53,7 +51,7 @@
import org.mockito.MockitoAnnotations;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
+import org.robolectric.RuntimeEnvironment;
import org.robolectric.shadows.ShadowApplication;
import org.robolectric.util.ReflectionHelpers;
@@ -61,21 +59,7 @@
import java.util.ArrayList;
import java.util.List;
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.anyInt;
-import static org.mockito.Mockito.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.nullable;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
@RunWith(RobolectricTestRunner.class)
-@Config(
- manifest = TestingConstants.MANIFEST,
- sdk = TestingConstants.SDK_VERSION,
- shadows = {StorageManagerShadowSystemProperties.class}
-)
public class AutomaticStorageManagementJobServiceTest {
@Mock private BatteryManager mBatteryManager;
@Mock private NotificationManager mNotificationManager;
@@ -87,6 +71,7 @@
@Mock private StorageVolumeProvider mStorageVolumeProvider;
@Mock private AutomaticStorageManagementJobService.Clock mClock;
private AutomaticStorageManagementJobService mJobService;
+ private Context mContext;
private ShadowApplication mApplication;
private List<VolumeInfo> mVolumes;
@@ -119,6 +104,7 @@
nullable(StorageStatsManager.class), eq(mVolumeInfo)))
.thenReturn(100L);
+ mContext = RuntimeEnvironment.application;
mApplication = ShadowApplication.getInstance();
mApplication.setSystemService(Context.BATTERY_SERVICE, mBatteryManager);
mApplication.setSystemService(Context.NOTIFICATION_SERVICE, mNotificationManager);
@@ -137,6 +123,7 @@
// And we can't forget to initialize the actual job service.
mJobService = spy(Robolectric.setupService(AutomaticStorageManagementJobService.class));
+ mJobService.onBind(null);
mJobService.setStorageVolumeProvider(mStorageVolumeProvider);
mJobService.setClock(mClock);
@@ -148,11 +135,6 @@
when(mJobService.getResources()).thenReturn(fakeResources);
}
- @After
- public void tearDown() {
- StorageManagerShadowSystemProperties.clear();
- }
-
@Test
public void testJobRequiresCharging() {
when(mBatteryManager.isCharging()).thenReturn(false);
@@ -192,7 +174,7 @@
@Test
public void testASMJobRunsWithValidConditionsIfEnabledByDefaultAndUnset() {
- StorageManagerShadowSystemProperties.put("ro.storage_manager.enabled", "true");
+ SystemProperties.set("ro.storage_manager.enabled", "true");
assertThat(mJobService.onStartJob(mJobParameters)).isFalse();
assertStorageManagerJobRan();
}
@@ -225,7 +207,7 @@
@Test
public void testNonDefaultDaysToRetain() {
- ContentResolver resolver = mApplication.getApplicationContext().getContentResolver();
+ ContentResolver resolver = mContext.getContentResolver();
Settings.Secure.putInt(resolver, Settings.Secure.AUTOMATIC_STORAGE_MANAGER_DAYS_TO_RETAIN,
30);
activateASM();
@@ -281,7 +263,7 @@
@Test
public void disableSmartStorageIfPastThreshold() throws Exception {
- ContentResolver resolver = mApplication.getApplicationContext().getContentResolver();
+ ContentResolver resolver = mContext.getContentResolver();
activateASM();
AutomaticStorageManagementJobService.Clock fakeClock =
@@ -290,7 +272,7 @@
when(mStorageManagementJobProvider.getDisableThresholdMillis(any(Context.class)))
.thenReturn(1000L);
AutomaticStorageManagementJobService.maybeDisableDueToPolicy(
- mStorageManagementJobProvider, mApplication.getApplicationContext(), fakeClock);
+ mStorageManagementJobProvider, mContext, fakeClock);
assertThat(
Settings.Secure.getInt(
@@ -300,7 +282,7 @@
@Test
public void dontDisableSmartStorageIfPastThresholdAndDisabledInThePast() throws Exception {
- ContentResolver resolver = mApplication.getApplicationContext().getContentResolver();
+ ContentResolver resolver = mContext.getContentResolver();
activateASM();
Settings.Secure.putInt(
resolver, Settings.Secure.AUTOMATIC_STORAGE_MANAGER_TURNED_OFF_BY_POLICY, 1);
@@ -311,7 +293,7 @@
when(mStorageManagementJobProvider.getDisableThresholdMillis(any(Context.class)))
.thenReturn(1000L);
AutomaticStorageManagementJobService.maybeDisableDueToPolicy(
- mStorageManagementJobProvider, mApplication.getApplicationContext(), fakeClock);
+ mStorageManagementJobProvider, mContext, fakeClock);
assertThat(
Settings.Secure.getInt(
@@ -321,7 +303,7 @@
@Test
public void logDisabledByPolicyIfPastThreshold() throws Exception {
- ContentResolver resolver = mApplication.getApplicationContext().getContentResolver();
+ ContentResolver resolver = mContext.getContentResolver();
activateASM();
AutomaticStorageManagementJobService.Clock fakeClock =
@@ -330,7 +312,7 @@
when(mStorageManagementJobProvider.getDisableThresholdMillis(any(Context.class)))
.thenReturn(1000L);
AutomaticStorageManagementJobService.maybeDisableDueToPolicy(
- mStorageManagementJobProvider, mApplication.getApplicationContext(), fakeClock);
+ mStorageManagementJobProvider, mContext, fakeClock);
assertThat(
Settings.Secure.getInt(
@@ -341,7 +323,7 @@
@Test
public void dontDisableSmartStorageIfNotPastThreshold() throws Exception {
- ContentResolver resolver = mApplication.getApplicationContext().getContentResolver();
+ ContentResolver resolver = mContext.getContentResolver();
activateASM();
AutomaticStorageManagementJobService.Clock fakeClock =
@@ -350,7 +332,7 @@
when(mStorageManagementJobProvider.getDisableThresholdMillis(any(Context.class)))
.thenReturn(1000L);
AutomaticStorageManagementJobService.maybeDisableDueToPolicy(
- mStorageManagementJobProvider, mApplication.getApplicationContext(), fakeClock);
+ mStorageManagementJobProvider, mContext, fakeClock);
assertThat(
Settings.Secure.getInt(
@@ -378,7 +360,7 @@
}
private void activateASM() {
- ContentResolver resolver = mApplication.getApplicationContext().getContentResolver();
+ ContentResolver resolver = mContext.getContentResolver();
Settings.Secure.putInt(resolver, Settings.Secure.AUTOMATIC_STORAGE_MANAGER_ENABLED, 1);
}
}
diff --git a/robotests/src/com/android/storagemanager/automatic/DownloadsDeletionTypeTest.java b/robotests/src/com/android/storagemanager/automatic/DownloadsDeletionTypeTest.java
index b5e7737..a669b13 100644
--- a/robotests/src/com/android/storagemanager/automatic/DownloadsDeletionTypeTest.java
+++ b/robotests/src/com/android/storagemanager/automatic/DownloadsDeletionTypeTest.java
@@ -16,32 +16,31 @@
package com.android.storagemanager.automatic;
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+
import android.os.Bundle;
import android.os.Environment;
+
import com.android.storagemanager.deletionhelper.DeletionHelperSettings;
import com.android.storagemanager.deletionhelper.DeletionType;
import com.android.storagemanager.deletionhelper.DeletionType.LoadingStatus;
import com.android.storagemanager.deletionhelper.DownloadsDeletionType;
import com.android.storagemanager.deletionhelper.FetchDownloadsLoader.DownloadsResult;
-import com.android.storagemanager.testing.TestingConstants;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
import java.io.File;
import java.io.FileWriter;
import java.util.Set;
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-
@RunWith(RobolectricTestRunner.class)
-@Config(manifest= TestingConstants.MANIFEST, sdk=23)
public class DownloadsDeletionTypeTest {
private DownloadsDeletionType mDeletion;
private File mDownloadsDirectory;
@@ -54,7 +53,7 @@
}
@Test
- public void testInitializeWithUncheckedFiles() throws Exception {
+ public void testInitializeWithUncheckedFiles() {
File temp = new File(mDownloadsDirectory, "temp");
File temp2 = new File(mDownloadsDirectory, "temp2");
String[] filePaths = new String[2];
@@ -67,7 +66,7 @@
}
@Test
- public void testFetchDownloads() throws Exception {
+ public void testFetchDownloads() {
File temp = new File(mDownloadsDirectory, "temp");
File temp2 = new File(mDownloadsDirectory, "temp2");
DownloadsResult result = new DownloadsResult();
@@ -82,7 +81,7 @@
}
@Test
- public void testSetChecked() throws Exception {
+ public void testSetChecked() {
File temp = new File(mDownloadsDirectory, "temp");
DownloadsResult result = new DownloadsResult();
result.files.add(temp);
@@ -121,7 +120,7 @@
}
@Test
- public void testSaveAndRestoreRemembersUncheckedFiles() throws Exception {
+ public void testSaveAndRestoreRemembersUncheckedFiles() {
File temp = new File(mDownloadsDirectory, "temp");
File temp2 = new File(mDownloadsDirectory, "temp2");
DownloadsResult result = new DownloadsResult();
@@ -140,7 +139,7 @@
}
@Test
- public void testCallbackOnFileLoad() throws Exception {
+ public void testCallbackOnFileLoad() {
File temp = new File(mDownloadsDirectory, "temp");
File temp2 = new File(mDownloadsDirectory, "temp2");
DownloadsResult result = new DownloadsResult();
diff --git a/robotests/src/com/android/storagemanager/automatic/JobPreconditionsTest.java b/robotests/src/com/android/storagemanager/automatic/JobPreconditionsTest.java
index 4c9e93a..2c6d5d4 100644
--- a/robotests/src/com/android/storagemanager/automatic/JobPreconditionsTest.java
+++ b/robotests/src/com/android/storagemanager/automatic/JobPreconditionsTest.java
@@ -16,12 +16,18 @@
package com.android.storagemanager.automatic;
+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.when;
+import static org.robolectric.Shadows.shadowOf;
+
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkInfo;
import android.os.BatteryManager;
-import com.android.storagemanager.testing.TestingConstants;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -31,26 +37,18 @@
import org.mockito.stubbing.Answer;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
import java.util.ArrayList;
import java.util.HashMap;
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.when;
-import static org.robolectric.Shadows.shadowOf;
-
@RunWith(RobolectricTestRunner.class)
-@Config(manifest=TestingConstants.MANIFEST, sdk=23)
public class JobPreconditionsTest {
// TODO: Instead of mocking, use ShadowConnectivityManager. Right now, using it causes a crash.
// Use the shadow once we get it working.
- @Mock ConnectivityManager mConnectivityManager;
- @Mock BatteryManager mBatteryManager;
- @Mock Network mWifiNetwork;
- @Mock NetworkInfo mWifiNetworkInfo;
+ @Mock private ConnectivityManager mConnectivityManager;
+ @Mock private BatteryManager mBatteryManager;
+ @Mock private Network mWifiNetwork;
+ @Mock private NetworkInfo mWifiNetworkInfo;
private Context mContext;
private ArrayList<Network> mNetworkList;
private HashMap<Network, NetworkInfo> mNetworkMap;
diff --git a/robotests/src/com/android/storagemanager/automatic/NotificationControllerTest.java b/robotests/src/com/android/storagemanager/automatic/NotificationControllerTest.java
index af74ad7..215dde2 100644
--- a/robotests/src/com/android/storagemanager/automatic/NotificationControllerTest.java
+++ b/robotests/src/com/android/storagemanager/automatic/NotificationControllerTest.java
@@ -16,31 +16,36 @@
package com.android.storagemanager.automatic;
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.reset;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.verifyZeroInteractions;
+
+import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.content.Context;
import android.content.Intent;
import android.provider.Settings;
-import com.android.storagemanager.testing.TestingConstants;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
+import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
+import org.robolectric.RuntimeEnvironment;
import org.robolectric.shadows.ShadowApplication;
import java.util.concurrent.TimeUnit;
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyInt;
-import static org.mockito.Mockito.*;
-
@RunWith(RobolectricTestRunner.class)
-@Config(manifest=TestingConstants.MANIFEST, sdk=TestingConstants.SDK_VERSION)
public class NotificationControllerTest {
@Mock
private NotificationManager mNotificationManager;
@@ -56,7 +61,7 @@
mController = new NotificationController();
mClock = new FakeClock();
mController.setClock(mClock);
- mContext = application.getApplicationContext();
+ mContext = RuntimeEnvironment.application;
}
@Test
@@ -83,6 +88,7 @@
mClock.time += TimeUnit.DAYS.toMillis(91);
}
+ reset(mNotificationManager);
// The next time should show nothing.
mController.onReceive(mContext,
new Intent(NotificationController.INTENT_ACTION_SHOW_NOTIFICATION));
@@ -102,6 +108,7 @@
mClock.time += TimeUnit.DAYS.toMillis(14);
}
+ reset(mNotificationManager);
// The next time should show nothing.
mController.onReceive(mContext,
new Intent(NotificationController.INTENT_ACTION_SHOW_NOTIFICATION));
@@ -117,6 +124,7 @@
getNotificationIntent(NotificationController.INTENT_ACTION_DISMISS, 1));
verify(mNotificationManager).cancel(1);
+ reset(mNotificationManager);
// Another attempt should not show a notification.
mController.onReceive(mContext,
new Intent(NotificationController.INTENT_ACTION_SHOW_NOTIFICATION));
@@ -126,7 +134,7 @@
mClock.time = TimeUnit.DAYS.toMillis(14);
mController.onReceive(mContext,
new Intent(NotificationController.INTENT_ACTION_SHOW_NOTIFICATION));
- verify(mNotificationManager, times(2)).notify(anyInt(), any(Notification.class));
+ verify(mNotificationManager).notify(anyInt(), any(Notification.class));
}
@Test
@@ -138,28 +146,33 @@
getNotificationIntent(NotificationController.INTENT_ACTION_NO_THANKS, 1));
verify(mNotificationManager).cancel(1);
+ reset(mNotificationManager);
// Another attempt should not show a notification.
mController.onReceive(mContext,
new Intent(NotificationController.INTENT_ACTION_SHOW_NOTIFICATION));
- verifyZeroInteractions(mNotificationManager);
+ verifyNoMoreInteractions(mNotificationManager);
// The notification should show against after 90 days.
mClock.time = TimeUnit.DAYS.toMillis(90);
mController.onReceive(mContext,
new Intent(NotificationController.INTENT_ACTION_SHOW_NOTIFICATION));
- verify(mNotificationManager, times(2)).notify(anyInt(), any(Notification.class));
+ verify(mNotificationManager).notify(anyInt(), any(Notification.class));
}
@Test
public void testActivateStorageManagerIntent() throws Exception {
- mController.onReceive(mContext,
- new Intent(NotificationController.INTENT_ACTION_ACTIVATE_ASM));
- assertThat(Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.AUTOMATIC_STORAGE_MANAGER_ENABLED)).isEqualTo(1);
+ final Context activity = Robolectric.buildActivity(Activity.class).get();
+ final Intent intent = new Intent(NotificationController.INTENT_ACTION_ACTIVATE_ASM);
+ mController.onReceive(activity, intent);
+ assertThat(
+ Settings.Secure.getInt(
+ activity.getContentResolver(),
+ Settings.Secure.AUTOMATIC_STORAGE_MANAGER_ENABLED))
+ .isEqualTo(1);
}
@Test
- public void testNotificationIsLocalOnly(){
+ public void testNotificationIsLocalOnly() {
ArgumentCaptor<Notification> captor = ArgumentCaptor.forClass(Notification.class);
mController.onReceive(mContext,
new Intent(NotificationController.INTENT_ACTION_SHOW_NOTIFICATION));
diff --git a/robotests/src/com/android/storagemanager/deletionhelper/AppDeletionPreferenceGroupTest.java b/robotests/src/com/android/storagemanager/deletionhelper/AppDeletionPreferenceGroupTest.java
index 55ee9b3..24719d8 100644
--- a/robotests/src/com/android/storagemanager/deletionhelper/AppDeletionPreferenceGroupTest.java
+++ b/robotests/src/com/android/storagemanager/deletionhelper/AppDeletionPreferenceGroupTest.java
@@ -18,9 +18,8 @@
import static com.google.common.truth.Truth.assertThat;
-import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceScreen;
-import com.android.storagemanager.testing.TestingConstants;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
@@ -31,15 +30,13 @@
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-import static org.mockito.Matchers.any;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@RunWith(RobolectricTestRunner.class)
-@Config(manifest = TestingConstants.MANIFEST, sdk = TestingConstants.SDK_VERSION)
public class AppDeletionPreferenceGroupTest {
@Mock private AppsAsyncLoader.PackageInfo mPackage1;
@Mock private AppDeletionType mBackend;
diff --git a/robotests/src/com/android/storagemanager/deletionhelper/AppDeletionPreferenceTest.java b/robotests/src/com/android/storagemanager/deletionhelper/AppDeletionPreferenceTest.java
index f21dfd8..f0da99b 100644
--- a/robotests/src/com/android/storagemanager/deletionhelper/AppDeletionPreferenceTest.java
+++ b/robotests/src/com/android/storagemanager/deletionhelper/AppDeletionPreferenceTest.java
@@ -18,27 +18,24 @@
import android.content.Context;
import com.android.storagemanager.deletionhelper.AppsAsyncLoader.PackageInfo;
-import com.android.storagemanager.testing.TestingConstants;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
import static com.google.common.truth.Truth.assertThat;
@RunWith(RobolectricTestRunner.class)
-@Config(manifest=TestingConstants.MANIFEST, sdk=TestingConstants.SDK_VERSION)
public class AppDeletionPreferenceTest {
private static final String TEST_PACKAGE_LABEL = "App";
private static final String TEST_PACKAGE_NAME = "com.package.mcpackageface";
- public static final long KILOBYTE = 1024L;
- public static final long HUNDRED_BYTES = 100L;
- public static final String KB_STRING = "1.00 KB";
- public static final String HUNDRED_BYTE_STRING = "100 B";
+ private static final long KILOBYTE = 1000L;
+ private static final long HUNDRED_BYTES = 100L;
+ private static final String KB_STRING = "1.00 kB";
+ private static final String HUNDRED_BYTE_STRING = "100 B";
private Context mContext;
@Before
diff --git a/robotests/src/com/android/storagemanager/deletionhelper/AppDeletionTypeTest.java b/robotests/src/com/android/storagemanager/deletionhelper/AppDeletionTypeTest.java
index a3a29a4..2345c9d 100644
--- a/robotests/src/com/android/storagemanager/deletionhelper/AppDeletionTypeTest.java
+++ b/robotests/src/com/android/storagemanager/deletionhelper/AppDeletionTypeTest.java
@@ -17,7 +17,6 @@
package com.android.storagemanager.deletionhelper;
import com.android.storagemanager.deletionhelper.DeletionType.LoadingStatus;
-import com.android.storagemanager.testing.TestingConstants;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -25,17 +24,15 @@
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
import java.util.ArrayList;
import java.util.List;
import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Matchers.eq;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.verify;
@RunWith(RobolectricTestRunner.class)
-@Config(manifest = TestingConstants.MANIFEST, sdk = TestingConstants.SDK_VERSION)
public class AppDeletionTypeTest {
private static String PACKAGE_NAME = "com.package.package";
diff --git a/robotests/src/com/android/storagemanager/deletionhelper/AppStateUsageStatsBridgeTest.java b/robotests/src/com/android/storagemanager/deletionhelper/AppStateUsageStatsBridgeTest.java
index ab3159d..85ad307 100644
--- a/robotests/src/com/android/storagemanager/deletionhelper/AppStateUsageStatsBridgeTest.java
+++ b/robotests/src/com/android/storagemanager/deletionhelper/AppStateUsageStatsBridgeTest.java
@@ -23,7 +23,6 @@
import android.content.pm.PackageInfo;
import android.os.Looper;
import com.android.settingslib.applications.ApplicationsState;
-import com.android.storagemanager.testing.TestingConstants;
import com.android.storagemanager.deletionhelper.AppStateUsageStatsBridge.UsageStatsState;
import org.junit.Before;
import org.junit.Test;
@@ -34,7 +33,6 @@
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.Shadows;
-import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowApplication;
import org.robolectric.shadows.ShadowPackageManager;
@@ -43,8 +41,8 @@
import java.util.concurrent.TimeUnit;
import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyLong;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
@@ -52,14 +50,13 @@
import static org.robolectric.Shadows.shadowOf;
@RunWith(RobolectricTestRunner.class)
-@Config(manifest=TestingConstants.MANIFEST, sdk=23)
public class AppStateUsageStatsBridgeTest {
- public static final String PACKAGE_SYSTEM = "package.system";
+ private static final String PACKAGE_SYSTEM = "package.system";
private static final long STARTING_TIME = TimeUnit.DAYS.toMillis(1000);
private static final String PACKAGE_NAME = "package.mcpackageface";
- public static final String PACKAGE_CLEARABLE = "package.clearable";
- public static final String PACKAGE_TOO_NEW_TO_DELETE = "package.tooNewToDelete";
+ private static final String PACKAGE_CLEARABLE = "package.clearable";
+ private static final String PACKAGE_TOO_NEW_TO_DELETE = "package.tooNewToDelete";
@Mock private ApplicationsState mState;
@Mock private ApplicationsState.Session mSession;
@@ -417,13 +414,4 @@
when(usageStats.getLastTimeUsed()).thenReturn(time);
mUsageStats.put(packageName, usageStats);
}
-
- private class FakeClock extends AppStateUsageStatsBridge.Clock {
- public long time;
-
- @Override
- public long getCurrentTime() {
- return time;
- }
- }
}
diff --git a/robotests/src/com/android/storagemanager/deletionhelper/AppsAsyncLoaderTest.java b/robotests/src/com/android/storagemanager/deletionhelper/AppsAsyncLoaderTest.java
index f058c84..4fbdf28 100644
--- a/robotests/src/com/android/storagemanager/deletionhelper/AppsAsyncLoaderTest.java
+++ b/robotests/src/com/android/storagemanager/deletionhelper/AppsAsyncLoaderTest.java
@@ -21,24 +21,23 @@
import android.content.ComponentName;
import android.content.Context;
import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.storage.VolumeInfo;
import android.text.TextUtils;
+
import com.android.settingslib.applications.StorageStatsSource;
import com.android.settingslib.applications.StorageStatsSource.AppStorageStats;
-import com.android.settingslib.wrapper.PackageManagerWrapper;
import com.android.storagemanager.deletionhelper.AppsAsyncLoader.PackageInfo;
-import com.android.storagemanager.testing.StorageManagerRobolectricTestRunner;
-import com.android.storagemanager.testing.TestingConstants;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.Shadows;
-import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowApplication;
import java.util.ArrayList;
@@ -46,28 +45,27 @@
import java.util.concurrent.TimeUnit;
import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyInt;
-import static org.mockito.Matchers.anyLong;
-import static org.mockito.Matchers.eq;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-@RunWith(StorageManagerRobolectricTestRunner.class)
-@Config(manifest = TestingConstants.MANIFEST, sdk = 23)
+@RunWith(RobolectricTestRunner.class)
public class AppsAsyncLoaderTest {
- public static final String PACKAGE_SYSTEM = "package.system";
+ private static final String PACKAGE_SYSTEM = "package.system";
private static final long STARTING_TIME = TimeUnit.DAYS.toMillis(1000);
private static final String PACKAGE_NAME = "package.mcpackageface";
- public static final String PACKAGE_CLEARABLE = "package.clearable";
- public static final String PACKAGE_TOO_NEW_TO_DELETE = "package.tooNewToDelete";
- public static final String PACKAGE_DEFAULT_LAUNCHER = "package.launcherface";
+ private static final String PACKAGE_CLEARABLE = "package.clearable";
+ private static final String PACKAGE_TOO_NEW_TO_DELETE = "package.tooNewToDelete";
+ private static final String PACKAGE_DEFAULT_LAUNCHER = "package.launcherface";
@Mock private UsageStatsManager mUsageStatsManager;
@Mock private StorageStatsSource mStorageStatsSource;
@Mock private AppsAsyncLoader.Clock mClock;
- @Mock private PackageManagerWrapper mPackageManager;
+ @Mock private PackageManager mPackageManager;
@Mock private AppStorageStats mAppStorageStats;
private AppsAsyncLoader mLoader;
private HashMap<String, UsageStats> mUsageStats;
@@ -379,7 +377,7 @@
try {
when(mPackageManager.getPackageInfo(eq(info.packageName), anyInt()))
.thenReturn(packageInfo);
- when(mPackageManager.loadLabel(eq(applicationInfo)))
+ when(applicationInfo.loadLabel(eq(mPackageManager)))
.thenReturn(applicationInfo.packageName);
} catch (NameNotFoundException e) {
e.printStackTrace();
diff --git a/robotests/src/com/android/storagemanager/deletionhelper/CollapsibleCheckboxPreferenceGroupTest.java b/robotests/src/com/android/storagemanager/deletionhelper/CollapsibleCheckboxPreferenceGroupTest.java
index bec2f2b..892ae78 100644
--- a/robotests/src/com/android/storagemanager/deletionhelper/CollapsibleCheckboxPreferenceGroupTest.java
+++ b/robotests/src/com/android/storagemanager/deletionhelper/CollapsibleCheckboxPreferenceGroupTest.java
@@ -16,14 +16,16 @@
package com.android.storagemanager.deletionhelper;
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.when;
+
import android.content.Context;
-import android.support.v7.preference.PreferenceViewHolder;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
-import com.android.storagemanager.deletionhelper.DeletionType.LoadingStatus;
-import com.android.storagemanager.testing.TestingConstants;
+import androidx.preference.PreferenceViewHolder;
import com.android.storagemanager.R;
+import com.android.storagemanager.deletionhelper.DeletionType.LoadingStatus;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -32,13 +34,8 @@
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.when;
@RunWith(RobolectricTestRunner.class)
-@Config(manifest = TestingConstants.MANIFEST, sdk = TestingConstants.SDK_VERSION)
public class CollapsibleCheckboxPreferenceGroupTest {
private Context mContext;
diff --git a/robotests/src/com/android/storagemanager/deletionhelper/ConfirmDeletionDialogTest.java b/robotests/src/com/android/storagemanager/deletionhelper/ConfirmDeletionDialogTest.java
index 7a29592..15a6124 100644
--- a/robotests/src/com/android/storagemanager/deletionhelper/ConfirmDeletionDialogTest.java
+++ b/robotests/src/com/android/storagemanager/deletionhelper/ConfirmDeletionDialogTest.java
@@ -22,25 +22,22 @@
import android.widget.Button;
import android.widget.TextView;
-import com.android.storagemanager.testing.TestingConstants;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
import static org.robolectric.util.FragmentTestUtil.startFragment;
@RunWith(RobolectricTestRunner.class)
-@Config(manifest = TestingConstants.MANIFEST, sdk = TestingConstants.SDK_VERSION)
public class ConfirmDeletionDialogTest {
@Test
public void testOnCreateDialog_saysCorrectStrings() {
final ConfirmDeletionDialog alertDialog = ConfirmDeletionDialog.newInstance(100L);
startFragment(alertDialog);
- TextView message = (TextView) alertDialog.getDialog().findViewById(R.id.message);
- Button button1 = (Button) alertDialog.getDialog().findViewById(android.R.id.button1);
- Button button2 = (Button) alertDialog.getDialog().findViewById(android.R.id.button2);
+ TextView message = alertDialog.getDialog().findViewById(R.id.message);
+ Button button1 = alertDialog.getDialog().findViewById(android.R.id.button1);
+ Button button2 = alertDialog.getDialog().findViewById(android.R.id.button2);
assertThat(message.getText().toString())
.isEqualTo("100 B of content will be removed from your device");
assertThat(button1.getText().toString()).isEqualTo("Free up space");
diff --git a/robotests/src/com/android/storagemanager/deletionhelper/DeletionHelperSettingsTest.java b/robotests/src/com/android/storagemanager/deletionhelper/DeletionHelperSettingsTest.java
index 388f8b8..e724b1d 100644
--- a/robotests/src/com/android/storagemanager/deletionhelper/DeletionHelperSettingsTest.java
+++ b/robotests/src/com/android/storagemanager/deletionhelper/DeletionHelperSettingsTest.java
@@ -18,9 +18,9 @@
import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyInt;
-import static org.mockito.Matchers.anyString;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
@@ -28,32 +28,28 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.os.storage.StorageManager;
-import android.support.v7.preference.PreferenceScreen;
-
-import com.android.storagemanager.testing.StorageManagerRobolectricTestRunner;
-import com.android.storagemanager.testing.TestingConstants;
+import androidx.preference.PreferenceScreen;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-@RunWith(StorageManagerRobolectricTestRunner.class)
-@Config(manifest = TestingConstants.MANIFEST, sdk = TestingConstants.SDK_VERSION)
+@RunWith(RobolectricTestRunner.class)
public class DeletionHelperSettingsTest {
- private static final String URI_APP_SCHEME = "android-app";
private static final String PACKAGE_NAME = "com.package";
private Context mContext;
private PackageManager mPackageManager;
@Before
- public void setUp() throws Exception {
+ public void setUp() {
mContext = spy(RuntimeEnvironment.application);
mPackageManager = spy(mContext.getPackageManager());
}
@@ -79,7 +75,7 @@
}
@Test
- public void downloadsNotDeletedInNoThresholdMode() throws Exception {
+ public void downloadsNotDeletedInNoThresholdMode() {
DeletionHelperSettings settings =
spy(DeletionHelperSettings.newInstance(AppsAsyncLoader.NO_THRESHOLD));
PreferenceScreen preferenceScreen = mock(PreferenceScreen.class);
@@ -94,7 +90,7 @@
}
@Test
- public void onFreeableChangeChecksForNull() throws Exception {
+ public void onFreeableChangeChecksForNull() {
DeletionHelperSettings settings =
DeletionHelperSettings.newInstance(AppsAsyncLoader.NO_THRESHOLD);
AppDeletionType appBackend = mock(AppDeletionType.class);
@@ -103,4 +99,59 @@
settings.onFreeableChanged(0, 0L);
}
+
+ @Test
+ public void requestingSpecificBytesToClearSetsOkResultCodeOnSufficientClear() {
+ DeletionHelperSettings settings =
+ spy(DeletionHelperSettings.newInstance(AppsAsyncLoader.NORMAL_THRESHOLD));
+ settings.mBytesToFree = 1000L;
+ PreferenceScreen preferenceScreen = mock(PreferenceScreen.class);
+ doReturn(preferenceScreen).when(settings).getPreferenceScreen();
+ // The deletion helper will not delete items which aren't viewable on the UI -- this
+ // will trick it into thinking there's an UI.
+ settings.mDownloadsPreference = mock(DownloadsDeletionPreferenceGroup.class);
+ DownloadsDeletionType downloadsDeletionType = mock(DownloadsDeletionType.class);
+ settings.setDownloadsDeletionType(downloadsDeletionType);
+ when(downloadsDeletionType.getFreeableBytes(any(Boolean.class))).thenReturn(1001L);
+
+ settings.clearData();
+
+ assertThat(settings.getResultCode()).isEqualTo(Activity.RESULT_OK);
+ }
+
+ @Test
+ public void requestingSpecificBytesToClearSetsNegativeResultCodeOnSufficientClear() {
+ DeletionHelperSettings settings =
+ spy(DeletionHelperSettings.newInstance(AppsAsyncLoader.NORMAL_THRESHOLD));
+ settings.mBytesToFree = 1000L;
+ PreferenceScreen preferenceScreen = mock(PreferenceScreen.class);
+ doReturn(preferenceScreen).when(settings).getPreferenceScreen();
+ // The deletion helper will not delete items which aren't viewable on the UI -- this
+ // will trick it into thinking there's an UI
+ settings.mDownloadsPreference = mock(DownloadsDeletionPreferenceGroup.class);
+ DownloadsDeletionType downloadsDeletionType = mock(DownloadsDeletionType.class);
+ settings.setDownloadsDeletionType(downloadsDeletionType);
+ when(downloadsDeletionType.getFreeableBytes(any(Boolean.class))).thenReturn(999L);
+
+ settings.clearData();
+
+ assertThat(settings.getResultCode()).isEqualTo(Activity.RESULT_CANCELED);
+ }
+
+ @Test
+ public void requestingSpecificBytesToClearSetsNegativeResultCodeOnNoClear() {
+ DeletionHelperSettings settings =
+ spy(DeletionHelperSettings.newInstance(AppsAsyncLoader.NORMAL_THRESHOLD));
+ settings.mBytesToFree = 1000L;
+ PreferenceScreen preferenceScreen = mock(PreferenceScreen.class);
+ doReturn(preferenceScreen).when(settings).getPreferenceScreen();
+ // The deletion helper will not delete items which aren't viewable on the UI -- this
+ // will trick it into thinking there's an UI.
+ settings.mDownloadsPreference = mock(DownloadsDeletionPreferenceGroup.class);
+ DownloadsDeletionType downloadsDeletionType = mock(DownloadsDeletionType.class);
+ settings.setDownloadsDeletionType(downloadsDeletionType);
+ when(downloadsDeletionType.getFreeableBytes(any(Boolean.class))).thenReturn(999L);
+
+ assertThat(settings.getResultCode()).isEqualTo(Activity.RESULT_CANCELED);
+ }
}
diff --git a/robotests/src/com/android/storagemanager/deletionhelper/DownloadsDeletionPreferenceGroupTest.java b/robotests/src/com/android/storagemanager/deletionhelper/DownloadsDeletionPreferenceGroupTest.java
index c4b5db7..676dee3 100644
--- a/robotests/src/com/android/storagemanager/deletionhelper/DownloadsDeletionPreferenceGroupTest.java
+++ b/robotests/src/com/android/storagemanager/deletionhelper/DownloadsDeletionPreferenceGroupTest.java
@@ -22,13 +22,10 @@
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
-import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
-import android.support.v7.preference.PreferenceManager;
+import androidx.preference.PreferenceManager;
-import com.android.storagemanager.testing.StorageManagerRobolectricTestRunner;
-import com.android.storagemanager.testing.TestingConstants;
import com.android.storagemanager.utils.IconProvider;
import org.junit.Before;
@@ -38,19 +35,17 @@
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
import java.io.File;
-@RunWith(StorageManagerRobolectricTestRunner.class)
-@Config(manifest = TestingConstants.MANIFEST, sdk = TestingConstants.SDK_VERSION)
+@RunWith(RobolectricTestRunner.class)
public class DownloadsDeletionPreferenceGroupTest {
@Rule public TemporaryFolder temporaryFolder = new TemporaryFolder();
@Mock private IconProvider mIconProvider;
- private Context mContext;
private DownloadsDeletionPreferenceGroup mGroup;
private DownloadsDeletionType mType;
private File mTempDir;
@@ -58,12 +53,11 @@
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
- mContext = RuntimeEnvironment.application;
- mGroup = spy(new DownloadsDeletionPreferenceGroup(mContext));
+ mGroup = spy(new DownloadsDeletionPreferenceGroup(RuntimeEnvironment.application));
final PreferenceManager preferenceManager = mock(PreferenceManager.class);
when(mGroup.getPreferenceManager()).thenReturn(preferenceManager);
- mType = new DownloadsDeletionType(mContext, new String[0]);
+ mType = new DownloadsDeletionType(RuntimeEnvironment.application, new String[0]);
mTempDir = temporaryFolder.newFolder();
diff --git a/robotests/src/com/android/storagemanager/deletionhelper/DownloadsFilePreferenceTest.java b/robotests/src/com/android/storagemanager/deletionhelper/DownloadsFilePreferenceTest.java
index e62252a..215b189 100644
--- a/robotests/src/com/android/storagemanager/deletionhelper/DownloadsFilePreferenceTest.java
+++ b/robotests/src/com/android/storagemanager/deletionhelper/DownloadsFilePreferenceTest.java
@@ -18,7 +18,6 @@
import android.content.Context;
import android.text.format.DateUtils;
-import com.android.storagemanager.testing.TestingConstants;
import com.android.storagemanager.utils.IconProvider;
import java.io.File;
import java.io.FileWriter;
@@ -31,15 +30,13 @@
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Matchers.any;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@RunWith(RobolectricTestRunner.class)
-@Config(manifest = TestingConstants.MANIFEST, sdk = TestingConstants.SDK_VERSION)
public class DownloadsFilePreferenceTest {
//23-01-2100
@@ -93,7 +90,7 @@
}
@Test
- public void compareTo_fallbackToFileName() throws Exception {
+ public void compareTo_fallbackToFileName() {
File file = new File(mTempDir, "test.bmp");
DownloadsFilePreference preference =
new DownloadsFilePreference(mContext, file, mIconProvider);
diff --git a/robotests/src/com/android/storagemanager/deletionhelper/LoadingSpinnerControllerTest.java b/robotests/src/com/android/storagemanager/deletionhelper/LoadingSpinnerControllerTest.java
index 6c9414d..4876516 100644
--- a/robotests/src/com/android/storagemanager/deletionhelper/LoadingSpinnerControllerTest.java
+++ b/robotests/src/com/android/storagemanager/deletionhelper/LoadingSpinnerControllerTest.java
@@ -18,48 +18,37 @@
import android.view.View;
-import com.android.storagemanager.testing.StorageManagerRobolectricTestRunner;
-import com.android.storagemanager.testing.TestingConstants;
-
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
-import org.robolectric.annotation.Config;
+import org.robolectric.RobolectricTestRunner;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-@RunWith(StorageManagerRobolectricTestRunner.class)
-@Config(manifest = TestingConstants.MANIFEST, sdk = TestingConstants.SDK_VERSION)
+@RunWith(RobolectricTestRunner.class)
public class LoadingSpinnerControllerTest {
- @Mock DeletionHelperActivity mActivity;
- @Mock View mListView;
- LoadingSpinnerController mController;
+ @Mock private DeletionHelperActivity mActivity;
+ @Mock private View mListView;
+ private LoadingSpinnerController mController;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
mController = new LoadingSpinnerController(mActivity);
doAnswer(
- new Answer() {
- @Override
- public Object answer(InvocationOnMock invocationOnMock)
- throws Throwable {
- final boolean isLoading =
- (boolean) (invocationOnMock.getArguments())[1];
- when(mActivity.isLoadingVisible()).thenReturn(isLoading);
- return null;
- }
+ invocationOnMock -> {
+ final boolean isLoading = (boolean) invocationOnMock.getArguments()[1];
+ when(mActivity.isLoadingVisible()).thenReturn(isLoading);
+ return null;
})
.when(mActivity)
.setLoading(any(View.class), anyBoolean(), anyBoolean());
diff --git a/robotests/src/com/android/storagemanager/deletionhelper/PhotosDeletionPreferenceTest.java b/robotests/src/com/android/storagemanager/deletionhelper/PhotosDeletionPreferenceTest.java
index f731cea..d3f44ff 100644
--- a/robotests/src/com/android/storagemanager/deletionhelper/PhotosDeletionPreferenceTest.java
+++ b/robotests/src/com/android/storagemanager/deletionhelper/PhotosDeletionPreferenceTest.java
@@ -16,13 +16,11 @@
package com.android.storagemanager.deletionhelper;
-import android.content.Context;
-import android.support.v7.preference.PreferenceViewHolder;
+import androidx.preference.PreferenceViewHolder;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
-import com.android.storagemanager.testing.TestingConstants;
import com.android.storagemanager.R;
import org.junit.Before;
import org.junit.Test;
@@ -32,15 +30,12 @@
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.when;
@RunWith(RobolectricTestRunner.class)
-@Config(manifest=TestingConstants.MANIFEST, sdk=TestingConstants.SDK_VERSION)
public class PhotosDeletionPreferenceTest {
- private Context mContext;
private PreferenceViewHolder mHolder;
private PhotosDeletionPreference mPreference;
@Mock private DeletionType mDeletionType;
@@ -48,14 +43,16 @@
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
- mContext = RuntimeEnvironment.application;
- mPreference = new PhotosDeletionPreference(mContext, null);
+ mPreference = new PhotosDeletionPreference(RuntimeEnvironment.application, null);
mPreference.registerDeletionService(mDeletionType);
// Inflate the preference and the widget.
- LayoutInflater inflater = LayoutInflater.from(mContext);
- final View view = inflater.inflate(mPreference.getLayoutResource(),
- new LinearLayout(mContext), false);
+ LayoutInflater inflater = LayoutInflater.from(RuntimeEnvironment.application);
+ final View view =
+ inflater.inflate(
+ mPreference.getLayoutResource(),
+ new LinearLayout(RuntimeEnvironment.application),
+ false);
inflater.inflate(mPreference.getWidgetLayoutResource(),
(ViewGroup) view.findViewById(android.R.id.widget_frame));
@@ -93,13 +90,13 @@
@Test
public void testTitleAndSummaryAfterLoaded() {
- mPreference.onFreeableChanged(10, 1024L);
+ mPreference.onFreeableChanged(10, 1000L);
Robolectric.flushBackgroundThreadScheduler();
Robolectric.flushForegroundThreadScheduler();
mPreference.onBindViewHolder(mHolder);
assertThat(mPreference.getTitle()).isEqualTo("Backed up photos & videos");
- assertThat(mPreference.getSummary().toString()).isEqualTo("1.00 KB");
+ assertThat(mPreference.getSummary().toString()).isEqualTo("1.00 kB");
}
@Test
diff --git a/robotests/src/com/android/storagemanager/deletionhelper/StorageManagerUpsellDialogTest.java b/robotests/src/com/android/storagemanager/deletionhelper/StorageManagerUpsellDialogTest.java
index 5186a6e..f4d4db2 100644
--- a/robotests/src/com/android/storagemanager/deletionhelper/StorageManagerUpsellDialogTest.java
+++ b/robotests/src/com/android/storagemanager/deletionhelper/StorageManagerUpsellDialogTest.java
@@ -17,15 +17,12 @@
package com.android.storagemanager.deletionhelper;
import android.content.Context;
-import com.android.storagemanager.testing.StorageManagerRobolectricTestRunner;
-import com.android.storagemanager.testing.TestingConstants;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadows.ShadowApplication;
-
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
import java.util.concurrent.TimeUnit;
@@ -34,16 +31,14 @@
import static org.mockito.Mockito.when;
import static org.robolectric.util.FragmentTestUtil.startFragment;
-@RunWith(StorageManagerRobolectricTestRunner.class)
-@Config(manifest= TestingConstants.MANIFEST, sdk=TestingConstants.SDK_VERSION)
+@RunWith(RobolectricTestRunner.class)
public class StorageManagerUpsellDialogTest {
- @Mock
- StorageManagerUpsellDialog.Clock mClock;
+ @Mock private StorageManagerUpsellDialog.Clock mClock;
@Test
public void testNoThanksMaximumShownTimes() {
MockitoAnnotations.initMocks(this);
- final Context context = ShadowApplication.getInstance().getApplicationContext();
+ final Context context = RuntimeEnvironment.application;
StorageManagerUpsellDialog fragment = StorageManagerUpsellDialog.newInstance(0);
fragment.setClock(mClock);
diff --git a/robotests/src/com/android/storagemanager/testing/StorageManagerRobolectricTestRunner.java b/robotests/src/com/android/storagemanager/testing/StorageManagerRobolectricTestRunner.java
deleted file mode 100644
index 2127023..0000000
--- a/robotests/src/com/android/storagemanager/testing/StorageManagerRobolectricTestRunner.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2016 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.storagemanager.testing;
-
-import java.util.List;
-import org.junit.runners.model.InitializationError;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
-import org.robolectric.manifest.AndroidManifest;
-import org.robolectric.res.Fs;
-import org.robolectric.res.ResourcePath;
-
-/**
- * Custom test runner for Robolectric UI testing. This adds additional resources needed to run.
- */
-public class StorageManagerRobolectricTestRunner extends RobolectricTestRunner {
-
- /**
- * We don't actually want to change this behavior, so we just call super.
- */
- public StorageManagerRobolectricTestRunner(Class<?> testClass) throws InitializationError {
- super(testClass);
- }
-
- /**
- * We are going to create our own custom manifest so that we can add multiple resource
- * paths to it. This lets us access resources in both StorageManager and SettingsLib in our
- * tests.
- */
- @Override
- protected AndroidManifest getAppManifest(Config config) {
- // Using the manifest file's relative path, we can figure out the application directory.
- final String appRoot = "packages/apps/StorageManager";
- final String manifestPath = appRoot + "/AndroidManifest.xml";
- final String resDir = appRoot + "/res";
- final String assetsDir = appRoot + "/assets";
-
- // By adding any resources from libraries we need to the AndroidManifest, we can access
- // them from within the parallel universe's resource loader.
- return new AndroidManifest(Fs.fileFromPath(manifestPath), Fs.fileFromPath(resDir),
- Fs.fileFromPath(assetsDir), "com.android.storagemanager") {
- @Override
- public List<ResourcePath> getIncludedResourcePaths() {
- List<ResourcePath> paths = super.getIncludedResourcePaths();
- paths.add(new ResourcePath(
- null,
- Fs.fileFromPath("./packages/apps/StorageManager/res"),
- null));
- paths.add(new ResourcePath(
- null,
- Fs.fileFromPath("./frameworks/base/packages/SettingsLib/res"),
- null));
- paths.add(new ResourcePath(
- null,
- Fs.fileFromPath("./frameworks/base/core/res/res"),
- null));
- return paths;
- }
- };
- }
-}
\ No newline at end of file
diff --git a/robotests/src/com/android/storagemanager/testing/StorageManagerShadowSystemProperties.java b/robotests/src/com/android/storagemanager/testing/StorageManagerShadowSystemProperties.java
deleted file mode 100644
index 7981afc..0000000
--- a/robotests/src/com/android/storagemanager/testing/StorageManagerShadowSystemProperties.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2018 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.storagemanager.testing;
-
-import android.os.SystemProperties;
-
-import org.robolectric.annotation.Implementation;
-import org.robolectric.annotation.Implements;
-import org.robolectric.shadows.ShadowSystemProperties;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/** TODO: Don't use this. Use an upstreamed version. */
-@Implements(SystemProperties.class)
-public class StorageManagerShadowSystemProperties extends ShadowSystemProperties {
- private static final Map<String, String> sValues = new HashMap<>();
-
- @Implementation
- public static synchronized boolean getBoolean(String key, boolean def) {
- if (sValues.containsKey(key)) {
- String val = sValues.get(key);
- return "y".equals(val)
- || "yes".equals(val)
- || "1".equals(val)
- || "true".equals(val)
- || "on".equals(val);
- }
- return ShadowSystemProperties.getBoolean(key, def);
- }
-
- @Implementation
- public static synchronized String get(String key) {
- if (sValues.containsKey(key)) {
- return sValues.get(key);
- }
- return ShadowSystemProperties.get(key);
- }
-
- public static synchronized void put(String key, String value) {
- sValues.put(key, value);
- }
-
- @Implementation
- public static String get(String key, String defaultValue) {
- String value = sValues.get(key);
- return value == null ? defaultValue : value;
- }
-
- public static synchronized void clear() {
- sValues.clear();
- }
-}
diff --git a/robotests/src/com/android/storagemanager/testing/TestingConstants.java b/robotests/src/com/android/storagemanager/testing/TestingConstants.java
deleted file mode 100644
index 21467d8..0000000
--- a/robotests/src/com/android/storagemanager/testing/TestingConstants.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2016 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.storagemanager.testing;
-
-/**
- * Constants that are used in the tests.
- */
-public class TestingConstants {
-
- /**
- * The path to the manifest file for testing purposes.
- */
- public static final String MANIFEST = "packages/apps/StorageManager/AndroidManifest.xml";
-
- public static final int SDK_VERSION = 24;
-
- // Do not instantiate this test class.
- private TestingConstants() {}
-
-}
diff --git a/robotests/src/com/android/storagemanager/utils/PreferenceListCacheTest.java b/robotests/src/com/android/storagemanager/utils/PreferenceListCacheTest.java
index 76b4278..f62f72e 100644
--- a/robotests/src/com/android/storagemanager/utils/PreferenceListCacheTest.java
+++ b/robotests/src/com/android/storagemanager/utils/PreferenceListCacheTest.java
@@ -17,32 +17,26 @@
package com.android.storagemanager.utils;
import android.content.Context;
-import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceScreen;
-import com.android.storagemanager.testing.TestingConstants;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
-import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyInt;
-import static org.mockito.Matchers.eq;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@RunWith(RobolectricTestRunner.class)
-@Config(manifest=TestingConstants.MANIFEST, sdk=TestingConstants.SDK_VERSION)
public class PreferenceListCacheTest {
@Mock private PreferenceScreen mGroup;
private PreferenceListCache mCache;
@@ -147,12 +141,12 @@
private void setupMockPreferenceGroup(Preference[] preferences) {
when(mGroup.getPreferenceCount()).thenReturn(preferences.length);
- when(mGroup.getPreference(anyInt())).thenAnswer(new Answer<Preference>() {
- @Override
- public Preference answer(InvocationOnMock invocation) throws Throwable {
- int index = (int) invocation.getArguments()[0];
- return preferences[index];
- }
- });
+ when(mGroup.getPreference(anyInt()))
+ .thenAnswer(
+ (Answer<Preference>)
+ invocation -> {
+ int index = (int) invocation.getArguments()[0];
+ return preferences[index];
+ });
}
}
diff --git a/src/com/android/storagemanager/automatic/NotificationController.java b/src/com/android/storagemanager/automatic/NotificationController.java
index 18e4533..de987c5 100644
--- a/src/com/android/storagemanager/automatic/NotificationController.java
+++ b/src/com/android/storagemanager/automatic/NotificationController.java
@@ -27,8 +27,8 @@
import android.content.res.Resources;
import android.os.SystemProperties;
import android.provider.Settings;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.os.BuildCompat;
+import androidx.annotation.VisibleForTesting;
+import androidx.core.os.BuildCompat;
import com.android.storagemanager.R;
diff --git a/src/com/android/storagemanager/deletionhelper/AppDeletionPreference.java b/src/com/android/storagemanager/deletionhelper/AppDeletionPreference.java
index cd0ce28..dfd0419 100644
--- a/src/com/android/storagemanager/deletionhelper/AppDeletionPreference.java
+++ b/src/com/android/storagemanager/deletionhelper/AppDeletionPreference.java
@@ -15,7 +15,7 @@
package com.android.storagemanager.deletionhelper;
import android.content.Context;
-import android.support.v7.preference.PreferenceViewHolder;
+import androidx.preference.PreferenceViewHolder;
import android.text.format.DateUtils;
import com.android.storagemanager.R;
import com.android.storagemanager.deletionhelper.AppsAsyncLoader.PackageInfo;
diff --git a/src/com/android/storagemanager/deletionhelper/AppDeletionPreferenceGroup.java b/src/com/android/storagemanager/deletionhelper/AppDeletionPreferenceGroup.java
index bfca07e..0010b05 100644
--- a/src/com/android/storagemanager/deletionhelper/AppDeletionPreferenceGroup.java
+++ b/src/com/android/storagemanager/deletionhelper/AppDeletionPreferenceGroup.java
@@ -17,9 +17,9 @@
package com.android.storagemanager.deletionhelper;
import android.content.Context;
-import android.support.annotation.VisibleForTesting;
-import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceScreen;
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
import android.text.format.Formatter;
import android.util.AttributeSet;
import com.android.internal.logging.MetricsLogger;
diff --git a/src/com/android/storagemanager/deletionhelper/AppDeletionType.java b/src/com/android/storagemanager/deletionhelper/AppDeletionType.java
index 6526b62..0c50c35 100644
--- a/src/com/android/storagemanager/deletionhelper/AppDeletionType.java
+++ b/src/com/android/storagemanager/deletionhelper/AppDeletionType.java
@@ -29,7 +29,6 @@
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settingslib.applications.StorageStatsSource;
-import com.android.settingslib.wrapper.PackageManagerWrapper;
import com.android.storagemanager.deletionhelper.AppsAsyncLoader.AppFilter;
import com.android.storagemanager.deletionhelper.AppsAsyncLoader.PackageInfo;
import java.util.HashSet;
@@ -226,7 +225,7 @@
.setUid(UserHandle.myUserId())
.setUuid(VolumeInfo.ID_PRIVATE_INTERNAL)
.setStorageStatsSource(new StorageStatsSource(mContext))
- .setPackageManager(new PackageManagerWrapper(mContext.getPackageManager()))
+ .setPackageManager(mContext.getPackageManager())
.setUsageStatsManager(
(UsageStatsManager) mContext.getSystemService(Context.USAGE_STATS_SERVICE))
.setFilter(
diff --git a/src/com/android/storagemanager/deletionhelper/AppsAsyncLoader.java b/src/com/android/storagemanager/deletionhelper/AppsAsyncLoader.java
index 1142b69..0b99ff6 100644
--- a/src/com/android/storagemanager/deletionhelper/AppsAsyncLoader.java
+++ b/src/com/android/storagemanager/deletionhelper/AppsAsyncLoader.java
@@ -26,14 +26,13 @@
import android.graphics.drawable.Drawable;
import android.os.SystemProperties;
import android.os.UserHandle;
-import android.support.annotation.VisibleForTesting;
+import androidx.annotation.VisibleForTesting;
import android.text.format.DateUtils;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Log;
import com.android.settingslib.applications.StorageStatsSource;
import com.android.settingslib.applications.StorageStatsSource.AppStorageStats;
-import com.android.settingslib.wrapper.PackageManagerWrapper;
import com.android.storagemanager.deletionhelper.AppsAsyncLoader.PackageInfo;
import com.android.storagemanager.utils.AsyncLoader;
@@ -70,7 +69,7 @@
private int mUserId;
private String mUuid;
private StorageStatsSource mStatsManager;
- private PackageManagerWrapper mPackageManager;
+ private PackageManager mPackageManager;
private UsageStatsManager mUsageStatsManager;
@@ -79,7 +78,7 @@
int userId,
String uuid,
StorageStatsSource source,
- PackageManagerWrapper pm,
+ PackageManager pm,
UsageStatsManager um,
AppsAsyncLoader.AppFilter filter) {
super(context);
@@ -142,8 +141,11 @@
.setPackageName(app.packageName)
.setSize(appSpace.getTotalBytes())
.setFlags(app.flags)
- .setIcon(mPackageManager.getUserBadgedIcon(app))
- .setLabel(mPackageManager.loadLabel(app))
+ .setIcon(
+ mPackageManager.getUserBadgedIcon(
+ mPackageManager.loadUnbadgedItemIcon(app, app),
+ new UserHandle(UserHandle.getUserId(app.uid))))
+ .setLabel(app.loadLabel(mPackageManager))
.build();
seenUid.add(app.uid);
if (mFilter.filterApp(extraInfo) && !isDefaultLauncher(mPackageManager, extraInfo)) {
@@ -205,8 +207,7 @@
@Override
protected void onDiscardResult(List<PackageInfo> result) {}
- private static boolean isDefaultLauncher(
- PackageManagerWrapper packageManager, PackageInfo info) {
+ private static boolean isDefaultLauncher(PackageManager packageManager, PackageInfo info) {
if (packageManager == null) {
return false;
}
@@ -228,7 +229,7 @@
private int mUid;
private String mUuid;
private StorageStatsSource mStorageStatsSource;
- private PackageManagerWrapper mPackageManager;
+ private PackageManager mPackageManager;
private UsageStatsManager mUsageStatsManager;
private AppsAsyncLoader.AppFilter mFilter;
@@ -251,7 +252,7 @@
return this;
}
- public Builder setPackageManager(PackageManagerWrapper packageManager) {
+ public Builder setPackageManager(PackageManager packageManager) {
this.mPackageManager = packageManager;
return this;
}
diff --git a/src/com/android/storagemanager/deletionhelper/CollapsibleCheckboxPreferenceGroup.java b/src/com/android/storagemanager/deletionhelper/CollapsibleCheckboxPreferenceGroup.java
index 51a969d..c5de8c6 100644
--- a/src/com/android/storagemanager/deletionhelper/CollapsibleCheckboxPreferenceGroup.java
+++ b/src/com/android/storagemanager/deletionhelper/CollapsibleCheckboxPreferenceGroup.java
@@ -19,10 +19,10 @@
import android.content.Context;
import android.os.Parcel;
import android.os.Parcelable;
-import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
-import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceGroup;
-import android.support.v7.preference.PreferenceViewHolder;
+import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.PreferenceViewHolder;
import android.util.AttributeSet;
import android.view.View;
diff --git a/src/com/android/storagemanager/deletionhelper/DeletionHelperSettings.java b/src/com/android/storagemanager/deletionhelper/DeletionHelperSettings.java
index 1a63b17..a96413f 100644
--- a/src/com/android/storagemanager/deletionhelper/DeletionHelperSettings.java
+++ b/src/com/android/storagemanager/deletionhelper/DeletionHelperSettings.java
@@ -23,10 +23,10 @@
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.storage.StorageManager;
-import android.support.annotation.VisibleForTesting;
-import android.support.v14.preference.PreferenceFragment;
-import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceScreen;
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.PreferenceFragment;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
import android.text.format.Formatter;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -68,7 +68,7 @@
private List<DeletionType> mDeletableContentList;
private AppDeletionPreferenceGroup mApps;
@VisibleForTesting AppDeletionType mAppBackend;
- private DownloadsDeletionPreferenceGroup mDownloadsPreference;
+ @VisibleForTesting DownloadsDeletionPreferenceGroup mDownloadsPreference;
private DownloadsDeletionType mDownloadsDeletion;
private PhotosDeletionPreference mPhotoPreference;
private Preference mGaugePreference;
@@ -76,6 +76,8 @@
private Button mCancel, mFree;
private DeletionHelperFeatureProvider mProvider;
private int mThresholdType;
+ @VisibleForTesting long mBytesToFree = UNSET;
+ private int mResult;
private LoadingSpinnerController mLoadingController;
public static DeletionHelperSettings newInstance(int thresholdType) {
@@ -121,6 +123,10 @@
getGaugeString(getContext(), intent, activity.getCallingPackage());
if (gaugeTitle != null) {
mGaugePreference.setTitle(gaugeTitle);
+
+ long requestedBytes =
+ intent.getLongExtra(StorageManager.EXTRA_REQUESTED_BYTES, UNSET);
+ mBytesToFree = requestedBytes;
} else {
getPreferenceScreen().removePreference(mGaugePreference);
}
@@ -281,17 +287,23 @@
/** Clears out the selected apps and data from the device and closes the fragment. */
protected void clearData() {
+ long bytesFreed = getTotalFreeableSpace(COUNT_CHECKED_ONLY);
+ if (mBytesToFree != UNSET && bytesFreed >= mBytesToFree) {
+ setResultCode(Activity.RESULT_OK);
+ }
+
// This should be fine as long as there is only one extra deletion feature.
// In the future, this should be done in an async queue in order to not
// interfere with the simultaneous PackageDeletionTask.
+ Activity activity = getActivity();
if (mPhotoPreference != null && mPhotoPreference.isChecked()) {
- mPhotoVideoDeletion.clearFreeableData(getActivity());
+ mPhotoVideoDeletion.clearFreeableData(activity);
}
if (mDownloadsPreference != null) {
- mDownloadsDeletion.clearFreeableData(getActivity());
+ mDownloadsDeletion.clearFreeableData(activity);
}
if (mAppBackend != null) {
- mAppBackend.clearFreeableData(getActivity());
+ mAppBackend.clearFreeableData(activity);
}
}
@@ -372,7 +384,9 @@
private long getTotalFreeableSpace(boolean countUnchecked) {
long freeableSpace = 0;
- freeableSpace += mAppBackend.getTotalAppsFreeableSpace(countUnchecked);
+ if (mAppBackend != null) {
+ freeableSpace += mAppBackend.getTotalAppsFreeableSpace(countUnchecked);
+ }
if (mPhotoPreference != null) {
freeableSpace += mPhotoPreference.getFreeableBytes(countUnchecked);
}
@@ -382,4 +396,16 @@
return freeableSpace;
}
+ private void setResultCode(int result) {
+ mResult = result;
+ Activity activity = getActivity();
+ if (activity != null) {
+ activity.setResult(result);
+ }
+ }
+
+ @VisibleForTesting
+ protected int getResultCode() {
+ return mResult;
+ }
}
diff --git a/src/com/android/storagemanager/deletionhelper/DeletionPreference.java b/src/com/android/storagemanager/deletionhelper/DeletionPreference.java
index 0dd8fb0..5ae27d4 100644
--- a/src/com/android/storagemanager/deletionhelper/DeletionPreference.java
+++ b/src/com/android/storagemanager/deletionhelper/DeletionPreference.java
@@ -17,10 +17,10 @@
package com.android.storagemanager.deletionhelper;
import android.content.Context;
-import android.support.v7.preference.Preference;
-import android.support.v7.preference.Preference.OnPreferenceChangeListener;
-import android.support.v7.preference.CheckBoxPreference;
-import android.support.v7.preference.PreferenceViewHolder;
+import androidx.preference.Preference;
+import androidx.preference.Preference.OnPreferenceChangeListener;
+import androidx.preference.CheckBoxPreference;
+import androidx.preference.PreferenceViewHolder;
import android.util.AttributeSet;
import android.view.View;
diff --git a/src/com/android/storagemanager/deletionhelper/DeletionType.java b/src/com/android/storagemanager/deletionhelper/DeletionType.java
index 47cd479..87cc618 100644
--- a/src/com/android/storagemanager/deletionhelper/DeletionType.java
+++ b/src/com/android/storagemanager/deletionhelper/DeletionType.java
@@ -18,7 +18,7 @@
import android.app.Activity;
import android.os.Bundle;
-import android.support.annotation.IntDef;
+import androidx.annotation.IntDef;
/**
* Helper for the Deletion Helper which can query, clear out, and visualize deletable data.
diff --git a/src/com/android/storagemanager/deletionhelper/DownloadsDeletionPreferenceGroup.java b/src/com/android/storagemanager/deletionhelper/DownloadsDeletionPreferenceGroup.java
index 8213170..e595d07 100644
--- a/src/com/android/storagemanager/deletionhelper/DownloadsDeletionPreferenceGroup.java
+++ b/src/com/android/storagemanager/deletionhelper/DownloadsDeletionPreferenceGroup.java
@@ -20,8 +20,8 @@
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
-import android.support.annotation.VisibleForTesting;
-import android.support.v7.preference.Preference;
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
import android.text.format.Formatter;
import android.util.AttributeSet;
diff --git a/src/com/android/storagemanager/deletionhelper/DownloadsDeletionType.java b/src/com/android/storagemanager/deletionhelper/DownloadsDeletionType.java
index e8cf1df..e82d189 100644
--- a/src/com/android/storagemanager/deletionhelper/DownloadsDeletionType.java
+++ b/src/com/android/storagemanager/deletionhelper/DownloadsDeletionType.java
@@ -24,7 +24,7 @@
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import android.util.ArraySet;
import com.android.internal.logging.MetricsLogger;
diff --git a/src/com/android/storagemanager/deletionhelper/DownloadsFilePreference.java b/src/com/android/storagemanager/deletionhelper/DownloadsFilePreference.java
index c7d2570..9de43fd 100644
--- a/src/com/android/storagemanager/deletionhelper/DownloadsFilePreference.java
+++ b/src/com/android/storagemanager/deletionhelper/DownloadsFilePreference.java
@@ -17,7 +17,7 @@
package com.android.storagemanager.deletionhelper;
import android.content.Context;
-import android.support.v7.preference.Preference;
+import androidx.preference.Preference;
import android.text.format.DateUtils;
import com.android.storagemanager.utils.IconProvider;
diff --git a/src/com/android/storagemanager/deletionhelper/FetchDownloadsLoader.java b/src/com/android/storagemanager/deletionhelper/FetchDownloadsLoader.java
index f848ec4..5826baf 100644
--- a/src/com/android/storagemanager/deletionhelper/FetchDownloadsLoader.java
+++ b/src/com/android/storagemanager/deletionhelper/FetchDownloadsLoader.java
@@ -21,7 +21,7 @@
import android.media.ThumbnailUtils;
import android.os.SystemProperties;
import android.provider.MediaStore;
-import android.support.annotation.VisibleForTesting;
+import androidx.annotation.VisibleForTesting;
import android.text.format.DateUtils;
import com.android.storagemanager.utils.AsyncLoader;
diff --git a/src/com/android/storagemanager/deletionhelper/GaugePreference.java b/src/com/android/storagemanager/deletionhelper/GaugePreference.java
index 3ffdbac..9b71ebf 100644
--- a/src/com/android/storagemanager/deletionhelper/GaugePreference.java
+++ b/src/com/android/storagemanager/deletionhelper/GaugePreference.java
@@ -17,7 +17,7 @@
package com.android.storagemanager.deletionhelper;
import android.content.Context;
-import android.support.v7.preference.Preference;
+import androidx.preference.Preference;
import android.util.AttributeSet;
import com.android.storagemanager.R;
diff --git a/src/com/android/storagemanager/deletionhelper/NestedDeletionPreference.java b/src/com/android/storagemanager/deletionhelper/NestedDeletionPreference.java
index 47656d9..6f8fdd0 100644
--- a/src/com/android/storagemanager/deletionhelper/NestedDeletionPreference.java
+++ b/src/com/android/storagemanager/deletionhelper/NestedDeletionPreference.java
@@ -17,8 +17,8 @@
package com.android.storagemanager.deletionhelper;
import android.content.Context;
-import android.support.v7.preference.CheckBoxPreference;
-import android.support.v7.preference.PreferenceViewHolder;
+import androidx.preference.CheckBoxPreference;
+import androidx.preference.PreferenceViewHolder;
import android.text.format.Formatter;
import android.view.View;
import android.widget.CheckBox;
diff --git a/src/com/android/storagemanager/deletionhelper/PackageDeletionTask.java b/src/com/android/storagemanager/deletionhelper/PackageDeletionTask.java
index 32fc09f..07e73b7 100644
--- a/src/com/android/storagemanager/deletionhelper/PackageDeletionTask.java
+++ b/src/com/android/storagemanager/deletionhelper/PackageDeletionTask.java
@@ -19,6 +19,7 @@
import android.content.pm.IPackageDeleteObserver;
import android.content.pm.PackageManager;
import android.os.UserHandle;
+import android.util.Log;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
@@ -27,6 +28,7 @@
* Deletes a specified set of apps as a specified user and calls back once done.
*/
public class PackageDeletionTask {
+ private static final String TAG = "PackageDeletionTask";
private Set<String> mPackages;
private Callback mCallback;
private PackageManager mPm;
@@ -46,7 +48,12 @@
public void run() {
PackageDeletionObserver observer = new PackageDeletionObserver(mPackages.size());
for (String packageName : mPackages) {
- mPm.deletePackageAsUser(packageName, observer, 0, mUser.getIdentifier());
+ try {
+ mPm.deletePackageAsUser(packageName, observer, 0, mUser.getIdentifier());
+ } catch (IllegalArgumentException e) {
+ // Couldn't find the package, no need to delete.
+ Log.w(TAG, "Could not find package, not deleting " + packageName, e);
+ }
}
}
diff --git a/src/com/android/storagemanager/deletionhelper/PhotosDeletionPreference.java b/src/com/android/storagemanager/deletionhelper/PhotosDeletionPreference.java
index 28139dc..d87a338 100644
--- a/src/com/android/storagemanager/deletionhelper/PhotosDeletionPreference.java
+++ b/src/com/android/storagemanager/deletionhelper/PhotosDeletionPreference.java
@@ -18,8 +18,8 @@
import android.content.Context;
import android.os.Handler;
-import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceViewHolder;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceViewHolder;
import android.util.AttributeSet;
import android.text.format.Formatter;
diff --git a/src/com/android/storagemanager/deletionhelper/StorageManagerUpsellDialog.java b/src/com/android/storagemanager/deletionhelper/StorageManagerUpsellDialog.java
index af85277..00521a9 100644
--- a/src/com/android/storagemanager/deletionhelper/StorageManagerUpsellDialog.java
+++ b/src/com/android/storagemanager/deletionhelper/StorageManagerUpsellDialog.java
@@ -23,7 +23,7 @@
import android.content.SharedPreferences;
import android.os.Bundle;
import android.provider.Settings;
-import android.support.annotation.VisibleForTesting;
+import androidx.annotation.VisibleForTesting;
import android.text.format.Formatter;
import com.android.settingslib.Utils;
diff --git a/src/com/android/storagemanager/utils/IconProvider.java b/src/com/android/storagemanager/utils/IconProvider.java
index 0636d71..2f45e7e 100644
--- a/src/com/android/storagemanager/utils/IconProvider.java
+++ b/src/com/android/storagemanager/utils/IconProvider.java
@@ -40,7 +40,7 @@
* @return
*/
public Drawable loadMimeIcon(String mimeType) {
- return mContext.getContentResolver().getTypeDrawable(mimeType);
+ return mContext.getContentResolver().getTypeInfo(mimeType).getIcon().loadDrawable(mContext);
}
public static String getMimeType(File file) {
diff --git a/src/com/android/storagemanager/utils/PreferenceListCache.java b/src/com/android/storagemanager/utils/PreferenceListCache.java
index 3d552d5..05cedd5 100644
--- a/src/com/android/storagemanager/utils/PreferenceListCache.java
+++ b/src/com/android/storagemanager/utils/PreferenceListCache.java
@@ -16,8 +16,8 @@
package com.android.storagemanager.utils;
-import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceGroup;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
import android.text.TextUtils;
import android.util.ArrayMap;
diff --git a/tests/app/Android.mk b/tests/app/Android.mk
index a8f18d4..8b0133c 100644
--- a/tests/app/Android.mk
+++ b/tests/app/Android.mk
@@ -4,14 +4,14 @@
# We only want this apk build for tests.
LOCAL_MODULE_TAGS := tests
-LOCAL_JAVA_LIBRARIES := android.test.runner bouncycastle
+LOCAL_JAVA_LIBRARIES := android.test.runner
LOCAL_STATIC_JAVA_LIBRARIES := \
- android-support-test \
+ androidx.test.rules \
mockito-target \
- espresso-core \
- espresso-contrib-nodep \
- espresso-intents-nodep \
+ androidx.test.espresso.core \
+ androidx.test.espresso.contrib-nodeps \
+ androidx.test.espresso.intents-nodeps \
truth-prebuilt
# Include all test java files.
diff --git a/tests/app/AndroidManifest.xml b/tests/app/AndroidManifest.xml
index ac1e895..4a4e57e 100644
--- a/tests/app/AndroidManifest.xml
+++ b/tests/app/AndroidManifest.xml
@@ -17,7 +17,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.storagemanager.apptests">
- <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
+ <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
android:targetPackage="com.android.storagemanager"
android:label="StorageManager Test Cases">
</instrumentation>
diff --git a/tests/app/src/com/android/storagemanager/deletionhelper/DeletionHelperActivityTest.java b/tests/app/src/com/android/storagemanager/deletionhelper/DeletionHelperActivityTest.java
index 77dccdb..74d3e82 100644
--- a/tests/app/src/com/android/storagemanager/deletionhelper/DeletionHelperActivityTest.java
+++ b/tests/app/src/com/android/storagemanager/deletionhelper/DeletionHelperActivityTest.java
@@ -15,16 +15,18 @@
*/
package com.android.storagemanager.deletionhelper.apptests;
-import static android.support.test.espresso.Espresso.onView;
-import static android.support.test.espresso.assertion.ViewAssertions.doesNotExist;
-import static android.support.test.espresso.assertion.ViewAssertions.matches;
-import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
-import static android.support.test.espresso.matcher.ViewMatchers.withText;
+import static androidx.test.espresso.Espresso.onView;
+import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist;
+import static androidx.test.espresso.assertion.ViewAssertions.matches;
+import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
+import static androidx.test.espresso.matcher.ViewMatchers.withText;
-import android.support.test.rule.ActivityTestRule;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.rule.ActivityTestRule;
+import androidx.test.runner.AndroidJUnit4;
+
import com.android.storagemanager.R;
import com.android.storagemanager.deletionhelper.DeletionHelperActivity;
+
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/tests/unit/Android.mk b/tests/unit/Android.mk
index 2eb7f0e..45892a4 100644
--- a/tests/unit/Android.mk
+++ b/tests/unit/Android.mk
@@ -7,7 +7,7 @@
LOCAL_JAVA_LIBRARIES := android.test.runner android.test.base android.test.mock
LOCAL_STATIC_JAVA_LIBRARIES := \
- android-support-test \
+ androidx.test.rules \
mockito-target
# Include all test java files.
diff --git a/tests/unit/AndroidManifest.xml b/tests/unit/AndroidManifest.xml
index 0a3880f..f40a611 100644
--- a/tests/unit/AndroidManifest.xml
+++ b/tests/unit/AndroidManifest.xml
@@ -21,7 +21,7 @@
<uses-library android:name="android.test.runner" />
</application>
- <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
+ <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
android:targetPackage="com.android.storagemanager"
android:label="StorageManager Test Cases">
</instrumentation>
diff --git a/tests/unit/README b/tests/unit/README
index 1f56d05..65bac68 100644
--- a/tests/unit/README
+++ b/tests/unit/README
@@ -5,13 +5,13 @@
$ adb install -r out/target/product/angler/data/app/StorageManagerUnitTests/StorageManagerUnitTests.apk
To run all tests:
-$ adb shell am instrument -w com.android.storagemanager.tests.unit/android.support.test.runner.AndroidJUnitRunner
+$ adb shell am instrument -w com.android.storagemanager.tests.unit/androidx.test.runner.AndroidJUnitRunner
To run all tests in a specific class:
-$ adb shell am instrument -w -e class com.android.storagemanager.<class> com.android.storagemanager.tests.unit/android.support.test.runner.AndroidJUnitRunner
+$ adb shell am instrument -w -e class com.android.storagemanager.<class> com.android.storagemanager.tests.unit/androidx.test.runner.AndroidJUnitRunner
To run a specific test:
-$ adb shell am instrument -w -e class com.android.storagemanager.<class>#<test> com.android.storagemanager.tests.unit/android.support.test.runner.AndroidJUnitRunner
+$ adb shell am instrument -w -e class com.android.storagemanager.<class>#<test> com.android.storagemanager.tests.unit/androidx.test.runner.AndroidJUnitRunner
More general information can be found at
http://developer.android.com/reference/android/support/test/runner/AndroidJUnitRunner.html