From 050b6d5224b078bc23b6ad212962b048d3d8a05e Mon Sep 17 00:00:00 2001 From: SongFerngWang Date: Thu, 14 Oct 2021 18:54:52 +0800 Subject: [PATCH 1/4] The Network name is not same as statusbar at SIM Edit page Using subscriptionInfo to get the network name. Bug: 203035698 Bug: 201591202 Test: make RunSettingsRoboTests ROBOTEST_FILTER=RenameMobileNetworkDialogFragmentTest (PASS) Change-Id: I84848a2801172b46f7cc3ff39d88ad57e34514a4 --- .../telephony/RenameMobileNetworkDialogFragment.java | 5 +---- .../telephony/RenameMobileNetworkDialogFragmentTest.java | 7 +------ 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java b/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java index 8e65605eecc..5f208949e52 100644 --- a/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java +++ b/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java @@ -25,7 +25,6 @@ import android.graphics.Paint; import android.graphics.drawable.ShapeDrawable; import android.graphics.drawable.shapes.OvalShape; import android.os.Bundle; -import android.telephony.ServiceState; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; @@ -52,7 +51,6 @@ import com.android.settingslib.DeviceInfoUtils; import com.google.common.collect.ImmutableMap; -import java.util.Arrays; import java.util.List; import java.util.Map; @@ -180,8 +178,7 @@ public class RenameMobileNetworkDialogFragment extends InstrumentedDialogFragmen final TextView operatorName = view.findViewById(R.id.operator_name_value); mTelephonyManager = mTelephonyManager.createForSubscriptionId(mSubId); - final ServiceState serviceState = mTelephonyManager.getServiceState(); - operatorName.setText(serviceState == null ? "" : serviceState.getOperatorAlphaLong()); + operatorName.setText(info.getCarrierName()); final TextView phoneTitle = view.findViewById(R.id.number_label); phoneTitle.setVisibility(info.isOpportunistic() ? View.GONE : View.VISIBLE); diff --git a/tests/robotests/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragmentTest.java b/tests/robotests/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragmentTest.java index 70b05981370..ea440c771e0 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragmentTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragmentTest.java @@ -31,7 +31,6 @@ import static org.mockito.Mockito.when; import android.content.Context; import android.content.DialogInterface; import android.graphics.Color; -import android.telephony.ServiceState; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; @@ -73,8 +72,6 @@ public class RenameMobileNetworkDialogFragmentTest { @Mock private TelephonyManager mTelephonyMgr; @Mock - private ServiceState mServiceState; - @Mock private SubscriptionManager mSubscriptionMgr; @Mock private SubscriptionInfo mSubscriptionInfo; @@ -95,11 +92,9 @@ public class RenameMobileNetworkDialogFragmentTest { stm.setTelephonyManagerForSubscriptionId(mSubscriptionId, mTelephonyMgr); when(mTelephonyMgr.createForSubscriptionId(anyInt())).thenReturn(mTelephonyMgr); - when(mTelephonyMgr.getServiceState()).thenReturn(mServiceState); - when(mServiceState.getOperatorAlphaLong()).thenReturn("fake carrier name"); - when(mSubscriptionInfo.getSubscriptionId()).thenReturn(mSubscriptionId); when(mSubscriptionInfo.getDisplayName()).thenReturn("test"); + when(mSubscriptionInfo.getCarrierName()).thenReturn("fake carrier name"); when(mSubscriptionMgr.setDisplayName(any(), anyInt(), anyInt())).thenReturn(0); mActivity = spy(Robolectric.buildActivity(FragmentActivity.class).setup().get()); From eb19d4ba5996e2f4248c1853177460a2439f1642 Mon Sep 17 00:00:00 2001 From: Zoey Chen Date: Sat, 16 Oct 2021 01:02:58 +0800 Subject: [PATCH 2/4] [Foldable] Show full screen "Install Certificates" for large screen devices Uses Intent.FLAG_ACTIVITY_NEW_TASK to start the Activity Test: manual Bug: 197701944 Change-Id: I6d52bae5ceb399c0869ef0c76d89f16867a83065 --- res/xml/wifi_configure_settings.xml | 10 +------ .../settings/wifi/ConfigureWifiSettings.java | 28 +++++++++++++++++++ 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/res/xml/wifi_configure_settings.xml b/res/xml/wifi_configure_settings.xml index 623f3266453..2ab7b6a28fe 100644 --- a/res/xml/wifi_configure_settings.xml +++ b/res/xml/wifi_configure_settings.xml @@ -42,15 +42,7 @@ - - - - - + android:title="@string/wifi_install_credentials"/> { + Intent intent = new Intent(ACTION_INSTALL_CERTS); + intent.setFlags( + Intent.FLAG_ACTIVITY_NEW_TASK); + intent.setComponent( + new ComponentName(PACKAGE_INSTALL_CERTS, CLASS_INSTALL_CERTS)); + intent.putExtra(KEY_INSTALL_CERTIFICATE, INSTALL_CERTIFICATE_VALUE); + getContext().startActivity(intent); + return true; + }); + } else { + Log.d(TAG, "Can not find the preference."); + } } @Override From d11dec2f8208e183ecf6cde854af3ce0140c662c Mon Sep 17 00:00:00 2001 From: "Wesley.CW Wang" Date: Mon, 18 Oct 2021 16:46:58 +0800 Subject: [PATCH 3/4] Revert "Add PowerSaveWhitelistExceptIdle as Optimizted modes condition" - Reverts commit e7cca4cd813a46d9ac3ba2e7523561fc1358ae37 - Add try-catch to handle unexpected operate Reason for revert: Previous fix will cause a side effect which makes app stuck at Optimize mode after switching state from Unrestricted to Optimize, add a try catch to handle previous issue first BYPASS_INCLUSIVE_LANGUAGE_REASON=legacy naming, not edit by this code change Bug: 199892006 Test: make SettingsRoboTests Change-Id: I3b1850ab66bbf4cd605f14152a244a8ed7edd578 Merged-In: I3b1850ab66bbf4cd605f14152a244a8ed7edd578 --- .../fuelgauge/AdvancedPowerUsageDetail.java | 3 +-- .../fuelgauge/BatteryOptimizeUtils.java | 17 +++++++++-------- .../OptimizedPreferenceController.java | 4 ---- .../RestrictedPreferenceController.java | 3 --- .../UnrestrictedPreferenceController.java | 3 --- .../fuelgauge/AdvancedPowerUsageDetailTest.java | 10 ---------- .../fuelgauge/BatteryOptimizeUtilsTest.java | 12 ------------ .../OptimizedPreferenceControllerTest.java | 10 ---------- .../RestrictedPreferenceControllerTest.java | 10 ---------- .../UnrestrictedPreferenceControllerTest.java | 10 ---------- 10 files changed, 10 insertions(+), 72 deletions(-) diff --git a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java index c0670942834..8019d0a087a 100644 --- a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java +++ b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java @@ -361,8 +361,7 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements final String stateString; final String footerString; - if (!mBatteryOptimizeUtils.isValidPackageName() - || mBatteryOptimizeUtils.isAllowlistedExceptIdleApp()) { + if (!mBatteryOptimizeUtils.isValidPackageName()) { // Present optimized only string when the package name is invalid or // it's in allow list not idle app. stateString = context.getString(R.string.manager_battery_usage_optimized_only); diff --git a/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java b/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java index 11528a66186..3d953959f68 100644 --- a/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java +++ b/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java @@ -89,8 +89,16 @@ public class BatteryOptimizeUtils { return getAppOptimizationMode(mMode, mAllowListed); } - /** Sets the {@link OptimizationMode} for associated app. */ public void setAppOptimizationMode(@OptimizationMode int mode) { + try { + setAppUsageStateInternal(mode); + } catch (Exception e) { + Log.e(TAG, "setAppUsageState() is failed for " + mPackageName, e); + } + } + + /** Sets the {@link OptimizationMode} for associated app. */ + public void setAppUsageStateInternal(@OptimizationMode int mode) { if (getAppOptimizationMode(mMode, mAllowListed) == mode) { Log.w(TAG, "set the same optimization mode for: " + mPackageName); return; @@ -130,13 +138,6 @@ public class BatteryOptimizeUtils { || mPowerAllowListBackend.isDefaultActiveApp(mPackageName); } - /** - * Return {@code true} if this package is in allow list except idle app. - */ - public boolean isAllowlistedExceptIdleApp() { - return mPowerAllowListBackend.isAllowlistedExceptIdle(mPackageName); - } - String getPackageName() { return mPackageName == null ? UNKNOWN_PACKAGE : mPackageName; } diff --git a/src/com/android/settings/fuelgauge/OptimizedPreferenceController.java b/src/com/android/settings/fuelgauge/OptimizedPreferenceController.java index ef2339729f5..ffec50d4f53 100644 --- a/src/com/android/settings/fuelgauge/OptimizedPreferenceController.java +++ b/src/com/android/settings/fuelgauge/OptimizedPreferenceController.java @@ -57,10 +57,6 @@ public class OptimizedPreferenceController extends AbstractPreferenceController Log.d(TAG, "is system or default app, disable pref"); ((RadioButtonPreference) preference).setChecked(false); preference.setEnabled(false); - } else if (mBatteryOptimizeUtils.isAllowlistedExceptIdleApp()) { - Log.d(TAG, "in allow list not idle app, optimized states only"); - preference.setEnabled(true); - ((RadioButtonPreference) preference).setChecked(true); } else if (mBatteryOptimizeUtils.getAppOptimizationMode() == BatteryOptimizeUtils.MODE_OPTIMIZED) { Log.d(TAG, "is optimized states"); diff --git a/src/com/android/settings/fuelgauge/RestrictedPreferenceController.java b/src/com/android/settings/fuelgauge/RestrictedPreferenceController.java index 230b1fcb415..d50926e6177 100644 --- a/src/com/android/settings/fuelgauge/RestrictedPreferenceController.java +++ b/src/com/android/settings/fuelgauge/RestrictedPreferenceController.java @@ -55,9 +55,6 @@ public class RestrictedPreferenceController extends AbstractPreferenceController Log.d(TAG, "is system or default app, disable pref"); ((RadioButtonPreference) preference).setChecked(false); preference.setEnabled(false); - } else if (mBatteryOptimizeUtils.isAllowlistedExceptIdleApp()) { - Log.d(TAG, "in allow list not idle app, disable perf"); - preference.setEnabled(false); } else if (mBatteryOptimizeUtils.getAppOptimizationMode() == BatteryOptimizeUtils.MODE_RESTRICTED) { Log.d(TAG, "is restricted states"); diff --git a/src/com/android/settings/fuelgauge/UnrestrictedPreferenceController.java b/src/com/android/settings/fuelgauge/UnrestrictedPreferenceController.java index f8ee6513779..1d66c6c6cdd 100644 --- a/src/com/android/settings/fuelgauge/UnrestrictedPreferenceController.java +++ b/src/com/android/settings/fuelgauge/UnrestrictedPreferenceController.java @@ -53,9 +53,6 @@ public class UnrestrictedPreferenceController extends AbstractPreferenceControll if (mBatteryOptimizeUtils.isSystemOrDefaultApp()) { Log.d(TAG, "is system or default app, unrestricted states only"); ((RadioButtonPreference) preference).setChecked(true); - } else if (mBatteryOptimizeUtils.isAllowlistedExceptIdleApp()) { - Log.d(TAG, "in allow list not idle app, disable perf"); - preference.setEnabled(false); } else if (mBatteryOptimizeUtils.getAppOptimizationMode() == BatteryOptimizeUtils.MODE_UNRESTRICTED) { Log.d(TAG, "is unrestricted states"); diff --git a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java index ac85d976a4f..a2e78c3a2b5 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java @@ -745,16 +745,6 @@ public class AdvancedPowerUsageDetailTest { .isEqualTo("This app requires optimized battery usage."); } - @Test - public void testInitPreferenceForTriState_isAllowlistedExceptIdleApp_hasCorrectString() { - when(mBatteryOptimizeUtils.isAllowlistedExceptIdleApp()).thenReturn(true); - - mFragment.initPreferenceForTriState(mContext); - - assertThat(mFooterPreference.getTitle().toString()) - .isEqualTo("This app requires optimized battery usage."); - } - @Test public void testInitPreferenceForTriState_isSystemOrDefaultApp_hasCorrectString() { when(mBatteryOptimizeUtils.isValidPackageName()).thenReturn(true); diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizeUtilsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizeUtilsTest.java index c32be187e37..53101c04d1b 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizeUtilsTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizeUtilsTest.java @@ -124,18 +124,6 @@ public class BatteryOptimizeUtilsTest { assertThat(mBatteryOptimizeUtils.isValidPackageName()).isTrue(); } - @Test - public void testIsAllowlistedExpectIdle_isAllowlistedExceptIdle_returnTrue() { - when(mMockBackend.isAllowlistedExceptIdle(anyString())).thenReturn(true); - - assertThat(mBatteryOptimizeUtils.isAllowlistedExceptIdleApp()).isTrue(); - } - - @Test - public void testIsAllowlistedExpectIdle_notAllowlistedExpectIdle_returnFalse() { - assertThat(mBatteryOptimizeUtils.isAllowlistedExceptIdleApp()).isFalse(); - } - @Test public void testSetAppOptimizationMode_Restricted_verifyAction() { // Sets the current mode as MODE_UNRESTRICTED. diff --git a/tests/robotests/src/com/android/settings/fuelgauge/OptimizedPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/OptimizedPreferenceControllerTest.java index 923855d3e30..9df3ac90cb4 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/OptimizedPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/OptimizedPreferenceControllerTest.java @@ -93,16 +93,6 @@ public class OptimizedPreferenceControllerTest { assertThat(mPreference.isChecked()).isFalse(); } - @Test - public void testUpdateState_isAllowlistedExceptIdleApp_prefEnabled() { - when(mockBatteryOptimizeUtils.isAllowlistedExceptIdleApp()).thenReturn(true); - - mController.updateState(mPreference); - - assertThat(mPreference.isEnabled()).isTrue(); - assertThat(mPreference.isChecked()).isTrue(); - } - @Test public void testHandlePreferenceTreeClick_samePrefKey_verifyAction() { mPreference.setKey(mController.KEY_OPTIMIZED_PREF); diff --git a/tests/robotests/src/com/android/settings/fuelgauge/RestrictedPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/RestrictedPreferenceControllerTest.java index 7b4271f564c..09861536edd 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/RestrictedPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/RestrictedPreferenceControllerTest.java @@ -101,16 +101,6 @@ public class RestrictedPreferenceControllerTest { assertThat(mPreference.isChecked()).isFalse(); } - @Test - public void testUpdateState_isAllowlistedExceptIdleApp_prefDisabled() { - when(mockBatteryOptimizeUtils.isAllowlistedExceptIdleApp()).thenReturn(true); - - mController.updateState(mPreference); - - assertThat(mPreference.isChecked()).isFalse(); - assertThat(mPreference.isEnabled()).isFalse(); - } - @Test public void testHandlePreferenceTreeClick_samePrefKey_verifyAction() { mPreference.setKey(mController.KEY_RESTRICTED_PREF); diff --git a/tests/robotests/src/com/android/settings/fuelgauge/UnrestrictedPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/UnrestrictedPreferenceControllerTest.java index 505278419d8..004e97ce6fe 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/UnrestrictedPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/UnrestrictedPreferenceControllerTest.java @@ -101,16 +101,6 @@ public class UnrestrictedPreferenceControllerTest { assertThat(mPreference.isChecked()).isFalse(); } - @Test - public void testUpdateState_isAllowlistedExceptIdleApp_prefDisabled() { - when(mockBatteryOptimizeUtils.isAllowlistedExceptIdleApp()).thenReturn(true); - - mController.updateState(mPreference); - - assertThat(mPreference.isChecked()).isFalse(); - assertThat(mPreference.isEnabled()).isFalse(); - } - @Test public void testHandlePreferenceTreeClick_samePrefKey_verifyAction() { mPreference.setKey(mController.KEY_UNRESTRICTED_PREF); From 19052cb45eab5b6c2a87bcac94981c067359f057 Mon Sep 17 00:00:00 2001 From: Arc Wang Date: Mon, 18 Oct 2021 17:50:11 +0800 Subject: [PATCH 4/4] [Large Screen] Fix deep link 2 tasks bug When launching a Settings deep link, it will close Activity of the deep link and start both DeepLinkHomepageActivity & the deep link. Since 1st launched deep link page is finished, should also remove its task. Bug: 203385355 Test: manual 1. Create a Settings shortcut on launcher. 2. Click the shortcut. 3. Move Activity of the shortcut to background. Change-Id: I04b3243bf51f3940167e4dca6f5a32d9e3cf2841 --- src/com/android/settings/SettingsActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java index c105238548b..352f0ff333f 100644 --- a/src/com/android/settings/SettingsActivity.java +++ b/src/com/android/settings/SettingsActivity.java @@ -244,7 +244,7 @@ public class SettingsActivity extends SettingsBaseActivity getMetaData(); final Intent intent = getIntent(); if (launchHomepageForTwoPaneDeepLink(intent)) { - finish(); + finishAndRemoveTask(); return; }