Merge "Revise homepage sticky cards UI"
diff --git a/res/layout/notification_history_app_layout.xml b/res/layout/notification_history_app_layout.xml
index 84fe91b..4c899e6 100644
--- a/res/layout/notification_history_app_layout.xml
+++ b/res/layout/notification_history_app_layout.xml
@@ -47,7 +47,7 @@
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="center_vertical"
- android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Body1"
+ android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Notification"
android:paddingStart="8dp" />
</LinearLayout>
<TextView
@@ -56,9 +56,8 @@
android:layout_width="wrap_content"
android:paddingStart="6dp"
android:layout_gravity="center_vertical"
- android:fontFamily="sans-serif-medium"
android:paddingTop="8dp"
- android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Body1"/>
+ android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Notification.Title"/>
</LinearLayout>
<ImageButton
android:id="@+id/expand"
diff --git a/res/layout/notification_history_log_row.xml b/res/layout/notification_history_log_row.xml
index 748e134..136af38 100644
--- a/res/layout/notification_history_log_row.xml
+++ b/res/layout/notification_history_log_row.xml
@@ -40,8 +40,7 @@
android:layout_centerVertical="true"
android:ellipsize="end"
android:singleLine="true"
- android:fontFamily="sans-serif-medium"
- android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Body1"
+ android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Notification.Title"
android:textAlignment="viewStart"/>
<ImageView
@@ -65,8 +64,7 @@
android:layout_centerVertical="true"
android:ellipsize="end"
android:singleLine="true"
- android:textColor="?android:attr/textColorPrimary"
- android:textAppearance="?android:attr/textAppearanceSmall"
+ android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Notification"
android:textAlignment="viewEnd"
/>
</RelativeLayout>
@@ -79,8 +77,7 @@
android:ellipsize="end"
android:singleLine="true"
android:paddingTop="3dp"
- android:textColor="?android:attr/textColorPrimary"
- android:textAppearance="?android:attr/textAppearanceSmall"
+ android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Notification"
android:textAlignment="viewStart" />
</LinearLayout>
diff --git a/res/layout/notification_sbn_log_row.xml b/res/layout/notification_sbn_log_row.xml
index 39b918d..e94150d 100644
--- a/res/layout/notification_sbn_log_row.xml
+++ b/res/layout/notification_sbn_log_row.xml
@@ -95,8 +95,7 @@
android:layout_centerVertical="true"
android:ellipsize="end"
android:singleLine="true"
- android:textColor="?android:attr/textColorPrimary"
- android:textAppearance="?android:attr/textAppearanceSmall"
+ android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Notification"
android:textAlignment="viewEnd"
/>
</RelativeLayout>
@@ -116,7 +115,7 @@
android:layout_gravity="left|center_vertical"
android:ellipsize="end"
android:singleLine="true"
- android:textColor="?android:attr/textColorPrimary"
+ android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Notification.Title"
android:textAlignment="viewStart"
/>
@@ -127,8 +126,7 @@
android:layout_gravity="left|center_vertical"
android:ellipsize="end"
android:singleLine="true"
- android:textColor="?android:attr/textColorPrimary"
- android:textAppearance="?android:attr/textAppearanceSmall"
+ android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Notification"
android:textAlignment="viewStart"
/>
diff --git a/res/xml/development_tile_settings.xml b/res/xml/development_tile_settings.xml
index e5bfbbf..558535fe 100644
--- a/res/xml/development_tile_settings.xml
+++ b/res/xml/development_tile_settings.xml
@@ -18,5 +18,7 @@
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res-auto"
+ android:key="development_tile_settings"
android:title="@string/quick_settings_developer_tiles"
+ settings:searchable="false"
settings:controller="com.android.settings.development.qstile.DevelopmentTilePreferenceController" />
diff --git a/res/xml/device_admin_settings.xml b/res/xml/device_admin_settings.xml
index 9a48761..6fbc139 100644
--- a/res/xml/device_admin_settings.xml
+++ b/res/xml/device_admin_settings.xml
@@ -19,6 +19,8 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res-auto"
android:title="@string/manage_device_admin"
+ android:key="device_admin_settings"
+ settings:searchable="false"
settings:controller="com.android.settings.applications.specialaccess.deviceadmin.DeviceAdminListPreferenceController">
<com.android.settingslib.widget.FooterPreference
diff --git a/res/xml/notification_access_settings.xml b/res/xml/notification_access_settings.xml
index ca84f1b..43f7c49 100644
--- a/res/xml/notification_access_settings.xml
+++ b/res/xml/notification_access_settings.xml
@@ -18,5 +18,7 @@
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res-auto"
+ android:key="notification_access_screen"
android:title="@string/manage_notification_access_title"
+ settings:searchable="false"
settings:controller="com.android.settings.applications.specialaccess.notificationaccess.NotificationAccessScreenPreferenceController" />
diff --git a/res/xml/picture_in_picture_settings.xml b/res/xml/picture_in_picture_settings.xml
index 1f08246..c9e3a3f 100644
--- a/res/xml/picture_in_picture_settings.xml
+++ b/res/xml/picture_in_picture_settings.xml
@@ -18,5 +18,7 @@
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res-auto"
+ android:key="picture_in_picture_screen"
android:title="@string/picture_in_picture_title"
+ settings:searchable="false"
settings:controller="com.android.settings.applications.specialaccess.pictureinpicture.PictureInPictureScreenPreferenceController" />
diff --git a/res/xml/premium_sms_settings.xml b/res/xml/premium_sms_settings.xml
index 82aece3..ede6057 100644
--- a/res/xml/premium_sms_settings.xml
+++ b/res/xml/premium_sms_settings.xml
@@ -18,5 +18,7 @@
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res-auto"
+ android:key="premium_sms_screen"
android:title="@string/premium_sms_access"
+ settings:searchable="false"
settings:controller="com.android.settings.applications.specialaccess.premiumsms.PremiumSmsScreenPreferenceController" />
diff --git a/res/xml/trust_agent_settings.xml b/res/xml/trust_agent_settings.xml
index 88837b8..25b3139 100644
--- a/res/xml/trust_agent_settings.xml
+++ b/res/xml/trust_agent_settings.xml
@@ -17,6 +17,8 @@
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res-auto"
+ android:key="trust_agents"
android:title="@string/manage_trust_agents"
+ settings:searchable="false"
settings:controller="com.android.settings.security.trustagent.TrustAgentsPreferenceController">
</PreferenceScreen>
diff --git a/res/xml/user_dictionary_list_fragment.xml b/res/xml/user_dictionary_list_fragment.xml
index 2f921a0..2565a1a 100644
--- a/res/xml/user_dictionary_list_fragment.xml
+++ b/res/xml/user_dictionary_list_fragment.xml
@@ -17,7 +17,9 @@
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res-auto"
+ android:key="user_dict_list"
android:title="@string/user_dict_settings_title"
+ settings:searchable="false"
settings:controller="com.android.settings.inputmethod.UserDictionaryListPreferenceController">
</PreferenceScreen>
diff --git a/res/xml/vr_listeners_settings.xml b/res/xml/vr_listeners_settings.xml
index a35b987..d9b364c 100644
--- a/res/xml/vr_listeners_settings.xml
+++ b/res/xml/vr_listeners_settings.xml
@@ -18,5 +18,7 @@
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res-auto"
+ android:key="vr_listener_settings"
android:title="@string/vr_listeners_title"
+ settings:searchable="false"
settings:controller="com.android.settings.applications.specialaccess.vrlistener.VrListenerScreenPreferenceController" />
diff --git a/src/com/android/settings/accessibility/ShortcutPreference.java b/src/com/android/settings/accessibility/ShortcutPreference.java
index 84ced68..2a62439 100644
--- a/src/com/android/settings/accessibility/ShortcutPreference.java
+++ b/src/com/android/settings/accessibility/ShortcutPreference.java
@@ -53,7 +53,7 @@
}
private OnClickListener mListener = null;
- private static final float DISABLED_ALPHA = 0.5f;
+ private static final float DISABLED_ALPHA = 0.77f;
private static final float ENABLED_ALPHA = 1.0f;
private int mSettingsVisibility = View.VISIBLE;
private boolean mAutoEnabledSettings;
diff --git a/src/com/android/settings/media/MediaOutputSlice.java b/src/com/android/settings/media/MediaOutputSlice.java
index 8e6da80..3c9999e 100644
--- a/src/com/android/settings/media/MediaOutputSlice.java
+++ b/src/com/android/settings/media/MediaOutputSlice.java
@@ -104,7 +104,7 @@
}
private void addRow(MediaDevice device, MediaDevice connectedDevice, ListBuilder listBuilder) {
- if (TextUtils.equals(device.getId(), connectedDevice.getId())) {
+ if (connectedDevice != null && TextUtils.equals(device.getId(), connectedDevice.getId())) {
listBuilder.addInputRange(getActiveDeviceHeaderRow(device));
} else {
listBuilder.addRow(getMediaDeviceRow(device));
diff --git a/src/com/android/settings/users/AddUserWhenLockedPreferenceController.java b/src/com/android/settings/users/AddUserWhenLockedPreferenceController.java
index f931fa4..34892fa 100644
--- a/src/com/android/settings/users/AddUserWhenLockedPreferenceController.java
+++ b/src/com/android/settings/users/AddUserWhenLockedPreferenceController.java
@@ -16,22 +16,29 @@
package com.android.settings.users;
import android.content.Context;
+import android.os.UserHandle;
import android.provider.Settings;
import androidx.preference.Preference;
+import com.android.internal.widget.LockPatternUtils;
import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.RestrictedSwitchPreference;
public class AddUserWhenLockedPreferenceController extends TogglePreferenceController {
private final UserCapabilities mUserCaps;
+ private LockPatternUtils mLockPatternUtils;
public AddUserWhenLockedPreferenceController(Context context, String key) {
super(context, key);
mUserCaps = UserCapabilities.create(context);
}
+ void setLockPatternUtils(LockPatternUtils lockPatternUtils) {
+ mLockPatternUtils = lockPatternUtils;
+ }
+
@Override
public void updateState(Preference preference) {
super.updateState(preference);
@@ -53,6 +60,8 @@
return DISABLED_FOR_USER;
} else if (mUserCaps.disallowAddUser() || mUserCaps.disallowAddUserSetByAdmin()) {
return DISABLED_FOR_USER;
+ } else if (!mLockPatternUtils.isSecure(UserHandle.myUserId())) {
+ return CONDITIONALLY_UNAVAILABLE;
} else {
return mUserCaps.mUserSwitcherEnabled ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
}
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index cd305e9..51da9d2 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -241,6 +241,9 @@
mAddUserWhenLockedPreferenceController = new AddUserWhenLockedPreferenceController(
activity, KEY_ADD_USER_WHEN_LOCKED);
+ mAddUserWhenLockedPreferenceController.setLockPatternUtils(
+ new LockPatternUtils(getPrefContext()));
+
mMultiUserFooterPreferenceController = new MultiUserFooterPreferenceController(activity,
KEY_MULTIUSER_FOOTER);
@@ -1290,8 +1293,11 @@
boolean suppressAllPage) {
final List<String> niks = super.getNonIndexableKeysFromXml(context, xmlResId,
suppressAllPage);
- new AddUserWhenLockedPreferenceController(context, KEY_ADD_USER_WHEN_LOCKED)
- .updateNonIndexableKeys(niks);
+ AddUserWhenLockedPreferenceController controller =
+ new AddUserWhenLockedPreferenceController(
+ context, KEY_ADD_USER_WHEN_LOCKED);
+ controller.setLockPatternUtils(new LockPatternUtils(context));
+ controller.updateNonIndexableKeys(niks);
new AutoSyncDataPreferenceController(context, null /* parent */)
.updateNonIndexableKeys(niks);
new AutoSyncPersonalDataPreferenceController(context, null /* parent */)
diff --git a/tests/robotests/src/com/android/settings/users/AddUserWhenLockedPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/users/AddUserWhenLockedPreferenceControllerTest.java
index b27b636..9e0f2cc 100644
--- a/tests/robotests/src/com/android/settings/users/AddUserWhenLockedPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/users/AddUserWhenLockedPreferenceControllerTest.java
@@ -18,6 +18,7 @@
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Answers.RETURNS_DEEP_STUBS;
+import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -27,6 +28,8 @@
import androidx.preference.PreferenceScreen;
+import com.android.internal.widget.LockPatternUtils;
+import com.android.settings.core.BasePreferenceController;
import com.android.settings.testutils.shadow.ShadowUserManager;
import com.android.settingslib.RestrictedSwitchPreference;
@@ -51,13 +54,16 @@
private Context mContext;
private ShadowUserManager mUserManager;
private AddUserWhenLockedPreferenceController mController;
+ private LockPatternUtils mLockPatternUtils;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
+ mLockPatternUtils = mock(LockPatternUtils.class);
mUserManager = ShadowUserManager.getShadow();
mController = new AddUserWhenLockedPreferenceController(mContext, "fake_key");
+ mController.setLockPatternUtils(mLockPatternUtils);
mUserManager.setSupportsMultipleUsers(true);
}
@@ -69,6 +75,7 @@
@Test
public void displayPref_NotAdmin_shouldNotDisplay() {
mUserManager.setIsAdminUser(false);
+ when(mLockPatternUtils.isSecure(anyInt())).thenReturn(true);
final RestrictedSwitchPreference preference = mock(RestrictedSwitchPreference.class);
when(preference.getKey()).thenReturn(mController.getPreferenceKey());
when(mScreen.findPreference(preference.getKey())).thenReturn(preference);
@@ -81,6 +88,7 @@
@Test
public void updateState_NotAdmin_shouldNotDisplayPreference() {
mUserManager.setIsAdminUser(false);
+ when(mLockPatternUtils.isSecure(anyInt())).thenReturn(true);
final RestrictedSwitchPreference preference = mock(RestrictedSwitchPreference.class);
mController.updateState(preference);
@@ -93,8 +101,10 @@
mUserManager.setIsAdminUser(true);
mUserManager.setUserSwitcherEnabled(true);
mUserManager.setSupportsMultipleUsers(true);
+ when(mLockPatternUtils.isSecure(anyInt())).thenReturn(true);
final AddUserWhenLockedPreferenceController controller =
new AddUserWhenLockedPreferenceController(mContext, "fake_key");
+ controller.setLockPatternUtils(mLockPatternUtils);
final RestrictedSwitchPreference preference = mock(RestrictedSwitchPreference.class);
controller.updateState(preference);
@@ -143,4 +153,40 @@
assertThat(Global.getInt(mContext.getContentResolver(), Global.ADD_USERS_WHEN_LOCKED, 0))
.isEqualTo(0);
}
+
+ @Test
+ public void updateState_insecureLockScreen_shouldNotDisplayPreference() {
+ mUserManager.setIsAdminUser(true);
+ mUserManager.setUserSwitcherEnabled(true);
+ mUserManager.setSupportsMultipleUsers(true);
+ when(mLockPatternUtils.isSecure(anyInt())).thenReturn(false);
+ final AddUserWhenLockedPreferenceController controller =
+ new AddUserWhenLockedPreferenceController(mContext, "fake_key");
+ controller.setLockPatternUtils(mLockPatternUtils);
+ final RestrictedSwitchPreference preference = mock(RestrictedSwitchPreference.class);
+
+ controller.updateState(preference);
+
+ verify(preference).setVisible(false);
+ assertThat(controller.getAvailabilityStatus()).isEqualTo(
+ BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
+ }
+
+ @Test
+ public void updateState_secureLockScreen_shouldDisplayPreference() {
+ mUserManager.setIsAdminUser(true);
+ mUserManager.setUserSwitcherEnabled(true);
+ mUserManager.setSupportsMultipleUsers(true);
+ when(mLockPatternUtils.isSecure(anyInt())).thenReturn(true);
+ final AddUserWhenLockedPreferenceController controller =
+ new AddUserWhenLockedPreferenceController(mContext, "fake_key");
+ controller.setLockPatternUtils(mLockPatternUtils);
+ final RestrictedSwitchPreference preference = mock(RestrictedSwitchPreference.class);
+
+ controller.updateState(preference);
+
+ verify(preference).setVisible(true);
+ assertThat(controller.getAvailabilityStatus()).isEqualTo(
+ BasePreferenceController.AVAILABLE);
+ }
}