Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d81224b7 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

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

parents f1418dc4 f31d3862
Loading
Loading
Loading
Loading
+25 −1
Original line number Diff line number Diff line
@@ -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
+22 −1
Original line number Diff line number Diff line
@@ -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,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())