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.ActivityNotFoundException;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.icu.text.ListFormatter;
|
import android.icu.text.ListFormatter;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@@ -28,15 +29,24 @@ import androidx.preference.Preference;
|
|||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settingslib.applications.PermissionsSummaryHelper;
|
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.ArrayList;
|
||||||
import java.util.List;
|
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 TAG = "PermissionPrefControl";
|
||||||
private static final String EXTRA_HIDE_INFO_BUTTON = "hideInfoButton";
|
private static final String EXTRA_HIDE_INFO_BUTTON = "hideInfoButton";
|
||||||
|
|
||||||
|
private final PackageManager mPackageManager;
|
||||||
|
|
||||||
private String mPackageName;
|
private String mPackageName;
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
@@ -73,8 +83,22 @@ public class AppPermissionPreferenceController extends AppInfoPreferenceControll
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private final PackageManager.OnPermissionsChangedListener mOnPermissionsChangedListener =
|
||||||
|
uid -> updateState(mPreference);
|
||||||
|
|
||||||
public AppPermissionPreferenceController(Context context, String key) {
|
public AppPermissionPreferenceController(Context context, String key) {
|
||||||
super(context, key);
|
super(context, key);
|
||||||
|
mPackageManager = context.getPackageManager();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart() {
|
||||||
|
mPackageManager.addOnPermissionsChangeListener(mOnPermissionsChangedListener);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStop() {
|
||||||
|
mPackageManager.removeOnPermissionsChangeListener(mOnPermissionsChangedListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -28,6 +28,7 @@ import static org.mockito.Mockito.when;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
@@ -43,6 +44,7 @@ import org.mockito.Mock;
|
|||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
|
import org.robolectric.util.ReflectionHelpers;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
@@ -57,6 +59,8 @@ public class AppPermissionPreferenceControllerTest {
|
|||||||
private PreferenceScreen mScreen;
|
private PreferenceScreen mScreen;
|
||||||
@Mock
|
@Mock
|
||||||
private Preference mPreference;
|
private Preference mPreference;
|
||||||
|
@Mock
|
||||||
|
private PackageManager mPackageManager;
|
||||||
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private AppPermissionPreferenceController mController;
|
private AppPermissionPreferenceController mController;
|
||||||
@@ -68,6 +72,7 @@ public class AppPermissionPreferenceControllerTest {
|
|||||||
mController = new AppPermissionPreferenceController(mContext, "permission_settings");
|
mController = new AppPermissionPreferenceController(mContext, "permission_settings");
|
||||||
mController.setPackageName("package1");
|
mController.setPackageName("package1");
|
||||||
mController.setParentFragment(mFragment);
|
mController.setParentFragment(mFragment);
|
||||||
|
ReflectionHelpers.setField(mController, "mPackageManager", mPackageManager);
|
||||||
|
|
||||||
when(mScreen.findPreference(any())).thenReturn(mPreference);
|
when(mScreen.findPreference(any())).thenReturn(mPreference);
|
||||||
final String key = mController.getPreferenceKey();
|
final String key = mController.getPreferenceKey();
|
||||||
@@ -75,10 +80,26 @@ public class AppPermissionPreferenceControllerTest {
|
|||||||
when(mFragment.getActivity()).thenReturn(mActivity);
|
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
|
@Test
|
||||||
public void getAvailabilityStatus_isAlwaysAvailable() {
|
public void getAvailabilityStatus_isAlwaysAvailable() {
|
||||||
assertThat(mController.getAvailabilityStatus())
|
assertThat(mController.getAvailabilityStatus())
|
||||||
.isEqualTo(AppPermissionPreferenceController.AVAILABLE);
|
.isEqualTo(AppPermissionPreferenceController.AVAILABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Reference in New Issue
Block a user