Loading src/com/android/settings/Settings.java +0 −1 Original line number Diff line number Diff line Loading @@ -50,7 +50,6 @@ public class Settings extends SettingsActivity { public static class LocalePickerActivity extends SettingsActivity { /* empty */ } public static class LanguageAndRegionSettingsActivity extends SettingsActivity { /* empty */ } public static class UserDictionarySettingsActivity extends SettingsActivity { /* empty */ } public static class HomeSettingsActivity extends SettingsActivity { /* empty */ } public static class DisplaySettingsActivity extends SettingsActivity { /* empty */ } public static class NightDisplaySettingsActivity extends SettingsActivity { /* empty */ } public static class DeviceInfoSettingsActivity extends SettingsActivity { /* empty */ } Loading src/com/android/settings/SettingsActivity.java +6 −61 Original line number Diff line number Diff line Loading @@ -165,64 +165,6 @@ public class SettingsActivity extends SettingsDrawerActivity private CharSequence mInitialTitle; private int mInitialTitleResId; // Show only these settings for restricted users private String[] SETTINGS_FOR_RESTRICTED = { //wireless_section WifiSettingsActivity.class.getName(), Settings.BluetoothSettingsActivity.class.getName(), Settings.DataUsageSummaryActivity.class.getName(), Settings.SimSettingsActivity.class.getName(), Settings.WirelessSettingsActivity.class.getName(), //device_section Settings.HomeSettingsActivity.class.getName(), Settings.SoundSettingsActivity.class.getName(), Settings.DisplaySettingsActivity.class.getName(), Settings.StorageSettingsActivity.class.getName(), Settings.ManageApplicationsActivity.class.getName(), Settings.PowerUsageSummaryActivity.class.getName(), Settings.GestureSettingsActivity.class.getName(), //personal_section Settings.LocationSettingsActivity.class.getName(), Settings.SecuritySettingsActivity.class.getName(), Settings.InputMethodAndLanguageSettingsActivity.class.getName(), Settings.UserSettingsActivity.class.getName(), Settings.AccountSettingsActivity.class.getName(), //system_section Settings.DateTimeSettingsActivity.class.getName(), Settings.DeviceInfoSettingsActivity.class.getName(), Settings.AccessibilitySettingsActivity.class.getName(), Settings.PrintSettingsActivity.class.getName(), Settings.PaymentSettingsActivity.class.getName(), Settings.EnterprisePrivacySettingsActivity.class.getName(), // New IA // Home page Settings.NetworkDashboardActivity.class.getName(), Settings.ConnectedDeviceDashboardActivity.class.getName(), Settings.AppAndNotificationDashboardActivity.class.getName(), "com.android.settings.Settings.BatteryDashboardAlias", "com.android.settings.Settings.DisplayDashboardAlias", "com.android.settings.Settings.SoundDashboardAlias", "com.android.settings.Settings.SecurityDashboardAlias", Settings.UserAndAccountDashboardActivity.class.getName(), Settings.SystemDashboardActivity.class.getName(), Settings.SupportDashboardActivity.class.getName(), // Home page > Apps & Notifications "com.android.settings.Settings.ManageApplicationsDashboardAlias", "com.android.settings.Settings.PaymentSettingsDashboardAlias", // Home page > Network & Internet "com.android.settings.Settings.WifiDashboardAlias", "com.android.settings.Settings.DataUsageDashboardAlias", // Home page > Security "com.android.settings.Settings.LocationDashboardAlias", // Home page > System Settings.LanguageAndRegionSettingsActivity.class.getName(), Settings.InputAndGestureSettingsActivity.class.getName(), "com.android.settings.Settings.DateTimeDashboardAlias", "com.android.settings.Settings.AccessibilityDashboardAlias", "com.android.settings.Settings.AboutDeviceDashboardAlias", }; private static final String[] LIKE_SHORTCUT_INTENT_ACTION_ARRAY = { "android.settings.APPLICATION_DETAILS_SETTINGS" }; Loading Loading @@ -1009,8 +951,10 @@ public class SettingsActivity extends SettingsDrawerActivity for (DashboardCategory category : categories) { for (Tile tile : category.tiles) { ComponentName component = tile.intent.getComponent(); if (packageName.equals(component.getPackageName()) && !ArrayUtils.contains( SETTINGS_FOR_RESTRICTED, component.getClassName())) { final String name = component.getClassName(); final boolean isEnabledForRestricted = ArrayUtils.contains( SettingsGateway.SETTINGS_FOR_RESTRICTED, name); if (packageName.equals(component.getPackageName()) && !isEnabledForRestricted) { setTileEnabled(component, false, isAdmin); } } Loading Loading @@ -1055,7 +999,8 @@ public class SettingsActivity extends SettingsDrawerActivity private void setTileEnabled(ComponentName component, boolean enabled, boolean isAdmin) { if (UserHandle.MU_ENABLED && !isAdmin && getPackageName().equals(component.getPackageName()) && !ArrayUtils.contains(SETTINGS_FOR_RESTRICTED, component.getClassName())) { && !ArrayUtils.contains(SettingsGateway.SETTINGS_FOR_RESTRICTED, component.getClassName())) { enabled = false; } setTileEnabled(component, enabled); Loading src/com/android/settings/core/gateway/SettingsGateway.java +57 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import com.android.settings.IccLockSettings; import com.android.settings.MasterClear; import com.android.settings.PrivacySettings; import com.android.settings.SecuritySettings; import com.android.settings.Settings; import com.android.settings.TestingSettings; import com.android.settings.TetherSettings; import com.android.settings.TrustedCredentialsSettings; Loading Loading @@ -244,4 +245,60 @@ public class SettingsGateway { UserAndAccountDashboardFragment.class.getName(), EnterprisePrivacySettings.class.getName(), }; public static final String[] SETTINGS_FOR_RESTRICTED = { //wireless_section Settings.WifiSettingsActivity.class.getName(), Settings.BluetoothSettingsActivity.class.getName(), Settings.DataUsageSummaryActivity.class.getName(), Settings.SimSettingsActivity.class.getName(), Settings.WirelessSettingsActivity.class.getName(), //device_section Settings.SoundSettingsActivity.class.getName(), Settings.DisplaySettingsActivity.class.getName(), Settings.StorageSettingsActivity.class.getName(), Settings.ManageApplicationsActivity.class.getName(), Settings.PowerUsageSummaryActivity.class.getName(), Settings.GestureSettingsActivity.class.getName(), //personal_section Settings.LocationSettingsActivity.class.getName(), Settings.SecuritySettingsActivity.class.getName(), Settings.InputMethodAndLanguageSettingsActivity.class.getName(), Settings.UserSettingsActivity.class.getName(), Settings.AccountSettingsActivity.class.getName(), //system_section Settings.DateTimeSettingsActivity.class.getName(), Settings.DeviceInfoSettingsActivity.class.getName(), Settings.AccessibilitySettingsActivity.class.getName(), Settings.PrintSettingsActivity.class.getName(), Settings.PaymentSettingsActivity.class.getName(), Settings.EnterprisePrivacySettingsActivity.class.getName(), // New IA // Home page Settings.NetworkDashboardActivity.class.getName(), Settings.ConnectedDeviceDashboardActivity.class.getName(), Settings.AppAndNotificationDashboardActivity.class.getName(), "com.android.settings.BatteryDashboardAlias", "com.android.settings.DisplayDashboardAlias", "com.android.settings.SoundDashboardAlias", "com.android.settings.SecurityDashboardAlias", Settings.UserAndAccountDashboardActivity.class.getName(), Settings.SystemDashboardActivity.class.getName(), Settings.SupportDashboardActivity.class.getName(), // Home page > Apps & Notifications "com.android.settings.ManageApplicationsDashboardAlias", "com.android.settings.PaymentSettingsDashboardAlias", // Home page > Network & Internet "com.android.settings.WifiDashboardAlias", "com.android.settings.DataUsageDashboardAlias", // Home page > Security "com.android.settings.LocationDashboardAlias", // Home page > System Settings.LanguageAndRegionSettingsActivity.class.getName(), Settings.InputAndGestureSettingsActivity.class.getName(), "com.android.settings.DateTimeDashboardAlias", "com.android.settings.AccessibilityDashboardAlias", "com.android.settings.AboutDeviceDashboardAlias", }; } tests/unit/src/com/android/settings/core/SettingsGatewayTest.java 0 → 100644 +59 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 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.core; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.support.test.InstrumentationRegistry; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; import android.util.Log; import com.android.settings.core.gateway.SettingsGateway; import org.junit.Test; import org.junit.runner.RunWith; import java.util.List; import static org.junit.Assert.assertFalse; @SmallTest @RunWith(AndroidJUnit4.class) public class SettingsGatewayTest { private static final String TAG = "SettingsGatewayTest"; @Test public void allRestrictedActivityMustBeDefinedInManifest() { final Context context = InstrumentationRegistry.getTargetContext(); final PackageManager packageManager = context.getPackageManager(); final String packageName = context.getPackageName(); for (String className : SettingsGateway.SETTINGS_FOR_RESTRICTED) { final Intent intent = new Intent(); intent.setComponent(new ComponentName(packageName, className)); List<ResolveInfo> resolveInfos = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DISABLED_COMPONENTS); Log.d(TAG, packageName + "/" + className + "; resolveInfo size: " + resolveInfos.size()); assertFalse(className + " is not-defined in manifest", resolveInfos.isEmpty()); } } } Loading
src/com/android/settings/Settings.java +0 −1 Original line number Diff line number Diff line Loading @@ -50,7 +50,6 @@ public class Settings extends SettingsActivity { public static class LocalePickerActivity extends SettingsActivity { /* empty */ } public static class LanguageAndRegionSettingsActivity extends SettingsActivity { /* empty */ } public static class UserDictionarySettingsActivity extends SettingsActivity { /* empty */ } public static class HomeSettingsActivity extends SettingsActivity { /* empty */ } public static class DisplaySettingsActivity extends SettingsActivity { /* empty */ } public static class NightDisplaySettingsActivity extends SettingsActivity { /* empty */ } public static class DeviceInfoSettingsActivity extends SettingsActivity { /* empty */ } Loading
src/com/android/settings/SettingsActivity.java +6 −61 Original line number Diff line number Diff line Loading @@ -165,64 +165,6 @@ public class SettingsActivity extends SettingsDrawerActivity private CharSequence mInitialTitle; private int mInitialTitleResId; // Show only these settings for restricted users private String[] SETTINGS_FOR_RESTRICTED = { //wireless_section WifiSettingsActivity.class.getName(), Settings.BluetoothSettingsActivity.class.getName(), Settings.DataUsageSummaryActivity.class.getName(), Settings.SimSettingsActivity.class.getName(), Settings.WirelessSettingsActivity.class.getName(), //device_section Settings.HomeSettingsActivity.class.getName(), Settings.SoundSettingsActivity.class.getName(), Settings.DisplaySettingsActivity.class.getName(), Settings.StorageSettingsActivity.class.getName(), Settings.ManageApplicationsActivity.class.getName(), Settings.PowerUsageSummaryActivity.class.getName(), Settings.GestureSettingsActivity.class.getName(), //personal_section Settings.LocationSettingsActivity.class.getName(), Settings.SecuritySettingsActivity.class.getName(), Settings.InputMethodAndLanguageSettingsActivity.class.getName(), Settings.UserSettingsActivity.class.getName(), Settings.AccountSettingsActivity.class.getName(), //system_section Settings.DateTimeSettingsActivity.class.getName(), Settings.DeviceInfoSettingsActivity.class.getName(), Settings.AccessibilitySettingsActivity.class.getName(), Settings.PrintSettingsActivity.class.getName(), Settings.PaymentSettingsActivity.class.getName(), Settings.EnterprisePrivacySettingsActivity.class.getName(), // New IA // Home page Settings.NetworkDashboardActivity.class.getName(), Settings.ConnectedDeviceDashboardActivity.class.getName(), Settings.AppAndNotificationDashboardActivity.class.getName(), "com.android.settings.Settings.BatteryDashboardAlias", "com.android.settings.Settings.DisplayDashboardAlias", "com.android.settings.Settings.SoundDashboardAlias", "com.android.settings.Settings.SecurityDashboardAlias", Settings.UserAndAccountDashboardActivity.class.getName(), Settings.SystemDashboardActivity.class.getName(), Settings.SupportDashboardActivity.class.getName(), // Home page > Apps & Notifications "com.android.settings.Settings.ManageApplicationsDashboardAlias", "com.android.settings.Settings.PaymentSettingsDashboardAlias", // Home page > Network & Internet "com.android.settings.Settings.WifiDashboardAlias", "com.android.settings.Settings.DataUsageDashboardAlias", // Home page > Security "com.android.settings.Settings.LocationDashboardAlias", // Home page > System Settings.LanguageAndRegionSettingsActivity.class.getName(), Settings.InputAndGestureSettingsActivity.class.getName(), "com.android.settings.Settings.DateTimeDashboardAlias", "com.android.settings.Settings.AccessibilityDashboardAlias", "com.android.settings.Settings.AboutDeviceDashboardAlias", }; private static final String[] LIKE_SHORTCUT_INTENT_ACTION_ARRAY = { "android.settings.APPLICATION_DETAILS_SETTINGS" }; Loading Loading @@ -1009,8 +951,10 @@ public class SettingsActivity extends SettingsDrawerActivity for (DashboardCategory category : categories) { for (Tile tile : category.tiles) { ComponentName component = tile.intent.getComponent(); if (packageName.equals(component.getPackageName()) && !ArrayUtils.contains( SETTINGS_FOR_RESTRICTED, component.getClassName())) { final String name = component.getClassName(); final boolean isEnabledForRestricted = ArrayUtils.contains( SettingsGateway.SETTINGS_FOR_RESTRICTED, name); if (packageName.equals(component.getPackageName()) && !isEnabledForRestricted) { setTileEnabled(component, false, isAdmin); } } Loading Loading @@ -1055,7 +999,8 @@ public class SettingsActivity extends SettingsDrawerActivity private void setTileEnabled(ComponentName component, boolean enabled, boolean isAdmin) { if (UserHandle.MU_ENABLED && !isAdmin && getPackageName().equals(component.getPackageName()) && !ArrayUtils.contains(SETTINGS_FOR_RESTRICTED, component.getClassName())) { && !ArrayUtils.contains(SettingsGateway.SETTINGS_FOR_RESTRICTED, component.getClassName())) { enabled = false; } setTileEnabled(component, enabled); Loading
src/com/android/settings/core/gateway/SettingsGateway.java +57 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import com.android.settings.IccLockSettings; import com.android.settings.MasterClear; import com.android.settings.PrivacySettings; import com.android.settings.SecuritySettings; import com.android.settings.Settings; import com.android.settings.TestingSettings; import com.android.settings.TetherSettings; import com.android.settings.TrustedCredentialsSettings; Loading Loading @@ -244,4 +245,60 @@ public class SettingsGateway { UserAndAccountDashboardFragment.class.getName(), EnterprisePrivacySettings.class.getName(), }; public static final String[] SETTINGS_FOR_RESTRICTED = { //wireless_section Settings.WifiSettingsActivity.class.getName(), Settings.BluetoothSettingsActivity.class.getName(), Settings.DataUsageSummaryActivity.class.getName(), Settings.SimSettingsActivity.class.getName(), Settings.WirelessSettingsActivity.class.getName(), //device_section Settings.SoundSettingsActivity.class.getName(), Settings.DisplaySettingsActivity.class.getName(), Settings.StorageSettingsActivity.class.getName(), Settings.ManageApplicationsActivity.class.getName(), Settings.PowerUsageSummaryActivity.class.getName(), Settings.GestureSettingsActivity.class.getName(), //personal_section Settings.LocationSettingsActivity.class.getName(), Settings.SecuritySettingsActivity.class.getName(), Settings.InputMethodAndLanguageSettingsActivity.class.getName(), Settings.UserSettingsActivity.class.getName(), Settings.AccountSettingsActivity.class.getName(), //system_section Settings.DateTimeSettingsActivity.class.getName(), Settings.DeviceInfoSettingsActivity.class.getName(), Settings.AccessibilitySettingsActivity.class.getName(), Settings.PrintSettingsActivity.class.getName(), Settings.PaymentSettingsActivity.class.getName(), Settings.EnterprisePrivacySettingsActivity.class.getName(), // New IA // Home page Settings.NetworkDashboardActivity.class.getName(), Settings.ConnectedDeviceDashboardActivity.class.getName(), Settings.AppAndNotificationDashboardActivity.class.getName(), "com.android.settings.BatteryDashboardAlias", "com.android.settings.DisplayDashboardAlias", "com.android.settings.SoundDashboardAlias", "com.android.settings.SecurityDashboardAlias", Settings.UserAndAccountDashboardActivity.class.getName(), Settings.SystemDashboardActivity.class.getName(), Settings.SupportDashboardActivity.class.getName(), // Home page > Apps & Notifications "com.android.settings.ManageApplicationsDashboardAlias", "com.android.settings.PaymentSettingsDashboardAlias", // Home page > Network & Internet "com.android.settings.WifiDashboardAlias", "com.android.settings.DataUsageDashboardAlias", // Home page > Security "com.android.settings.LocationDashboardAlias", // Home page > System Settings.LanguageAndRegionSettingsActivity.class.getName(), Settings.InputAndGestureSettingsActivity.class.getName(), "com.android.settings.DateTimeDashboardAlias", "com.android.settings.AccessibilityDashboardAlias", "com.android.settings.AboutDeviceDashboardAlias", }; }
tests/unit/src/com/android/settings/core/SettingsGatewayTest.java 0 → 100644 +59 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 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.core; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.support.test.InstrumentationRegistry; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; import android.util.Log; import com.android.settings.core.gateway.SettingsGateway; import org.junit.Test; import org.junit.runner.RunWith; import java.util.List; import static org.junit.Assert.assertFalse; @SmallTest @RunWith(AndroidJUnit4.class) public class SettingsGatewayTest { private static final String TAG = "SettingsGatewayTest"; @Test public void allRestrictedActivityMustBeDefinedInManifest() { final Context context = InstrumentationRegistry.getTargetContext(); final PackageManager packageManager = context.getPackageManager(); final String packageName = context.getPackageName(); for (String className : SettingsGateway.SETTINGS_FOR_RESTRICTED) { final Intent intent = new Intent(); intent.setComponent(new ComponentName(packageName, className)); List<ResolveInfo> resolveInfos = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DISABLED_COMPONENTS); Log.d(TAG, packageName + "/" + className + "; resolveInfo size: " + resolveInfos.size()); assertFalse(className + " is not-defined in manifest", resolveInfos.isEmpty()); } } }