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.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

View File

@@ -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