Only update categories after all setTileEnabled() are done.

Bug: 34103984
Test: RunSettingsRoboTests (dashboard refresh related tests no regression)
Change-Id: I8b487c1a3074c6e4756215da1fcfee12daafbfe2
This commit is contained in:
Fan Zhang
2017-01-06 11:42:48 -08:00
parent 63e8d160f9
commit 224caada2d

View File

@@ -63,7 +63,6 @@ import com.android.settings.dashboard.SearchResultsSummary;
import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory;
import com.android.settings.qstile.DevelopmentModeTile; import com.android.settings.qstile.DevelopmentModeTile;
import com.android.settings.search.DynamicIndexableContentMonitor; import com.android.settings.search.DynamicIndexableContentMonitor;
import com.android.settings.search.Index;
import com.android.settings.search2.SearchFeatureProvider; import com.android.settings.search2.SearchFeatureProvider;
import com.android.settings.widget.SwitchBar; import com.android.settings.widget.SwitchBar;
import com.android.settingslib.drawer.DashboardCategory; import com.android.settingslib.drawer.DashboardCategory;
@@ -939,56 +938,56 @@ public class SettingsActivity extends SettingsDrawerActivity
String packageName = getPackageName(); String packageName = getPackageName();
setTileEnabled(new ComponentName(packageName, WifiSettingsActivity.class.getName()), setTileEnabled(new ComponentName(packageName, WifiSettingsActivity.class.getName()),
pm.hasSystemFeature(PackageManager.FEATURE_WIFI), isAdmin, pm); pm.hasSystemFeature(PackageManager.FEATURE_WIFI), isAdmin);
setTileEnabled(new ComponentName(packageName, setTileEnabled(new ComponentName(packageName,
Settings.BluetoothSettingsActivity.class.getName()), Settings.BluetoothSettingsActivity.class.getName()),
pm.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH), isAdmin, pm); pm.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH), isAdmin);
setTileEnabled(new ComponentName(packageName, setTileEnabled(new ComponentName(packageName,
Settings.DataUsageSummaryActivity.class.getName()), Settings.DataUsageSummaryActivity.class.getName()),
Utils.isBandwidthControlEnabled(), isAdmin, pm); Utils.isBandwidthControlEnabled(), isAdmin);
setTileEnabled(new ComponentName(packageName, setTileEnabled(new ComponentName(packageName,
Settings.SimSettingsActivity.class.getName()), Settings.SimSettingsActivity.class.getName()),
Utils.showSimCardTile(this), isAdmin, pm); Utils.showSimCardTile(this), isAdmin);
setTileEnabled(new ComponentName(packageName, setTileEnabled(new ComponentName(packageName,
Settings.PowerUsageSummaryActivity.class.getName()), Settings.PowerUsageSummaryActivity.class.getName()),
mBatteryPresent, isAdmin, pm); mBatteryPresent, isAdmin);
setTileEnabled(new ComponentName(packageName, setTileEnabled(new ComponentName(packageName,
Settings.UserSettingsActivity.class.getName()), Settings.UserSettingsActivity.class.getName()),
UserHandle.MU_ENABLED && UserManager.supportsMultipleUsers() UserHandle.MU_ENABLED && UserManager.supportsMultipleUsers()
&& !Utils.isMonkeyRunning(), isAdmin, pm); && !Utils.isMonkeyRunning(), isAdmin);
setTileEnabled(new ComponentName(packageName, setTileEnabled(new ComponentName(packageName,
Settings.WirelessSettingsActivity.class.getName()), Settings.WirelessSettingsActivity.class.getName()),
!UserManager.isDeviceInDemoMode(this), isAdmin, pm); !UserManager.isDeviceInDemoMode(this), isAdmin);
setTileEnabled(new ComponentName(packageName, setTileEnabled(new ComponentName(packageName,
Settings.DateTimeSettingsActivity.class.getName()), Settings.DateTimeSettingsActivity.class.getName()),
!UserManager.isDeviceInDemoMode(this), isAdmin, pm); !UserManager.isDeviceInDemoMode(this), isAdmin);
NfcAdapter adapter = NfcAdapter.getDefaultAdapter(this); NfcAdapter adapter = NfcAdapter.getDefaultAdapter(this);
setTileEnabled(new ComponentName(packageName, setTileEnabled(new ComponentName(packageName,
Settings.PaymentSettingsActivity.class.getName()), Settings.PaymentSettingsActivity.class.getName()),
pm.hasSystemFeature(PackageManager.FEATURE_NFC) pm.hasSystemFeature(PackageManager.FEATURE_NFC)
&& pm.hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION) && pm.hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION)
&& adapter != null && adapter.isEnabled(), isAdmin, pm); && adapter != null && adapter.isEnabled(), isAdmin);
setTileEnabled(new ComponentName(packageName, setTileEnabled(new ComponentName(packageName,
Settings.PrintSettingsActivity.class.getName()), Settings.PrintSettingsActivity.class.getName()),
pm.hasSystemFeature(PackageManager.FEATURE_PRINTING), isAdmin, pm); pm.hasSystemFeature(PackageManager.FEATURE_PRINTING), isAdmin);
final boolean showDev = mDevelopmentPreferences.getBoolean( final boolean showDev = mDevelopmentPreferences.getBoolean(
DevelopmentSettings.PREF_SHOW, android.os.Build.TYPE.equals("eng")) DevelopmentSettings.PREF_SHOW, android.os.Build.TYPE.equals("eng"))
&& !um.hasUserRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES); && !um.hasUserRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES);
setTileEnabled(new ComponentName(packageName, setTileEnabled(new ComponentName(packageName,
Settings.DevelopmentSettingsActivity.class.getName()), Settings.DevelopmentSettingsActivity.class.getName()),
showDev, isAdmin, pm); showDev, isAdmin);
setTileEnabled(new ComponentName(packageName, setTileEnabled(new ComponentName(packageName,
Settings.DevelopmentSettingsActivity.DASHBOARD_ALIAS), Settings.DevelopmentSettingsActivity.DASHBOARD_ALIAS),
showDev, isAdmin, pm); showDev, isAdmin);
// Reveal development-only quick settings tiles // Reveal development-only quick settings tiles
setTileEnabled(new ComponentName(this, DevelopmentModeTile.class), showDev); setTileEnabled(new ComponentName(this, DevelopmentModeTile.class), showDev);
@@ -1007,7 +1006,7 @@ public class SettingsActivity extends SettingsDrawerActivity
ComponentName component = tile.intent.getComponent(); ComponentName component = tile.intent.getComponent();
if (packageName.equals(component.getPackageName()) && !ArrayUtils.contains( if (packageName.equals(component.getPackageName()) && !ArrayUtils.contains(
SETTINGS_FOR_RESTRICTED, component.getClassName())) { SETTINGS_FOR_RESTRICTED, component.getClassName())) {
setTileEnabled(component, false, isAdmin, pm); setTileEnabled(component, false, isAdmin);
} }
} }
} }
@@ -1016,10 +1015,10 @@ public class SettingsActivity extends SettingsDrawerActivity
String backupIntent = getResources().getString(R.string.config_backup_settings_intent); String backupIntent = getResources().getString(R.string.config_backup_settings_intent);
boolean useDefaultBackup = TextUtils.isEmpty(backupIntent); boolean useDefaultBackup = TextUtils.isEmpty(backupIntent);
setTileEnabled(new ComponentName(packageName, setTileEnabled(new ComponentName(packageName,
Settings.PrivacySettingsActivity.class.getName()), useDefaultBackup, isAdmin, pm); Settings.PrivacySettingsActivity.class.getName()), useDefaultBackup, isAdmin);
setTileEnabled(new ComponentName(packageName, setTileEnabled(new ComponentName(packageName,
"com.android.settings.PrivacyDashboardAlias"), "com.android.settings.PrivacyDashboardAlias"),
useDefaultBackup, isAdmin, pm); useDefaultBackup, isAdmin);
boolean hasBackupActivity = false; boolean hasBackupActivity = false;
if (!useDefaultBackup) { if (!useDefaultBackup) {
@@ -1031,24 +1030,25 @@ public class SettingsActivity extends SettingsDrawerActivity
} }
} }
// Enable/disble BackupSettingsActivity and its alias. // Enable/disable BackupSettingsActivity and its alias.
setTileEnabled(new ComponentName(packageName, setTileEnabled(new ComponentName(packageName,
BackupSettingsActivity.class.getName()), hasBackupActivity, isAdmin, pm); BackupSettingsActivity.class.getName()), hasBackupActivity, isAdmin);
setTileEnabled(new ComponentName(packageName, setTileEnabled(new ComponentName(packageName,
"com.android.settings.BackupResetDashboardAlias"), hasBackupActivity, isAdmin, pm); "com.android.settings.BackupResetDashboardAlias"), hasBackupActivity, isAdmin);
setTileEnabled(new ComponentName(packageName, setTileEnabled(new ComponentName(packageName,
Settings.EnterprisePrivacySettingsActivity.class.getName()), Settings.EnterprisePrivacySettingsActivity.class.getName()),
FeatureFactory.getFactory(this).getEnterprisePrivacyFeatureProvider(this) FeatureFactory.getFactory(this).getEnterprisePrivacyFeatureProvider(this)
.hasDeviceOwner(), isAdmin, pm); .hasDeviceOwner(), isAdmin);
setTileEnabled(new ComponentName(packageName, setTileEnabled(new ComponentName(packageName,
"com.android.settings.EnterprisePrivacyDashboardAlias"), "com.android.settings.EnterprisePrivacyDashboardAlias"),
FeatureFactory.getFactory(this).getEnterprisePrivacyFeatureProvider(this) FeatureFactory.getFactory(this).getEnterprisePrivacyFeatureProvider(this)
.hasDeviceOwner(), isAdmin, pm); .hasDeviceOwner(), isAdmin);
// Final step, refresh categories.
updateCategories();
} }
private void setTileEnabled(ComponentName component, boolean enabled, boolean isAdmin, private void setTileEnabled(ComponentName component, boolean enabled, boolean isAdmin) {
PackageManager pm) {
if (UserHandle.MU_ENABLED && !isAdmin && getPackageName().equals(component.getPackageName()) if (UserHandle.MU_ENABLED && !isAdmin && getPackageName().equals(component.getPackageName())
&& !ArrayUtils.contains(SETTINGS_FOR_RESTRICTED, component.getClassName())) { && !ArrayUtils.contains(SETTINGS_FOR_RESTRICTED, component.getClassName())) {
enabled = false; enabled = false;