Merge "Update permission summary when permission changing." into rvc-dev

This commit is contained in:
TreeHugger Robot
2020-04-06 05:22:01 +00:00
committed by Android (Google) Code Review
2 changed files with 47 additions and 2 deletions

View File

@@ -19,6 +19,7 @@ package com.android.settings.applications.appinfo;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.icu.text.ListFormatter;
import android.util.Log;
@@ -28,15 +29,24 @@ import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settingslib.applications.PermissionsSummaryHelper;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;
import java.util.ArrayList;
import java.util.List;
public class AppPermissionPreferenceController extends AppInfoPreferenceControllerBase {
/**
* A PreferenceController handling the logic for permissions of apps.
*/
public class AppPermissionPreferenceController extends AppInfoPreferenceControllerBase implements
LifecycleObserver, OnStart, OnStop {
private static final String TAG = "PermissionPrefControl";
private static final String EXTRA_HIDE_INFO_BUTTON = "hideInfoButton";
private final PackageManager mPackageManager;
private String mPackageName;
@VisibleForTesting
@@ -73,8 +83,22 @@ public class AppPermissionPreferenceController extends AppInfoPreferenceControll
}
};
private final PackageManager.OnPermissionsChangedListener mOnPermissionsChangedListener =
uid -> updateState(mPreference);
public AppPermissionPreferenceController(Context context, String key) {
super(context, key);
mPackageManager = context.getPackageManager();
}
@Override
public void onStart() {
mPackageManager.addOnPermissionsChangeListener(mOnPermissionsChangedListener);
}
@Override
public void onStop() {
mPackageManager.removeOnPermissionsChangeListener(mOnPermissionsChangedListener);
}
@Override

View File

@@ -28,6 +28,7 @@ import static org.mockito.Mockito.when;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
@@ -43,6 +44,7 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.util.ReflectionHelpers;
import java.util.ArrayList;
@@ -57,6 +59,8 @@ public class AppPermissionPreferenceControllerTest {
private PreferenceScreen mScreen;
@Mock
private Preference mPreference;
@Mock
private PackageManager mPackageManager;
private Context mContext;
private AppPermissionPreferenceController mController;
@@ -68,6 +72,7 @@ public class AppPermissionPreferenceControllerTest {
mController = new AppPermissionPreferenceController(mContext, "permission_settings");
mController.setPackageName("package1");
mController.setParentFragment(mFragment);
ReflectionHelpers.setField(mController, "mPackageManager", mPackageManager);
when(mScreen.findPreference(any())).thenReturn(mPreference);
final String key = mController.getPreferenceKey();
@@ -75,10 +80,26 @@ public class AppPermissionPreferenceControllerTest {
when(mFragment.getActivity()).thenReturn(mActivity);
}
@Test
public void onStart_shouldAddPermissionsChangeListener() {
mController.onStart();
verify(mPackageManager).addOnPermissionsChangeListener(
any(PackageManager.OnPermissionsChangedListener.class));
}
@Test
public void onStop_shouldRemovePermissionsChangeListener() {
mController.onStop();
verify(mPackageManager).removeOnPermissionsChangeListener(
any(PackageManager.OnPermissionsChangedListener.class));
}
@Test
public void getAvailabilityStatus_isAlwaysAvailable() {
assertThat(mController.getAvailabilityStatus())
.isEqualTo(AppPermissionPreferenceController.AVAILABLE);
.isEqualTo(AppPermissionPreferenceController.AVAILABLE);
}
@Test