Misc fix for secondary user

- Theme fix: action bar and status bar color now have enough contrast
  for SUW theme.
- Fix a ConcurrentModificationError when switching between users
  quickly.

Change-Id: If31f88e36f1d4c5d7f90bc9d128041f0e0a81ff9
Fix: 35948464
Test: make RunSettingsRoboTests
This commit is contained in:
Fan Zhang
2017-03-08 09:24:45 -08:00
parent fdb307bfc0
commit a6986e7ed2
4 changed files with 44 additions and 43 deletions

View File

@@ -102,8 +102,10 @@
<!-- Accessibility portion of Setup Wizard --> <!-- Accessibility portion of Setup Wizard -->
<style name="SetupWizardAccessibilityTheme" parent="Theme.SettingsBase"> <style name="SetupWizardAccessibilityTheme" parent="Theme.SettingsBase">
<item name="android:windowLightStatusBar">false</item>
<item name="android:colorPrimary">@color/material_blue_700</item> <item name="android:colorPrimary">@color/material_blue_700</item>
<item name="android:colorPrimaryDark">@color/material_blue_700</item> <item name="android:colorPrimaryDark">@color/material_blue_700</item>
<item name="android:actionBarTheme">@android:style/ThemeOverlay.Material.Dark.ActionBar</item>
<item name="preferenceTheme">@style/PreferenceTheme</item> <item name="preferenceTheme">@style/PreferenceTheme</item>
<item name="switchBarTheme">@style/SetupWizardAccessibilitySwitchBarTheme</item> <item name="switchBarTheme">@style/SetupWizardAccessibilitySwitchBarTheme</item>
</style> </style>

View File

@@ -32,7 +32,6 @@ import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas; import android.graphics.Canvas;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.nfc.NfcAdapter; import android.nfc.NfcAdapter;
@@ -661,6 +660,9 @@ public class SettingsActivity extends SettingsDrawerActivity
@Override @Override
protected void onPause() { protected void onPause() {
super.onPause(); super.onPause();
mDevelopmentPreferences.unregisterOnSharedPreferenceChangeListener(
mDevelopmentPreferencesListener);
mDevelopmentPreferencesListener = null;
unregisterReceiver(mBatteryInfoReceiver); unregisterReceiver(mBatteryInfoReceiver);
if (!mSearchFeatureProvider.isEnabled(this)) { if (!mSearchFeatureProvider.isEnabled(this)) {
unregisterReceiver(mUserAddRemoveReceiver); unregisterReceiver(mUserAddRemoveReceiver);
@@ -670,15 +672,6 @@ public class SettingsActivity extends SettingsDrawerActivity
} }
} }
@Override
public void onDestroy() {
super.onDestroy();
mDevelopmentPreferences.unregisterOnSharedPreferenceChangeListener(
mDevelopmentPreferencesListener);
mDevelopmentPreferencesListener = null;
}
@Override @Override
public void setTaskDescription(ActivityManager.TaskDescription taskDescription) { public void setTaskDescription(ActivityManager.TaskDescription taskDescription) {
final Bitmap icon = getBitmapFromXmlResource(R.drawable.ic_launcher_settings); final Bitmap icon = getBitmapFromXmlResource(R.drawable.ic_launcher_settings);
@@ -944,23 +937,6 @@ public class SettingsActivity extends SettingsDrawerActivity
Settings.DevelopmentSettingsActivity.class.getName()), Settings.DevelopmentSettingsActivity.class.getName()),
showDev, isAdmin); showDev, isAdmin);
if (UserHandle.MU_ENABLED && !isAdmin) {
// When on restricted users, disable all extra categories (but only the settings ones).
final List<DashboardCategory> categories = mDashboardFeatureProvider.getAllCategories();
for (DashboardCategory category : categories) {
for (Tile tile : category.tiles) {
ComponentName component = tile.intent.getComponent();
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);
}
}
}
}
// Enable/disable backup settings depending on whether the user is admin. // Enable/disable backup settings depending on whether the user is admin.
setTileEnabled(new ComponentName(packageName, setTileEnabled(new ComponentName(packageName,
BackupSettingsActivity.class.getName()), true, BackupSettingsActivity.class.getName()), true,
@@ -970,6 +946,27 @@ public class SettingsActivity extends SettingsDrawerActivity
Settings.EnterprisePrivacySettingsActivity.class.getName()), Settings.EnterprisePrivacySettingsActivity.class.getName()),
FeatureFactory.getFactory(this).getEnterprisePrivacyFeatureProvider(this) FeatureFactory.getFactory(this).getEnterprisePrivacyFeatureProvider(this)
.hasDeviceOwner(), isAdmin); .hasDeviceOwner(), isAdmin);
if (UserHandle.MU_ENABLED && !isAdmin) {
// When on restricted users, disable all extra categories (but only the settings ones).
final List<DashboardCategory> categories = mDashboardFeatureProvider.getAllCategories();
synchronized (categories) {
for (DashboardCategory category : categories) {
for (Tile tile : category.tiles) {
ComponentName component = tile.intent.getComponent();
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);
}
}
}
}
}
// Final step, refresh categories. // Final step, refresh categories.
updateCategories(); updateCategories();
} }
@@ -1099,10 +1096,6 @@ public class SettingsActivity extends SettingsDrawerActivity
return mResultIntentData; return mResultIntentData;
} }
public void setResultIntentData(Intent resultIntentData) {
mResultIntentData = resultIntentData;
}
public void startSuggestion(Intent intent) { public void startSuggestion(Intent intent) {
if (intent == null || ActivityManager.isUserAMonkey()) { if (intent == null || ActivityManager.isUserAMonkey()) {
return; return;

View File

@@ -21,6 +21,7 @@ import android.app.FragmentManager;
import android.app.FragmentTransaction; import android.app.FragmentTransaction;
import android.content.Intent; import android.content.Intent;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;

View File

@@ -31,6 +31,7 @@ import org.robolectric.Robolectric;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import static org.mockito.Matchers.any; import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
import static org.mockito.Matchers.eq; import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
@@ -54,8 +55,12 @@ public class HardwareInfoDialogFragmentTest {
final HardwareInfoDialogFragment fragment = spy(HardwareInfoDialogFragment.newInstance()); final HardwareInfoDialogFragment fragment = spy(HardwareInfoDialogFragment.newInstance());
fragment.show(mActivity.getFragmentManager(), HardwareInfoDialogFragment.TAG); fragment.show(mActivity.getFragmentManager(), HardwareInfoDialogFragment.TAG);
verify(fragment).setText(
any(View.class), eq(R.id.model_label), eq(R.id.model_value),
anyString());
verify(fragment).setText( verify(fragment).setText(
any(View.class), eq(R.id.hardware_rev_label), eq(R.id.hardware_rev_value), any(View.class), eq(R.id.hardware_rev_label), eq(R.id.hardware_rev_value),
eq(TEST_HARDWARE_REV)); anyString());
} }
} }