Loading src/com/android/settings/privacy/PermissionBarChartPreferenceController.java +27 −3 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.permission.PermissionControllerManager; import android.permission.RuntimePermissionUsageInfo; import android.provider.DeviceConfig; Loading @@ -31,12 +32,15 @@ import android.util.Log; import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import com.android.settingslib.Utils; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnCreate; import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState; import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.widget.BarChartInfo; import com.android.settingslib.widget.BarChartPreference; Loading @@ -48,14 +52,17 @@ import java.util.List; public class PermissionBarChartPreferenceController extends BasePreferenceController implements PermissionControllerManager.OnPermissionUsageResultCallback, LifecycleObserver, OnStart { PermissionControllerManager.OnPermissionUsageResultCallback, LifecycleObserver, OnCreate, OnStart, OnSaveInstanceState { private static final String TAG = "BarChartPreferenceCtl"; private static final String KEY_PERMISSION_USAGE = "usage_infos"; @VisibleForTesting List<RuntimePermissionUsageInfo> mOldUsageInfos; private PackageManager mPackageManager; private PrivacyDashboardFragment mParent; private BarChartPreference mBarChartPreference; private List<RuntimePermissionUsageInfo> mOldUsageInfos; public PermissionBarChartPreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); Loading @@ -67,6 +74,18 @@ public class PermissionBarChartPreferenceController extends BasePreferenceContro mParent = fragment; } @Override public void onCreate(Bundle savedInstanceState) { if (savedInstanceState != null) { mOldUsageInfos = savedInstanceState.getParcelableArrayList(KEY_PERMISSION_USAGE); } } @Override public void onSaveInstanceState(Bundle outState) { outState.putParcelableList(KEY_PERMISSION_USAGE, mOldUsageInfos); } @Override public int getAvailabilityStatus() { return Boolean.parseBoolean( Loading @@ -92,6 +111,9 @@ public class PermissionBarChartPreferenceController extends BasePreferenceContro .build(); mBarChartPreference.initializeBarChart(info); if (!mOldUsageInfos.isEmpty()) { mBarChartPreference.setBarViewInfos(createBarViews(mOldUsageInfos)); } } @Override Loading @@ -100,7 +122,9 @@ public class PermissionBarChartPreferenceController extends BasePreferenceContro return; } mBarChartPreference.updateLoadingState(true /* isLoading */); // We don't hide chart when we have existing data. mBarChartPreference.updateLoadingState(mOldUsageInfos.isEmpty() /* isLoading */); // But we still need to hint user with progress bar that we are updating new usage data. mParent.setLoadingEnabled(true /* enabled */); retrievePermissionUsageData(); } Loading tests/robotests/src/com/android/settings/privacy/PermissionBarChartPreferenceControllerTest.java +28 −1 Original line number Diff line number Diff line Loading @@ -124,6 +124,18 @@ public class PermissionBarChartPreferenceControllerTest { verify(mPreference).initializeBarChart(any(BarChartInfo.class)); } @Test public void displayPreference_usageInfosSet_shouldSetBarViewInfos() { final RuntimePermissionUsageInfo info1 = new RuntimePermissionUsageInfo("permission 1", 10); mController.mOldUsageInfos.add(info1); mController.displayPreference(mScreen); verify(mPreference).setBarViewInfos(any(BarViewInfo[].class)); verify(mPreference).initializeBarChart(any(BarChartInfo.class)); } @Test public void onPermissionUsageResult_differentPermissionResultSet_shouldSetBarViewInfos() { final List<RuntimePermissionUsageInfo> infos1 = new ArrayList<>(); Loading Loading @@ -159,7 +171,7 @@ public class PermissionBarChartPreferenceControllerTest { } @Test public void onStart_permissionHubEnabled_shouldShowProgressBar() { public void onStart_usageInfosNotSetAndPermissionHubEnabled_shouldShowProgressBar() { DeviceConfig.setProperty(DeviceConfig.Privacy.NAMESPACE, DeviceConfig.Privacy.PROPERTY_PERMISSIONS_HUB_ENABLED, "true", true); mController.displayPreference(mScreen); Loading @@ -170,6 +182,21 @@ public class PermissionBarChartPreferenceControllerTest { verify(mPreference).updateLoadingState(true /* isLoading */); } @Test public void onStart_usageInfosSetAndPermissionHubEnabled_shouldNotUpdatePrefLoadingState() { DeviceConfig.setProperty(DeviceConfig.Privacy.NAMESPACE, DeviceConfig.Privacy.PROPERTY_PERMISSIONS_HUB_ENABLED, "true", true); final RuntimePermissionUsageInfo info1 = new RuntimePermissionUsageInfo("permission 1", 10); mController.mOldUsageInfos.add(info1); mController.displayPreference(mScreen); mController.onStart(); verify(mFragment).setLoadingEnabled(true /* enabled */); verify(mPreference).updateLoadingState(false /* isLoading */); } @Test public void onStart_permissionHubDisabled_shouldNotShowProgressBar() { DeviceConfig.setProperty(DeviceConfig.Privacy.NAMESPACE, Loading Loading
src/com/android/settings/privacy/PermissionBarChartPreferenceController.java +27 −3 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.permission.PermissionControllerManager; import android.permission.RuntimePermissionUsageInfo; import android.provider.DeviceConfig; Loading @@ -31,12 +32,15 @@ import android.util.Log; import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import com.android.settingslib.Utils; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnCreate; import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState; import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.widget.BarChartInfo; import com.android.settingslib.widget.BarChartPreference; Loading @@ -48,14 +52,17 @@ import java.util.List; public class PermissionBarChartPreferenceController extends BasePreferenceController implements PermissionControllerManager.OnPermissionUsageResultCallback, LifecycleObserver, OnStart { PermissionControllerManager.OnPermissionUsageResultCallback, LifecycleObserver, OnCreate, OnStart, OnSaveInstanceState { private static final String TAG = "BarChartPreferenceCtl"; private static final String KEY_PERMISSION_USAGE = "usage_infos"; @VisibleForTesting List<RuntimePermissionUsageInfo> mOldUsageInfos; private PackageManager mPackageManager; private PrivacyDashboardFragment mParent; private BarChartPreference mBarChartPreference; private List<RuntimePermissionUsageInfo> mOldUsageInfos; public PermissionBarChartPreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); Loading @@ -67,6 +74,18 @@ public class PermissionBarChartPreferenceController extends BasePreferenceContro mParent = fragment; } @Override public void onCreate(Bundle savedInstanceState) { if (savedInstanceState != null) { mOldUsageInfos = savedInstanceState.getParcelableArrayList(KEY_PERMISSION_USAGE); } } @Override public void onSaveInstanceState(Bundle outState) { outState.putParcelableList(KEY_PERMISSION_USAGE, mOldUsageInfos); } @Override public int getAvailabilityStatus() { return Boolean.parseBoolean( Loading @@ -92,6 +111,9 @@ public class PermissionBarChartPreferenceController extends BasePreferenceContro .build(); mBarChartPreference.initializeBarChart(info); if (!mOldUsageInfos.isEmpty()) { mBarChartPreference.setBarViewInfos(createBarViews(mOldUsageInfos)); } } @Override Loading @@ -100,7 +122,9 @@ public class PermissionBarChartPreferenceController extends BasePreferenceContro return; } mBarChartPreference.updateLoadingState(true /* isLoading */); // We don't hide chart when we have existing data. mBarChartPreference.updateLoadingState(mOldUsageInfos.isEmpty() /* isLoading */); // But we still need to hint user with progress bar that we are updating new usage data. mParent.setLoadingEnabled(true /* enabled */); retrievePermissionUsageData(); } Loading
tests/robotests/src/com/android/settings/privacy/PermissionBarChartPreferenceControllerTest.java +28 −1 Original line number Diff line number Diff line Loading @@ -124,6 +124,18 @@ public class PermissionBarChartPreferenceControllerTest { verify(mPreference).initializeBarChart(any(BarChartInfo.class)); } @Test public void displayPreference_usageInfosSet_shouldSetBarViewInfos() { final RuntimePermissionUsageInfo info1 = new RuntimePermissionUsageInfo("permission 1", 10); mController.mOldUsageInfos.add(info1); mController.displayPreference(mScreen); verify(mPreference).setBarViewInfos(any(BarViewInfo[].class)); verify(mPreference).initializeBarChart(any(BarChartInfo.class)); } @Test public void onPermissionUsageResult_differentPermissionResultSet_shouldSetBarViewInfos() { final List<RuntimePermissionUsageInfo> infos1 = new ArrayList<>(); Loading Loading @@ -159,7 +171,7 @@ public class PermissionBarChartPreferenceControllerTest { } @Test public void onStart_permissionHubEnabled_shouldShowProgressBar() { public void onStart_usageInfosNotSetAndPermissionHubEnabled_shouldShowProgressBar() { DeviceConfig.setProperty(DeviceConfig.Privacy.NAMESPACE, DeviceConfig.Privacy.PROPERTY_PERMISSIONS_HUB_ENABLED, "true", true); mController.displayPreference(mScreen); Loading @@ -170,6 +182,21 @@ public class PermissionBarChartPreferenceControllerTest { verify(mPreference).updateLoadingState(true /* isLoading */); } @Test public void onStart_usageInfosSetAndPermissionHubEnabled_shouldNotUpdatePrefLoadingState() { DeviceConfig.setProperty(DeviceConfig.Privacy.NAMESPACE, DeviceConfig.Privacy.PROPERTY_PERMISSIONS_HUB_ENABLED, "true", true); final RuntimePermissionUsageInfo info1 = new RuntimePermissionUsageInfo("permission 1", 10); mController.mOldUsageInfos.add(info1); mController.displayPreference(mScreen); mController.onStart(); verify(mFragment).setLoadingEnabled(true /* enabled */); verify(mPreference).updateLoadingState(false /* isLoading */); } @Test public void onStart_permissionHubDisabled_shouldNotShowProgressBar() { DeviceConfig.setProperty(DeviceConfig.Privacy.NAMESPACE, Loading