From c364f5d95d343efa98cad809268ec119b13b9a1d Mon Sep 17 00:00:00 2001 From: Alex Kershaw Date: Tue, 31 Mar 2020 11:37:53 +0100 Subject: [PATCH] Remove policy transparency for cross-profile calendar setting We will likely deprecate this setting in the next release, to be replaced by usage of 'connected work and personal apps'. However, we are keeping it in this release as it's still possible that a lightweight calendar access API could be useful, if the admin and user approvals are combined. For now, the error message that refers to cross-profile calendar when the setting is disabled is confusing admins, since we're not recommending usage of this API at this time. Remove the setting when it is disabled, rather than showing policy transparency. Fixes: 143477431 Test: manual Change-Id: I65573a5ba892e12a4dabcdf23541f33516db0a8a --- res/values/strings.xml | 3 - res/xml/managed_profile_settings.xml | 8 -- ...eCalendarDisabledPreferenceController.java | 47 --------- .../accounts/ManagedProfileSettings.java | 1 - ...endarDisabledPreferenceControllerTest.java | 99 ------------------- tests/uitests/assets/search_results_list | 1 - 6 files changed, 159 deletions(-) delete mode 100644 src/com/android/settings/accounts/CrossProfileCalendarDisabledPreferenceController.java delete mode 100644 tests/robotests/src/com/android/settings/accounts/CrossProfileCalendarDisabledPreferenceControllerTest.java diff --git a/res/values/strings.xml b/res/values/strings.xml index fd869d425e4..b4bca607954 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -10545,9 +10545,6 @@ Cross-profile calendar Show work events on your personal calendar - - Your organization doesn\u2019t allow personal apps to access your work calendar - diff --git a/res/xml/managed_profile_settings.xml b/res/xml/managed_profile_settings.xml index 7b65a3d30b0..20f6d3dc3f3 100644 --- a/res/xml/managed_profile_settings.xml +++ b/res/xml/managed_profile_settings.xml @@ -32,18 +32,10 @@ settings:useAdditionalSummary="true" settings:controller="com.android.settings.accounts.ContactSearchPreferenceController"/> - - \ No newline at end of file diff --git a/src/com/android/settings/accounts/CrossProfileCalendarDisabledPreferenceController.java b/src/com/android/settings/accounts/CrossProfileCalendarDisabledPreferenceController.java deleted file mode 100644 index c0879823792..00000000000 --- a/src/com/android/settings/accounts/CrossProfileCalendarDisabledPreferenceController.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (C) 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -package com.android.settings.accounts; -import static com.android.settings.accounts.CrossProfileCalendarPreferenceController.isCrossProfileCalendarDisallowedByAdmin; - -import android.content.Context; -import android.os.UserHandle; - -import com.android.settings.core.BasePreferenceController; - -public class CrossProfileCalendarDisabledPreferenceController extends BasePreferenceController { - private UserHandle mManagedUser; - - public void setManagedUser(UserHandle managedUser) { - mManagedUser = managedUser; - } - - public CrossProfileCalendarDisabledPreferenceController(Context context, - String preferenceKey) { - super(context, preferenceKey); - } - - @Override - public int getAvailabilityStatus() { - if (mManagedUser != null - && isCrossProfileCalendarDisallowedByAdmin( - mContext, mManagedUser.getIdentifier())) { - return AVAILABLE; - } - - return DISABLED_FOR_USER; - } -} diff --git a/src/com/android/settings/accounts/ManagedProfileSettings.java b/src/com/android/settings/accounts/ManagedProfileSettings.java index 6591be488a3..f16bc3f49b6 100644 --- a/src/com/android/settings/accounts/ManagedProfileSettings.java +++ b/src/com/android/settings/accounts/ManagedProfileSettings.java @@ -79,7 +79,6 @@ public class ManagedProfileSettings extends DashboardFragment { use(WorkModePreferenceController.class).setManagedUser(mManagedUser); use(ContactSearchPreferenceController.class).setManagedUser(mManagedUser); use(CrossProfileCalendarPreferenceController.class).setManagedUser(mManagedUser); - use(CrossProfileCalendarDisabledPreferenceController.class).setManagedUser(mManagedUser); } @Override diff --git a/tests/robotests/src/com/android/settings/accounts/CrossProfileCalendarDisabledPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accounts/CrossProfileCalendarDisabledPreferenceControllerTest.java deleted file mode 100644 index 2226e2c4e1d..00000000000 --- a/tests/robotests/src/com/android/settings/accounts/CrossProfileCalendarDisabledPreferenceControllerTest.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright (C) 2018 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.settings.accounts; - -import static com.android.settings.core.BasePreferenceController.AVAILABLE; -import static com.android.settings.core.BasePreferenceController.DISABLED_FOR_USER; - -import static com.google.common.truth.Truth.assertThat; - -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; -import static org.robolectric.RuntimeEnvironment.application; - -import android.app.admin.DevicePolicyManager; -import android.content.ComponentName; -import android.content.Context; -import android.os.UserHandle; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; -import org.robolectric.Shadows; -import org.robolectric.shadows.ShadowDevicePolicyManager; - -import java.util.Collections; - -@RunWith(RobolectricTestRunner.class) -public class CrossProfileCalendarDisabledPreferenceControllerTest { - - private static final String PREF_KEY = "cross_profile_calendar_disabled"; - private static final int MANAGED_USER_ID = 10; - private static final String TEST_PACKAGE_NAME = "com.test"; - private static final ComponentName TEST_COMPONENT_NAME = new ComponentName("test", "test"); - - @Mock - private UserHandle mManagedUser; - - private Context mContext; - private CrossProfileCalendarDisabledPreferenceController mController; - private ShadowDevicePolicyManager mDpm; - - @Before - public void setUp() throws Exception { - MockitoAnnotations.initMocks(this); - mContext = spy(RuntimeEnvironment.application); - mController = new CrossProfileCalendarDisabledPreferenceController(mContext, PREF_KEY); - mController.setManagedUser(mManagedUser); - mDpm = Shadows.shadowOf(application.getSystemService(DevicePolicyManager.class)); - - when(mManagedUser.getIdentifier()).thenReturn(MANAGED_USER_ID); - doReturn(mContext).when(mContext).createPackageContextAsUser( - any(String.class), anyInt(), any(UserHandle.class)); - } - - @Test - public void getAvailabilityStatus_noPackageAllowed_shouldBeAvailable() { - mDpm.setProfileOwner(TEST_COMPONENT_NAME); - - assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE); - } - - @Test - public void getAvailabilityStatus_somePackagesAllowed_shouldBeDisabledForUser() { - mDpm.setProfileOwner(TEST_COMPONENT_NAME); - mDpm.setCrossProfileCalendarPackages(TEST_COMPONENT_NAME, - Collections.singleton(TEST_PACKAGE_NAME)); - - assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER); - } - - @Test - public void getAvailabilityStatus_allPackagesAllowed_shouldBeDisabledForUser() { - mDpm.setProfileOwner(TEST_COMPONENT_NAME); - mDpm.setCrossProfileCalendarPackages(TEST_COMPONENT_NAME, null); - - assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER); - } -} \ No newline at end of file diff --git a/tests/uitests/assets/search_results_list b/tests/uitests/assets/search_results_list index a6dafe2e98e..f8694636767 100644 --- a/tests/uitests/assets/search_results_list +++ b/tests/uitests/assets/search_results_list @@ -150,7 +150,6 @@ Cool color temperature;color_temperature Copyright;copyright Correction mode;type Cross-profile calendar;cross_profile_calendar -Cross-profile calendar;cross_profile_calendar_disabled Current screen saver;current_screensaver Custom;zen_custom Custom restrictions;zen_mode_block_settings_page