Move AppInfoDashboardFragment into appinfo package.

- update all references to AppInfoDashboardFragment
- removed PackageUtil inner class and change the corresponding function
to be a simple method.

Bug: 69384089
Test: make RunSettingsRoboTests
Change-Id: Ief067e25a303ef16db20b2ca1d8840cb06eff5f9
This commit is contained in:
Doris Ling
2017-12-07 15:30:18 -08:00
parent fb72d22784
commit a0006d93bd
47 changed files with 198 additions and 219 deletions

View File

@@ -75,6 +75,7 @@ import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils;
import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
import com.android.settings.applications.appinfo.DrawOverlayDetails;
import com.android.settings.applications.appinfo.ExternalSourcesDetails;
import com.android.settings.applications.appinfo.PictureInPictureDetails;

View File

@@ -20,6 +20,7 @@ import android.content.Intent;
import android.util.FeatureFlagUtils;
import com.android.settings.SettingsActivity;
import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
import com.android.settings.core.FeatureFlags;
public class InstalledAppDetailsTop extends SettingsActivity {

View File

@@ -40,6 +40,7 @@ import android.util.Log;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
import com.android.settings.core.FeatureFlags;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.widget.AppPreference;

View File

@@ -32,7 +32,6 @@ import com.android.internal.os.BatteryStatsHelper;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.Utils;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.fuelgauge.AdvancedPowerUsageDetail;
import com.android.settings.fuelgauge.BatteryEntry;

View File

@@ -34,7 +34,6 @@ import android.text.format.Formatter;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.datausage.AppDataUsage;
import com.android.settings.datausage.DataUsageList;
import com.android.settings.datausage.DataUsageUtils;

View File

@@ -14,7 +14,7 @@
* under the License.
*/
package com.android.settings.applications;
package com.android.settings.applications.appinfo;
import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
@@ -23,7 +23,6 @@ import android.app.ActivityManager;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.app.Fragment;
import android.app.admin.DevicePolicyManager;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
@@ -59,27 +58,8 @@ import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils;
import com.android.settings.applications.appinfo.AppBatteryPreferenceController;
import com.android.settings.applications.appinfo.AppDataUsagePreferenceController;
import com.android.settings.applications.appinfo.AppInstallerInfoPreferenceController;
import com.android.settings.applications.appinfo.AppInstallerPreferenceCategoryController;
import com.android.settings.applications.appinfo.AppMemoryPreferenceController;
import com.android.settings.applications.appinfo.AppNotificationPreferenceController;
import com.android.settings.applications.appinfo.AppOpenByDefaultPreferenceController;
import com.android.settings.applications.appinfo.AppPermissionPreferenceController;
import com.android.settings.applications.appinfo.AppStoragePreferenceController;
import com.android.settings.applications.appinfo.AppVersionPreferenceController;
import com.android.settings.applications.appinfo.DefaultBrowserShortcutPreferenceController;
import com.android.settings.applications.appinfo.DefaultEmergencyShortcutPreferenceController;
import com.android.settings.applications.appinfo.DefaultHomeShortcutPreferenceController;
import com.android.settings.applications.appinfo.DefaultPhoneShortcutPreferenceController;
import com.android.settings.applications.appinfo.DefaultSmsShortcutPreferenceController;
import com.android.settings.applications.appinfo.DrawOverlayDetailPreferenceController;
import com.android.settings.applications.appinfo.ExternalSourceDetailPreferenceController;
import com.android.settings.applications.appinfo.InstantAppButtonsPreferenceController;
import com.android.settings.applications.appinfo.InstantAppDomainsPreferenceController;
import com.android.settings.applications.appinfo.PictureInPictureDetailPreferenceController;
import com.android.settings.applications.appinfo.WriteSystemSettingsPreferenceController;
import com.android.settings.applications.ApplicationFeatureProvider;
import com.android.settings.applications.LayoutPreference;
import com.android.settings.applications.manageapplications.ManageApplications;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.dashboard.DashboardFragment;
@@ -116,19 +96,19 @@ public class AppInfoDashboardFragment extends DashboardFragment
private static final String TAG = "AppInfoDashboard";
// Menu identifiers
public static final int UNINSTALL_ALL_USERS_MENU = 1;
public static final int UNINSTALL_UPDATES = 2;
private static final int UNINSTALL_ALL_USERS_MENU = 1;
private static final int UNINSTALL_UPDATES = 2;
// Result code identifiers
public static final int REQUEST_UNINSTALL = 0;
@VisibleForTesting
static final int REQUEST_UNINSTALL = 0;
private static final int REQUEST_REMOVE_DEVICE_ADMIN = 1;
public static final int SUB_INFO_FRAGMENT = 1;
static final int SUB_INFO_FRAGMENT = 1;
public static final int LOADER_CHART_DATA = 2;
public static final int LOADER_STORAGE = 3;
@VisibleForTesting
public static final int LOADER_BATTERY = 4;
static final int LOADER_CHART_DATA = 2;
static final int LOADER_STORAGE = 3;
static final int LOADER_BATTERY = 4;
// Dialog identifiers used in showDialog
private static final int DLG_BASE = 0;
@@ -137,12 +117,12 @@ public class AppInfoDashboardFragment extends DashboardFragment
private static final int DLG_SPECIAL_DISABLE = DLG_BASE + 3;
private static final String KEY_HEADER = "header_view";
private static final String KEY_ACTION_BUTTONS = "action_buttons";
private static final String KEY_ADVANCED_APP_INFO_CATEGORY = "advanced_app_info";
public static final String ARG_PACKAGE_NAME = "package";
public static final String ARG_PACKAGE_UID = "uid";
protected static final boolean localLOGV = false;
private static final String KEY_ADVANCED_APP_INFO_CATEGORY = "advanced_app_info";
private static final boolean localLOGV = false;
private EnforcedAdmin mAppsControlDisallowedAdmin;
private boolean mAppsControlDisallowedBySystem;
@@ -278,7 +258,7 @@ public class AppInfoDashboardFragment extends DashboardFragment
}
try {
IWebViewUpdateService webviewUpdateService =
final IWebViewUpdateService webviewUpdateService =
IWebViewUpdateService.Stub.asInterface(ServiceManager.getService("webviewupdate"));
if (webviewUpdateService.isFallbackPackage(mAppEntry.info.packageName)) {
enabled = false;
@@ -414,20 +394,21 @@ public class AppInfoDashboardFragment extends DashboardFragment
return controllers;
}
public ApplicationsState.AppEntry getAppEntry() {
ApplicationsState.AppEntry getAppEntry() {
if (mAppEntry == null) {
retrieveAppEntry();
}
return mAppEntry;
}
public PackageInfo getPackageInfo() {
PackageInfo getPackageInfo() {
if (mAppEntry == null) {
retrieveAppEntry();
}
return mPackageInfo;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (mFinishing) {
@@ -492,7 +473,7 @@ public class AppInfoDashboardFragment extends DashboardFragment
}
menu.findItem(UNINSTALL_ALL_USERS_MENU).setVisible(shouldShowUninstallForAll(mAppEntry));
mUpdatedSysApp = (mAppEntry.info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0;
MenuItem uninstallUpdatesItem = menu.findItem(UNINSTALL_UPDATES);
final MenuItem uninstallUpdatesItem = menu.findItem(UNINSTALL_UPDATES);
uninstallUpdatesItem.setVisible(mUpdatedSysApp && !mAppsControlDisallowedBySystem);
if (uninstallUpdatesItem.isVisible()) {
RestrictedLockUtils.setMenuItemAsDisabledByAdmin(getActivity(),
@@ -569,7 +550,7 @@ public class AppInfoDashboardFragment extends DashboardFragment
showIt = false;
} else if (mUserManager.getUsers().size() < 2) {
showIt = false;
} else if (PackageUtil.countPackageInUsers(mPm, mUserManager, mPackageName) < 2
} else if (getNumberOfUserWithPackageInstalled(mPackageName) < 2
&& (appEntry.info.flags & ApplicationInfo.FLAG_INSTALLED) != 0) {
showIt = false;
} else if (AppUtils.isInstant(appEntry.info)) {
@@ -605,11 +586,11 @@ public class AppInfoDashboardFragment extends DashboardFragment
}
// Get list of "home" apps and trace through any meta-data references
List<ResolveInfo> homeActivities = new ArrayList<ResolveInfo>();
final List<ResolveInfo> homeActivities = new ArrayList<ResolveInfo>();
mPm.getHomeActivities(homeActivities);
mHomePackages.clear();
for (int i = 0; i< homeActivities.size(); i++) {
ResolveInfo ri = homeActivities.get(i);
final ResolveInfo ri = homeActivities.get(i);
final String activityPkg = ri.activityInfo.packageName;
mHomePackages.add(activityPkg);
@@ -628,7 +609,7 @@ public class AppInfoDashboardFragment extends DashboardFragment
initUninstallButtons();
// Update the preference summaries.
Activity context = getActivity();
final Activity context = getActivity();
for (Callback callback : mCallbacks) {
callback.refreshUi();
}
@@ -641,7 +622,7 @@ public class AppInfoDashboardFragment extends DashboardFragment
// All other times: if the app no longer exists then we want
// to go away.
try {
ApplicationInfo ainfo = context.getPackageManager().getApplicationInfo(
final ApplicationInfo ainfo = context.getPackageManager().getApplicationInfo(
mAppEntry.info.packageName,
PackageManager.MATCH_DISABLED_COMPONENTS
| PackageManager.MATCH_ANY_USER);
@@ -712,8 +693,8 @@ public class AppInfoDashboardFragment extends DashboardFragment
private void uninstallPkg(String packageName, boolean allUsers, boolean andDisable) {
stopListeningToPackageRemove();
// Create new intent to launch Uninstaller activity
Uri packageURI = Uri.parse("package:"+packageName);
Intent uninstallIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageURI);
final Uri packageURI = Uri.parse("package:"+packageName);
final Intent uninstallIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageURI);
uninstallIntent.putExtra(Intent.EXTRA_UNINSTALL_ALL_USERS, allUsers);
mMetricsFeatureProvider.action(
getContext(), MetricsEvent.ACTION_SETTINGS_UNINSTALL_APP);
@@ -723,13 +704,13 @@ public class AppInfoDashboardFragment extends DashboardFragment
private void forceStopPackage(String pkgName) {
mMetricsFeatureProvider.action(getContext(), MetricsEvent.ACTION_APP_FORCE_STOP, pkgName);
ActivityManager am = (ActivityManager) getActivity().getSystemService(
final ActivityManager am = (ActivityManager) getActivity().getSystemService(
Context.ACTIVITY_SERVICE);
Log.d(TAG, "Stopping package " + pkgName);
am.forceStopPackage(pkgName);
int userId = UserHandle.getUserId(mAppEntry.info.uid);
final int userId = UserHandle.getUserId(mAppEntry.info.uid);
mState.invalidatePackage(pkgName, userId);
AppEntry newEnt = mState.getEntry(pkgName, userId);
final AppEntry newEnt = mState.getEntry(pkgName, userId);
if (newEnt != null) {
mAppEntry = newEnt;
}
@@ -758,7 +739,7 @@ public class AppInfoDashboardFragment extends DashboardFragment
Log.w(TAG, "App is not explicitly stopped");
updateForceStopButton(true);
} else {
Intent intent = new Intent(Intent.ACTION_QUERY_PACKAGE_RESTART,
final Intent intent = new Intent(Intent.ACTION_QUERY_PACKAGE_RESTART,
Uri.fromParts("package", mAppEntry.info.packageName, null));
intent.putExtra(Intent.EXTRA_PACKAGES, new String[] { mAppEntry.info.packageName });
intent.putExtra(Intent.EXTRA_UID, mAppEntry.info.uid);
@@ -773,11 +754,11 @@ public class AppInfoDashboardFragment extends DashboardFragment
public static void startAppInfoFragment(Class<?> fragment, int title,
SettingsPreferenceFragment caller, AppEntry appEntry) {
// start new fragment to display extended information
Bundle args = new Bundle();
final Bundle args = new Bundle();
args.putString(ARG_PACKAGE_NAME, appEntry.info.packageName);
args.putInt(ARG_PACKAGE_UID, appEntry.info.uid);
SettingsActivity sa = (SettingsActivity) caller.getActivity();
final SettingsActivity sa = (SettingsActivity) caller.getActivity();
sa.startPreferencePanel(caller, fragment.getName(), args, title, null, caller,
SUB_INFO_FRAGMENT);
}
@@ -790,8 +771,8 @@ public class AppInfoDashboardFragment extends DashboardFragment
final String packageName = mAppEntry.info.packageName;
if (mDpm.packageHasActiveAdmins(mPackageInfo.packageName)) {
stopListeningToPackageRemove();
Activity activity = getActivity();
Intent uninstallDAIntent = new Intent(activity, DeviceAdminAdd.class);
final Activity activity = getActivity();
final Intent uninstallDAIntent = new Intent(activity, DeviceAdminAdd.class);
uninstallDAIntent.putExtra(DeviceAdminAdd.EXTRA_DEVICE_ADMIN_PACKAGE_NAME,
mPackageName);
mMetricsFeatureProvider.action(
@@ -799,9 +780,9 @@ public class AppInfoDashboardFragment extends DashboardFragment
activity.startActivityForResult(uninstallDAIntent, REQUEST_REMOVE_DEVICE_ADMIN);
return;
}
EnforcedAdmin admin = RestrictedLockUtils.checkIfUninstallBlocked(getActivity(),
final EnforcedAdmin admin = RestrictedLockUtils.checkIfUninstallBlocked(getActivity(),
packageName, mUserId);
boolean uninstallBlockedBySystem = mAppsControlDisallowedBySystem ||
final boolean uninstallBlockedBySystem = mAppsControlDisallowedBySystem ||
RestrictedLockUtils.hasBaseUserRestriction(getActivity(), packageName, mUserId);
if (admin != null && !uninstallBlockedBySystem) {
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getActivity(), admin);
@@ -847,8 +828,7 @@ public class AppInfoDashboardFragment extends DashboardFragment
/** Returns whether there is only one user on this device, not including the system-only user */
private boolean isSingleUser() {
final int userCount = mUserManager.getUserCount();
return userCount == 1
|| (mUserManager.isSplitSystemUser() && userCount == 2);
return userCount == 1 || (mUserManager.isSplitSystemUser() && userCount == 2);
}
private void onPackageRemoved() {
@@ -856,24 +836,15 @@ public class AppInfoDashboardFragment extends DashboardFragment
getActivity().finishAndRemoveTask();
}
/**
* Elicit this class for testing. Test cannot be done in robolectric because it
* invokes the new API.
*/
@VisibleForTesting
public static class PackageUtil {
/**
* Count how many users in device have installed package {@paramref packageName}
*/
public static int countPackageInUsers(PackageManager packageManager, UserManager
userManager, String packageName) {
final List<UserInfo> userInfos = userManager.getUsers(true);
int getNumberOfUserWithPackageInstalled(String packageName) {
final List<UserInfo> userInfos = mUserManager.getUsers(true);
int count = 0;
for (final UserInfo userInfo : userInfos) {
try {
// Use this API to check whether user has this package
final ApplicationInfo info = packageManager.getApplicationInfoAsUser(
final ApplicationInfo info = mPm.getApplicationInfoAsUser(
packageName, PackageManager.GET_META_DATA, userInfo.id);
if ((info.flags & ApplicationInfo.FLAG_INSTALLED) != 0) {
count++;
@@ -885,7 +856,6 @@ public class AppInfoDashboardFragment extends DashboardFragment
return count;
}
}
private static class DisableChanger extends AsyncTask<Object, Object, Object> {
final PackageManager mPm;
@@ -924,7 +894,7 @@ public class AppInfoDashboardFragment extends DashboardFragment
final Bundle args = getArguments();
mPackageName = (args != null) ? args.getString(ARG_PACKAGE_NAME) : null;
if (mPackageName == null) {
Intent intent = (args == null) ?
final Intent intent = (args == null) ?
getActivity().getIntent() : (Intent) args.getParcelable("intent");
if (intent != null) {
mPackageName = intent.getData().getSchemeSpecificPart();
@@ -964,16 +934,15 @@ public class AppInfoDashboardFragment extends DashboardFragment
private void setIntentAndFinish(boolean finish, boolean appChanged) {
if (localLOGV) Log.i(TAG, "appChanged="+appChanged);
Intent intent = new Intent();
final Intent intent = new Intent();
intent.putExtra(ManageApplications.APP_CHG, appChanged);
SettingsActivity sa = (SettingsActivity)getActivity();
final SettingsActivity sa = (SettingsActivity)getActivity();
sa.finishPreferencePanel(this, Activity.RESULT_OK, intent);
mFinishing = true;
}
public void showDialogInner(int id, int moveErrorCode) {
DialogFragment newFragment =
MyAlertDialogFragment.newInstance(id, moveErrorCode);
void showDialogInner(int id, int moveErrorCode) {
final DialogFragment newFragment = MyAlertDialogFragment.newInstance(id, moveErrorCode);
newFragment.setTargetFragment(this, 0);
newFragment.show(getFragmentManager(), "dialog " + id);
}
@@ -1015,24 +984,6 @@ public class AppInfoDashboardFragment extends DashboardFragment
}
}
public static void startAppInfoFragment(Class<?> fragment, int titleRes,
String pkg, int uid, Fragment source, int request, int sourceMetricsCategory) {
startAppInfoFragment(fragment, titleRes, pkg, uid, source.getActivity(), request,
sourceMetricsCategory);
}
public static void startAppInfoFragment(Class<?> fragment, int titleRes,
String pkg, int uid, Activity source, int request, int sourceMetricsCategory) {
Bundle args = new Bundle();
args.putString(ARG_PACKAGE_NAME, pkg);
args.putInt(ARG_PACKAGE_UID, uid);
Intent intent = Utils.onBuildStartFragmentIntent(source, fragment.getName(),
args, null, titleRes, null, false, sourceMetricsCategory);
source.startActivityForResultAsUser(intent, request,
new UserHandle(UserHandle.getUserId(uid)));
}
public static class MyAlertDialogFragment extends InstrumentedDialogFragment {
private static final String ARG_ID = "id";
@@ -1044,10 +995,10 @@ public class AppInfoDashboardFragment extends DashboardFragment
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
int id = getArguments().getInt(ARG_ID);
int errorCode = getArguments().getInt("moveError");
Dialog dialog = ((AppInfoDashboardFragment) getTargetFragment())
.createDialog(id, errorCode);
final int id = getArguments().getInt(ARG_ID);
final int errorCode = getArguments().getInt("moveError");
final Dialog dialog =
((AppInfoDashboardFragment) getTargetFragment()).createDialog(id, errorCode);
if (dialog == null) {
throw new IllegalArgumentException("unknown id " + id);
}
@@ -1055,8 +1006,8 @@ public class AppInfoDashboardFragment extends DashboardFragment
}
public static MyAlertDialogFragment newInstance(int id, int errorCode) {
MyAlertDialogFragment dialogFragment = new MyAlertDialogFragment();
Bundle args = new Bundle();
final MyAlertDialogFragment dialogFragment = new MyAlertDialogFragment();
final Bundle args = new Bundle();
args.putInt(ARG_ID, id);
args.putInt("moveError", errorCode);
dialogFragment.setArguments(args);
@@ -1085,7 +1036,7 @@ public class AppInfoDashboardFragment extends DashboardFragment
private final BroadcastReceiver mPackageRemovedReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String packageName = intent.getData().getSchemeSpecificPart();
final String packageName = intent.getData().getSchemeSpecificPart();
if (!mFinishing && (mAppEntry == null || mAppEntry.info == null
|| TextUtils.equals(mAppEntry.info.packageName, packageName))) {
onPackageRemoved();

View File

@@ -22,7 +22,6 @@ import android.support.v7.preference.PreferenceScreen;
import android.text.TextUtils;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.core.BasePreferenceController;
/*

View File

@@ -23,7 +23,6 @@ import android.support.v7.preference.Preference;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.applications.AppStoreUtil;
import com.android.settingslib.applications.AppUtils;

View File

@@ -26,7 +26,6 @@ import android.text.format.Formatter;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.applications.ProcStatsData;
import com.android.settings.applications.ProcStatsEntry;
import com.android.settings.applications.ProcStatsPackageEntry;

View File

@@ -20,7 +20,6 @@ import android.content.Context;
import android.support.v7.preference.Preference;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.notification.AppNotificationSettings;
import com.android.settings.notification.NotificationBackend;
import com.android.settingslib.applications.ApplicationsState;

View File

@@ -26,7 +26,6 @@ import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.applications.AppLaunchSettings;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.applications.ApplicationsState;

View File

@@ -26,7 +26,6 @@ import android.support.v7.preference.Preference;
import android.util.Log;
import com.android.settings.R;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settingslib.applications.PermissionsSummaryHelper;
import java.util.ArrayList;

View File

@@ -28,7 +28,6 @@ import android.text.format.Formatter;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.applications.AppStorageSettings;
import com.android.settings.applications.FetchPackageStorageAsyncLoader;
import com.android.settingslib.applications.StorageStatsSource;

View File

@@ -21,7 +21,6 @@ import android.support.v7.preference.Preference;
import android.text.BidiFormatter;
import com.android.settings.R;
import com.android.settings.applications.AppInfoDashboardFragment;
public class AppVersionPreferenceController extends AppInfoPreferenceControllerBase {

View File

@@ -25,7 +25,6 @@ import android.support.annotation.VisibleForTesting;
import android.support.v7.preference.Preference;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.applications.AppInfoDashboardFragment;
public class DrawOverlayDetailPreferenceController extends AppInfoPreferenceControllerBase {

View File

@@ -22,7 +22,6 @@ import android.support.annotation.VisibleForTesting;
import android.support.v7.preference.Preference;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.applications.AppStateInstallAppsBridge;
public class ExternalSourceDetailPreferenceController extends AppInfoPreferenceControllerBase {

View File

@@ -22,7 +22,6 @@ import android.support.annotation.VisibleForTesting;
import android.support.v7.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.applications.ApplicationFeatureProvider;
import com.android.settings.applications.LayoutPreference;
import com.android.settings.applications.instantapps.InstantAppButtonsController;

View File

@@ -22,7 +22,6 @@ import android.support.v7.preference.Preference;
import com.android.settings.Utils;
import com.android.settings.applications.AppDomainsPreference;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settingslib.applications.AppUtils;
import java.util.Set;

View File

@@ -26,7 +26,6 @@ import android.support.v7.preference.Preference;
import android.util.Log;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.applications.AppInfoDashboardFragment;
public class PictureInPictureDetailPreferenceController extends AppInfoPreferenceControllerBase {

View File

@@ -25,7 +25,6 @@ import android.support.annotation.VisibleForTesting;
import android.support.v7.preference.Preference;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.applications.AppInfoDashboardFragment;
public class WriteSystemSettingsPreferenceController extends AppInfoPreferenceControllerBase {

View File

@@ -93,7 +93,7 @@ import com.android.settings.applications.InstalledAppCounter;
import com.android.settings.applications.InstalledAppDetails;
import com.android.settings.applications.NotificationApps;
import com.android.settings.applications.UsageAccessDetails;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
import com.android.settings.applications.appinfo.DrawOverlayDetails;
import com.android.settings.applications.appinfo.ExternalSourcesDetails;
import com.android.settings.applications.appinfo.WriteSettingsDetails;

View File

@@ -47,7 +47,7 @@ import com.android.settings.applications.ProcessStatsSummary;
import com.android.settings.applications.ProcessStatsUi;
import com.android.settings.applications.UsageAccessDetails;
import com.android.settings.applications.VrListenerSettings;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
import com.android.settings.applications.appinfo.DrawOverlayDetails;
import com.android.settings.applications.appinfo.ExternalSourcesDetails;
import com.android.settings.applications.appinfo.PictureInPictureDetails;

View File

@@ -32,7 +32,7 @@ import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.applications.AppStateBaseBridge;
import com.android.settings.applications.InstalledAppDetails;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
import com.android.settings.core.FeatureFlags;
import com.android.settings.datausage.AppStateDataUsageBridge.DataUsageState;
import com.android.settings.overlay.FeatureFactory;

View File

@@ -25,7 +25,7 @@ import android.util.FeatureFlagUtils;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.applications.InstalledAppDetails;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
import com.android.settings.core.FeatureFlags;
import com.android.settings.widget.AppPreference;
import com.android.settingslib.core.lifecycle.Lifecycle;

View File

@@ -45,7 +45,7 @@ import com.android.settings.Utils;
import com.android.settings.applications.AppInfoBase;
import com.android.settings.applications.InstalledAppDetails;
import com.android.settings.applications.LayoutPreference;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
import com.android.settings.core.FeatureFlags;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.applications.ApplicationsState;

View File

@@ -1,4 +1,4 @@
com.android.settings.applications.AppInfoDashboardFragment
com.android.settings.applications.appinfo.AppInfoDashboardFragment
com.android.settings.bluetooth.DevicePickerFragment
com.android.settings.bluetooth.BluetoothDeviceDetailsFragment
com.android.settings.bluetooth.BluetoothPairingDetail

View File

@@ -40,7 +40,6 @@ import com.android.internal.os.BatterySipper;
import com.android.internal.os.BatteryStatsHelper;
import com.android.settings.SettingsActivity;
import com.android.settings.TestConfig;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.fuelgauge.BatteryUtils;
import com.android.settings.testutils.SettingsRobolectricTestRunner;

View File

@@ -37,7 +37,6 @@ import android.os.Bundle;
import android.support.v7.preference.Preference;
import com.android.settings.TestConfig;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.datausage.AppDataUsage;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settingslib.applications.ApplicationsState.AppEntry;

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.android.settings.applications;
package com.android.settings.applications.appinfo;
import static com.google.common.truth.Truth.assertThat;
@@ -32,6 +32,7 @@ import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.UserInfo;
import android.content.res.Resources;
import android.os.UserManager;
@@ -59,7 +60,9 @@ import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import org.robolectric.util.ReflectionHelpers;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
@RunWith(SettingsRobolectricTestRunner.class)
@Config(
@@ -84,7 +87,7 @@ public final class AppInfoDashboardFragmentTest {
private AppOpsManager mAppOpsManager;
private FakeFeatureFactory mFeatureFactory;
private AppInfoDashboardFragment mAppDetail;
private AppInfoDashboardFragment mFragment;
private Context mShadowContext;
@@ -93,12 +96,12 @@ public final class AppInfoDashboardFragmentTest {
MockitoAnnotations.initMocks(this);
mFeatureFactory = FakeFeatureFactory.setupForTest();
mShadowContext = RuntimeEnvironment.application;
mAppDetail = spy(new AppInfoDashboardFragment());
doReturn(mActivity).when(mAppDetail).getActivity();
doReturn(mShadowContext).when(mAppDetail).getContext();
mFragment = spy(new AppInfoDashboardFragment());
doReturn(mActivity).when(mFragment).getActivity();
doReturn(mShadowContext).when(mFragment).getContext();
doReturn(mPackageManager).when(mActivity).getPackageManager();
doReturn(mAppOpsManager).when(mActivity).getSystemService(Context.APP_OPS_SERVICE);
mAppDetail.mActionButtons = ActionButtonPreferenceTest.createMock();
mFragment.mActionButtons = ActionButtonPreferenceTest.createMock();
// Default to not considering any apps to be instant (individual tests can override this).
ReflectionHelpers.setStaticField(AppUtils.class, "sInstantAppDataProvider",
@@ -109,68 +112,68 @@ public final class AppInfoDashboardFragmentTest {
public void shouldShowUninstallForAll_installForOneOtherUserOnly_shouldReturnTrue() {
when(mDevicePolicyManager.packageHasActiveAdmins(nullable(String.class))).thenReturn(false);
when(mUserManager.getUsers().size()).thenReturn(2);
ReflectionHelpers.setField(mAppDetail, "mDpm", mDevicePolicyManager);
ReflectionHelpers.setField(mAppDetail, "mUserManager", mUserManager);
ReflectionHelpers.setField(mFragment, "mDpm", mDevicePolicyManager);
ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);
final ApplicationInfo info = new ApplicationInfo();
info.enabled = true;
final AppEntry appEntry = mock(AppEntry.class);
appEntry.info = info;
final PackageInfo packageInfo = mock(PackageInfo.class);
ReflectionHelpers.setField(mAppDetail, "mPackageInfo", packageInfo);
ReflectionHelpers.setField(mFragment, "mPackageInfo", packageInfo);
assertThat(mAppDetail.shouldShowUninstallForAll(appEntry)).isTrue();
assertThat(mFragment.shouldShowUninstallForAll(appEntry)).isTrue();
}
@Test
public void shouldShowUninstallForAll_installForSelfOnly_shouldReturnFalse() {
when(mDevicePolicyManager.packageHasActiveAdmins(nullable(String.class))).thenReturn(false);
when(mUserManager.getUsers().size()).thenReturn(2);
ReflectionHelpers.setField(mAppDetail, "mDpm", mDevicePolicyManager);
ReflectionHelpers.setField(mAppDetail, "mUserManager", mUserManager);
ReflectionHelpers.setField(mFragment, "mDpm", mDevicePolicyManager);
ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);
final ApplicationInfo info = new ApplicationInfo();
info.flags = ApplicationInfo.FLAG_INSTALLED;
info.enabled = true;
final AppEntry appEntry = mock(AppEntry.class);
appEntry.info = info;
final PackageInfo packageInfo = mock(PackageInfo.class);
ReflectionHelpers.setField(mAppDetail, "mPackageInfo", packageInfo);
ReflectionHelpers.setField(mFragment, "mPackageInfo", packageInfo);
assertThat(mAppDetail.shouldShowUninstallForAll(appEntry)).isFalse();
assertThat(mFragment.shouldShowUninstallForAll(appEntry)).isFalse();
}
@Test
public void launchFragment_hasNoPackageInfo_shouldFinish() {
ReflectionHelpers.setField(mAppDetail, "mPackageInfo", null);
ReflectionHelpers.setField(mFragment, "mPackageInfo", null);
assertThat(mAppDetail.ensurePackageInfoAvailable(mActivity)).isFalse();
assertThat(mFragment.ensurePackageInfoAvailable(mActivity)).isFalse();
verify(mActivity).finishAndRemoveTask();
}
@Test
public void launchFragment_hasPackageInfo_shouldReturnTrue() {
final PackageInfo packageInfo = mock(PackageInfo.class);
ReflectionHelpers.setField(mAppDetail, "mPackageInfo", packageInfo);
ReflectionHelpers.setField(mFragment, "mPackageInfo", packageInfo);
assertThat(mAppDetail.ensurePackageInfoAvailable(mActivity)).isTrue();
assertThat(mFragment.ensurePackageInfoAvailable(mActivity)).isTrue();
verify(mActivity, never()).finishAndRemoveTask();
}
@Test
public void packageSizeChange_isOtherPackage_shouldNotRefreshUi() {
ReflectionHelpers.setField(mAppDetail, "mPackageName", PACKAGE_NAME);
mAppDetail.onPackageSizeChanged("Not_" + PACKAGE_NAME);
ReflectionHelpers.setField(mFragment, "mPackageName", PACKAGE_NAME);
mFragment.onPackageSizeChanged("Not_" + PACKAGE_NAME);
verify(mAppDetail, never()).refreshUi();
verify(mFragment, never()).refreshUi();
}
@Test
public void packageSizeChange_isOwnPackage_shouldRefreshUi() {
doReturn(Boolean.TRUE).when(mAppDetail).refreshUi();
ReflectionHelpers.setField(mAppDetail, "mPackageName", PACKAGE_NAME);
doReturn(Boolean.TRUE).when(mFragment).refreshUi();
ReflectionHelpers.setField(mFragment, "mPackageName", PACKAGE_NAME);
mAppDetail.onPackageSizeChanged(PACKAGE_NAME);
mFragment.onPackageSizeChanged(PACKAGE_NAME);
verify(mAppDetail).refreshUi();
verify(mFragment).refreshUi();
}
// Tests that we don't show the "uninstall for all users" button for instant apps.
@@ -188,11 +191,11 @@ public final class AppInfoDashboardFragmentTest {
appEntry.info = info;
final PackageInfo packageInfo = mock(PackageInfo.class);
ReflectionHelpers.setField(mAppDetail, "mDpm", mDevicePolicyManager);
ReflectionHelpers.setField(mAppDetail, "mUserManager", mUserManager);
ReflectionHelpers.setField(mAppDetail, "mPackageInfo", packageInfo);
ReflectionHelpers.setField(mFragment, "mDpm", mDevicePolicyManager);
ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);
ReflectionHelpers.setField(mFragment, "mPackageInfo", packageInfo);
assertThat(mAppDetail.shouldShowUninstallForAll(appEntry)).isFalse();
assertThat(mFragment.shouldShowUninstallForAll(appEntry)).isFalse();
}
// Tests that we don't show the uninstall button for instant apps"
@@ -209,12 +212,12 @@ public final class AppInfoDashboardFragmentTest {
final PackageInfo packageInfo = mock(PackageInfo.class);
packageInfo.applicationInfo = info;
ReflectionHelpers.setField(mAppDetail, "mUserManager", mUserManager);
ReflectionHelpers.setField(mAppDetail, "mAppEntry", appEntry);
ReflectionHelpers.setField(mAppDetail, "mPackageInfo", packageInfo);
ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);
ReflectionHelpers.setField(mFragment, "mAppEntry", appEntry);
ReflectionHelpers.setField(mFragment, "mPackageInfo", packageInfo);
mAppDetail.initUninstallButtonForUserApp();
verify(mAppDetail.mActionButtons).setButton1Visible(false);
mFragment.initUninstallButtonForUserApp();
verify(mFragment.mActionButtons).setButton1Visible(false);
}
// Tests that we don't show the force stop button for instant apps (they aren't allowed to run
@@ -229,19 +232,19 @@ public final class AppInfoDashboardFragmentTest {
final ApplicationInfo info = new ApplicationInfo();
appEntry.info = info;
ReflectionHelpers.setField(mAppDetail, "mDpm", mDevicePolicyManager);
ReflectionHelpers.setField(mAppDetail, "mPackageInfo", packageInfo);
ReflectionHelpers.setField(mAppDetail, "mAppEntry", appEntry);
ReflectionHelpers.setField(mFragment, "mDpm", mDevicePolicyManager);
ReflectionHelpers.setField(mFragment, "mPackageInfo", packageInfo);
ReflectionHelpers.setField(mFragment, "mAppEntry", appEntry);
mAppDetail.checkForceStop();
verify(mAppDetail.mActionButtons).setButton2Visible(false);
mFragment.checkForceStop();
verify(mFragment.mActionButtons).setButton2Visible(false);
}
@Test
public void onActivityResult_uninstalledUpdates_shouldInvalidateOptionsMenu() {
doReturn(true).when(mAppDetail).refreshUi();
doReturn(true).when(mFragment).refreshUi();
mAppDetail.onActivityResult(InstalledAppDetails.REQUEST_UNINSTALL, 0, mock(Intent.class));
mFragment.onActivityResult(mFragment.REQUEST_UNINSTALL, 0, mock(Intent.class));
verify(mActivity).invalidateOptionsMenu();
}
@@ -256,11 +259,11 @@ public final class AppInfoDashboardFragmentTest {
final HashSet<String> homePackages = new HashSet<>();
homePackages.add(info.packageName);
ReflectionHelpers.setField(mAppDetail, "mHomePackages", homePackages);
ReflectionHelpers.setField(mAppDetail, "mAppEntry", appEntry);
ReflectionHelpers.setField(mFragment, "mHomePackages", homePackages);
ReflectionHelpers.setField(mFragment, "mAppEntry", appEntry);
assertThat(mAppDetail.handleDisableable()).isFalse();
verify(mAppDetail.mActionButtons).setButton1Text(R.string.disable_text);
assertThat(mFragment.handleDisableable()).isFalse();
verify(mFragment.mActionButtons).setButton1Text(R.string.disable_text);
}
@Test
@@ -276,12 +279,12 @@ public final class AppInfoDashboardFragmentTest {
when(mFeatureFactory.applicationFeatureProvider.getKeepEnabledPackages()).thenReturn(
new HashSet<>());
ReflectionHelpers.setField(mAppDetail, "mApplicationFeatureProvider",
ReflectionHelpers.setField(mFragment, "mApplicationFeatureProvider",
mFeatureFactory.applicationFeatureProvider);
ReflectionHelpers.setField(mAppDetail, "mAppEntry", appEntry);
ReflectionHelpers.setField(mFragment, "mAppEntry", appEntry);
assertThat(mAppDetail.handleDisableable()).isTrue();
verify(mAppDetail.mActionButtons).setButton1Text(R.string.disable_text);
assertThat(mFragment.handleDisableable()).isTrue();
verify(mFragment.mActionButtons).setButton1Text(R.string.disable_text);
}
@Test
@@ -297,13 +300,13 @@ public final class AppInfoDashboardFragmentTest {
when(mFeatureFactory.applicationFeatureProvider.getKeepEnabledPackages()).thenReturn(
new HashSet<>());
ReflectionHelpers.setField(mAppDetail, "mApplicationFeatureProvider",
ReflectionHelpers.setField(mFragment, "mApplicationFeatureProvider",
mFeatureFactory.applicationFeatureProvider);
ReflectionHelpers.setField(mAppDetail, "mAppEntry", appEntry);
ReflectionHelpers.setField(mFragment, "mAppEntry", appEntry);
assertThat(mAppDetail.handleDisableable()).isTrue();
verify(mAppDetail.mActionButtons).setButton1Text(R.string.enable_text);
verify(mAppDetail.mActionButtons).setButton1Positive(true);
assertThat(mFragment.handleDisableable()).isTrue();
verify(mFragment.mActionButtons).setButton1Text(R.string.enable_text);
verify(mFragment.mActionButtons).setButton1Positive(true);
}
@Test
@@ -322,12 +325,12 @@ public final class AppInfoDashboardFragmentTest {
when(mFeatureFactory.applicationFeatureProvider.getKeepEnabledPackages()).thenReturn(
packages);
ReflectionHelpers.setField(mAppDetail, "mApplicationFeatureProvider",
ReflectionHelpers.setField(mFragment, "mApplicationFeatureProvider",
mFeatureFactory.applicationFeatureProvider);
ReflectionHelpers.setField(mAppDetail, "mAppEntry", appEntry);
ReflectionHelpers.setField(mFragment, "mAppEntry", appEntry);
assertThat(mAppDetail.handleDisableable()).isFalse();
verify(mAppDetail.mActionButtons).setButton1Text(R.string.disable_text);
assertThat(mFragment.handleDisableable()).isFalse();
verify(mFragment.mActionButtons).setButton1Text(R.string.disable_text);
}
@Test
@@ -337,12 +340,61 @@ public final class AppInfoDashboardFragmentTest {
info.enabled = true;
final PackageInfo packageInfo = mock(PackageInfo.class);
packageInfo.applicationInfo = info;
ReflectionHelpers.setField(mAppDetail, "mUserManager", mUserManager);
ReflectionHelpers.setField(mAppDetail, "mPackageInfo", packageInfo);
ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);
ReflectionHelpers.setField(mFragment, "mPackageInfo", packageInfo);
mAppDetail.initUninstallButtonForUserApp();
mFragment.initUninstallButtonForUserApp();
verify(mFragment.mActionButtons).setButton1Positive(false);
}
@Test
public void getNumberOfUserWithPackageInstalled_twoUsersInstalled_shouldReturnTwo()
throws PackageManager.NameNotFoundException{
final String packageName = "Package1";
final int userID1 = 1;
final int userID2 = 2;
final List<UserInfo> userInfos = new ArrayList<>();
userInfos.add(new UserInfo(userID1, "User1", UserInfo.FLAG_PRIMARY));
userInfos.add(new UserInfo(userID2, "yue", UserInfo.FLAG_GUEST));
when(mUserManager.getUsers(true)).thenReturn(userInfos);
ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);
final ApplicationInfo appInfo = new ApplicationInfo();
appInfo.flags = ApplicationInfo.FLAG_INSTALLED;
when(mPackageManager.getApplicationInfoAsUser(
packageName, PackageManager.GET_META_DATA, userID1))
.thenReturn(appInfo);
when(mPackageManager.getApplicationInfoAsUser(
packageName, PackageManager.GET_META_DATA, userID2))
.thenReturn(appInfo);
ReflectionHelpers.setField(mFragment, "mPm", mPackageManager);
assertThat(mFragment.getNumberOfUserWithPackageInstalled(packageName)).isEqualTo(2);
}
@Test
public void getNumberOfUserWithPackageInstalled_oneUserInstalled_shouldReturnOne()
throws PackageManager.NameNotFoundException{
final String packageName = "Package1";
final int userID1 = 1;
final int userID2 = 2;
final List<UserInfo> userInfos = new ArrayList<>();
userInfos.add(new UserInfo(userID1, "User1", UserInfo.FLAG_PRIMARY));
userInfos.add(new UserInfo(userID2, "yue", UserInfo.FLAG_GUEST));
when(mUserManager.getUsers(true)).thenReturn(userInfos);
ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);
final ApplicationInfo appInfo = new ApplicationInfo();
appInfo.flags = ApplicationInfo.FLAG_INSTALLED;
when(mPackageManager.getApplicationInfoAsUser(
packageName, PackageManager.GET_META_DATA, userID1))
.thenReturn(appInfo);
when(mPackageManager.getApplicationInfoAsUser(
packageName, PackageManager.GET_META_DATA, userID2))
.thenThrow(new PackageManager.NameNotFoundException());
ReflectionHelpers.setField(mFragment, "mPm", mPackageManager);
assertThat(mFragment.getNumberOfUserWithPackageInstalled(packageName)).isEqualTo(1);
verify(mAppDetail.mActionButtons).setButton1Positive(false);
}
@Implements(Utils.class)

View File

@@ -32,7 +32,6 @@ import android.support.v7.preference.PreferenceScreen;
import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.TestConfig;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.notification.AppNotificationSettings;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settingslib.applications.ApplicationsState;

View File

@@ -39,7 +39,6 @@ import android.os.UserManager;
import android.support.v7.preference.Preference;
import com.android.settings.TestConfig;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before;

View File

@@ -34,7 +34,6 @@ import android.support.v7.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.TestConfig;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.applications.ProcStatsData;
import com.android.settings.applications.ProcessStatsDetail;
import com.android.settings.testutils.SettingsRobolectricTestRunner;

View File

@@ -30,7 +30,6 @@ import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
import com.android.settings.TestConfig;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.notification.AppNotificationSettings;
import com.android.settings.notification.NotificationBackend;
import com.android.settings.testutils.SettingsRobolectricTestRunner;

View File

@@ -32,7 +32,6 @@ import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
import com.android.settings.TestConfig;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.applications.AppLaunchSettings;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settingslib.applications.AppUtils;

View File

@@ -34,7 +34,6 @@ import android.support.v7.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.TestConfig;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settingslib.applications.ApplicationsState;

View File

@@ -32,7 +32,6 @@ import android.os.Bundle;
import android.support.v7.preference.Preference;
import com.android.settings.TestConfig;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.applications.AppStorageSettings;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settingslib.applications.ApplicationsState.AppEntry;

View File

@@ -25,7 +25,6 @@ import android.content.pm.PackageInfo;
import android.support.v7.preference.Preference;
import com.android.settings.TestConfig;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before;

View File

@@ -31,7 +31,6 @@ import android.support.v7.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.TestConfig;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.applications.DefaultAppSettings;
import com.android.settings.testutils.SettingsRobolectricTestRunner;

View File

@@ -32,7 +32,6 @@ import android.os.UserManager;
import android.support.v7.preference.Preference;
import com.android.settings.TestConfig;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before;

View File

@@ -28,7 +28,6 @@ import android.os.UserManager;
import android.support.v7.preference.Preference;
import com.android.settings.TestConfig;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before;

View File

@@ -34,7 +34,6 @@ import android.support.v7.preference.PreferenceScreen;
import android.view.View;
import com.android.settings.TestConfig;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.applications.LayoutPreference;
import com.android.settings.applications.instantapps.InstantAppButtonsController;
import com.android.settings.testutils.FakeFeatureFactory;

View File

@@ -18,8 +18,6 @@ package com.android.settings.applications.appinfo;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
@@ -34,7 +32,6 @@ import android.util.ArraySet;
import com.android.settings.TestConfig;
import com.android.settings.applications.AppDomainsPreference;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.applications.instantapps.InstantAppDataProvider;

View File

@@ -29,7 +29,6 @@ import android.support.v7.preference.Preference;
import com.android.settings.R;
import com.android.settings.TestConfig;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before;

View File

@@ -32,7 +32,6 @@ import android.os.UserManager;
import android.support.v7.preference.Preference;
import com.android.settings.TestConfig;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before;

View File

@@ -41,7 +41,7 @@ import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.TestConfig;
import com.android.settings.applications.InstalledAppDetails;
import com.android.settings.applications.AppInfoDashboardFragment;
import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
import com.android.settings.core.FeatureFlags;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.widget.AppPreference;

View File

@@ -35,6 +35,7 @@ import static org.mockito.Mockito.when;
@RunWith(AndroidJUnit4.class)
@SmallTest
@Deprecated
public class PackageUtilTest {
private static final String ALL_USERS_APP_NAME = "com.google.allusers.app";
private static final String ONE_USER_APP_NAME = "com.google.oneuser.app";

View File

@@ -20,6 +20,7 @@ import android.content.Intent;
import android.support.test.filters.SmallTest;
import android.support.test.uiautomator.UiDevice;
import android.support.test.uiautomator.UiObject;
import android.support.test.uiautomator.UiObjectNotFoundException;
import android.support.test.uiautomator.UiScrollable;
import android.support.test.uiautomator.UiSelector;
import android.test.InstrumentationTestCase;
@@ -79,9 +80,15 @@ public class SpecialAppAccessSettingsTest extends InstrumentationTestCase {
final String titleSpecialApps = mTargetContext.getResources().getString(
R.string.special_access);
try {
// scollbar may or may not be present, depending on how many recents app are there. If
// the page is scrollable, scroll to the bottom to show the special app access settings.
final UiScrollable settings = new UiScrollable(
new UiSelector().packageName(mTargetContext.getPackageName()).scrollable(true));
settings.scrollTextIntoView(titleSpecialApps);
} catch (UiObjectNotFoundException e) {
// ignore
}
mDevice.findObject(new UiSelector().text(titleSpecialApps)).click();
}