From 76bd28fe608d32c653ff47c1ada8370c7f065aea Mon Sep 17 00:00:00 2001 From: Bonian Chen Date: Mon, 3 Feb 2020 21:31:24 +0800 Subject: [PATCH] [Settings] Data roaming warning only when turn ON handlePreferenceTreeClick() goes after setChecked() however configuration may have been altered within setChecked(). Follow same design within MobileDataPreferenceController to fix this issue. A boolean state will be maintained as the condition when warning dialog is required when click. Bug: 148491064 Test: m RunSettingsRoboTests -j ROBOTEST_FILTER=RoamingPreferenceControllerTest Merged-In: I63c4e2149b0e9efa16fd9ee402652c67eb9c5a4d Change-Id: I2f9998e87b053c8d30af48f977ef58a7fe9ea829 --- .../telephony/RoamingPreferenceController.java | 17 +++-------------- .../RoamingPreferenceControllerTest.java | 4 ++-- 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/src/com/android/settings/network/telephony/RoamingPreferenceController.java b/src/com/android/settings/network/telephony/RoamingPreferenceController.java index 08fe3230ee5..2e116d8110c 100644 --- a/src/com/android/settings/network/telephony/RoamingPreferenceController.java +++ b/src/com/android/settings/network/telephony/RoamingPreferenceController.java @@ -22,7 +22,6 @@ import android.provider.Settings; import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; -import android.text.TextUtils; import android.util.Log; import androidx.annotation.VisibleForTesting; @@ -110,21 +109,11 @@ public class RoamingPreferenceController extends TelephonyTogglePreferenceContro : AVAILABLE_UNSEARCHABLE; } - @Override - public boolean handlePreferenceTreeClick(Preference preference) { - if (TextUtils.equals(preference.getKey(), getPreferenceKey())) { - if (isDialogNeeded()) { - showDialog(); - } - return true; - } - - return false; - } - @Override public boolean setChecked(boolean isChecked) { - if (!isDialogNeeded()) { + if (isDialogNeeded()) { + showDialog(); + } else { // Update data directly if we don't need dialog mTelephonyManager.setDataRoamingEnabled(isChecked); return true; diff --git a/tests/robotests/src/com/android/settings/network/telephony/RoamingPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/RoamingPreferenceControllerTest.java index 0abd6d563e1..092b9b7506a 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/RoamingPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/RoamingPreferenceControllerTest.java @@ -117,10 +117,10 @@ public class RoamingPreferenceControllerTest { } @Test - public void handlePreferenceTreeClick_needDialog_showDialog() { + public void setChecked_needDialog_showDialog() { doReturn(true).when(mController).isDialogNeeded(); - mController.handlePreferenceTreeClick(mPreference); + mController.setChecked(true); verify(mFragmentManager).beginTransaction(); }