Loading src/com/android/settings/applications/appinfo/AppPermissionPreferenceController.java +25 −1 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 Loading Loading @@ -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 Loading tests/robotests/src/com/android/settings/applications/appinfo/AppPermissionPreferenceControllerTest.java +22 −1 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -57,6 +59,8 @@ public class AppPermissionPreferenceControllerTest { private PreferenceScreen mScreen; @Mock private Preference mPreference; @Mock private PackageManager mPackageManager; private Context mContext; private AppPermissionPreferenceController mController; Loading @@ -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(); Loading @@ -75,6 +80,22 @@ 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()) Loading Loading
src/com/android/settings/applications/appinfo/AppPermissionPreferenceController.java +25 −1 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 Loading Loading @@ -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 Loading
tests/robotests/src/com/android/settings/applications/appinfo/AppPermissionPreferenceControllerTest.java +22 −1 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -57,6 +59,8 @@ public class AppPermissionPreferenceControllerTest { private PreferenceScreen mScreen; @Mock private Preference mPreference; @Mock private PackageManager mPackageManager; private Context mContext; private AppPermissionPreferenceController mController; Loading @@ -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(); Loading @@ -75,6 +80,22 @@ 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()) Loading