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
This commit is contained in:
@@ -10545,9 +10545,6 @@
|
||||
<string name="cross_profile_calendar_title">Cross-profile calendar</string>
|
||||
<!-- [CHAR LIMIT=NONE] Setting description. If the user turns on this setting, they can see their work events on their personal calendar. -->
|
||||
<string name="cross_profile_calendar_summary">Show work events on your personal calendar</string>
|
||||
<!-- [CHAR LIMIT=NONE] The preference summary when cross-profile calendar is restricted. -->
|
||||
<string name="cross_profile_calendar_restricted_summary">Your organization doesn\u2019t allow personal apps to access your work calendar</string>
|
||||
|
||||
|
||||
<!-- Time in hours -->
|
||||
<plurals name="hours">
|
||||
|
@@ -32,18 +32,10 @@
|
||||
settings:useAdditionalSummary="true"
|
||||
settings:controller="com.android.settings.accounts.ContactSearchPreferenceController"/>
|
||||
|
||||
<!-- Only one of these preferences will be visible at a time, depending on
|
||||
CrossProfileCalendarPreferenceController#isCrossProfileCalendarDisallowedByAdmin -->
|
||||
<SwitchPreference
|
||||
android:key="cross_profile_calendar"
|
||||
android:summary="@string/cross_profile_calendar_summary"
|
||||
android:title="@string/cross_profile_calendar_title"
|
||||
settings:controller="com.android.settings.accounts.CrossProfileCalendarPreferenceController"/>
|
||||
<Preference
|
||||
android:key="cross_profile_calendar_disabled"
|
||||
android:summary="@string/cross_profile_calendar_restricted_summary"
|
||||
android:title="@string/cross_profile_calendar_title"
|
||||
android:enabled="false"
|
||||
settings:controller="com.android.settings.accounts.CrossProfileCalendarDisabledPreferenceController"/>
|
||||
|
||||
</PreferenceScreen>
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
@@ -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
|
||||
|
Reference in New Issue
Block a user