From d42ff2a86b14d390781cb7cdc087529928c67fc2 Mon Sep 17 00:00:00 2001 From: SongFerngWang Date: Thu, 4 Nov 2021 19:04:04 +0800 Subject: [PATCH 01/11] Device do network scan after user rotates NetworkSelection page Add the networkSelectSettings fragment into new activity, and set the activity's android:configChanges as "orientation|keyboard|keyboardHidden|screenSize|screenLayout |smallestScreenSize". Bug: 204039043 Test: atest AutoSelectPreferenceControllerTest (pass) atest OpenNetworkSelectPagePreferenceControllerTest (pass) atest NetworkSelectSettingsTest (pass) Change-Id: Ic933c2294401bc50e105ddcfd2a17886d0bbefc3 Merged-In: Ic933c2294401bc50e105ddcfd2a17886d0bbefc3 --- AndroidManifest.xml | 15 ++++++++++ res/xml/mobile_network_settings.xml | 1 - src/com/android/settings/Settings.java | 1 + .../core/gateway/SettingsGateway.java | 3 ++ .../network/telephony/NetworkScanHelper.java | 1 + .../telephony/NetworkSelectSettings.java | 10 +++++-- .../gsm/AutoSelectPreferenceController.java | 28 +++++++++--------- ...NetworkSelectPagePreferenceController.java | 29 +++++-------------- 8 files changed, 47 insertions(+), 41 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 638340e4498..8e48e64fe93 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -235,6 +235,11 @@ android:exported="true" android:launchMode="singleTask" android:configChanges="orientation|screenSize|keyboardHidden"> + @@ -346,6 +351,16 @@ android:value="true" /> + + + + + diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java index 231a1496421..5abdf39e0d4 100644 --- a/src/com/android/settings/Settings.java +++ b/src/com/android/settings/Settings.java @@ -91,6 +91,7 @@ public class Settings extends SettingsActivity { public static class WifiSettingsActivity extends SettingsActivity { /* empty */ } public static class WifiSettings2Activity extends SettingsActivity { /* empty */ } public static class NetworkProviderSettingsActivity extends SettingsActivity { /* empty */ } + public static class NetworkSelectActivity extends SettingsActivity { /* empty */ } /** Activity for the Wi-Fi network details settings. */ public static class WifiDetailsSettingsActivity extends SettingsActivity { /* empty */ } public static class WifiP2pSettingsActivity extends SettingsActivity { /* empty */ } diff --git a/src/com/android/settings/core/gateway/SettingsGateway.java b/src/com/android/settings/core/gateway/SettingsGateway.java index 1adf199fd39..e9231797bac 100644 --- a/src/com/android/settings/core/gateway/SettingsGateway.java +++ b/src/com/android/settings/core/gateway/SettingsGateway.java @@ -118,6 +118,7 @@ import com.android.settings.network.NetworkDashboardFragment; import com.android.settings.network.NetworkProviderSettings; import com.android.settings.network.apn.ApnEditor; import com.android.settings.network.apn.ApnSettings; +import com.android.settings.network.telephony.NetworkSelectSettings; import com.android.settings.nfc.AndroidBeam; import com.android.settings.nfc.PaymentSettings; import com.android.settings.notification.ConfigureNotificationSettings; @@ -316,6 +317,7 @@ public class SettingsGateway { InteractAcrossProfilesDetails.class.getName(), MediaControlsSettings.class.getName(), NetworkProviderSettings.class.getName(), + NetworkSelectSettings.class.getName(), AlarmsAndRemindersDetails.class.getName(), MediaManagementAppsDetails.class.getName() }; @@ -339,6 +341,7 @@ public class SettingsGateway { Settings.WifiSettingsActivity.class.getName(), Settings.DataUsageSummaryActivity.class.getName(), Settings.NetworkProviderSettingsActivity.class.getName(), + Settings.NetworkSelectActivity.class.getName(), // Home page > Connected devices Settings.BluetoothSettingsActivity.class.getName(), Settings.WifiDisplaySettingsActivity.class.getName(), diff --git a/src/com/android/settings/network/telephony/NetworkScanHelper.java b/src/com/android/settings/network/telephony/NetworkScanHelper.java index e0a9c5e94ae..740b6bba2bc 100644 --- a/src/com/android/settings/network/telephony/NetworkScanHelper.java +++ b/src/com/android/settings/network/telephony/NetworkScanHelper.java @@ -227,6 +227,7 @@ public class NetworkScanHelper { mExecutor, mInternalNetworkScanCallback); if (mNetworkScanRequester == null) { + Log.d(TAG, "mNetworkScanRequester == null"); onError(NetworkScan.ERROR_RADIO_INTERFACE_ERROR); } } diff --git a/src/com/android/settings/network/telephony/NetworkSelectSettings.java b/src/com/android/settings/network/telephony/NetworkSelectSettings.java index 813cc745680..607b2714b13 100644 --- a/src/com/android/settings/network/telephony/NetworkSelectSettings.java +++ b/src/com/android/settings/network/telephony/NetworkSelectSettings.java @@ -19,6 +19,7 @@ package com.android.settings.network.telephony; import android.app.Activity; import android.app.settings.SettingsEnums; import android.content.Context; +import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; @@ -97,7 +98,11 @@ public class NetworkSelectSettings extends DashboardFragment { mUseNewApi = getContext().getResources().getBoolean( com.android.internal.R.bool.config_enableNewAutoSelectNetworkUI); - mSubId = getArguments().getInt(Settings.EXTRA_SUB_ID); + Intent intent = getActivity().getIntent(); + if (intent != null) { + mSubId = intent.getIntExtra(Settings.EXTRA_SUB_ID, + SubscriptionManager.INVALID_SUBSCRIPTION_ID); + } mPreferenceCategory = findPreference(PREF_KEY_NETWORK_OPERATORS); mStatusMessagePreference = new Preference(getContext()); @@ -120,13 +125,12 @@ public class NetworkSelectSettings extends DashboardFragment { mIsAggregationEnabled = getContext().getResources().getBoolean( R.bool.config_network_selection_list_aggregation_enabled); Log.d(TAG, "init: mUseNewApi:" + mUseNewApi - + " ,mIsAggregationEnabled:" + mIsAggregationEnabled); + + " ,mIsAggregationEnabled:" + mIsAggregationEnabled + " ,mSubId:" + mSubId); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - final Activity activity = getActivity(); if (activity != null) { mProgressHeader = setPinnedHeaderView(R.layout.progress_header) diff --git a/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java b/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java index 997235c8a0c..028c4e77a78 100644 --- a/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java +++ b/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java @@ -20,9 +20,8 @@ import static androidx.lifecycle.Lifecycle.Event.ON_START; import static androidx.lifecycle.Lifecycle.Event.ON_STOP; import android.app.ProgressDialog; -import android.app.settings.SettingsEnums; import android.content.Context; -import android.os.Bundle; +import android.content.Intent; import android.os.Handler; import android.os.HandlerExecutor; import android.os.Looper; @@ -43,10 +42,8 @@ import androidx.preference.PreferenceScreen; import androidx.preference.SwitchPreference; import com.android.settings.R; -import com.android.settings.core.SubSettingLauncher; import com.android.settings.network.AllowedNetworkTypesListener; import com.android.settings.network.telephony.MobileNetworkUtils; -import com.android.settings.network.telephony.NetworkSelectSettings; import com.android.settings.network.telephony.TelephonyTogglePreferenceController; import com.android.settingslib.utils.ThreadUtils; @@ -151,25 +148,26 @@ public class AutoSelectPreferenceController extends TelephonyTogglePreferenceCon public boolean setChecked(boolean isChecked) { if (isChecked) { setAutomaticSelectionMode(); - return false; } else { - final Bundle bundle = new Bundle(); - bundle.putInt(Settings.EXTRA_SUB_ID, mSubId); - new SubSettingLauncher(mContext) - .setDestination(NetworkSelectSettings.class.getName()) - .setSourceMetricsCategory(SettingsEnums.MOBILE_NETWORK_SELECT) - .setTitleRes(R.string.choose_network_title) - .setArguments(bundle) - .launch(); - return false; + if (mSwitchPreference != null) { + Intent intent = new Intent(); + intent.setClassName("com.android.settings", + "com.android.settings.Settings$NetworkSelectActivity"); + intent.putExtra(Settings.EXTRA_SUB_ID, mSubId); + mSwitchPreference.setIntent(intent); + } } + return false; } @VisibleForTesting Future setAutomaticSelectionMode() { final long startMillis = SystemClock.elapsedRealtime(); showAutoSelectProgressBar(); - mSwitchPreference.setEnabled(false); + if (mSwitchPreference != null) { + mSwitchPreference.setIntent(null); + mSwitchPreference.setEnabled(false); + } return ThreadUtils.postOnBackgroundThread(() -> { // set network selection mode in background mTelephonyManager.setNetworkSelectionModeAutomatic(); diff --git a/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.java b/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.java index 4047009b325..54f5ce15d72 100644 --- a/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.java +++ b/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.java @@ -19,14 +19,12 @@ package com.android.settings.network.telephony.gsm; import static androidx.lifecycle.Lifecycle.Event.ON_START; import static androidx.lifecycle.Lifecycle.Event.ON_STOP; -import android.app.settings.SettingsEnums; import android.content.Context; -import android.os.Bundle; +import android.content.Intent; import android.provider.Settings; import android.telephony.ServiceState; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; -import android.text.TextUtils; import androidx.lifecycle.Lifecycle; import androidx.lifecycle.LifecycleObserver; @@ -35,10 +33,8 @@ import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.R; -import com.android.settings.core.SubSettingLauncher; import com.android.settings.network.AllowedNetworkTypesListener; import com.android.settings.network.telephony.MobileNetworkUtils; -import com.android.settings.network.telephony.NetworkSelectSettings; import com.android.settings.network.telephony.TelephonyBasePreferenceController; /** @@ -102,6 +98,12 @@ public class OpenNetworkSelectPagePreferenceController extends super.updateState(preference); preference.setEnabled(mTelephonyManager.getNetworkSelectionMode() != TelephonyManager.NETWORK_SELECTION_MODE_AUTO); + + Intent intent = new Intent(); + intent.setClassName("com.android.settings", + "com.android.settings.Settings$NetworkSelectActivity"); + intent.putExtra(Settings.EXTRA_SUB_ID, mSubId); + preference.setIntent(intent); } @Override @@ -114,23 +116,6 @@ public class OpenNetworkSelectPagePreferenceController extends } } - @Override - public boolean handlePreferenceTreeClick(Preference preference) { - if (TextUtils.equals(preference.getKey(), getPreferenceKey())) { - final Bundle bundle = new Bundle(); - bundle.putInt(Settings.EXTRA_SUB_ID, mSubId); - new SubSettingLauncher(mContext) - .setDestination(NetworkSelectSettings.class.getName()) - .setSourceMetricsCategory(SettingsEnums.MOBILE_NETWORK_SELECT) - .setTitleRes(R.string.choose_network_title) - .setArguments(bundle) - .launch(); - return true; - } - - return false; - } - public OpenNetworkSelectPagePreferenceController init(Lifecycle lifecycle, int subId) { mSubId = subId; mTelephonyManager = mContext.getSystemService(TelephonyManager.class) From e5f1d24913e4925a329c107d8dce38abec490358 Mon Sep 17 00:00:00 2001 From: Jason Chiu Date: Wed, 8 Dec 2021 11:01:26 +0800 Subject: [PATCH 02/11] Do not show the redundant RemoveAccountFailureDialog When the AccountManager's confirm remove dialog is canceled, a redundant ConfirmRemoveAccountDialog showed up. - Only show the dialog when a real error reported from AccountManager - Also change RemoveAccountFailureDialog's title to remove the redundant question mark Fix: 204948166 Test: manual Change-Id: If712e120938e80e1bf4593fa78a1a2a70684fc2a --- .../accounts/RemoveAccountPreferenceController.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/accounts/RemoveAccountPreferenceController.java b/src/com/android/settings/accounts/RemoveAccountPreferenceController.java index 037f5846a88..2ce22061907 100644 --- a/src/com/android/settings/accounts/RemoveAccountPreferenceController.java +++ b/src/com/android/settings/accounts/RemoveAccountPreferenceController.java @@ -53,6 +53,7 @@ import java.io.IOException; public class RemoveAccountPreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin, OnClickListener { + private static final String TAG = "RemoveAccountPrefController"; private static final String KEY_REMOVE_ACCOUNT = "remove_account"; private final MetricsFeatureProvider mMetricsFeatureProvider; @@ -175,10 +176,11 @@ public class RemoveAccountPreferenceController extends AbstractPreferenceControl | IOException | AuthenticatorException e) { // handled below - } - if (failed) { + Log.w(TAG, "Remove account error: " + e); RemoveAccountFailureDialog.show(getTargetFragment()); - } else { + } + Log.i(TAG, "failed: " + failed); + if (!failed) { targetActivity.finish(); } }, null, mUserHandle); @@ -210,7 +212,7 @@ public class RemoveAccountPreferenceController extends AbstractPreferenceControl final Context context = getActivity(); return new AlertDialog.Builder(context) - .setTitle(R.string.really_remove_account_title) + .setTitle(R.string.remove_account_label) .setMessage(R.string.remove_account_failed) .setPositiveButton(android.R.string.ok, null) .create(); From 2a7069f5616bf77534ce42488877952bf9bcb734 Mon Sep 17 00:00:00 2001 From: alexylli Date: Wed, 8 Dec 2021 17:01:41 +0800 Subject: [PATCH 03/11] [Settings] Remove override the transition to fade during the Suw flow. Because Suw side has already override the transition when calling the font size. video: https://drive.google.com/file/d/1Lihpj3PFX4-xpg1d3pT3pBqm99noQL-k/view?usp=sharing Bug: 208374725 Test: manual Change-Id: Idaa56cdbdc7b9f76fe370ba79130007f7359557c --- .../AccessibilitySettingsForSetupWizardActivity.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java index 3a6bea9caaa..7a28e3917e0 100644 --- a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java +++ b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java @@ -38,7 +38,6 @@ import com.android.settings.search.actionbar.SearchMenuController; import com.android.settings.support.actionbar.HelpResourceProvider; import com.android.settingslib.core.instrumentation.Instrumentable; import com.android.settingslib.transition.SettingsTransitionHelper; -import com.android.settingslib.transition.SettingsTransitionHelper.TransitionType; import com.google.android.setupcompat.util.WizardManagerHelper; import com.google.android.setupdesign.util.ThemeHelper; @@ -130,7 +129,6 @@ public class AccessibilitySettingsForSetupWizardActivity extends SettingsActivit final Intent intent = new Intent(this, AccessibilityScreenSizeForSetupWizardActivity.class); intent.putExtra(VISION_FRAGMENT_NO, FragmentType.FONT_SIZE); - intent.putExtra(EXTRA_PAGE_TRANSITION_TYPE, TransitionType.TRANSITION_FADE); startActivity(intent); Log.d(LOG_TAG, "Launch font size settings"); finish(); From f848cd8156136c431993d1f922656c86cb8dd878 Mon Sep 17 00:00:00 2001 From: Tsung-Mao Fang Date: Wed, 8 Dec 2021 14:19:33 +0000 Subject: [PATCH 04/11] Revert "Device do network scan after user rotates NetworkSelection page" This reverts commit 13aadad7fa494a4225a168bff0e3e06b744e15b2. Reason for revert: b/207587612 Change-Id: I8bef41eb43088d4a118de30eab0ac3ddc6c7c79c --- AndroidManifest.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 4967adabd52..638340e4498 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -191,7 +191,6 @@ Date: Mon, 29 Nov 2021 16:06:38 +0000 Subject: [PATCH 05/11] Add non system overlay flag to InstallCaCertificateWarning Bug: 196969991 Test: Manual testing with Settings Merged-In: Ia9dc251c853526b2ce66c9f8ff595d496b7f1bc4 Change-Id: Ia9dc251c853526b2ce66c9f8ff595d496b7f1bc4 (cherry picked from commit 2f193c81576e2e86cf64470aeb312cab1e76d40d) --- .../settings/security/InstallCaCertificateWarning.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/com/android/settings/security/InstallCaCertificateWarning.java b/src/com/android/settings/security/InstallCaCertificateWarning.java index 38548756a31..139bc1c2700 100644 --- a/src/com/android/settings/security/InstallCaCertificateWarning.java +++ b/src/com/android/settings/security/InstallCaCertificateWarning.java @@ -16,6 +16,8 @@ package com.android.settings.security; +import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS; + import android.annotation.Nullable; import android.app.Activity; import android.content.Intent; @@ -45,6 +47,8 @@ public class InstallCaCertificateWarning extends Activity { setTheme(SetupWizardUtils.getTheme(this, getIntent())); ThemeHelper.trySetDynamicColor(this); setContentView(R.layout.ca_certificate_warning_dialog); + getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS); + final GlifLayout layout = findViewById(R.id.setup_wizard_layout); layout.setHeaderText(R.string.ca_certificate_warning_title); @@ -57,6 +61,7 @@ public class InstallCaCertificateWarning extends Activity { .setTheme(R.style.SudGlifButton_Secondary) .build() ); + mixin.getSecondaryButtonView().setFilterTouchesWhenObscured(true); mixin.setPrimaryButton( new FooterButton.Builder(this) @@ -66,6 +71,7 @@ public class InstallCaCertificateWarning extends Activity { .setTheme(R.style.SudGlifButton_Primary) .build() ); + mixin.getPrimaryButtonView().setFilterTouchesWhenObscured(true); } private View.OnClickListener installCaCertificate() { From fca5cb37486fb1072d6233670b2fd66e555b07c1 Mon Sep 17 00:00:00 2001 From: Alex Johnston Date: Mon, 29 Nov 2021 16:06:38 +0000 Subject: [PATCH 06/11] Add non system overlay flag to InstallCaCertificateWarning Bug: 196969991 Test: Manual testing with Settings Change-Id: Ia9dc251c853526b2ce66c9f8ff595d496b7f1bc4 Merged-In: Ia9dc251c853526b2ce66c9f8ff595d496b7f1bc4 (cherry picked from commit 2f193c81576e2e86cf64470aeb312cab1e76d40d) --- .../settings/security/InstallCaCertificateWarning.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/com/android/settings/security/InstallCaCertificateWarning.java b/src/com/android/settings/security/InstallCaCertificateWarning.java index 91faae1f6a1..b5cc6b35c72 100644 --- a/src/com/android/settings/security/InstallCaCertificateWarning.java +++ b/src/com/android/settings/security/InstallCaCertificateWarning.java @@ -16,6 +16,8 @@ package com.android.settings.security; +import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS; + import android.annotation.Nullable; import android.app.Activity; import android.content.Intent; @@ -41,6 +43,8 @@ public class InstallCaCertificateWarning extends Activity { super.onCreate(savedInstanceState); setContentView(R.layout.ca_certificate_warning_dialog); + getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS); + final GlifLayout layout = findViewById(R.id.setup_wizard_layout); final FooterBarMixin mixin = layout.getMixin(FooterBarMixin.class); @@ -52,6 +56,7 @@ public class InstallCaCertificateWarning extends Activity { .setTheme(R.style.SudGlifButton_Secondary) .build() ); + mixin.getSecondaryButtonView().setFilterTouchesWhenObscured(true); mixin.setPrimaryButton( new FooterButton.Builder(this) @@ -61,6 +66,7 @@ public class InstallCaCertificateWarning extends Activity { .setTheme(R.style.SudGlifButton_Primary) .build() ); + mixin.getPrimaryButtonView().setFilterTouchesWhenObscured(true); } private View.OnClickListener installCaCertificate() { From 8c559c2788b4a40f23fc33b9ede7c2d326704d5c Mon Sep 17 00:00:00 2001 From: Jason Chiu Date: Thu, 9 Dec 2021 15:09:09 +0800 Subject: [PATCH 07/11] Fix the highlight error and remove the empty card Fix: 209918251 Test: manual Change-Id: I2a5afceea18cd4e1009114091433a2da22ac105e --- .../settings/homepage/SettingsHomepageActivity.java | 7 ++----- src/com/android/settings/homepage/TopLevelSettings.java | 9 ++++++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/com/android/settings/homepage/SettingsHomepageActivity.java b/src/com/android/settings/homepage/SettingsHomepageActivity.java index d5e82353bd3..9076053ff65 100644 --- a/src/com/android/settings/homepage/SettingsHomepageActivity.java +++ b/src/com/android/settings/homepage/SettingsHomepageActivity.java @@ -125,11 +125,8 @@ public class SettingsHomepageActivity extends FragmentActivity implements } Log.i(TAG, "showHomepageWithSuggestion: " + showSuggestion); final View homepageView = mHomepageView; - if (!mIsTwoPaneLastTime) { - mSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE); - } else { - mTwoPaneSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE); - } + mSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE); + mTwoPaneSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE); mHomepageView = null; mLoadedListeners.forEach(listener -> listener.onHomepageLoaded()); diff --git a/src/com/android/settings/homepage/TopLevelSettings.java b/src/com/android/settings/homepage/TopLevelSettings.java index 2bb8e34b408..f2e5a3528f7 100644 --- a/src/com/android/settings/homepage/TopLevelSettings.java +++ b/src/com/android/settings/homepage/TopLevelSettings.java @@ -54,6 +54,7 @@ public class TopLevelSettings extends DashboardFragment implements private static final String PREF_KEY_SUPPORT = "top_level_support"; private TopLevelHighlightMixin mHighlightMixin; + private boolean mFirstStarted = true; public TopLevelSettings() { final Bundle args = new Bundle(); @@ -135,9 +136,11 @@ public class TopLevelSettings extends DashboardFragment implements @Override public void onStart() { - // Set default highlight menu key for 1-pane homepage since it will show the placeholder - // page once changing back to 2-pane. - if (!ActivityEmbeddingUtils.isTwoPaneResolution(getActivity())) { + if (mFirstStarted) { + mFirstStarted = false; + } else if (!ActivityEmbeddingUtils.isTwoPaneResolution(getActivity())) { + // Set default highlight menu key for 1-pane homepage since it will show the placeholder + // page once changing back to 2-pane. setHighlightMenuKey(getString(SettingsHomepageActivity.DEFAULT_HIGHLIGHT_MENU_KEY), /* scrollNeeded= */ false); } From dc156e77b4d88e9b378df4b8f4d3dfaa3607fbaa Mon Sep 17 00:00:00 2001 From: jasonwshsu Date: Wed, 8 Dec 2021 18:48:09 +0800 Subject: [PATCH 08/11] Add new string to hint user of triple-tap shortcut delay * Original content in magnification switch shortcut dialog needs to have different versions for different accessibility software shortcuts. Use this generic content to replace them. Bug: 208749782 Test: manual test Change-Id: Ifc6591625c92ea04f6637ecfe90ce7d7b528b295 --- res/values/strings.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 85d216e697c..b566d982523 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -5280,13 +5280,13 @@ Tap the switch button to move between both options - Switch to accessibility button? + This may slow down your keyboard - Using triple-tap to magnify part of your screen causes typing and other delays.\n\nThe accessibility button floats on your screen over other apps. Tap it to magnify. - - Switch to accessibility button - - Use triple-tap + When using triple-tap to magnify part of your screen, you may notice issues over the keyboard.\n\nTo avoid this, you can change your magnification shortcut from triple-tap to another option.\nChange setting + + Continue anyway + + Cancel Magnification settings From 209df88d9d4997c50ab3df174cb12416e41fe023 Mon Sep 17 00:00:00 2001 From: Jason Chiu Date: Thu, 9 Dec 2021 16:51:59 +0800 Subject: [PATCH 09/11] Set the package name to the deep link intent If a deep link intent is not specified a package name, the intent action will be resolved to ForwardIntentToParent in some cases. Fix: 209928944 Test: manual Change-Id: I502be6be550ba817b4337f2d0793a7b3678fc8d2 --- src/com/android/settings/SettingsActivity.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java index 2b5f695ecbd..d3d3604a2cc 100644 --- a/src/com/android/settings/SettingsActivity.java +++ b/src/com/android/settings/SettingsActivity.java @@ -377,8 +377,9 @@ public class SettingsActivity extends SettingsBaseActivity public static Intent getTrampolineIntent(Intent intent, String highlightMenuKey) { final Intent detailIntent = new Intent(intent); // It's a deep link intent, SettingsHomepageActivity will set SplitPairRule and start it. - final Intent trampolineIntent = new Intent(ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITY); - trampolineIntent.replaceExtras(detailIntent); + final Intent trampolineIntent = new Intent(ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITY) + .setPackage(Utils.SETTINGS_PACKAGE_NAME) + .replaceExtras(detailIntent); // Relay detail intent data to prevent failure of Intent#ParseUri. // If Intent#getData() is not null, Intent#toUri will return an Uri which has the scheme of From b3f3f3d4f28eafb0acd2e5591812d54f1f329e81 Mon Sep 17 00:00:00 2001 From: ykhung Date: Thu, 9 Dec 2021 16:57:40 +0800 Subject: [PATCH 10/11] Remove the replaced activity checking to impact launching performance Bug: 209081502 Test: make SettingsRoboTests Change-Id: Id8e2144a5965601be9c290bc4df6db0d0beb0917 Merged-In: Id8e2144a5965601be9c290bc4df6db0d0beb0917 --- .../TopLevelBatteryPreferenceController.java | 40 ------------ ...pLevelBatteryPreferenceControllerTest.java | 64 ------------------- 2 files changed, 104 deletions(-) diff --git a/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java b/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java index 094793884f3..cbfbd34ced5 100644 --- a/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java +++ b/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java @@ -18,7 +18,6 @@ package com.android.settings.fuelgauge; import android.content.ComponentName; import android.content.Context; -import android.content.Intent; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; @@ -32,8 +31,6 @@ import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStop; import com.android.settingslib.utils.ThreadUtils; -import java.util.HashMap; - public class TopLevelBatteryPreferenceController extends BasePreferenceController implements LifecycleObserver, OnStart, OnStop, BatteryPreferenceController { @@ -43,13 +40,9 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle Preference mPreference; private final BatteryBroadcastReceiver mBatteryBroadcastReceiver; private BatteryInfo mBatteryInfo; - private BatterySettingsFeatureProvider mBatterySettingsFeatureProvider; private BatteryStatusFeatureProvider mBatteryStatusFeatureProvider; private String mBatteryStatusLabel; - @VisibleForTesting - protected static HashMap sReplacingActivityMap = new HashMap<>(); - public TopLevelBatteryPreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); mBatteryBroadcastReceiver = new BatteryBroadcastReceiver(mContext); @@ -63,8 +56,6 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle }, true /* shortString */); }); - mBatterySettingsFeatureProvider = FeatureFactory.getFactory(context) - .getBatterySettingsFeatureProvider(context); mBatteryStatusFeatureProvider = FeatureFactory.getFactory(context) .getBatteryStatusFeatureProvider(context); } @@ -81,37 +72,6 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle mPreference = screen.findPreference(getPreferenceKey()); } - @Override - public boolean handlePreferenceTreeClick(Preference preference) { - String prefFrag = preference.getFragment(); - if (prefFrag == null || prefFrag.isEmpty()) { - // Not a redirect, so use the default. - return super.handlePreferenceTreeClick(preference); - } - - ComponentName currentFragmentName = convertClassPathToComponentName(prefFrag); - if (currentFragmentName == null) { - return super.handlePreferenceTreeClick(preference); - } - - ComponentName replacingActivity; - if (sReplacingActivityMap.containsKey(prefFrag)) { - replacingActivity = sReplacingActivityMap.get(prefFrag); - } else { - replacingActivity = mBatterySettingsFeatureProvider.getReplacingActivity( - currentFragmentName); - sReplacingActivityMap.put(prefFrag, replacingActivity); - } - - if (replacingActivity == null || currentFragmentName.compareTo(replacingActivity) == 0) { - return super.handlePreferenceTreeClick(preference); - } - Intent intent = new Intent(); - intent.setComponent(currentFragmentName); - mContext.startActivity(intent); - return true; - } - @Override public void onStart() { mBatteryBroadcastReceiver.register(); diff --git a/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java index eef69884432..9e563f28ab1 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java @@ -21,11 +21,7 @@ import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_ import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Mockito.any; -import static org.mockito.Mockito.doNothing; -import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -36,9 +32,7 @@ import android.content.Context; import androidx.preference.Preference; import com.android.settings.R; -import com.android.settings.testutils.FakeFeatureFactory; -import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -50,23 +44,13 @@ import org.robolectric.annotation.Config; @RunWith(RobolectricTestRunner.class) public class TopLevelBatteryPreferenceControllerTest { private Context mContext; - private FakeFeatureFactory mFeatureFactory; private TopLevelBatteryPreferenceController mController; - private BatterySettingsFeatureProvider mBatterySettingsFeatureProvider; @Before public void setUp() { MockitoAnnotations.initMocks(this); - mFeatureFactory = FakeFeatureFactory.setupForTest(); mContext = spy(Robolectric.setupActivity(Activity.class)); mController = new TopLevelBatteryPreferenceController(mContext, "test_key"); - mBatterySettingsFeatureProvider = - mFeatureFactory.batterySettingsFeatureProvider; - } - - @After - public void cleanUp() { - TopLevelBatteryPreferenceController.sReplacingActivityMap.clear(); } @Test @@ -80,54 +64,6 @@ public class TopLevelBatteryPreferenceControllerTest { assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE); } - @Test - public void handlePreferenceTreeClick_noFragment_noCustomActivityCalled() { - Preference preference = new Preference(mContext); - - assertThat(mController.handlePreferenceTreeClick(preference)).isFalse(); - } - - @Test - public void handlePreferenceTreeClick_sameActivityReturned_noCustomActivityCalled() { - String fragmentPath = "my.fragment.ClassName"; - Preference preference = mock(Preference.class); - when(preference.getFragment()).thenReturn(fragmentPath); - ComponentName pathName = mController.convertClassPathToComponentName(fragmentPath); - when(mBatterySettingsFeatureProvider.getReplacingActivity(any())).thenReturn(pathName); - - assertThat(mController.handlePreferenceTreeClick(preference)).isFalse(); - } - - @Test - public void handlePreferenceTreeClick_newActivityReturned_newActivityRedirected() { - String fragmentPath = "my.fragment.ClassName"; - Preference preference = mock(Preference.class); - when(preference.getFragment()).thenReturn(fragmentPath); - String newFragmentPath = "my.fragment.NewClassName"; - ComponentName newPathName = mController.convertClassPathToComponentName(newFragmentPath); - when(mBatterySettingsFeatureProvider.getReplacingActivity(any())).thenReturn( - newPathName); - doNothing().when(mContext).startActivity(any()); - - assertThat(mController.handlePreferenceTreeClick(preference)).isTrue(); - } - - @Test - public void handlePreferenceTreeClick_calledMultipleTimes_fetchedFromCache() { - String fragmentPath = "my.fragment.ClassName"; - Preference preference = mock(Preference.class); - when(preference.getFragment()).thenReturn(fragmentPath); - String newFragmentPath = "my.fragment.NewClassName"; - ComponentName newPathName = mController.convertClassPathToComponentName(newFragmentPath); - when(mBatterySettingsFeatureProvider.getReplacingActivity(any())).thenReturn( - newPathName); - doNothing().when(mContext).startActivity(any()); - - assertThat(mController.handlePreferenceTreeClick(preference)).isTrue(); - assertThat(mController.handlePreferenceTreeClick(preference)).isTrue(); - verify(mBatterySettingsFeatureProvider, times(1)).getReplacingActivity(any()); - } - @Test public void convertClassPathToComponentName_nullInput_returnsNull() { assertThat(mController.convertClassPathToComponentName(null)).isNull(); From 90274b20337ed6c6feeb0f58b9073c13d172ec60 Mon Sep 17 00:00:00 2001 From: tom hsu Date: Thu, 9 Dec 2021 15:55:24 +0800 Subject: [PATCH 11/11] [Provider Model] fix incorrect signal icon on internet picker - Modify incorrect sub id to TelephonyManager Bug: 204411539 Test: b/204411539#17 Change-Id: I7453267a1cd6158f03aa9b94f780fc2faa06d990 --- .../settings/network/SubscriptionsPreferenceController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/android/settings/network/SubscriptionsPreferenceController.java b/src/com/android/settings/network/SubscriptionsPreferenceController.java index 9e1b6da24e9..554188872ff 100644 --- a/src/com/android/settings/network/SubscriptionsPreferenceController.java +++ b/src/com/android/settings/network/SubscriptionsPreferenceController.java @@ -316,7 +316,7 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl : (serviceState.getState() == ServiceState.STATE_IN_SERVICE); if (isDataInService || isVoiceInService || isCarrierNetworkActive) { icon = mSubsPrefCtrlInjector.getIcon(mContext, level, numLevels, - !mTelephonyManager.isDataEnabled()); + !tmForSubId.isDataEnabled()); } final boolean isActiveCellularNetwork =