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:
@@ -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>
|
||||||
|
@@ -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);
|
||||||
@@ -895,32 +888,32 @@ public class SettingsActivity extends SettingsDrawerActivity
|
|||||||
pm.hasSystemFeature(PackageManager.FEATURE_WIFI), isAdmin);
|
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.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH), isAdmin);
|
||||||
|
|
||||||
setTileEnabled(new ComponentName(packageName,
|
setTileEnabled(new ComponentName(packageName,
|
||||||
Settings.DataUsageSummaryActivity.class.getName()),
|
Settings.DataUsageSummaryActivity.class.getName()),
|
||||||
Utils.isBandwidthControlEnabled(), isAdmin);
|
Utils.isBandwidthControlEnabled(), isAdmin);
|
||||||
|
|
||||||
setTileEnabled(new ComponentName(packageName,
|
setTileEnabled(new ComponentName(packageName,
|
||||||
Settings.SimSettingsActivity.class.getName()),
|
Settings.SimSettingsActivity.class.getName()),
|
||||||
Utils.showSimCardTile(this), isAdmin);
|
Utils.showSimCardTile(this), isAdmin);
|
||||||
|
|
||||||
setTileEnabled(new ComponentName(packageName,
|
setTileEnabled(new ComponentName(packageName,
|
||||||
Settings.PowerUsageSummaryActivity.class.getName()),
|
Settings.PowerUsageSummaryActivity.class.getName()),
|
||||||
mBatteryPresent, isAdmin);
|
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);
|
&& !Utils.isMonkeyRunning(), isAdmin);
|
||||||
|
|
||||||
setTileEnabled(new ComponentName(packageName,
|
setTileEnabled(new ComponentName(packageName,
|
||||||
Settings.NetworkDashboardActivity.class.getName()),
|
Settings.NetworkDashboardActivity.class.getName()),
|
||||||
!UserManager.isDeviceInDemoMode(this), isAdmin);
|
!UserManager.isDeviceInDemoMode(this), isAdmin);
|
||||||
|
|
||||||
setTileEnabled(new ComponentName(packageName,
|
setTileEnabled(new ComponentName(packageName,
|
||||||
Settings.ConnectedDeviceDashboardActivity.class.getName()),
|
Settings.ConnectedDeviceDashboardActivity.class.getName()),
|
||||||
!UserManager.isDeviceInDemoMode(this), isAdmin);
|
!UserManager.isDeviceInDemoMode(this), isAdmin);
|
||||||
|
|
||||||
setTileEnabled(new ComponentName(packageName,
|
setTileEnabled(new ComponentName(packageName,
|
||||||
@@ -934,42 +927,46 @@ public class SettingsActivity extends SettingsDrawerActivity
|
|||||||
&& adapter != null && adapter.isEnabled(), isAdmin);
|
&& 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.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);
|
showDev, isAdmin);
|
||||||
|
|
||||||
|
// Enable/disable backup settings depending on whether the user is admin.
|
||||||
|
setTileEnabled(new ComponentName(packageName,
|
||||||
|
BackupSettingsActivity.class.getName()), true,
|
||||||
|
isAdmin || Utils.isCarrierDemoUser(this));
|
||||||
|
|
||||||
|
setTileEnabled(new ComponentName(packageName,
|
||||||
|
Settings.EnterprisePrivacySettingsActivity.class.getName()),
|
||||||
|
FeatureFactory.getFactory(this).getEnterprisePrivacyFeatureProvider(this)
|
||||||
|
.hasDeviceOwner(), isAdmin);
|
||||||
|
|
||||||
if (UserHandle.MU_ENABLED && !isAdmin) {
|
if (UserHandle.MU_ENABLED && !isAdmin) {
|
||||||
|
|
||||||
// When on restricted users, disable all extra categories (but only the settings ones).
|
// When on restricted users, disable all extra categories (but only the settings ones).
|
||||||
final List<DashboardCategory> categories = mDashboardFeatureProvider.getAllCategories();
|
final List<DashboardCategory> categories = mDashboardFeatureProvider.getAllCategories();
|
||||||
|
synchronized (categories) {
|
||||||
for (DashboardCategory category : categories) {
|
for (DashboardCategory category : categories) {
|
||||||
for (Tile tile : category.tiles) {
|
for (Tile tile : category.tiles) {
|
||||||
ComponentName component = tile.intent.getComponent();
|
ComponentName component = tile.intent.getComponent();
|
||||||
final String name = component.getClassName();
|
final String name = component.getClassName();
|
||||||
final boolean isEnabledForRestricted = ArrayUtils.contains(
|
final boolean isEnabledForRestricted = ArrayUtils.contains(
|
||||||
SettingsGateway.SETTINGS_FOR_RESTRICTED, name);
|
SettingsGateway.SETTINGS_FOR_RESTRICTED, name);
|
||||||
if (packageName.equals(component.getPackageName()) && !isEnabledForRestricted) {
|
if (packageName.equals(component.getPackageName())
|
||||||
setTileEnabled(component, false, isAdmin);
|
&& !isEnabledForRestricted) {
|
||||||
|
setTileEnabled(component, false, isAdmin);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enable/disable backup settings depending on whether the user is admin.
|
|
||||||
setTileEnabled(new ComponentName(packageName,
|
|
||||||
BackupSettingsActivity.class.getName()), true,
|
|
||||||
isAdmin || Utils.isCarrierDemoUser(this));
|
|
||||||
|
|
||||||
setTileEnabled(new ComponentName(packageName,
|
|
||||||
Settings.EnterprisePrivacySettingsActivity.class.getName()),
|
|
||||||
FeatureFactory.getFactory(this).getEnterprisePrivacyFeatureProvider(this)
|
|
||||||
.hasDeviceOwner(), 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;
|
||||||
|
@@ -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;
|
||||||
|
@@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user