Merge "Update SMS mirroring icon to new style." into oc-mr1-dev
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 56771c3..2552a36 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1953,6 +1953,8 @@
<string name="wifi_failed_connect_message">Failed to connect to network</string>
<!-- Button label to delete a Wi-Fi network -->
<string name="wifi_forget">Forget</string>
+ <!-- Button label to modify a Wi-Fi network -->
+ <string name="wifi_modify">Modify</string>
<!-- Failured notification for forget -->
<string name="wifi_failed_forget_message">Failed to forget network</string>
<!-- Button label to save a Wi-Fi network configuration -->
@@ -3498,6 +3500,20 @@
continue. [CHAR LIMIT=100] -->
<string name="lockpassword_strong_auth_required_work_password">For added security, enter your work password</string>
+ <!-- An explanation text that the pattern needs to be solved because the device was factory reset. [CHAR LIMIT=100] -->
+ <string name="lockpassword_confirm_your_pattern_details_frp">Your phone was reset to factory settings. To use this phone, enter your previous pattern.</string>
+ <!-- An explanation text that the pin needs to be solved because the device was factory reset. [CHAR LIMIT=100] -->
+ <string name="lockpassword_confirm_your_pin_details_frp">Your phone was reset to factory settings. To use this phone, enter your previous PIN.</string>
+ <!-- An explanation text that the password needs to be solved because the device was factory reset. [CHAR LIMIT=100] -->
+ <string name="lockpassword_confirm_your_password_details_frp">Your phone was reset to factory settings. To use this phone, enter your previous password.</string>
+
+ <!-- Header shown when pattern needs to be solved because the device was factory reset. [CHAR LIMIT=100] -->
+ <string name="lockpassword_confirm_your_pattern_header_frp">Verify pattern</string>
+ <!-- Header shown when the pin needs to be solved because the device was factory reset. [CHAR LIMIT=100] -->
+ <string name="lockpassword_confirm_your_pin_header_frp">Verify PIN</string>
+ <!-- Header shown when the password needs to be solved because the device was factory reset. [CHAR LIMIT=100] -->
+ <string name="lockpassword_confirm_your_password_header_frp">Verify password</string>
+
<!-- Security & location settings screen, change security method screen instruction if user
enters incorrect PIN [CHAR LIMIT=30] -->
<string name="lockpassword_invalid_pin">Wrong PIN</string>
diff --git a/res/xml/configure_notification_settings.xml b/res/xml/configure_notification_settings.xml
index 1d36c48..21904e6 100644
--- a/res/xml/configure_notification_settings.xml
+++ b/res/xml/configure_notification_settings.xml
@@ -22,16 +22,11 @@
android:key="dashboard_tile_placeholder"
android:order="1"/>
- <PreferenceCategory
- android:key="lock_screen_notifications_profile_header"
- android:title="@string/profile_section_header">
-
- <com.android.settings.notification.RestrictedDropDownPreference
- android:key="lock_screen_notifications_profile"
- android:title="@string/lock_screen_notifications_title"
- android:summary="@string/summary_placeholder"/>
-
- </PreferenceCategory>
+ <!-- When device is locked -->
+ <com.android.settings.notification.RestrictedDropDownPreference
+ android:key="lock_screen_notifications"
+ android:title="@string/lock_screen_notifications_title"
+ android:summary="@string/summary_placeholder"/>
<!-- Notification badging -->
<SwitchPreference
@@ -43,12 +38,6 @@
android:key="notification_pulse"
android:title="@string/notification_pulse_title"/>
- <!-- When device is locked -->
- <com.android.settings.notification.RestrictedDropDownPreference
- android:key="lock_screen_notifications"
- android:title="@string/lock_screen_notifications_title"
- android:summary="@string/summary_placeholder"/>
-
<!-- Default notification ringtone -->
<com.android.settings.DefaultRingtonePreference
android:key="notification_default_ringtone"
@@ -62,4 +51,14 @@
android:title="@string/fingerprint_swipe_for_notifications_title"
android:fragment="com.android.settings.gestures.SwipeToNotificationSettings" />
+ <PreferenceCategory
+ android:key="lock_screen_notifications_profile_header"
+ android:title="@string/profile_section_header">
+
+ <com.android.settings.notification.RestrictedDropDownPreference
+ android:key="lock_screen_notifications_profile"
+ android:title="@string/lock_screen_notifications_title"
+ android:summary="@string/summary_placeholder"/>
+
+ </PreferenceCategory>
</PreferenceScreen>
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingPreferenceController.java b/src/com/android/settings/bluetooth/BluetoothPairingPreferenceController.java
index 5141b5c..8ac64e8 100644
--- a/src/com/android/settings/bluetooth/BluetoothPairingPreferenceController.java
+++ b/src/com/android/settings/bluetooth/BluetoothPairingPreferenceController.java
@@ -76,7 +76,7 @@
public Preference createBluetoothPairingPreference(int order) {
mPreference = new Preference(mFragment.getPreferenceScreen().getContext());
mPreference.setKey(KEY_PAIRING);
- mPreference.setIcon(R.drawable.ic_add);
+ mPreference.setIcon(R.drawable.ic_menu_add);
mPreference.setOrder(order);
mPreference.setTitle(R.string.bluetooth_pairing_pref_title);
diff --git a/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java b/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java
index e4f58d7..f8b5a8b 100644
--- a/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java
+++ b/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java
@@ -25,7 +25,6 @@
import android.provider.Settings.Secure;
import android.support.annotation.NonNull;
import android.support.annotation.VisibleForTesting;
-import android.text.format.DateUtils;
import android.util.Log;
import com.android.internal.logging.nano.MetricsProto;
@@ -55,12 +54,6 @@
private static final String SHARED_PREF_FILENAME = "suggestions";
- // Suggestion category name and expiration threshold for first impression type. Needs to keep
- // in sync with suggestion_ordering.xml
- private static final String CATEGORY_FIRST_IMPRESSION =
- "com.android.settings.suggested.category.FIRST_IMPRESSION";
- private static final long FIRST_IMPRESSION_EXPIRE_DAY_IN_MILLIS = 14 * DateUtils.DAY_IN_MILLIS;
-
private final SuggestionRanker mSuggestionRanker;
private final MetricsFeatureProvider mMetricsFeatureProvider;
@@ -141,12 +134,7 @@
context, MetricsProto.MetricsEvent.ACTION_SETTINGS_DISMISS_SUGGESTION,
getSuggestionIdentifier(context, suggestion));
- boolean isSmartSuggestionEnabled = isSmartSuggestionEnabled(context);
- if (isSmartSuggestionEnabled) {
- // Disable smart suggestion if we are still showing first impression suggestions.
- isSmartSuggestionEnabled = !isShowingFirstImpressionSuggestion(context);
- }
- if (!parser.dismissSuggestion(suggestion, isSmartSuggestionEnabled)) {
+ if (!parser.dismissSuggestion(suggestion)) {
return;
}
context.getPackageManager().setComponentEnabledSetting(
@@ -155,19 +143,6 @@
PackageManager.DONT_KILL_APP);
}
- private boolean isShowingFirstImpressionSuggestion(Context context) {
- final String keySetupTime = CATEGORY_FIRST_IMPRESSION + SuggestionParser.SETUP_TIME;
- final long currentTime = System.currentTimeMillis();
- final SharedPreferences sharedPrefs = getSharedPrefs(context);
- if (!sharedPrefs.contains(keySetupTime)) {
- return true;
- }
- final long setupTime = sharedPrefs.getLong(keySetupTime, 0);
- final long elapsedTime = currentTime - setupTime;
- Log.d(TAG, "Day " + elapsedTime / DateUtils.DAY_IN_MILLIS + " for first impression");
- return elapsedTime <= FIRST_IMPRESSION_EXPIRE_DAY_IN_MILLIS;
- }
-
@Override
public String getSuggestionIdentifier(Context context, Tile suggestion) {
if (suggestion.intent == null || suggestion.intent.getComponent() == null
diff --git a/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceController.java b/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceController.java
index fffa243..280098d 100644
--- a/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceController.java
+++ b/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceController.java
@@ -37,7 +37,7 @@
private final int ON = 1;
private final int OFF = 0;
- private static final String KEY_ALWAYS_ON = "ambient_display_always_on";
+ public static final String KEY_ALWAYS_ON = "ambient_display_always_on";
private static final int MY_USER = UserHandle.myUserId();
private final AmbientDisplayConfiguration mConfig;
@@ -61,7 +61,11 @@
@Override
public void updateState(Preference preference) {
- ((SwitchPreference) preference).setChecked(mConfig.alwaysOnEnabled(MY_USER));
+ ((SwitchPreference) preference).setChecked(isAlwaysOnEnabled(mConfig));
+ }
+
+ public static boolean isAlwaysOnEnabled(AmbientDisplayConfiguration config) {
+ return config.alwaysOnEnabled(MY_USER);
}
@Override
@@ -77,7 +81,15 @@
@Override
public boolean isAvailable() {
- return mConfig.alwaysOnAvailableForUser(MY_USER);
+ return isAvailable(mConfig);
+ }
+
+ public static boolean isAvailable(AmbientDisplayConfiguration config) {
+ return config.alwaysOnAvailableForUser(MY_USER);
+ }
+
+ public static boolean accessibilityInversionEnabled(AmbientDisplayConfiguration config) {
+ return config.accessibilityInversionEnabled(MY_USER);
}
@Override
diff --git a/src/com/android/settings/fingerprint/FingerprintSettings.java b/src/com/android/settings/fingerprint/FingerprintSettings.java
index 2425c61..4eddcb1 100644
--- a/src/com/android/settings/fingerprint/FingerprintSettings.java
+++ b/src/com/android/settings/fingerprint/FingerprintSettings.java
@@ -402,7 +402,7 @@
Preference addPreference = new Preference(root.getContext());
addPreference.setKey(KEY_FINGERPRINT_ADD);
addPreference.setTitle(R.string.fingerprint_add_title);
- addPreference.setIcon(R.drawable.ic_add_24dp);
+ addPreference.setIcon(R.drawable.ic_menu_add);
root.addPreference(addPreference);
addPreference.setOnPreferenceChangeListener(this);
updateAddPreference();
diff --git a/src/com/android/settings/notification/ZenModeSettings.java b/src/com/android/settings/notification/ZenModeSettings.java
index 534892c..8cb700b 100644
--- a/src/com/android/settings/notification/ZenModeSettings.java
+++ b/src/com/android/settings/notification/ZenModeSettings.java
@@ -136,7 +136,7 @@
}
}
final Preference p = new Preference(getPrefContext());
- p.setIcon(R.drawable.ic_add);
+ p.setIcon(R.drawable.ic_menu_add);
p.setTitle(R.string.zen_mode_add_rule);
p.setPersistent(false);
p.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
diff --git a/src/com/android/settings/password/ConfirmLockPassword.java b/src/com/android/settings/password/ConfirmLockPassword.java
index 328646b..dcb7b66 100644
--- a/src/com/android/settings/password/ConfirmLockPassword.java
+++ b/src/com/android/settings/password/ConfirmLockPassword.java
@@ -197,11 +197,19 @@
}
private int getDefaultHeader() {
+ if (mFrp) {
+ return mIsAlpha ? R.string.lockpassword_confirm_your_password_header_frp
+ : R.string.lockpassword_confirm_your_pin_header_frp;
+ }
return mIsAlpha ? R.string.lockpassword_confirm_your_password_header
: R.string.lockpassword_confirm_your_pin_header;
}
private int getDefaultDetails() {
+ if (mFrp) {
+ return mIsAlpha ? R.string.lockpassword_confirm_your_password_details_frp
+ : R.string.lockpassword_confirm_your_pin_details_frp;
+ }
boolean isStrongAuthRequired = isStrongAuthRequired();
boolean isProfile = UserManager.get(getActivity()).isManagedProfile(mEffectiveUserId);
// Map boolean flags to an index by isStrongAuth << 2 + isProfile << 1 + isAlpha.
diff --git a/src/com/android/settings/password/ConfirmLockPattern.java b/src/com/android/settings/password/ConfirmLockPattern.java
index eb42784..60d5a01 100644
--- a/src/com/android/settings/password/ConfirmLockPattern.java
+++ b/src/com/android/settings/password/ConfirmLockPattern.java
@@ -243,6 +243,9 @@
}
private int getDefaultDetails() {
+ if (mFrp) {
+ return R.string.lockpassword_confirm_your_pattern_details_frp;
+ }
final boolean isStrongAuthRequired = isStrongAuthRequired();
if (UserManager.get(getActivity()).isManagedProfile(mEffectiveUserId)) {
return isStrongAuthRequired
@@ -296,7 +299,7 @@
if (mHeaderText != null) {
mHeaderTextView.setText(mHeaderText);
} else {
- mHeaderTextView.setText(R.string.lockpassword_confirm_your_pattern_header);
+ mHeaderTextView.setText(getDefaultHeader());
}
if (mDetailsText != null) {
mDetailsTextView.setText(mDetailsText);
@@ -331,6 +334,11 @@
mHeaderTextView.announceForAccessibility(mHeaderTextView.getText());
}
+ private int getDefaultHeader() {
+ return mFrp ? R.string.lockpassword_confirm_your_pattern_header_frp
+ : R.string.lockpassword_confirm_your_pattern_header;
+ }
+
private Runnable mClearPatternRunnable = new Runnable() {
public void run() {
mLockPatternView.clearPattern();
diff --git a/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImplTest.java
index 2fde357..59b918a 100644
--- a/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImplTest.java
@@ -17,8 +17,17 @@
package com.android.settings.dashboard.suggestions;
-import android.app.ActivityManager;
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.when;
+import android.app.ActivityManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@@ -59,18 +68,6 @@
import java.util.ArrayList;
import java.util.List;
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyBoolean;
-import static org.mockito.Matchers.anyInt;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyZeroInteractions;
-import static org.mockito.Mockito.when;
-
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH,
sdk = TestConfig.SDK_VERSION,
@@ -337,7 +334,7 @@
@Test
public void dismissSuggestion_hasMoreDismissCount_shouldNotDisableComponent() {
- when(mSuggestionParser.dismissSuggestion(any(Tile.class), anyBoolean()))
+ when(mSuggestionParser.dismissSuggestion(any(Tile.class)))
.thenReturn(false);
mProvider.dismissSuggestion(mContext, mSuggestionParser, mSuggestion);
@@ -349,25 +346,6 @@
}
@Test
- public void dismissSuggestion_isShowingFirstImpressionType_dismissWithoutSmartSuggestionRule() {
- mProvider = spy(mProvider);
- when(mProvider.isSmartSuggestionEnabled(any(Context.class))).thenReturn(true);
- final SharedPreferences pref = RuntimeEnvironment.application.getSharedPreferences(
- "test_pref", Context.MODE_PRIVATE);
- when(mProvider.getSharedPrefs(mContext)).thenReturn(pref);
- when(mSuggestionParser.dismissSuggestion(any(Tile.class), anyBoolean()))
- .thenReturn(false);
-
- mProvider.dismissSuggestion(mContext, mSuggestionParser, mSuggestion);
-
- verify(mFactory.metricsFeatureProvider).action(
- eq(mContext),
- eq(MetricsProto.MetricsEvent.ACTION_SETTINGS_DISMISS_SUGGESTION),
- anyString());
- verify(mSuggestionParser).dismissSuggestion(any(Tile.class), eq(false));
- }
-
- @Test
public void dismissSuggestion_noContext_shouldDoNothing() {
mProvider.dismissSuggestion(null, mSuggestionParser, mSuggestion);
@@ -376,7 +354,7 @@
@Test
public void dismissSuggestion_hasNoMoreDismissCount_shouldDisableComponent() {
- when(mSuggestionParser.dismissSuggestion(any(Tile.class), anyBoolean()))
+ when(mSuggestionParser.dismissSuggestion(any(Tile.class)))
.thenReturn(true);
mProvider.dismissSuggestion(mContext, mSuggestionParser, mSuggestion);
diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowSecureSettings.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowSecureSettings.java
index 1ae5398..0f61a5d 100644
--- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowSecureSettings.java
+++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowSecureSettings.java
@@ -89,6 +89,32 @@
}
}
+ @Implementation
+ public static boolean putFloatForUser(
+ ContentResolver resolver, String name, float value, int userHandle) {
+ final Table<Integer, String, Object> userTable = getUserTable(resolver);
+ synchronized (userTable) {
+ userTable.put(userHandle, name, value);
+ return true;
+ }
+ }
+
+ @Implementation
+ public static float getFloatForUser(
+ ContentResolver resolver, String name, float def, int userHandle) {
+ final Table<Integer, String, Object> userTable = getUserTable(resolver);
+ synchronized (userTable) {
+ final Object object = userTable.get(userHandle, name);
+ return object instanceof Float ? (Float) object : def;
+ }
+ }
+
+ public static void clear() {
+ synchronized (sUserDataMap) {
+ sUserDataMap.clear();
+ }
+ }
+
private static Table<Integer, String, Object> getUserTable(ContentResolver contentResolver) {
synchronized (sUserDataMap) {
Table<Integer, String, Object> table = sUserDataMap.get(contentResolver);