// We have not yet set the property to show the Permissions Hub.
assertThat(mController.isAvailable()).isEqualTo(false);
}
-
- @Test
- public void isAvailable_permissionHubEnabled_shouldReturnTrue() {
- DeviceConfig.setProperty(DeviceConfig.NAMESPACE_PRIVACY,
- Utils.PROPERTY_PERMISSIONS_HUB_ENABLED, "true", true);
-
- assertThat(mController.isAvailable()).isEqualTo(true);
- }
-
- /** Verifies the title text, details text are correct, and the click listener is set. */
- @Test
- @Ignore
- public void updateState_whenAppListIsEmpty_shouldDisplayTitleTextAndDetailsText() {
- doReturn(new ArrayList<>()).when(mRecentLocationApps).getAppListSorted();
- mController.displayPreference(mScreen);
- mController.updateState(mLayoutPreference);
-
- final TextView title = mAppEntitiesHeaderView.findViewById(R.id.header_title);
- assertThat(title.getText()).isEqualTo(
- mContext.getText(R.string.location_category_recent_location_access));
- final TextView details = mAppEntitiesHeaderView.findViewById(R.id.header_details);
- assertThat(details.getText()).isEqualTo(
- mContext.getText(R.string.location_recent_location_access_view_details));
- assertThat(details.hasOnClickListeners()).isTrue();
- }
-
- @Test
- public void updateState_whenAppListMoreThanThree_shouldDisplayTopThreeApps() {
- final List<RecentLocationAccesses.Access> accesses = createMockAccesses(6);
- doReturn(accesses).when(mRecentLocationApps).getAppListSorted();
- mController.displayPreference(mScreen);
- mController.updateState(mLayoutPreference);
-
- // The widget can display the top 3 apps from the list when there're more than 3.
- final View app1View = mAppEntitiesHeaderView.findViewById(R.id.app1_view);
- final ImageView appIconView1 = app1View.findViewById(R.id.app_icon);
- final TextView appTitle1 = app1View.findViewById(R.id.app_title);
-
- assertThat(app1View.getVisibility()).isEqualTo(View.VISIBLE);
- assertThat(appIconView1.getDrawable()).isNotNull();
- assertThat(appTitle1.getText()).isEqualTo("appTitle0");
-
- final View app2View = mAppEntitiesHeaderView.findViewById(R.id.app2_view);
- final ImageView appIconView2 = app2View.findViewById(R.id.app_icon);
- final TextView appTitle2 = app2View.findViewById(R.id.app_title);
-
- assertThat(app2View.getVisibility()).isEqualTo(View.VISIBLE);
- assertThat(appIconView2.getDrawable()).isNotNull();
- assertThat(appTitle2.getText()).isEqualTo("appTitle1");
-
- final View app3View = mAppEntitiesHeaderView.findViewById(R.id.app3_view);
- final ImageView appIconView3 = app3View.findViewById(R.id.app_icon);
- final TextView appTitle3 = app3View.findViewById(R.id.app_title);
-
- assertThat(app3View.getVisibility()).isEqualTo(View.VISIBLE);
- assertThat(appIconView3.getDrawable()).isNotNull();
- assertThat(appTitle3.getText()).isEqualTo("appTitle2");
- }
-
- private List<RecentLocationAccesses.Access> createMockAccesses(int count) {
- final List<RecentLocationAccesses.Access> accesses = new ArrayList<>();
- for (int i = 0; i < count; i++) {
- final Drawable icon = mock(Drawable.class);
- // Add mock accesses
- final RecentLocationAccesses.Access access = new RecentLocationAccesses.Access(
- "packageName", android.os.Process.myUserHandle(), icon,
- "appTitle" + i, "appSummary" + i, 1000 - i);
- accesses.add(access);
- }
- return accesses;
- }
}
// We have not yet set the property to show the Permissions Hub.
assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
}
-
- @Test
- public void getAvailabilityStatus_permissionHubEnabled_shouldReturnAvailableUnsearchable() {
- DeviceConfig.setProperty(DeviceConfig.NAMESPACE_PRIVACY,
- Utils.PROPERTY_PERMISSIONS_HUB_ENABLED,
- "true", true);
-
- assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE_UNSEARCHABLE);
- }
-
- @Test
- public void displayPreference_shouldInitializeBarChart() {
- mController.displayPreference(mScreen);
-
- 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<>();
- final RuntimePermissionUsageInfo info1 =
- new RuntimePermissionUsageInfo("permission 1", 10);
- infos1.add(info1);
- mController.displayPreference(mScreen);
- mController.onPermissionUsageResult(infos1);
-
- verify(mPreference).setBarViewInfos(any(BarViewInfo[].class));
-
- final List<RuntimePermissionUsageInfo> infos2 = new ArrayList<>();
- final RuntimePermissionUsageInfo info2 =
- new RuntimePermissionUsageInfo("permission 2", 20);
- infos2.add(info2);
- mController.onPermissionUsageResult(infos2);
-
- verify(mPreference, times(2)).setBarViewInfos(any(BarViewInfo[].class));
- }
-
- @Test
- public void onPermissionUsageResult_samePermissionResultSet_shouldNotSetBarViewInfos() {
- final List<RuntimePermissionUsageInfo> mInfos = new ArrayList<>();
- final RuntimePermissionUsageInfo info1 =
- new RuntimePermissionUsageInfo("permission 1", 10);
- mInfos.add(info1);
- mController.displayPreference(mScreen);
- mController.onPermissionUsageResult(mInfos);
-
- mController.onPermissionUsageResult(mInfos);
-
- verify(mPreference, times(1)).setBarViewInfos(any(BarViewInfo[].class));
- }
-
- @Test
- public void onStart_usageInfosNotSetAndPermissionHubEnabled_shouldShowProgressBar() {
- DeviceConfig.setProperty(DeviceConfig.NAMESPACE_PRIVACY,
- Utils.PROPERTY_PERMISSIONS_HUB_ENABLED,
- "true", true);
- mController.displayPreference(mScreen);
-
- mController.onStart();
-
- verify(mFragment).setLoadingEnabled(true /* enabled */);
- verify(mPreference).updateLoadingState(true /* isLoading */);
- }
-
- @Test
- public void onStart_usageInfosSetAndPermissionHubEnabled_shouldNotUpdatePrefLoadingState() {
- DeviceConfig.setProperty(DeviceConfig.NAMESPACE_PRIVACY,
- Utils.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.NAMESPACE_PRIVACY,
- Utils.PROPERTY_PERMISSIONS_HUB_ENABLED,
- "false", true);
-
- mController.onStart();
-
- verify(mFragment, never()).setLoadingEnabled(true /* enabled */);
- verify(mPreference, never()).updateLoadingState(true /* isLoading */);
- }
-
- @Test
- public void onPermissionUsageResult_shouldHideProgressBar() {
- final List<RuntimePermissionUsageInfo> infos1 = new ArrayList<>();
- final RuntimePermissionUsageInfo info1 =
- new RuntimePermissionUsageInfo("permission 1", 10);
- infos1.add(info1);
- mController.displayPreference(mScreen);
-
- mController.onPermissionUsageResult(infos1);
-
- verify(mFragment).setLoadingEnabled(false /* enabled */);
- verify(mPreference).updateLoadingState(false /* isLoading */);
- }
-
- @Test
- public void onPermissionUsageResult_shouldBeSorted() {
- final List<RuntimePermissionUsageInfo> infos = new ArrayList<>();
- infos.add(new RuntimePermissionUsageInfo(PHONE, 10));
- infos.add(new RuntimePermissionUsageInfo(LOCATION, 10));
- infos.add(new RuntimePermissionUsageInfo(CAMERA, 10));
- infos.add(new RuntimePermissionUsageInfo(SMS, 1));
- infos.add(new RuntimePermissionUsageInfo(MICROPHONE, 10));
- infos.add(new RuntimePermissionUsageInfo(CONTACTS, 42));
- infos.add(new RuntimePermissionUsageInfo(CALENDAR, 10));
- mController.displayPreference(mScreen);
-
- mController.onPermissionUsageResult(infos);
-
- assertThat(infos.get(0).getName()).isEqualTo(CONTACTS);
- assertThat(infos.get(1).getName()).isEqualTo(LOCATION);
- assertThat(infos.get(2).getName()).isEqualTo(MICROPHONE);
- assertThat(infos.get(3).getName()).isEqualTo(CAMERA);
- assertThat(infos.get(4).getName()).isEqualTo(CALENDAR);
- assertThat(infos.get(5).getName()).isEqualTo(PHONE);
- assertThat(infos.get(6).getName()).isEqualTo(SMS);
- }
}