Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c45311eb authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Show setting tiles for secondary users"

parents 99d56b7f 9ec4536d
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -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 */ }
+6 −61
Original line number Diff line number Diff line
@@ -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"
    };
@@ -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);
                    }
                }
@@ -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);
+57 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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",
    };
}
+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());
        }
    }
}