From d63c5ebff570caee32bed00b79380a5c502a0082 Mon Sep 17 00:00:00 2001 From: Sunny Shao Date: Thu, 16 Apr 2020 21:27:48 +0800 Subject: [PATCH 1/4] Fix incorrect app count displayed under special app access - This special app Google Play services will change its hasLauncherEntry value after receiving the MSG_LOAD_LAUNCHER. - Update the summary while SpecialAppAccessPreferenceController is receiving the onLauncherInfoChanged callback. Fixes: 150480524 Test: manual test Change-Id: I26b99fce54606644ee5603b4ca4730267c0f7ce5 --- .../applications/SpecialAppAccessPreferenceController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/applications/SpecialAppAccessPreferenceController.java b/src/com/android/settings/applications/SpecialAppAccessPreferenceController.java index 8c937bc17bb..752c6cedd62 100644 --- a/src/com/android/settings/applications/SpecialAppAccessPreferenceController.java +++ b/src/com/android/settings/applications/SpecialAppAccessPreferenceController.java @@ -144,10 +144,11 @@ public class SpecialAppAccessPreferenceController extends BasePreferenceControll @Override public void onLauncherInfoChanged() { + // when the value of the AppEntry.hasLauncherEntry was changed. + updateSummary(); } @Override public void onLoadEntriesCompleted() { } - } From 969a6a613c0ff9d1d9c30c22d64e0e1381ea40e1 Mon Sep 17 00:00:00 2001 From: tom hsu Date: Fri, 17 Apr 2020 03:38:35 +0800 Subject: [PATCH 2/4] Fix failures on com.android.settings.network.ApnEditorTest Bug: 152376182 Test: make RunSettingsRoboTests Change-Id: Ib718a4ed0163e07be748857a0dc7b2af92036c3f --- .../android/settings/network/ApnEditor.java | 193 ++++++++++-------- .../settings/network/ApnEditorTest.java | 5 + 2 files changed, 111 insertions(+), 87 deletions(-) diff --git a/src/com/android/settings/network/ApnEditor.java b/src/com/android/settings/network/ApnEditor.java index 6de2550c385..5da6e2c7401 100644 --- a/src/com/android/settings/network/ApnEditor.java +++ b/src/com/android/settings/network/ApnEditor.java @@ -130,7 +130,8 @@ public class ApnEditor extends SettingsPreferenceFragment private boolean mNewApn; private int mSubId; - private ProxySubscriptionManager mProxySubscriptionMgr; + @VisibleForTesting + ProxySubscriptionManager mProxySubscriptionMgr; private int mBearerInitialVal = 0; private String mMvnoTypeStr; private String mMvnoMatchDataStr; @@ -263,34 +264,7 @@ public class ApnEditor extends SettingsPreferenceFragment public void onCreate(Bundle icicle) { super.onCreate(icicle); - // enable ProxySubscriptionMgr with Lifecycle support for all controllers - // live within this fragment - mProxySubscriptionMgr = ProxySubscriptionManager.getInstance(getContext()); - mProxySubscriptionMgr.setLifecycle(getLifecycle()); - - addPreferencesFromResource(R.xml.apn_editor); - - sNotSet = getResources().getString(R.string.apn_not_set); - mName = (EditTextPreference) findPreference("apn_name"); - mApn = (EditTextPreference) findPreference("apn_apn"); - mProxy = (EditTextPreference) findPreference("apn_http_proxy"); - mPort = (EditTextPreference) findPreference("apn_http_port"); - mUser = (EditTextPreference) findPreference("apn_user"); - mServer = (EditTextPreference) findPreference("apn_server"); - mPassword = (EditTextPreference) findPreference(KEY_PASSWORD); - mMmsProxy = (EditTextPreference) findPreference("apn_mms_proxy"); - mMmsPort = (EditTextPreference) findPreference("apn_mms_port"); - mMmsc = (EditTextPreference) findPreference("apn_mmsc"); - mMcc = (EditTextPreference) findPreference("apn_mcc"); - mMnc = (EditTextPreference) findPreference("apn_mnc"); - mApnType = (EditTextPreference) findPreference("apn_type"); - mAuthType = (ListPreference) findPreference(KEY_AUTH_TYPE); - mProtocol = (ListPreference) findPreference(KEY_PROTOCOL); - mRoamingProtocol = (ListPreference) findPreference(KEY_ROAMING_PROTOCOL); - mCarrierEnabled = (SwitchPreference) findPreference(KEY_CARRIER_ENABLED); - mBearerMulti = (MultiSelectListPreference) findPreference(KEY_BEARER_MULTI); - mMvnoType = (ListPreference) findPreference(KEY_MVNO_TYPE); - mMvnoMatchData = (EditTextPreference) findPreference("mvno_match_data"); + setLifecycleForAllControllers(); final Intent intent = getIntent(); final String action = intent.getAction(); @@ -298,47 +272,11 @@ public class ApnEditor extends SettingsPreferenceFragment finish(); return; } - mSubId = intent.getIntExtra(ApnSettings.SUB_ID, SubscriptionManager.INVALID_SUBSCRIPTION_ID); - mReadOnlyApn = false; - mReadOnlyApnTypes = null; - mReadOnlyApnFields = null; - final CarrierConfigManager configManager = (CarrierConfigManager) - getSystemService(Context.CARRIER_CONFIG_SERVICE); - if (configManager != null) { - final PersistableBundle b = configManager.getConfigForSubId(mSubId); - if (b != null) { - mReadOnlyApnTypes = b.getStringArray( - CarrierConfigManager.KEY_READ_ONLY_APN_TYPES_STRING_ARRAY); - if (!ArrayUtils.isEmpty(mReadOnlyApnTypes)) { - Log.d(TAG, - "onCreate: read only APN type: " + Arrays.toString(mReadOnlyApnTypes)); - } - mReadOnlyApnFields = b.getStringArray( - CarrierConfigManager.KEY_READ_ONLY_APN_FIELDS_STRING_ARRAY); - - mDefaultApnTypes = b.getStringArray( - CarrierConfigManager.KEY_APN_SETTINGS_DEFAULT_APN_TYPES_STRING_ARRAY); - if (!ArrayUtils.isEmpty(mDefaultApnTypes)) { - Log.d(TAG, "onCreate: default apn types: " + Arrays.toString(mDefaultApnTypes)); - } - - mDefaultApnProtocol = b.getString( - CarrierConfigManager.Apn.KEY_SETTINGS_DEFAULT_PROTOCOL_STRING); - if (!TextUtils.isEmpty(mDefaultApnProtocol)) { - Log.d(TAG, "onCreate: default apn protocol: " + mDefaultApnProtocol); - } - - mDefaultApnRoamingProtocol = b.getString( - CarrierConfigManager.Apn.KEY_SETTINGS_DEFAULT_ROAMING_PROTOCOL_STRING); - if (!TextUtils.isEmpty(mDefaultApnRoamingProtocol)) { - Log.d(TAG, "onCreate: default apn roaming protocol: " - + mDefaultApnRoamingProtocol); - } - } - } + initApnEditorUi(); + getCarrierCustomizedConfig(); Uri uri = null; if (action.equals(Intent.ACTION_EDIT)) { @@ -391,6 +329,17 @@ public class ApnEditor extends SettingsPreferenceFragment } } + /** + * Enable ProxySubscriptionMgr with Lifecycle support for all controllers + * live within this fragment + */ + private void setLifecycleForAllControllers() { + if (mProxySubscriptionMgr == null) { + mProxySubscriptionMgr = ProxySubscriptionManager.getInstance(getContext()); + } + mProxySubscriptionMgr.setLifecycle(getLifecycle()); + } + @Override public void onViewStateRestored(@Nullable Bundle savedInstanceState) { super.onViewStateRestored(savedInstanceState); @@ -1279,32 +1228,102 @@ public class ApnEditor extends SettingsPreferenceFragment if (TextUtils.isEmpty(userEnteredApnType) && !ArrayUtils.isEmpty(mDefaultApnTypes)) { apnTypeList = mDefaultApnTypes; } - - final StringBuilder editableApnTypes = new StringBuilder(); - final List readOnlyApnTypes = Arrays.asList(mReadOnlyApnTypes); - boolean first = true; - for (String apnType : apnTypeList) { - // add APN type if it is not read-only and is not wild-cardable - if (!readOnlyApnTypes.contains(apnType) - && !apnType.equals(APN_TYPE_IA) - && !apnType.equals(APN_TYPE_EMERGENCY) - && !apnType.equals(APN_TYPE_MCX)) { - if (first) { - first = false; - } else { - editableApnTypes.append(","); - } - editableApnTypes.append(apnType); - } - } - userEnteredApnType = editableApnTypes.toString(); + userEnteredApnType = getEditableApnType(apnTypeList); Log.d(TAG, "getUserEnteredApnType: changed apn type to editable apn types: " + userEnteredApnType); } - return userEnteredApnType; } + private String getEditableApnType(String[] apnTypeList) { + final StringBuilder editableApnTypes = new StringBuilder(); + final List readOnlyApnTypes = Arrays.asList(mReadOnlyApnTypes); + boolean first = true; + for (String apnType : apnTypeList) { + // add APN type if it is not read-only and is not wild-cardable + if (!readOnlyApnTypes.contains(apnType) + && !apnType.equals(APN_TYPE_IA) + && !apnType.equals(APN_TYPE_EMERGENCY) + && !apnType.equals(APN_TYPE_MCX)) { + if (first) { + first = false; + } else { + editableApnTypes.append(","); + } + editableApnTypes.append(apnType); + } + } + return editableApnTypes.toString(); + } + + private void initApnEditorUi() { + addPreferencesFromResource(R.xml.apn_editor); + + sNotSet = getResources().getString(R.string.apn_not_set); + mName = (EditTextPreference) findPreference("apn_name"); + mApn = (EditTextPreference) findPreference("apn_apn"); + mProxy = (EditTextPreference) findPreference("apn_http_proxy"); + mPort = (EditTextPreference) findPreference("apn_http_port"); + mUser = (EditTextPreference) findPreference("apn_user"); + mServer = (EditTextPreference) findPreference("apn_server"); + mPassword = (EditTextPreference) findPreference(KEY_PASSWORD); + mMmsProxy = (EditTextPreference) findPreference("apn_mms_proxy"); + mMmsPort = (EditTextPreference) findPreference("apn_mms_port"); + mMmsc = (EditTextPreference) findPreference("apn_mmsc"); + mMcc = (EditTextPreference) findPreference("apn_mcc"); + mMnc = (EditTextPreference) findPreference("apn_mnc"); + mApnType = (EditTextPreference) findPreference("apn_type"); + mAuthType = (ListPreference) findPreference(KEY_AUTH_TYPE); + mProtocol = (ListPreference) findPreference(KEY_PROTOCOL); + mRoamingProtocol = (ListPreference) findPreference(KEY_ROAMING_PROTOCOL); + mCarrierEnabled = (SwitchPreference) findPreference(KEY_CARRIER_ENABLED); + mBearerMulti = (MultiSelectListPreference) findPreference(KEY_BEARER_MULTI); + mMvnoType = (ListPreference) findPreference(KEY_MVNO_TYPE); + mMvnoMatchData = (EditTextPreference) findPreference("mvno_match_data"); + } + + private void getCarrierCustomizedConfig() { + mReadOnlyApn = false; + mReadOnlyApnTypes = null; + mReadOnlyApnFields = null; + + final CarrierConfigManager configManager = (CarrierConfigManager) + getSystemService(Context.CARRIER_CONFIG_SERVICE); + if (configManager != null) { + final PersistableBundle b = configManager.getConfigForSubId(mSubId); + if (b != null) { + mReadOnlyApnTypes = b.getStringArray( + CarrierConfigManager.KEY_READ_ONLY_APN_TYPES_STRING_ARRAY); + if (!ArrayUtils.isEmpty(mReadOnlyApnTypes)) { + Log.d(TAG, + "onCreate: read only APN type: " + Arrays.toString(mReadOnlyApnTypes)); + } + mReadOnlyApnFields = b.getStringArray( + CarrierConfigManager.KEY_READ_ONLY_APN_FIELDS_STRING_ARRAY); + + mDefaultApnTypes = b.getStringArray( + CarrierConfigManager.KEY_APN_SETTINGS_DEFAULT_APN_TYPES_STRING_ARRAY); + + if (!ArrayUtils.isEmpty(mDefaultApnTypes)) { + Log.d(TAG, "onCreate: default apn types: " + Arrays.toString(mDefaultApnTypes)); + } + + mDefaultApnProtocol = b.getString( + CarrierConfigManager.Apn.KEY_SETTINGS_DEFAULT_PROTOCOL_STRING); + if (!TextUtils.isEmpty(mDefaultApnProtocol)) { + Log.d(TAG, "onCreate: default apn protocol: " + mDefaultApnProtocol); + } + + mDefaultApnRoamingProtocol = b.getString( + CarrierConfigManager.Apn.KEY_SETTINGS_DEFAULT_ROAMING_PROTOCOL_STRING); + if (!TextUtils.isEmpty(mDefaultApnRoamingProtocol)) { + Log.d(TAG, "onCreate: default apn roaming protocol: " + + mDefaultApnRoamingProtocol); + } + } + } + } + public static class ErrorDialog extends InstrumentedDialogFragment { public static void showError(ApnEditor editor) { diff --git a/tests/robotests/src/com/android/settings/network/ApnEditorTest.java b/tests/robotests/src/com/android/settings/network/ApnEditorTest.java index e291a437656..20334e045b6 100644 --- a/tests/robotests/src/com/android/settings/network/ApnEditorTest.java +++ b/tests/robotests/src/com/android/settings/network/ApnEditorTest.java @@ -22,6 +22,7 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; @@ -99,6 +100,8 @@ public class ApnEditorTest { @Mock private FragmentActivity mActivity; + @Mock + private ProxySubscriptionManager mProxySubscriptionMgr; @Captor private ArgumentCaptor mUriCaptor; @@ -450,6 +453,8 @@ public class ApnEditorTest { @Test @Config(shadows = ShadowFragment.class) public void onCreate_noAction_shouldFinishAndNoCrash() { + ProxySubscriptionManager proxySubscriptionMgr = mock(ProxySubscriptionManager.class); + mApnEditorUT.mProxySubscriptionMgr = proxySubscriptionMgr; doReturn(new Intent()).when(mActivity).getIntent(); doNothing().when(mApnEditorUT).addPreferencesFromResource(anyInt()); From b6c30a2c31e6d0fe8089f51d13128c6f78242cea Mon Sep 17 00:00:00 2001 From: Yanting Yang Date: Wed, 1 Apr 2020 20:00:23 +0800 Subject: [PATCH 3/4] Do not generate copyable slices for Settings Search Copyable slices is to provide user a quickly sub-text copying way on Settings Search. Since we plan to remove all sub-text from Settings Search, the copying feature is no longer available. Therefore, we don't need to generate copyable slices in Settings anymore. Impact search result: Build number, Phone number, Hardware version, Serial number and IMEI Bug: 143118037 Test: visual and robotests Change-Id: I81474aed994678c42d73cc59e169573880de1378 --- .../BuildNumberPreferenceController.java | 15 --------------- .../PhoneNumberPreferenceController.java | 15 --------------- .../HardwareRevisionPreferenceController.java | 15 --------------- .../SerialNumberPreferenceController.java | 15 --------------- .../imei/ImeiInfoPreferenceController.java | 15 --------------- .../BuildNumberPreferenceControllerTest.java | 5 ----- .../PhoneNumberPreferenceControllerTest.java | 10 ---------- .../HardwareRevisionPreferenceControllerTest.java | 15 --------------- .../SerialNumberPreferenceControllerTest.java | 11 ----------- .../imei/ImeiInfoPreferenceControllerTest.java | 5 ----- 10 files changed, 121 deletions(-) diff --git a/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java b/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java index 52dbb5b21ed..185c8eaca74 100644 --- a/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java +++ b/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java @@ -97,21 +97,6 @@ public class BuildNumberPreferenceController extends BasePreferenceController im return AVAILABLE; } - @Override - public boolean isSliceable() { - return true; - } - - @Override - public boolean isPublicSlice() { - return true; - } - - @Override - public boolean isCopyableSlice() { - return true; - } - @Override public boolean useDynamicSliceSummary() { return true; diff --git a/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java b/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java index 41a598b1e5d..abf58d80454 100644 --- a/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java +++ b/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java @@ -90,21 +90,6 @@ public class PhoneNumberPreferenceController extends BasePreferenceController { } } - @Override - public boolean isSliceable() { - return true; - } - - @Override - public boolean isPublicSlice() { - return true; - } - - @Override - public boolean isCopyableSlice() { - return true; - } - @Override public boolean useDynamicSliceSummary() { return true; diff --git a/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceController.java b/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceController.java index 62da4776b68..955c60c8ff0 100644 --- a/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceController.java +++ b/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceController.java @@ -40,21 +40,6 @@ public class HardwareRevisionPreferenceController extends BasePreferenceControll return true; } - @Override - public boolean isSliceable() { - return true; - } - - @Override - public boolean isPublicSlice() { - return true; - } - - @Override - public boolean isCopyableSlice() { - return true; - } - @Override public void copy() { Sliceable.setCopyContent(mContext, getSummary(), diff --git a/src/com/android/settings/deviceinfo/hardwareinfo/SerialNumberPreferenceController.java b/src/com/android/settings/deviceinfo/hardwareinfo/SerialNumberPreferenceController.java index 91504821231..3ed8e346acc 100644 --- a/src/com/android/settings/deviceinfo/hardwareinfo/SerialNumberPreferenceController.java +++ b/src/com/android/settings/deviceinfo/hardwareinfo/SerialNumberPreferenceController.java @@ -35,21 +35,6 @@ public class SerialNumberPreferenceController extends BasePreferenceController { ? AVAILABLE : UNSUPPORTED_ON_DEVICE; } - @Override - public boolean isSliceable() { - return true; - } - - @Override - public boolean isPublicSlice() { - return true; - } - - @Override - public boolean isCopyableSlice() { - return true; - } - @Override public boolean useDynamicSliceSummary() { return true; diff --git a/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java b/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java index bdce2f5f408..967eea6155d 100644 --- a/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java +++ b/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java @@ -118,21 +118,6 @@ public class ImeiInfoPreferenceController extends BasePreferenceController { && !Utils.isWifiOnly(mContext) ? AVAILABLE : UNSUPPORTED_ON_DEVICE; } - @Override - public boolean isSliceable() { - return true; - } - - @Override - public boolean isPublicSlice() { - return true; - } - - @Override - public boolean isCopyableSlice() { - return true; - } - @Override public boolean useDynamicSliceSummary() { return true; diff --git a/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java index 851e56fc390..80a3a111b26 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java @@ -205,9 +205,4 @@ public class BuildNumberPreferenceControllerTest { final CharSequence data = clipboard.getPrimaryClip().getItemAt(0).getText(); assertThat(data.toString()).isEqualTo(mController.getSummary()); } - - @Test - public void isPublicSlice_returnTrue() { - assertThat(mController.isPublicSlice()).isTrue(); - } } diff --git a/tests/robotests/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.java index 55b3d1aa2b1..9bb2d3f4bea 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.java @@ -158,11 +158,6 @@ public class PhoneNumberPreferenceControllerTest { assertThat(primaryNumber).isEqualTo(mContext.getString(R.string.device_info_default)); } - @Test - public void isSliceable_shouldBeTrue() { - assertThat(mController.isSliceable()).isTrue(); - } - @Test public void copy_shouldCopyPhoneNumberToClipboard() { final List list = new ArrayList<>(); @@ -178,9 +173,4 @@ public class PhoneNumberPreferenceControllerTest { final CharSequence data = clipboard.getPrimaryClip().getItemAt(0).getText(); assertThat(phoneNumber.contentEquals(data)).isTrue(); } - - @Test - public void isPublicSlice_returnTrue() { - assertThat(mController.isPublicSlice()).isTrue(); - } } diff --git a/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceControllerTest.java index ce022fd63d7..d705b646d3f 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceControllerTest.java @@ -45,21 +45,6 @@ public class HardwareRevisionPreferenceControllerTest { "hardware_info_device_revision"); } - @Test - public void isSliceable_shouldBeSliceable() { - assertThat(mController.isSliceable()).isTrue(); - } - - @Test - public void isPublicSlice_returnTrue() { - assertThat(mController.isPublicSlice()).isTrue(); - } - - @Test - public void isCopyableSlice_shouldBeCopyableSlice() { - assertThat(mController.isCopyableSlice()).isTrue(); - } - @Test public void copy_shouldCopyHardwareRevisionToClipboard() { final String fakeHardwareVer = "FakeVer1.0"; diff --git a/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/SerialNumberPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/SerialNumberPreferenceControllerTest.java index 93762b17653..2106b54114d 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/SerialNumberPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/SerialNumberPreferenceControllerTest.java @@ -42,17 +42,6 @@ public class SerialNumberPreferenceControllerTest { mController = new SerialNumberPreferenceController(mContext, "test"); } - @Test - public void isPublicSlice_returnTrue() { - assertThat(mController.isPublicSlice()).isTrue(); - } - - @Test - public void isCopyableSlice() { - assertThat(mController.isSliceable()).isTrue(); - assertThat(mController.isCopyableSlice()).isTrue(); - } - @Test public void copy_shouldPutSerialNumberToClipBoard() { mController.copy(); diff --git a/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceControllerTest.java index 24277fc83ba..997c35e19e5 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceControllerTest.java @@ -186,9 +186,4 @@ public class ImeiInfoPreferenceControllerTest { final CharSequence data = clipboard.getPrimaryClip().getItemAt(0).getText(); assertThat(data.toString()).isEqualTo(meid); } - - @Test - public void isPublicSlice_returnTrue() { - assertThat(mController.isPublicSlice()).isTrue(); - } } From f43cf08634013fbc132b18d8be1e145bed276d5d Mon Sep 17 00:00:00 2001 From: Julia Reynolds Date: Thu, 16 Apr 2020 09:47:57 -0400 Subject: [PATCH 4/4] Update configure notifications screen Test: atest Bug: 153150072 Change-Id: I99ebe2cad5036a154c40bce54dbd6ddbd23c2323 --- res/xml/configure_notification_settings.xml | 62 ++++---- ...tificationHistoryPreferenceController.java | 128 ---------------- ...centNotifyingAppsPreferenceController.java | 8 +- ...cationHistoryPreferenceControllerTest.java | 139 ------------------ ...NotifyingAppsPreferenceControllerTest.java | 16 -- 5 files changed, 33 insertions(+), 320 deletions(-) delete mode 100644 src/com/android/settings/notification/NotificationHistoryPreferenceController.java delete mode 100644 tests/robotests/src/com/android/settings/notification/NotificationHistoryPreferenceControllerTest.java diff --git a/res/xml/configure_notification_settings.xml b/res/xml/configure_notification_settings.xml index cb8357bdb0e..0123ee5ed80 100644 --- a/res/xml/configure_notification_settings.xml +++ b/res/xml/configure_notification_settings.xml @@ -25,16 +25,41 @@ settings:controller="com.android.settings.widget.VideoPreferenceController" android:persistent="false" /> - - + + + + + + + + settings:allowDividerAbove="true" + android:order="5"> @@ -42,7 +67,7 @@ android:key="all_notifications" android:title="@string/notifications_title" android:fragment="com.android.settings.applications.manageapplications.ManageApplications" - android:order="4" + android:order="6" settings:searchable="false"> - - - - - mUserIds; public RecentNotifyingAppsPreferenceController(Context context, NotificationBackend backend, @@ -130,14 +128,12 @@ public class RecentNotifyingAppsPreferenceController extends AbstractPreferenceC PreferenceControllerMixin.super.updateNonIndexableKeys(keys); // Don't index category name into search. It's not actionable. keys.add(KEY_PREF_CATEGORY); - keys.add(KEY_DIVIDER); } @Override public void displayPreference(PreferenceScreen screen) { mCategory = screen.findPreference(getPreferenceKey()); mSeeAllPref = screen.findPreference(KEY_SEE_ALL); - mDivider = screen.findPreference(KEY_DIVIDER); super.displayPreference(screen); refreshUi(mCategory.getContext()); } @@ -208,7 +204,6 @@ public class RecentNotifyingAppsPreferenceController extends AbstractPreferenceC private void displayOnlyAllAppsLink() { mCategory.setTitle(null); - mDivider.setVisible(false); mSeeAllPref.setTitle(R.string.notifications_title); mSeeAllPref.setIcon(null); int prefCount = mCategory.getPreferenceCount(); @@ -222,7 +217,6 @@ public class RecentNotifyingAppsPreferenceController extends AbstractPreferenceC private void displayRecentApps(Context prefContext, List recentApps) { mCategory.setTitle(R.string.recent_notifications); - mDivider.setVisible(true); mSeeAllPref.setSummary(null); mSeeAllPref.setIcon(R.drawable.ic_chevron_right_24dp); diff --git a/tests/robotests/src/com/android/settings/notification/NotificationHistoryPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/NotificationHistoryPreferenceControllerTest.java deleted file mode 100644 index 249fa17d2f7..00000000000 --- a/tests/robotests/src/com/android/settings/notification/NotificationHistoryPreferenceControllerTest.java +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright (C) 2020 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.settings.notification; - -import static android.provider.Settings.Secure.NOTIFICATION_HISTORY_ENABLED; - -import static com.android.settings.notification.NotificationHistoryPreferenceController.OFF; -import static com.android.settings.notification.NotificationHistoryPreferenceController.ON; - -import static com.google.common.truth.Truth.assertThat; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import android.content.Context; -import android.provider.Settings; - -import androidx.preference.Preference; -import androidx.preference.PreferenceScreen; -import androidx.preference.TwoStatePreference; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Answers; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; - -@RunWith(RobolectricTestRunner.class) -public class NotificationHistoryPreferenceControllerTest { - - @Mock(answer = Answers.RETURNS_DEEP_STUBS) - private Context mContext; - @Mock(answer = Answers.RETURNS_DEEP_STUBS) - private PreferenceScreen mScreen; - - private NotificationHistoryPreferenceController mController; - private Preference mPreference; - - private static final String KEY = "notification_history"; - - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - mController = new NotificationHistoryPreferenceController(mContext, KEY); - mPreference = new Preference(RuntimeEnvironment.application); - mPreference.setKey(mController.getPreferenceKey()); - when(mScreen.findPreference(mPreference.getKey())).thenReturn(mPreference); - } - - @Test - public void testIsVisible() { - mController.displayPreference(mScreen); - - assertThat(mPreference.isVisible()).isTrue(); - } - - @Test - public void updateState_preferenceSetCheckedWhenSettingIsOn() { - final TwoStatePreference preference = mock(TwoStatePreference.class); - final Context context = RuntimeEnvironment.application; - Settings.Secure.putInt(context.getContentResolver(), NOTIFICATION_HISTORY_ENABLED, ON); - - mController = new NotificationHistoryPreferenceController(context, KEY); - mController.updateState(preference); - - verify(preference).setChecked(true); - } - - @Test - public void updateState_preferenceSetUncheckedWhenSettingIsOff() { - final TwoStatePreference preference = mock(TwoStatePreference.class); - final Context context = RuntimeEnvironment.application; - Settings.Secure.putInt(context.getContentResolver(), NOTIFICATION_HISTORY_ENABLED, OFF); - - mController = new NotificationHistoryPreferenceController(context, KEY); - mController.updateState(preference); - - verify(preference).setChecked(false); - } - - @Test - public void isChecked_settingIsOff_shouldReturnFalse() { - Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_HISTORY_ENABLED, OFF); - - assertThat(mController.isChecked()).isFalse(); - } - - @Test - public void isChecked_settingIsOn_shouldReturnTrue() { - Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_HISTORY_ENABLED, ON); - - assertThat(mController.isChecked()).isTrue(); - } - - @Test - public void setChecked_setFalse_disablesSetting() { - Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_HISTORY_ENABLED, ON); - - mController.setChecked(false); - int updatedValue = Settings.Secure.getInt(mContext.getContentResolver(), - NOTIFICATION_HISTORY_ENABLED, -1); - - assertThat(updatedValue).isEqualTo(OFF); - } - - @Test - public void setChecked_setTrue_enablesSetting() { - Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_HISTORY_ENABLED, OFF); - - mController.setChecked(true); - int updatedValue = Settings.Secure.getInt(mContext.getContentResolver(), - NOTIFICATION_HISTORY_ENABLED, -1); - - assertThat(updatedValue).isEqualTo(ON); - } - - @Test - public void isSliceable_returnsFalse() { - assertThat(mController.isSliceable()).isFalse(); - } -} diff --git a/tests/robotests/src/com/android/settings/notification/RecentNotifyingAppsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/RecentNotifyingAppsPreferenceControllerTest.java index 93bd8dca7bc..6226b9a318b 100644 --- a/tests/robotests/src/com/android/settings/notification/RecentNotifyingAppsPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/notification/RecentNotifyingAppsPreferenceControllerTest.java @@ -83,8 +83,6 @@ public class RecentNotifyingAppsPreferenceControllerTest { @Mock private Preference mSeeAllPref; @Mock - private PreferenceCategory mDivider; - @Mock private UserManager mUserManager; @Mock private ApplicationsState mAppState; @@ -120,8 +118,6 @@ public class RecentNotifyingAppsPreferenceControllerTest { when(mScreen.findPreference(RecentNotifyingAppsPreferenceController.KEY_SEE_ALL)) .thenReturn(mSeeAllPref); - when(mScreen.findPreference(RecentNotifyingAppsPreferenceController.KEY_DIVIDER)) - .thenReturn(mDivider); when(mCategory.getContext()).thenReturn(mContext); when(mHost.getActivity()).thenReturn(mActivity); } @@ -131,16 +127,6 @@ public class RecentNotifyingAppsPreferenceControllerTest { assertThat(mController.isAvailable()).isTrue(); } - @Test - public void doNotIndexCategory() { - final List nonIndexable = new ArrayList<>(); - - mController.updateNonIndexableKeys(nonIndexable); - - assertThat(nonIndexable).containsAllOf(mController.getPreferenceKey(), - RecentNotifyingAppsPreferenceController.KEY_DIVIDER); - } - @Test public void onDisplayAndUpdateState_shouldRefreshUi() { mController = spy(new RecentNotifyingAppsPreferenceController( @@ -163,7 +149,6 @@ public class RecentNotifyingAppsPreferenceControllerTest { verify(mCategory).setTitle(null); verify(mSeeAllPref).setTitle(R.string.notifications_title); verify(mSeeAllPref).setIcon(null); - verify(mDivider).setVisible(false); } @Test @@ -211,7 +196,6 @@ public class RecentNotifyingAppsPreferenceControllerTest { verify(mSeeAllPref).setSummary(null); verify(mSeeAllPref).setIcon(R.drawable.ic_chevron_right_24dp); - verify(mDivider).setVisible(true); } @Test