Merge "Remove availability tests from RingVolumePreferenceControllerTest" into main
diff --git a/res/values/strings.xml b/res/values/strings.xml
index d5ad3d3..44a44e8 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -12301,6 +12301,10 @@
<string name="aspect_ratio_summary">Try a new aspect ratio to view this app if it hasn\'t been designed to fit your <xliff:g id="device_name">%1$s</xliff:g></string>
<!-- [CHAR LIMIT=NONE] Aspect ratio setting main summary on page to choose aspect ratio for apps unoptimized for device -->
<string name="aspect_ratio_main_summary">Try a new aspect ratio to view this app if it hasn\'t been designed to fit your <xliff:g id="device_name">%1$s</xliff:g>. Some apps may not be optimized for certain aspect ratios.</string>
+ <!-- [CHAR LIMIT=NONE] Aspect ratio setting summary to choose aspect ratio for apps unoptimized for device -->
+ <string name="aspect_ratio_summary_text">Try a new aspect ratio to view an app if it hasn\'t been designed to fit your <xliff:g id="device_name">%1$s</xliff:g></string>
+ <!-- [CHAR LIMIT=NONE] Aspect ratio setting main summary on page to choose aspect ratio for apps unoptimized for device -->
+ <string name="aspect_ratio_main_summary_text">Try a new aspect ratio to view an app if it hasn\'t been designed to fit your <xliff:g id="device_name">%1$s</xliff:g>. Some apps may not be optimized for certain aspect ratios.</string>
<!-- [CHAR LIMIT=NONE] Aspect ratio suggested apps filter label -->
<string name="user_aspect_ratio_suggested_apps_label">Suggested apps</string>
<!-- [CHAR LIMIT=14] Filter label for apps that have user aspect ratio changed -->
diff --git a/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java b/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java
index 8a7c048..cfe7962 100644
--- a/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java
+++ b/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java
@@ -203,6 +203,16 @@
slicePreferenceController.setSliceUri(sliceEnabled ? controlUri : null);
slicePreferenceController.onStart();
slicePreferenceController.displayPreference(getPreferenceScreen());
+
+ // Temporarily fix the issue that the page will be automatically scrolled to a wrong
+ // position when entering the page. This will make sure the bluetooth header is shown on top
+ // of the page.
+ use(LeAudioBluetoothDetailsHeaderController.class).displayPreference(
+ getPreferenceScreen());
+ use(AdvancedBluetoothDetailsHeaderController.class).displayPreference(
+ getPreferenceScreen());
+ use(BluetoothDetailsHeaderController.class).displayPreference(
+ getPreferenceScreen());
}
private final ViewTreeObserver.OnGlobalLayoutListener mOnGlobalLayoutListener =
diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java
index eb50cea..793fecc 100644
--- a/src/com/android/settings/network/NetworkProviderSettings.java
+++ b/src/com/android/settings/network/NetworkProviderSettings.java
@@ -190,7 +190,10 @@
@VisibleForTesting
final Runnable mUpdateWifiEntryPreferencesRunnable = () -> {
updateWifiEntryPreferences();
- getView().postDelayed(mRemoveLoadingRunnable, 10);
+ View view = getView();
+ if (view != null) {
+ view.postDelayed(mRemoveLoadingRunnable, 10);
+ }
};
@VisibleForTesting
final Runnable mHideProgressBarRunnable = () -> {
diff --git a/src/com/android/settings/network/apn/ApnEditPageProvider.kt b/src/com/android/settings/network/apn/ApnEditPageProvider.kt
index f2c3325..9f3947f 100644
--- a/src/com/android/settings/network/apn/ApnEditPageProvider.kt
+++ b/src/com/android/settings/network/apn/ApnEditPageProvider.kt
@@ -36,6 +36,7 @@
import com.android.settingslib.spa.widget.editor.SettingsExposedDropdownMenuBox
import com.android.settingslib.spa.widget.editor.SettingsExposedDropdownMenuCheckBox
import com.android.settingslib.spa.widget.editor.SettingsOutlinedTextField
+import com.android.settingslib.spa.widget.editor.SettingsTextFieldPassword
import com.android.settingslib.spa.widget.preference.SwitchPreference
import com.android.settingslib.spa.widget.preference.SwitchPreferenceModel
import com.android.settingslib.spa.widget.scaffold.RegularScaffold
@@ -123,7 +124,10 @@
stringResource(R.string.apn_user),
enabled = apnData.userNameEnabled
) { apnData = apnData.copy(userName = it) }
- // TODO: password
+ SettingsTextFieldPassword(
+ apnData.passWord,
+ stringResource(R.string.apn_password)
+ ) { apnData = apnData.copy(passWord = it) }
SettingsOutlinedTextField(
apnData.server,
stringResource(R.string.apn_server),
diff --git a/src/com/android/settings/network/apn/ApnStatus.kt b/src/com/android/settings/network/apn/ApnStatus.kt
index 06d8cfb..5d64142 100644
--- a/src/com/android/settings/network/apn/ApnStatus.kt
+++ b/src/com/android/settings/network/apn/ApnStatus.kt
@@ -71,6 +71,14 @@
var mvnoValueEnabled = false
}
+/**
+ * Initialize the selected Bearer Selected Options according to bearer.
+ * @param bearer Initialized bearer options.
+ * @param bearerBitmask Initialized bearer bitmask, often multiple bearer options may be included.
+ * @param context The context to get bearerValues.
+ *
+ * @return An error message if the apn data is invalid, otherwise return null.
+ */
fun getBearerSelectedOptionsState(
bearer: Int,
bearerBitmask: Int,
diff --git a/src/com/android/settings/notification/history/NotificationSbnAdapter.java b/src/com/android/settings/notification/history/NotificationSbnAdapter.java
index 1d61ae7..c556b55 100644
--- a/src/com/android/settings/notification/history/NotificationSbnAdapter.java
+++ b/src/com/android/settings/notification/history/NotificationSbnAdapter.java
@@ -120,7 +120,7 @@
holder.setDividerVisible(position < (mValues.size() -1));
int userId = normalizeUserId(sbn);
if (!mUserBadgeCache.containsKey(userId)) {
- Drawable profile = mContext.getPackageManager().getUserBadgeForDensity(
+ Drawable profile = mContext.getPackageManager().getUserBadgeForDensityNoBackground(
UserHandle.of(userId), 0);
mUserBadgeCache.put(userId, profile);
}
diff --git a/tests/robotests/src/com/android/settings/display/SmartAutoRotatePreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/display/SmartAutoRotatePreferenceFragmentTest.java
index bdff55e..3fa4582 100644
--- a/tests/robotests/src/com/android/settings/display/SmartAutoRotatePreferenceFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/display/SmartAutoRotatePreferenceFragmentTest.java
@@ -16,6 +16,8 @@
package com.android.settings.display;
+import static android.provider.Settings.Secure.DEVICE_STATE_ROTATION_LOCK_LOCKED;
+
import static com.android.settings.display.SmartAutoRotatePreferenceFragment.AUTO_ROTATE_MAIN_SWITCH_PREFERENCE_KEY;
import static com.android.settings.display.SmartAutoRotatePreferenceFragment.AUTO_ROTATE_SWITCH_PREFERENCE_KEY;
@@ -68,6 +70,11 @@
})
public class SmartAutoRotatePreferenceFragmentTest {
+ private static final int STATE_FOLDED = 0;
+ private static final int STATE_HALF_FOLDED = 1;
+ private static final int STATE_UNFOLDED = 2;
+ private static final int STATE_REAR_DISPLAY = 3;
+
private static final String PACKAGE_NAME = "package_name";
private SmartAutoRotatePreferenceFragment mFragment;
@@ -97,6 +104,7 @@
ContentResolver mContentResolver = RuntimeEnvironment.application.getContentResolver();
when(mContext.getPackageManager()).thenReturn(mPackageManager);
when(mContext.getContentResolver()).thenReturn(mContentResolver);
+ when(mContext.getApplicationContext()).thenReturn(mContext);
doReturn(PACKAGE_NAME).when(mPackageManager).getRotationResolverPackageName();
doReturn(PackageManager.PERMISSION_GRANTED).when(mPackageManager).checkPermission(
Manifest.permission.CAMERA, PACKAGE_NAME);
@@ -119,12 +127,19 @@
when(mFragment.findPreference(AUTO_ROTATE_SWITCH_PREFERENCE_KEY)).thenReturn(
mRotateSwitchPreference);
+ when(mFragment.findPreference(AUTO_ROTATE_MAIN_SWITCH_PREFERENCE_KEY))
+ .thenReturn(mRotateMainSwitchPreference);
- when(mFragment.findPreference(AUTO_ROTATE_MAIN_SWITCH_PREFERENCE_KEY)).thenReturn(
- mRotateMainSwitchPreference);
+ when(mResources.getIntArray(com.android.internal.R.array.config_foldedDeviceStates))
+ .thenReturn(new int[] {STATE_FOLDED});
+ when(mResources.getIntArray(com.android.internal.R.array.config_halfFoldedDeviceStates))
+ .thenReturn(new int[] {STATE_HALF_FOLDED});
+ when(mResources.getIntArray(com.android.internal.R.array.config_openDeviceStates))
+ .thenReturn(new int[] {STATE_UNFOLDED});
+ when(mResources.getIntArray(com.android.internal.R.array.config_rearDisplayDeviceStates))
+ .thenReturn(new int[] {STATE_REAR_DISPLAY});
}
-
@Test
public void createHeader_faceDetectionSupported_switchBarIsEnabled() {
ShadowDeviceStateRotationLockSettingsManager.setDeviceStateRotationLockEnabled(false);
@@ -168,7 +183,7 @@
@Test
public void createPreferenceControllers_noSettableDeviceStates_returnsEmptyList() {
- enableDeviceStateSettableRotationStates(new String[]{}, new String[]{});
+ enableDeviceStateSettableRotationStates(new String[] {}, new String[] {});
List<AbstractPreferenceController> preferenceControllers =
mFragment.createPreferenceControllers(mContext);
@@ -178,17 +193,21 @@
@Test
public void createPreferenceControllers_settableDeviceStates_returnsDeviceStateControllers() {
- enableDeviceStateSettableRotationStates(new String[]{"0:1", "1:1"},
- new String[]{"Folded", "Unfolded"});
+ enableDeviceStateSettableRotationStates(
+ new String[] {
+ STATE_FOLDED + ":" + DEVICE_STATE_ROTATION_LOCK_LOCKED,
+ STATE_UNFOLDED + ":" + DEVICE_STATE_ROTATION_LOCK_LOCKED
+ },
+ new String[] {"Folded", "Unfolded"});
List<AbstractPreferenceController> preferenceControllers =
mFragment.createPreferenceControllers(mContext);
assertThat(preferenceControllers).hasSize(2);
- assertThat(preferenceControllers.get(0)).isInstanceOf(
- DeviceStateAutoRotateSettingController.class);
- assertThat(preferenceControllers.get(1)).isInstanceOf(
- DeviceStateAutoRotateSettingController.class);
+ assertThat(preferenceControllers.get(0))
+ .isInstanceOf(DeviceStateAutoRotateSettingController.class);
+ assertThat(preferenceControllers.get(1))
+ .isInstanceOf(DeviceStateAutoRotateSettingController.class);
}
@Test
@@ -204,16 +223,15 @@
verify(mFragment, times(1)).addHelpLink();
}
- private void enableDeviceStateSettableRotationStates(String[] settableStates,
- String[] settableStatesDescriptions) {
+ private void enableDeviceStateSettableRotationStates(
+ String[] settableStates, String[] settableStatesDescriptions) {
when(mResources.getStringArray(
- com.android.internal.R.array.config_perDeviceStateRotationLockDefaults)).thenReturn(
- settableStates);
- when(mResources.getStringArray(
- R.array.config_settableAutoRotationDeviceStatesDescriptions)).thenReturn(
- settableStatesDescriptions);
- when(mResources.getBoolean(R.bool.config_auto_rotate_face_detection_available)).thenReturn(
- true);
+ com.android.internal.R.array.config_perDeviceStateRotationLockDefaults))
+ .thenReturn(settableStates);
+ when(mResources.getStringArray(R.array.config_settableAutoRotationDeviceStatesDescriptions))
+ .thenReturn(settableStatesDescriptions);
+ when(mResources.getBoolean(R.bool.config_auto_rotate_face_detection_available))
+ .thenReturn(true);
DeviceStateRotationLockSettingsManager.resetInstance();
DeviceStateRotationLockSettingsManager.getInstance(mContext)
.resetStateForTesting(mResources);
diff --git a/tests/spa_unit/src/com/android/settings/network/apn/ApnEditPageProviderTest.kt b/tests/spa_unit/src/com/android/settings/network/apn/ApnEditPageProviderTest.kt
index 0d2dcef..d744181 100644
--- a/tests/spa_unit/src/com/android/settings/network/apn/ApnEditPageProviderTest.kt
+++ b/tests/spa_unit/src/com/android/settings/network/apn/ApnEditPageProviderTest.kt
@@ -59,6 +59,7 @@
context.resources.getStringArray(R.array.apn_protocol_entries).toList()
private val bearer = context.resources.getString(R.string.bearer)
private val bearerOptions = context.resources.getStringArray(R.array.bearer_entries).toList()
+ private val passwordTitle = context.resources.getString(R.string.apn_password)
private val apnData = mutableStateOf(
ApnData(
name = apnName,
@@ -241,4 +242,16 @@
composeTestRule.onNode(hasText(bearerOptions[0]) and isFocused(), true).assertIsDisplayed()
composeTestRule.onNode(hasText(bearerOptions[1]) and isFocused(), true).assertDoesNotExist()
}
+
+ @Test
+ fun password_displayed() {
+ composeTestRule.setContent {
+ ApnPage(remember {
+ apnData
+ })
+ }
+ composeTestRule.onRoot().onChild().onChildAt(0)
+ .performScrollToNode(hasText(passwordTitle, true))
+ composeTestRule.onNodeWithText(passwordTitle, true).assertIsDisplayed()
+ }
}
\ No newline at end of file