diff --git a/aconfig/settings_connecteddevice_flag_declarations.aconfig b/aconfig/settings_connecteddevice_flag_declarations.aconfig index 872026027b1..eede0931b97 100644 --- a/aconfig/settings_connecteddevice_flag_declarations.aconfig +++ b/aconfig/settings_connecteddevice_flag_declarations.aconfig @@ -15,6 +15,13 @@ flag { bug: "253296253" } +flag { + name: "display_topology_pane_in_display_list" + namespace: "display_manager" + description: "Shows the connected display setting and shows the topology pane in the display list, even with only one display connected." + bug: "352648432" +} + flag { name: "enable_auth_challenge_for_usb_preferences" namespace: "safety_center" diff --git a/aconfig/settings_experience_flag_declarations.aconfig b/aconfig/settings_experience_flag_declarations.aconfig index 17d0059608c..ae3af2441cc 100644 --- a/aconfig/settings_experience_flag_declarations.aconfig +++ b/aconfig/settings_experience_flag_declarations.aconfig @@ -17,3 +17,14 @@ flag { purpose: PURPOSE_BUGFIX } } + +flag { + name: "satellite_oem_settings_ux_migration" + namespace: "settings_experience" + description: "Migrate satellite UX to Android Settings" + bug: "378781925" + metadata { + purpose: PURPOSE_BUGFIX + } +} + diff --git a/res/xml/power_usage_advanced.xml b/res/xml/power_usage_advanced.xml index f2c3d878e19..3258b7b9ca2 100644 --- a/res/xml/power_usage_advanced.xml +++ b/res/xml/power_usage_advanced.xml @@ -59,16 +59,15 @@ - + diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java index 66ccb6f2648..e5a12847623 100644 --- a/src/com/android/settings/SettingsPreferenceFragment.java +++ b/src/com/android/settings/SettingsPreferenceFragment.java @@ -17,6 +17,7 @@ package com.android.settings; import static com.android.settings.SettingsActivity.EXTRA_FRAGMENT_ARG_KEY; +import static com.android.settingslib.media.PhoneMediaDevice.isDesktop; import android.app.Activity; import android.app.Dialog; @@ -186,6 +187,13 @@ public abstract class SettingsPreferenceFragment extends InstrumentedPreferenceF /** Returns if catalyst is enabled on current screen. */ protected final boolean isCatalystEnabled() { + // TODO(b/379130874): make Catalyst compatible with desktop device, such as user restriction + // check. + Context context = getContext(); + if (context != null && isDesktop(context)) { + return false; + } + return getPreferenceScreenCreator() != null; } diff --git a/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragment.java b/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragment.java index 7b5bef625f6..c53be1aa932 100644 --- a/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragment.java +++ b/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragment.java @@ -22,6 +22,7 @@ import static android.view.Display.INVALID_DISPLAY; import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.EXTERNAL_DISPLAY_HELP_URL; import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.DISPLAY_ID_ARG; import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.EXTERNAL_DISPLAY_NOT_FOUND_RESOURCE; +import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.forceShowDisplayList; import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.isDisplayAllowed; import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.isUseDisplaySettingEnabled; import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.isResolutionSettingEnabled; @@ -295,13 +296,20 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen updateScreenForDisplayId(getDisplayIdArg(), screen, mInjector.getContext()); } + private boolean okayToBypassDisplayListSelection() { + if (mInjector != null && forceShowDisplayList(mInjector.getFlags())) { + return false; + } + return !mPreviouslyShownListOfDisplays; + } + private void updateScreenForDisplayId(final int displayId, @NonNull final PreferenceScreen screen, @NonNull Context context) { final var displaysToShow = getDisplaysToShow(displayId); if (displaysToShow.isEmpty() && displayId == INVALID_DISPLAY) { showTextWhenNoDisplaysToShow(screen, context); } else if (displaysToShow.size() == 1 - && ((displayId == INVALID_DISPLAY && !mPreviouslyShownListOfDisplays) + && ((displayId == INVALID_DISPLAY && okayToBypassDisplayListSelection()) || displaysToShow.get(0).getDisplayId() == displayId)) { showDisplaySettings(displaysToShow.get(0), screen, context); } else if (displayId == INVALID_DISPLAY) { diff --git a/src/com/android/settings/connecteddevice/display/ExternalDisplaySettingsConfiguration.java b/src/com/android/settings/connecteddevice/display/ExternalDisplaySettingsConfiguration.java index d0427991e42..6e56965c3ef 100644 --- a/src/com/android/settings/connecteddevice/display/ExternalDisplaySettingsConfiguration.java +++ b/src/com/android/settings/connecteddevice/display/ExternalDisplaySettingsConfiguration.java @@ -319,7 +319,16 @@ public class ExternalDisplaySettingsConfiguration { */ public static boolean isExternalDisplaySettingsPageEnabled(@NonNull FeatureFlags flags) { return flags.rotationConnectedDisplaySetting() - || flags.resolutionAndEnableConnectedDisplaySetting(); + || flags.resolutionAndEnableConnectedDisplaySetting() + || flags.displayTopologyPaneInDisplayList(); + } + + /** + * If true, indicates the display list activity should be shown even if there is only one + * display. + */ + public static boolean forceShowDisplayList(@NonNull FeatureFlags flags) { + return flags.displayTopologyPaneInDisplayList(); } static boolean isDisplayAllowed(@NonNull Display display, diff --git a/src/com/android/settings/connecteddevice/display/ExternalDisplayUpdater.java b/src/com/android/settings/connecteddevice/display/ExternalDisplayUpdater.java index 64dd7bb2fdf..99a248fe477 100644 --- a/src/com/android/settings/connecteddevice/display/ExternalDisplayUpdater.java +++ b/src/com/android/settings/connecteddevice/display/ExternalDisplayUpdater.java @@ -16,6 +16,7 @@ package com.android.settings.connecteddevice.display; +import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.forceShowDisplayList; import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.isDisplayAllowed; import android.content.Context; @@ -142,6 +143,10 @@ public class ExternalDisplayUpdater { } } + if (forceShowDisplayList(mInjector.getFlags())) { + return context.getString(R.string.external_display_off); + } + for (var display : mInjector.getAllDisplays()) { if (display != null && isDisplayAllowed(display, mInjector)) { return context.getString(R.string.external_display_off); diff --git a/src/com/android/settings/fuelgauge/batteryusage/AnomalyAppItemPreference.java b/src/com/android/settings/fuelgauge/batteryusage/AnomalyAppItemPreference.java index 2f139ecaabc..592d30833ed 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/AnomalyAppItemPreference.java +++ b/src/com/android/settings/fuelgauge/batteryusage/AnomalyAppItemPreference.java @@ -16,6 +16,7 @@ package com.android.settings.fuelgauge.batteryusage; +import android.annotation.Nullable; import android.content.Context; import android.text.TextUtils; import android.view.View; @@ -37,7 +38,7 @@ class AnomalyAppItemPreference extends PowerGaugePreference { setLayoutResource(R.layout.anomaly_app_item_preference); } - void setAnomalyHint(CharSequence anomalyHintText) { + void setAnomalyHint(@Nullable CharSequence anomalyHintText) { if (!TextUtils.equals(mAnomalyHintText, anomalyHintText)) { mAnomalyHintText = anomalyHintText; notifyChanged(); diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java index 09940b3d7f5..6fd4eb5449f 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java +++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java @@ -31,7 +31,6 @@ import android.view.View; import android.widget.AdapterView; import androidx.preference.Preference; -import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceGroup; import androidx.preference.PreferenceScreen; @@ -68,11 +67,11 @@ public class BatteryUsageBreakdownController extends BasePreferenceController private static final String ROOT_PREFERENCE_KEY = "battery_usage_breakdown"; private static final String FOOTER_PREFERENCE_KEY = "battery_usage_footer"; private static final String SPINNER_PREFERENCE_KEY = "battery_usage_spinner"; - private static final String APP_LIST_PREFERENCE_KEY = "app_list"; private static final String PACKAGE_NAME_NONE = "none"; private static final String SLOT_TIMESTAMP = "slot_timestamp"; private static final String ANOMALY_KEY = "anomaly_key"; private static final String KEY_SPINNER_POSITION = "spinner_position"; + private static final int ENTRY_PREF_ORDER_OFFSET = 100; private static final List EMPTY_ENTRY_LIST = new ArrayList<>(); private static int sUiMode = Configuration.UI_MODE_NIGHT_UNDEFINED; @@ -89,8 +88,7 @@ public class BatteryUsageBreakdownController extends BasePreferenceController private SettingsSpinnerAdapter mSpinnerAdapter; @VisibleForTesting Context mPrefContext; - @VisibleForTesting PreferenceCategory mRootPreference; - @VisibleForTesting PreferenceGroup mAppListPreferenceGroup; + @VisibleForTesting PreferenceGroup mRootPreferenceGroup; @VisibleForTesting FooterPreference mFooterPreference; @VisibleForTesting BatteryDiffData mBatteryDiffData; @VisibleForTesting String mBatteryUsageBreakdownTitleLastFullChargeText; @@ -143,7 +141,7 @@ public class BatteryUsageBreakdownController extends BasePreferenceController public void onDestroy() { mHandler.removeCallbacksAndMessages(/* token= */ null); mPreferenceCache.clear(); - mAppListPreferenceGroup.removeAll(); + mRootPreferenceGroup.removeAll(); } @Override @@ -226,9 +224,8 @@ public class BatteryUsageBreakdownController extends BasePreferenceController public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPrefContext = screen.getContext(); - mRootPreference = screen.findPreference(ROOT_PREFERENCE_KEY); + mRootPreferenceGroup = screen.findPreference(ROOT_PREFERENCE_KEY); mSpinnerPreference = screen.findPreference(SPINNER_PREFERENCE_KEY); - mAppListPreferenceGroup = screen.findPreference(APP_LIST_PREFERENCE_KEY); mFooterPreference = screen.findPreference(FOOTER_PREFERENCE_KEY); mBatteryUsageBreakdownTitleLastFullChargeText = mPrefContext.getString( @@ -242,7 +239,7 @@ public class BatteryUsageBreakdownController extends BasePreferenceController R.string.battery_usage_less_than_percent_content_description, formatPercentage); - mAppListPreferenceGroup.setOrderingAsAdded(false); + mRootPreferenceGroup.setOrderingAsAdded(false); mSpinnerAdapter = new SettingsSpinnerAdapter<>(mPrefContext); mSpinnerAdapter.addAll( new String[] { @@ -328,8 +325,9 @@ public class BatteryUsageBreakdownController extends BasePreferenceController : mPrefContext.getString( R.string.battery_usage_breakdown_title_for_slot, accessibilitySlotTimestamp); - mRootPreference.setTitle(Utils.createAccessibleSequence(displayTitle, accessibilityTitle)); - mRootPreference.setVisible(true); + mRootPreferenceGroup.setTitle( + Utils.createAccessibleSequence(displayTitle, accessibilityTitle)); + mRootPreferenceGroup.setVisible(true); } private void showFooterPreference(boolean isAllBatteryUsageEmpty) { @@ -350,7 +348,6 @@ public class BatteryUsageBreakdownController extends BasePreferenceController return; } mSpinnerPreference.setVisible(true); - mAppListPreferenceGroup.setVisible(true); mHandler.post( () -> { removeAndCacheAllUnusedPreferences(); @@ -374,7 +371,7 @@ public class BatteryUsageBreakdownController extends BasePreferenceController } final long start = System.currentTimeMillis(); final List entries = getBatteryDiffEntries(); - int prefIndex = mAppListPreferenceGroup.getPreferenceCount(); + int preferenceOrder = ENTRY_PREF_ORDER_OFFSET; for (BatteryDiffEntry entry : entries) { boolean isAdded = false; final String appLabel = entry.getAppLabel(); @@ -384,33 +381,32 @@ public class BatteryUsageBreakdownController extends BasePreferenceController continue; } final String prefKey = entry.getKey(); - AnomalyAppItemPreference pref = mAppListPreferenceGroup.findPreference(prefKey); - if (pref != null) { + AnomalyAppItemPreference preference = mRootPreferenceGroup.findPreference(prefKey); + if (preference != null) { isAdded = true; } else { - pref = (AnomalyAppItemPreference) mPreferenceCache.get(prefKey); + preference = (AnomalyAppItemPreference) mPreferenceCache.get(prefKey); } // Creates new instance if cached preference is not found. - if (pref == null) { - pref = new AnomalyAppItemPreference(mPrefContext); - pref.setKey(prefKey); - mPreferenceCache.put(prefKey, pref); + if (preference == null) { + preference = new AnomalyAppItemPreference(mPrefContext); + preference.setKey(prefKey); + mPreferenceCache.put(prefKey, preference); } - pref.setIcon(appIcon); - pref.setTitle(appLabel); - pref.setOrder(prefIndex); - pref.setSingleLineTitle(true); + preference.setIcon(appIcon); + preference.setTitle(appLabel); + preference.setOrder(++preferenceOrder); + preference.setSingleLineTitle(true); // Updates App item preference style - pref.setAnomalyHint(isAnomalyBatteryDiffEntry(entry) ? mAnomalyHintString : null); + preference.setAnomalyHint(isAnomalyBatteryDiffEntry(entry) ? mAnomalyHintString : null); // Sets the BatteryDiffEntry to preference for launching detailed page. - pref.setBatteryDiffEntry(entry); - pref.setSelectable(entry.validForRestriction()); - setPreferencePercentage(pref, entry); - setPreferenceSummary(pref, entry); + preference.setBatteryDiffEntry(entry); + preference.setSelectable(entry.validForRestriction()); + setPreferencePercentage(preference, entry); + setPreferenceSummary(preference, entry); if (!isAdded) { - mAppListPreferenceGroup.addPreference(pref); + mRootPreferenceGroup.addPreference(preference); } - prefIndex++; } Log.d( TAG, @@ -424,17 +420,22 @@ public class BatteryUsageBreakdownController extends BasePreferenceController List entries = getBatteryDiffEntries(); Set entryKeySet = new ArraySet<>(entries.size()); entries.forEach(entry -> entryKeySet.add(entry.getKey())); - final int prefsCount = mAppListPreferenceGroup.getPreferenceCount(); - for (int index = prefsCount - 1; index >= 0; index--) { - final Preference pref = mAppListPreferenceGroup.getPreference(index); - if (entryKeySet.contains(pref.getKey())) { - // The pref is still used, don't remove. + final int preferenceCount = mRootPreferenceGroup.getPreferenceCount(); + for (int index = preferenceCount - 1; index >= 0; index--) { + final Preference preference = mRootPreferenceGroup.getPreference(index); + if ((preference instanceof SettingsSpinnerPreference) + || (preference instanceof FooterPreference)) { + // Consider the app preference only and skip others continue; } - if (!TextUtils.isEmpty(pref.getKey())) { - mPreferenceCache.put(pref.getKey(), pref); + if (entryKeySet.contains(preference.getKey())) { + // Don't remove the preference if it is still in use + continue; } - mAppListPreferenceGroup.removePreference(pref); + if (!TextUtils.isEmpty(preference.getKey())) { + mPreferenceCache.put(preference.getKey(), preference); + } + mRootPreferenceGroup.removePreference(preference); } } diff --git a/src/com/android/settings/network/AirplaneModePreference.kt b/src/com/android/settings/network/AirplaneModePreference.kt index 5b7903c2b2d..2d9fbe9da3f 100644 --- a/src/com/android/settings/network/AirplaneModePreference.kt +++ b/src/com/android/settings/network/AirplaneModePreference.kt @@ -18,7 +18,7 @@ package com.android.settings.network import android.content.Context import android.content.pm.PackageManager -import android.provider.Settings.Global.AIRPLANE_MODE_ON +import android.provider.Settings import androidx.annotation.DrawableRes import com.android.settings.R import com.android.settingslib.datastore.SettingsGlobalStore @@ -27,7 +27,7 @@ import com.android.settingslib.metadata.SwitchPreference // LINT.IfChange class AirplaneModePreference : - SwitchPreference(AIRPLANE_MODE_ON, R.string.airplane_mode), + SwitchPreference(KEY, R.string.airplane_mode), PreferenceAvailabilityProvider { override val icon: Int @@ -38,5 +38,9 @@ class AirplaneModePreference : override fun isAvailable(context: Context) = (context.resources.getBoolean(R.bool.config_show_toggle_airplane) && !context.packageManager.hasSystemFeature(PackageManager.FEATURE_LEANBACK)) + + companion object { + const val KEY = Settings.Global.AIRPLANE_MODE_ON + } } // LINT.ThenChange(AirplaneModePreferenceController.java) diff --git a/src/com/android/settings/network/AirplaneModePreferenceController.java b/src/com/android/settings/network/AirplaneModePreferenceController.java index 430feb10eec..ca8595f7781 100644 --- a/src/com/android/settings/network/AirplaneModePreferenceController.java +++ b/src/com/android/settings/network/AirplaneModePreferenceController.java @@ -15,8 +15,6 @@ */ package com.android.settings.network; -import static android.provider.SettingsSlicesContract.KEY_AIRPLANE_MODE; - import static com.android.settings.network.SatelliteWarningDialogActivity.EXTRA_TYPE_OF_SATELLITE_WARNING_DIALOG; import static com.android.settings.network.SatelliteWarningDialogActivity.TYPE_IS_AIRPLANE_MODE; @@ -95,7 +93,7 @@ public class AirplaneModePreferenceController extends TogglePreferenceController @Override public boolean handlePreferenceTreeClick(Preference preference) { - if (KEY_AIRPLANE_MODE.equals(preference.getKey()) && isAvailable()) { + if (AirplaneModePreference.KEY.equals(preference.getKey()) && isAvailable()) { // In ECM mode launch ECM app dialog if (mAirplaneModeEnabler.isInEcmMode()) { if (mFragment != null) { diff --git a/src/com/android/settings/spa/network/SimsSection.kt b/src/com/android/settings/spa/network/SimsSection.kt index bd55b32a5e8..7d88748785d 100644 --- a/src/com/android/settings/spa/network/SimsSection.kt +++ b/src/com/android/settings/spa/network/SimsSection.kt @@ -21,7 +21,6 @@ import android.content.Intent import android.os.UserManager import android.telephony.SubscriptionInfo import android.telephony.euicc.EuiccManager -import androidx.compose.foundation.layout.Column import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Add import androidx.compose.material.icons.outlined.SimCard @@ -44,6 +43,7 @@ import com.android.settings.network.telephony.euicc.EuiccRepository import com.android.settings.network.telephony.phoneNumberFlow import com.android.settingslib.spa.widget.preference.PreferenceModel import com.android.settingslib.spa.widget.preference.SwitchPreferenceModel +import com.android.settingslib.spa.widget.ui.Category import com.android.settingslib.spa.widget.ui.SettingsIcon import com.android.settingslib.spaprivileged.model.enterprise.Restrictions import com.android.settingslib.spaprivileged.template.preference.RestrictedPreference @@ -53,7 +53,7 @@ import kotlinx.coroutines.launch @Composable fun SimsSection(subscriptionInfoList: List) { - Column { + Category { for (subInfo in subscriptionInfoList) { SimPreference(subInfo) } diff --git a/src/com/android/settings/system/reset/ResetNetworkConfirm.kt b/src/com/android/settings/system/reset/ResetNetworkConfirm.kt index b353f69d9db..3412825b62d 100644 --- a/src/com/android/settings/system/reset/ResetNetworkConfirm.kt +++ b/src/com/android/settings/system/reset/ResetNetworkConfirm.kt @@ -21,6 +21,7 @@ import android.app.settings.SettingsEnums import android.content.DialogInterface import android.os.Bundle import android.os.Looper +import android.telecom.TelecomManager import android.telephony.SubscriptionManager import android.util.Log import android.view.LayoutInflater @@ -89,7 +90,12 @@ class ResetNetworkConfirm : InstrumentedFragment() { /** Configure the UI for the final confirmation interaction */ private fun View.establishFinalConfirmationState() { requireViewById(R.id.execute_reset_network).setOnClickListener { - showResetInternetDialog(); + val tm = context.getSystemService(TelecomManager::class.java) + if (tm != null && tm.isInCall) { + showResetInternetDialog(); + } else { + onResetClicked() + } } } @@ -138,9 +144,13 @@ class ResetNetworkConfirm : InstrumentedFragment() { * settings to its factory-default state. */ @VisibleForTesting - suspend fun onResetClicked() { - showProgressDialog() - resetNetwork() + fun onResetClicked() { + if (!Utils.isMonkeyRunning() && !resetStarted) { + resetStarted = true + viewLifecycleOwner.lifecycleScope.launch { + showProgressDialog() + resetNetwork() } + } } private fun showProgressDialog() { @@ -165,10 +175,7 @@ class ResetNetworkConfirm : InstrumentedFragment() { val builder = AlertDialog.Builder(requireContext()) val resetInternetClickListener = DialogInterface.OnClickListener { dialog, which -> - if (!Utils.isMonkeyRunning() && !resetStarted) { - resetStarted = true - viewLifecycleOwner.lifecycleScope.launch { onResetClicked() } - } + onResetClicked() } builder.setTitle(R.string.reset_your_internet_title) diff --git a/tests/componenttests/src/com/android/settings/network/AirplaneModePreferenceControllerComponentTest.java b/tests/componenttests/src/com/android/settings/network/AirplaneModePreferenceControllerComponentTest.java index 27e67e586c7..9617cfd1a28 100644 --- a/tests/componenttests/src/com/android/settings/network/AirplaneModePreferenceControllerComponentTest.java +++ b/tests/componenttests/src/com/android/settings/network/AirplaneModePreferenceControllerComponentTest.java @@ -20,7 +20,6 @@ import static com.google.common.truth.Truth.assertThat; import android.app.Instrumentation; import android.provider.Settings; -import android.provider.SettingsSlicesContract; import android.util.Log; import androidx.test.ext.junit.runners.AndroidJUnit4; @@ -64,7 +63,7 @@ public class AirplaneModePreferenceControllerComponentTest { public void test_on_off_airplane_mode_multiple_times() { AirplaneModePreferenceController controller = new AirplaneModePreferenceController(mInstrumentation.getTargetContext(), - SettingsSlicesContract.KEY_AIRPLANE_MODE); + AirplaneModePreference.KEY); for (int i = 0; i < 10; ++i) { Log.d(TAG, "Test #" + (i + 1)); diff --git a/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceGroupControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceGroupControllerTest.java index 5a9f2bc8692..6fb2d114f46 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceGroupControllerTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceGroupControllerTest.java @@ -17,6 +17,7 @@ package com.android.settings.connecteddevice; import static com.android.settings.core.BasePreferenceController.AVAILABLE_UNSEARCHABLE; import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE; +import static com.android.settings.flags.Flags.FLAG_DISPLAY_TOPOLOGY_PANE_IN_DISPLAY_LIST; import static com.android.settings.flags.Flags.FLAG_RESOLUTION_AND_ENABLE_CONNECTED_DISPLAY_SETTING; import static com.android.settings.flags.Flags.FLAG_ROTATION_CONNECTED_DISPLAY_SETTING; @@ -128,6 +129,7 @@ public class ConnectedDeviceGroupControllerTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); + mFakeFeatureFlags.setFlag(FLAG_DISPLAY_TOPOLOGY_PANE_IN_DISPLAY_LIST, false); mFakeFeatureFlags.setFlag(FLAG_ROTATION_CONNECTED_DISPLAY_SETTING, true); mFakeFeatureFlags.setFlag(FLAG_RESOLUTION_AND_ENABLE_CONNECTED_DISPLAY_SETTING, true); diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java index 85fc6e210ce..c4cbb988ae6 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java @@ -59,11 +59,12 @@ public final class BatteryUsageBreakdownControllerTest { private static final String PREF_KEY2 = "pref_key2"; private static final String PREF_SUMMARY = "fake preference summary"; private static final String KEY_SPINNER_POSITION = "spinner_position"; - private static final long TIME_LESS_THAN_HALF_MINUTE = DateUtils.MINUTE_IN_MILLIS / 2 - 1; + private static final int ENTRY_PREF_ORDER_OFFSET = 100; + private static final long TIME_LESS_THAN_HALF_MINUTE = DateUtils.MINUTE_IN_MILLIS / 2 - 1; @Mock private InstrumentedPreferenceFragment mFragment; @Mock private SettingsActivity mSettingsActivity; - @Mock private PreferenceGroup mAppListPreferenceGroup; + @Mock private PreferenceGroup mRootPreferenceGroup; @Mock private Drawable mDrawable; @Mock private BatteryHistEntry mBatteryHistEntry; @Mock private AnomalyAppItemPreference mAnomalyAppItemPreference; @@ -90,7 +91,7 @@ public final class BatteryUsageBreakdownControllerTest { .when(mFeatureFactory.powerUsageFeatureProvider) .getHideApplicationSet(); mBatteryUsageBreakdownController = createController(); - mBatteryUsageBreakdownController.mAppListPreferenceGroup = mAppListPreferenceGroup; + mBatteryUsageBreakdownController.mRootPreferenceGroup = mRootPreferenceGroup; mBatteryDiffEntry = new BatteryDiffEntry( mContext, @@ -130,7 +131,7 @@ public final class BatteryUsageBreakdownControllerTest { BatteryDiffEntry.sResourceCache.put( "fakeBatteryDiffEntryKey", new BatteryEntry.NameAndIcon("fakeName", /* icon= */ null, /* iconId= */ 1)); - doReturn(mAnomalyAppItemPreference).when(mAppListPreferenceGroup).findPreference(PREF_KEY); + doReturn(mAnomalyAppItemPreference).when(mRootPreferenceGroup).findPreference(PREF_KEY); } @Test @@ -147,7 +148,7 @@ public final class BatteryUsageBreakdownControllerTest { @Test public void onDestroy_removeAllPreferenceFromPreferenceGroup() { mBatteryUsageBreakdownController.onDestroy(); - verify(mAppListPreferenceGroup).removeAll(); + verify(mRootPreferenceGroup).removeAll(); } @Test @@ -162,11 +163,11 @@ public final class BatteryUsageBreakdownControllerTest { @Test public void addAllPreferences_addAllPreferences() { final String appLabel = "fake app label"; - doReturn(1).when(mAppListPreferenceGroup).getPreferenceCount(); + doReturn(1).when(mRootPreferenceGroup).getPreferenceCount(); doReturn(mDrawable).when(mBatteryDiffEntry).getAppIcon(); doReturn(appLabel).when(mBatteryDiffEntry).getAppLabel(); doReturn(PREF_KEY).when(mBatteryDiffEntry).getKey(); - doReturn(null).when(mAppListPreferenceGroup).findPreference(PREF_KEY); + doReturn(null).when(mRootPreferenceGroup).findPreference(PREF_KEY); doReturn(false).when(mBatteryDiffEntry).validForRestriction(); mBatteryUsageBreakdownController.addAllPreferences(); @@ -177,11 +178,11 @@ public final class BatteryUsageBreakdownControllerTest { mBatteryUsageBreakdownController.mPreferenceCache.get(PREF_KEY); assertThat(pref).isNotNull(); // Verifies the added preference configuration. - verify(mAppListPreferenceGroup).addPreference(pref); + verify(mRootPreferenceGroup).addPreference(pref); assertThat(pref.getKey()).isEqualTo(PREF_KEY); assertThat(pref.getTitle().toString()).isEqualTo(appLabel); assertThat(pref.getIcon()).isEqualTo(mDrawable); - assertThat(pref.getOrder()).isEqualTo(1); + assertThat(pref.getOrder()).isEqualTo(ENTRY_PREF_ORDER_OFFSET + 1); assertThat(pref.getBatteryDiffEntry()).isSameInstanceAs(mBatteryDiffEntry); assertThat(pref.isSingleLineTitle()).isTrue(); assertThat(pref.isSelectable()).isFalse(); @@ -190,20 +191,20 @@ public final class BatteryUsageBreakdownControllerTest { @Test public void addPreferenceToScreen_alreadyInScreen_notAddPreferenceAgain() { final String appLabel = "fake app label"; - doReturn(1).when(mAppListPreferenceGroup).getPreferenceCount(); + doReturn(1).when(mRootPreferenceGroup).getPreferenceCount(); doReturn(mDrawable).when(mBatteryDiffEntry).getAppIcon(); doReturn(appLabel).when(mBatteryDiffEntry).getAppLabel(); doReturn(PREF_KEY).when(mBatteryDiffEntry).getKey(); mBatteryUsageBreakdownController.addAllPreferences(); - verify(mAppListPreferenceGroup, never()).addPreference(any()); + verify(mRootPreferenceGroup, never()).addPreference(any()); } @Test public void removeAndCacheAllUnusedPreferences_removePref_buildCacheAndRemoveAllPreference() { - doReturn(1).when(mAppListPreferenceGroup).getPreferenceCount(); - doReturn(mAnomalyAppItemPreference).when(mAppListPreferenceGroup).getPreference(0); + doReturn(1).when(mRootPreferenceGroup).getPreferenceCount(); + doReturn(mAnomalyAppItemPreference).when(mRootPreferenceGroup).getPreference(0); doReturn(PREF_KEY2).when(mBatteryHistEntry).getKey(); doReturn(PREF_KEY).when(mAnomalyAppItemPreference).getKey(); // Ensures the testing data is correct. @@ -213,13 +214,13 @@ public final class BatteryUsageBreakdownControllerTest { assertThat(mBatteryUsageBreakdownController.mPreferenceCache.get(PREF_KEY)) .isEqualTo(mAnomalyAppItemPreference); - verify(mAppListPreferenceGroup).removePreference(mAnomalyAppItemPreference); + verify(mRootPreferenceGroup).removePreference(mAnomalyAppItemPreference); } @Test public void removeAndCacheAllUnusedPreferences_keepPref_KeepAllPreference() { - doReturn(1).when(mAppListPreferenceGroup).getPreferenceCount(); - doReturn(mAnomalyAppItemPreference).when(mAppListPreferenceGroup).getPreference(0); + doReturn(1).when(mRootPreferenceGroup).getPreferenceCount(); + doReturn(mAnomalyAppItemPreference).when(mRootPreferenceGroup).getPreference(0); doReturn(PREF_KEY).when(mBatteryDiffEntry).getKey(); doReturn(PREF_KEY).when(mAnomalyAppItemPreference).getKey(); // Ensures the testing data is correct. @@ -227,15 +228,13 @@ public final class BatteryUsageBreakdownControllerTest { mBatteryUsageBreakdownController.removeAndCacheAllUnusedPreferences(); - verify(mAppListPreferenceGroup, never()).removePreference(any()); + verify(mRootPreferenceGroup, never()).removePreference(any()); assertThat(mBatteryUsageBreakdownController.mPreferenceCache).isEmpty(); } @Test public void handlePreferenceTreeClick_notPowerGaugePreference_returnFalse() { - assertThat( - mBatteryUsageBreakdownController.handlePreferenceTreeClick( - mAppListPreferenceGroup)) + assertThat(mBatteryUsageBreakdownController.handlePreferenceTreeClick(mRootPreferenceGroup)) .isFalse(); verify(mMetricsFeatureProvider, never()) diff --git a/tests/unit/src/com/android/settings/connecteddevice/display/ExternalDisplayTestBase.java b/tests/unit/src/com/android/settings/connecteddevice/display/ExternalDisplayTestBase.java index 4cba1ef4666..874ecbd1197 100644 --- a/tests/unit/src/com/android/settings/connecteddevice/display/ExternalDisplayTestBase.java +++ b/tests/unit/src/com/android/settings/connecteddevice/display/ExternalDisplayTestBase.java @@ -16,8 +16,9 @@ package com.android.settings.connecteddevice.display; import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.VIRTUAL_DISPLAY_PACKAGE_NAME_SYSTEM_PROPERTY; -import static com.android.settings.flags.Flags.FLAG_ROTATION_CONNECTED_DISPLAY_SETTING; +import static com.android.settings.flags.Flags.FLAG_DISPLAY_TOPOLOGY_PANE_IN_DISPLAY_LIST; import static com.android.settings.flags.Flags.FLAG_RESOLUTION_AND_ENABLE_CONNECTED_DISPLAY_SETTING; +import static com.android.settings.flags.Flags.FLAG_ROTATION_CONNECTED_DISPLAY_SETTING; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; @@ -74,6 +75,7 @@ public class ExternalDisplayTestBase { mPreferenceScreen = mPreferenceManager.createPreferenceScreen(mContext); doReturn(0).when(mMockedIDisplayManager).getPreferredWideGamutColorSpaceId(); mDisplayManagerGlobal = new DisplayManagerGlobal(mMockedIDisplayManager); + mFlags.setFlag(FLAG_DISPLAY_TOPOLOGY_PANE_IN_DISPLAY_LIST, false); mFlags.setFlag(FLAG_ROTATION_CONNECTED_DISPLAY_SETTING, true); mFlags.setFlag(FLAG_RESOLUTION_AND_ENABLE_CONNECTED_DISPLAY_SETTING, true); mDisplays = new Display[] { diff --git a/tests/unit/src/com/android/settings/network/AirplaneModePreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/AirplaneModePreferenceControllerTest.java index 7612805370a..2205929fedd 100644 --- a/tests/unit/src/com/android/settings/network/AirplaneModePreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/network/AirplaneModePreferenceControllerTest.java @@ -16,8 +16,6 @@ package com.android.settings.network; -import static android.provider.SettingsSlicesContract.KEY_AIRPLANE_MODE; - import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; @@ -78,12 +76,12 @@ public class AirplaneModePreferenceControllerTest { mResolver = mContext.getContentResolver(); doReturn(mPackageManager).when(mContext).getPackageManager(); mController = new AirplaneModePreferenceController(mContext, - KEY_AIRPLANE_MODE); + AirplaneModePreference.KEY); mPreferenceManager = new PreferenceManager(mContext); mScreen = mPreferenceManager.createPreferenceScreen(mContext); mPreference = new RestrictedSwitchPreference(mContext); - mPreference.setKey(KEY_AIRPLANE_MODE); + mPreference.setKey(AirplaneModePreference.KEY); mScreen.addPreference(mPreference); mController.setFragment(null); }