Merge "Update permission summary when permission changing." into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
d81224b7d4
@@ -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
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user