Move injected services for work into a new page
Screenshots: http://shortn/_0BiBfpkHfh Bug: 180533061 Test: on device Change-Id: Ie488c80856b4c4cc67789b8239005f6001ed9d87
This commit is contained in:
@@ -33,6 +33,6 @@
|
||||
<PreferenceCategory
|
||||
android:key="location_services"
|
||||
android:layout="@layout/preference_category_no_label"
|
||||
settings:controller="com.android.settings.location.LocationServicePreferenceController"/>
|
||||
settings:controller="com.android.settings.location.LocationInjectedServicesPreferenceController"/>
|
||||
|
||||
</PreferenceScreen>
|
||||
|
27
res/xml/location_services_workprofile.xml
Normal file
27
res/xml/location_services_workprofile.xml
Normal file
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2021 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.
|
||||
-->
|
||||
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:settings="http://schemas.android.com/apk/res-auto"
|
||||
android:title="@string/location_services_screen_title">
|
||||
|
||||
<PreferenceCategory
|
||||
android:title="@string/managed_profile_location_services"
|
||||
android:layout="@layout/preference_category_no_label"
|
||||
android:key="location_services_managed_profile"
|
||||
settings:controller="com.android.settings.location.LocationInjectedServicesForWorkPreferenceController"/>
|
||||
|
||||
</PreferenceScreen>
|
@@ -54,7 +54,7 @@
|
||||
android:fragment="com.android.settings.location.LocationServices"
|
||||
android:key="location_services"
|
||||
android:title="@string/location_services_screen_title"
|
||||
settings:controller="com.android.settings.location.LocationScanningPreferenceController"/>
|
||||
settings:controller="com.android.settings.location.LocationServicesPreferenceController"/>
|
||||
|
||||
<!-- This preference gets removed if there is no managed profile -->
|
||||
<com.android.settingslib.RestrictedSwitchPreference
|
||||
@@ -71,7 +71,7 @@
|
||||
android:key="location_services_managed_profile"
|
||||
android:title="@string/managed_profile_location_services"
|
||||
settings:forWork="true"
|
||||
settings:controller="com.android.settings.location.LocationServiceForWorkPreferenceController"/>
|
||||
settings:controller="com.android.settings.location.LocationInjectedServicesForWorkPreferenceController"/>
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
|
@@ -50,7 +50,7 @@
|
||||
android:key="location_services"
|
||||
android:title="@string/location_services_screen_title"
|
||||
android:fragment="com.android.settings.location.LocationServices"
|
||||
settings:controller="com.android.settings.location.LocationScanningPreferenceController"/>
|
||||
settings:controller="com.android.settings.location.LocationServicesPreferenceController"/>
|
||||
|
||||
<PreferenceCategory
|
||||
android:key="location_footer"
|
||||
|
@@ -55,11 +55,11 @@
|
||||
</intent>
|
||||
</Preference>
|
||||
|
||||
<PreferenceCategory
|
||||
android:title="@string/managed_profile_location_services"
|
||||
android:layout="@layout/preference_category_no_label"
|
||||
android:key="location_services_managed_profile"
|
||||
settings:controller="com.android.settings.location.LocationServiceForWorkPreferenceController"/>
|
||||
<Preference
|
||||
android:key="location_services_for_work"
|
||||
android:title="@string/location_services_screen_title"
|
||||
android:fragment="com.android.settings.location.LocationServicesForWork"
|
||||
settings:controller="com.android.settings.location.LocationServicesForWorkPreferenceController"/>
|
||||
|
||||
<PreferenceCategory
|
||||
android:key="location_footer"
|
||||
|
@@ -27,6 +27,9 @@ import com.android.settings.Utils;
|
||||
import com.android.settingslib.RestrictedLockUtils;
|
||||
import com.android.settingslib.RestrictedSwitchPreference;
|
||||
|
||||
/**
|
||||
* Preference Controller for Location for Work Profile.
|
||||
*/
|
||||
public class LocationForWorkPreferenceController extends LocationBasePreferenceController {
|
||||
|
||||
private RestrictedSwitchPreference mPreference;
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
* Copyright (C) 2021 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.
|
||||
@@ -27,13 +27,13 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Retrieve the Location Services used in profile user.
|
||||
* Retrieve the Location Services used in work profile user.
|
||||
*/
|
||||
public class LocationServiceForWorkPreferenceController extends
|
||||
LocationServicePreferenceController {
|
||||
public class LocationInjectedServicesForWorkPreferenceController extends
|
||||
LocationInjectedServicesPreferenceController {
|
||||
private static final String TAG = "LocationWorkPrefCtrl";
|
||||
|
||||
public LocationServiceForWorkPreferenceController(Context context, String key) {
|
||||
public LocationInjectedServicesForWorkPreferenceController(Context context, String key) {
|
||||
super(context, key);
|
||||
}
|
||||
|
@@ -1,15 +1,17 @@
|
||||
/*
|
||||
* Copyright (C) 2017 The Android Open Source Project
|
||||
* Copyright (C) 2021 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
|
||||
* 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.
|
||||
* 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.location;
|
||||
|
||||
@@ -36,7 +38,10 @@ import com.android.settingslib.core.lifecycle.events.OnResume;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class LocationServicePreferenceController extends LocationBasePreferenceController
|
||||
/**
|
||||
* Preference controller for the injected Location Services.
|
||||
*/
|
||||
public class LocationInjectedServicesPreferenceController extends LocationBasePreferenceController
|
||||
implements LifecycleObserver, OnResume, OnPause {
|
||||
|
||||
private static final String TAG = "LocationPrefCtrl";
|
||||
@@ -51,7 +56,7 @@ public class LocationServicePreferenceController extends LocationBasePreferenceC
|
||||
@VisibleForTesting
|
||||
BroadcastReceiver mInjectedSettingsReceiver;
|
||||
|
||||
public LocationServicePreferenceController(Context context, String key) {
|
||||
public LocationInjectedServicesPreferenceController(Context context, String key) {
|
||||
super(context, key);
|
||||
}
|
||||
|
@@ -60,7 +60,7 @@ public class LocationServices extends DashboardFragment {
|
||||
public void onAttach(Context context) {
|
||||
super.onAttach(context);
|
||||
|
||||
use(LocationServicePreferenceController.class).init(this);
|
||||
use(LocationInjectedServicesPreferenceController.class).init(this);
|
||||
}
|
||||
|
||||
private static List<AbstractPreferenceController> buildPreferenceControllers(Context context) {
|
||||
|
@@ -0,0 +1,81 @@
|
||||
/*
|
||||
* Copyright (C) 2021 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.location;
|
||||
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.content.Context;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.dashboard.DashboardFragment;
|
||||
import com.android.settings.search.BaseSearchIndexProvider;
|
||||
import com.android.settingslib.core.AbstractPreferenceController;
|
||||
import com.android.settingslib.search.SearchIndexable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* A page that configures the Location Services settings for work profile.
|
||||
*/
|
||||
@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
|
||||
public class LocationServicesForWork extends DashboardFragment {
|
||||
private static final String TAG = "LocationServicesForWork";
|
||||
|
||||
@Override
|
||||
public int getMetricsCategory() {
|
||||
return SettingsEnums.LOCATION_SERVICES;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getPreferenceScreenResId() {
|
||||
return R.xml.location_services_workprofile;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getLogTag() {
|
||||
return TAG;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
|
||||
return buildPreferenceControllers(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(Context context) {
|
||||
super.onAttach(context);
|
||||
use(LocationInjectedServicesForWorkPreferenceController.class).init(this);
|
||||
}
|
||||
|
||||
private static List<AbstractPreferenceController> buildPreferenceControllers(Context context) {
|
||||
final List<AbstractPreferenceController> controllers = new ArrayList<>();
|
||||
return controllers;
|
||||
}
|
||||
|
||||
/**
|
||||
* For Search.
|
||||
*/
|
||||
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
|
||||
new BaseSearchIndexProvider(R.xml.location_services_workprofile) {
|
||||
|
||||
@Override
|
||||
public List<AbstractPreferenceController> createPreferenceControllers(Context
|
||||
context) {
|
||||
return buildPreferenceControllers(context);
|
||||
}
|
||||
};
|
||||
}
|
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Copyright (C) 2021 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.location;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
|
||||
/**
|
||||
* Preference controller for Location Services for Work Profile.
|
||||
*/
|
||||
public class LocationServicesForWorkPreferenceController extends BasePreferenceController {
|
||||
|
||||
public LocationServicesForWorkPreferenceController(Context context, String key) {
|
||||
super(context, key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CharSequence getSummary() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@AvailabilityStatus
|
||||
public int getAvailabilityStatus() {
|
||||
return AVAILABLE;
|
||||
}
|
||||
}
|
@@ -23,12 +23,14 @@ import android.provider.Settings;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
|
||||
|
||||
public class LocationScanningPreferenceController extends BasePreferenceController {
|
||||
/**
|
||||
* Preference controller for Location Services.
|
||||
*/
|
||||
public class LocationServicesPreferenceController extends BasePreferenceController {
|
||||
|
||||
private final WifiManager mWifiManager;
|
||||
|
||||
public LocationScanningPreferenceController(Context context, String key) {
|
||||
public LocationServicesPreferenceController(Context context, String key) {
|
||||
super(context, key);
|
||||
mWifiManager = context.getSystemService(WifiManager.class);
|
||||
}
|
||||
@@ -57,4 +59,4 @@ public class LocationScanningPreferenceController extends BasePreferenceControll
|
||||
? AVAILABLE
|
||||
: UNSUPPORTED_ON_DEVICE;
|
||||
}
|
||||
}
|
||||
}
|
@@ -85,7 +85,7 @@ public class LocationSettings extends DashboardFragment {
|
||||
use(RecentLocationAccessPreferenceController.class).init(this);
|
||||
use(LocationFooterPreferenceController.class).init(this);
|
||||
use(LocationForWorkPreferenceController.class).init(this);
|
||||
use(LocationServiceForWorkPreferenceController.class).init(this);
|
||||
use(LocationInjectedServicesForWorkPreferenceController.class).init(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -50,7 +50,6 @@ public class LocationWorkProfileSettings extends DashboardFragment {
|
||||
super.onAttach(context);
|
||||
|
||||
use(AppLocationPermissionPreferenceController.class).init(this);
|
||||
use(LocationServiceForWorkPreferenceController.class).init(this);
|
||||
use(LocationFooterPreferenceController.class).init(this);
|
||||
use(LocationForWorkPreferenceController.class).init(this);
|
||||
|
||||
|
@@ -58,7 +58,7 @@ import java.util.Map;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
@Config(shadows = ShadowUserManager.class)
|
||||
public class LocationServicePreferenceControllerTest {
|
||||
public class LocationInjectedServicesPreferenceControllerTest {
|
||||
|
||||
private static final String KEY_LOCATION_SERVICES = "location_service";
|
||||
|
||||
@@ -76,7 +76,7 @@ public class LocationServicePreferenceControllerTest {
|
||||
private DevicePolicyManager mDevicePolicyManager;
|
||||
|
||||
private Context mContext;
|
||||
private LocationServicePreferenceController mController;
|
||||
private LocationInjectedServicesPreferenceController mController;
|
||||
private LifecycleOwner mLifecycleOwner;
|
||||
private Lifecycle mLifecycle;
|
||||
|
||||
@@ -86,7 +86,8 @@ public class LocationServicePreferenceControllerTest {
|
||||
mContext = spy(RuntimeEnvironment.application);
|
||||
mLifecycleOwner = () -> mLifecycle;
|
||||
mLifecycle = new Lifecycle(mLifecycleOwner);
|
||||
mController = spy(new LocationServicePreferenceController(mContext, KEY_LOCATION_SERVICES));
|
||||
mController = spy(
|
||||
new LocationInjectedServicesPreferenceController(mContext, KEY_LOCATION_SERVICES));
|
||||
when(mFragment.getSettingsLifecycle()).thenReturn(mLifecycle);
|
||||
mController.init(mFragment);
|
||||
mController.mInjector = mSettingsInjector;
|
@@ -37,18 +37,18 @@ import org.robolectric.RuntimeEnvironment;
|
||||
import org.robolectric.annotation.Config;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class LocationScanningPreferenceControllerTest {
|
||||
public class LocationServicesPreferenceControllerTest {
|
||||
@Mock
|
||||
private WifiManager mWifiManager;
|
||||
private Context mContext;
|
||||
private LocationScanningPreferenceController mController;
|
||||
private LocationServicesPreferenceController mController;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mContext = spy(RuntimeEnvironment.application);
|
||||
when(mContext.getSystemService(WifiManager.class)).thenReturn(mWifiManager);
|
||||
mController = new LocationScanningPreferenceController(mContext, "key");
|
||||
mController = new LocationServicesPreferenceController(mContext, "key");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -97,4 +97,4 @@ public class LocationScanningPreferenceControllerTest {
|
||||
public void testLocationScanning_ifDisabled_shouldNotBeShown() {
|
||||
assertThat(mController.isAvailable()).isFalse();
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user