diff --git a/res/xml/location_services.xml b/res/xml/location_services.xml index 7096d2cd3f2..ef94886f748 100644 --- a/res/xml/location_services.xml +++ b/res/xml/location_services.xml @@ -33,6 +33,6 @@ + settings:controller="com.android.settings.location.LocationInjectedServicesPreferenceController"/> diff --git a/res/xml/location_services_workprofile.xml b/res/xml/location_services_workprofile.xml new file mode 100644 index 00000000000..6db208367d9 --- /dev/null +++ b/res/xml/location_services_workprofile.xml @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/res/xml/location_settings.xml b/res/xml/location_settings.xml index cf80debc695..1646b1d810d 100644 --- a/res/xml/location_settings.xml +++ b/res/xml/location_settings.xml @@ -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"/> + settings:controller="com.android.settings.location.LocationInjectedServicesForWorkPreferenceController"/> diff --git a/res/xml/location_settings_personal.xml b/res/xml/location_settings_personal.xml index 00b89e35852..479c61f0936 100644 --- a/res/xml/location_settings_personal.xml +++ b/res/xml/location_settings_personal.xml @@ -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"/> - + buildPreferenceControllers(Context context) { diff --git a/src/com/android/settings/location/LocationServicesForWork.java b/src/com/android/settings/location/LocationServicesForWork.java new file mode 100644 index 00000000000..4b3124eb129 --- /dev/null +++ b/src/com/android/settings/location/LocationServicesForWork.java @@ -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 createPreferenceControllers(Context context) { + return buildPreferenceControllers(context); + } + + @Override + public void onAttach(Context context) { + super.onAttach(context); + use(LocationInjectedServicesForWorkPreferenceController.class).init(this); + } + + private static List buildPreferenceControllers(Context context) { + final List 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 createPreferenceControllers(Context + context) { + return buildPreferenceControllers(context); + } + }; +} diff --git a/src/com/android/settings/location/LocationServicesForWorkPreferenceController.java b/src/com/android/settings/location/LocationServicesForWorkPreferenceController.java new file mode 100644 index 00000000000..f8167df0df1 --- /dev/null +++ b/src/com/android/settings/location/LocationServicesForWorkPreferenceController.java @@ -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; + } +} diff --git a/src/com/android/settings/location/LocationScanningPreferenceController.java b/src/com/android/settings/location/LocationServicesPreferenceController.java similarity index 91% rename from src/com/android/settings/location/LocationScanningPreferenceController.java rename to src/com/android/settings/location/LocationServicesPreferenceController.java index a0c32412113..f7a338840f2 100644 --- a/src/com/android/settings/location/LocationScanningPreferenceController.java +++ b/src/com/android/settings/location/LocationServicesPreferenceController.java @@ -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; } -} \ No newline at end of file +} diff --git a/src/com/android/settings/location/LocationSettings.java b/src/com/android/settings/location/LocationSettings.java index 9a61b31a170..d58ad5b5ca2 100644 --- a/src/com/android/settings/location/LocationSettings.java +++ b/src/com/android/settings/location/LocationSettings.java @@ -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 diff --git a/src/com/android/settings/location/LocationWorkProfileSettings.java b/src/com/android/settings/location/LocationWorkProfileSettings.java index 601ec23bc1d..18936fd4897 100644 --- a/src/com/android/settings/location/LocationWorkProfileSettings.java +++ b/src/com/android/settings/location/LocationWorkProfileSettings.java @@ -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); diff --git a/tests/robotests/src/com/android/settings/location/LocationServicePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/location/LocationInjectedServicesPreferenceControllerTest.java similarity index 97% rename from tests/robotests/src/com/android/settings/location/LocationServicePreferenceControllerTest.java rename to tests/robotests/src/com/android/settings/location/LocationInjectedServicesPreferenceControllerTest.java index 62c13af849b..0370781fe77 100644 --- a/tests/robotests/src/com/android/settings/location/LocationServicePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/location/LocationInjectedServicesPreferenceControllerTest.java @@ -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; diff --git a/tests/robotests/src/com/android/settings/location/LocationScanningPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/location/LocationServicesPreferenceControllerTest.java similarity index 95% rename from tests/robotests/src/com/android/settings/location/LocationScanningPreferenceControllerTest.java rename to tests/robotests/src/com/android/settings/location/LocationServicesPreferenceControllerTest.java index 149276658b3..d7d76bef7c7 100644 --- a/tests/robotests/src/com/android/settings/location/LocationScanningPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/location/LocationServicesPreferenceControllerTest.java @@ -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(); } -} \ No newline at end of file +}