From 3f46c5f685447b750cbd8515fe12085a95739c84 Mon Sep 17 00:00:00 2001 From: Zoey Chen Date: Tue, 31 Aug 2021 20:28:41 +0800 Subject: [PATCH 1/6] [Provider Model] Add cutout for signal icon if the mobile data is disabled Bug: 198233143 Test: manual, atest ProviderModelSliceHelperTest and SubscriptionsPreferenceControllerTest Change-Id: I8714c9ff4c0c3aa5bad51ad5d41207d50ccca8ef Merged-In: I3caefc7e1ca10dadcad114273edf35d9309502e1 --- .../android/settings/network/ProviderModelSliceHelper.java | 2 +- .../network/SubscriptionsPreferenceController.java | 3 ++- .../settings/network/ProviderModelSliceHelperTest.java | 7 +++++-- .../network/SubscriptionsPreferenceControllerTest.java | 5 ++++- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/network/ProviderModelSliceHelper.java b/src/com/android/settings/network/ProviderModelSliceHelper.java index 32a475a7d00..d264fd69d3b 100644 --- a/src/com/android/settings/network/ProviderModelSliceHelper.java +++ b/src/com/android/settings/network/ProviderModelSliceHelper.java @@ -140,7 +140,7 @@ public class ProviderModelSliceHelper { numLevels += 1; } return MobileNetworkUtils.getSignalStrengthIcon(mContext, level, numLevels, - NO_CELL_DATA_TYPE_ICON, false); + NO_CELL_DATA_TYPE_ICON, !mTelephonyManager.isDataEnabled()); } /** diff --git a/src/com/android/settings/network/SubscriptionsPreferenceController.java b/src/com/android/settings/network/SubscriptionsPreferenceController.java index 8e9e946820c..36c55e2805e 100644 --- a/src/com/android/settings/network/SubscriptionsPreferenceController.java +++ b/src/com/android/settings/network/SubscriptionsPreferenceController.java @@ -311,7 +311,8 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl numLevels += 1; } - Drawable icon = mSubsPrefCtrlInjector.getIcon(mContext, level, numLevels, false); + Drawable icon = mSubsPrefCtrlInjector.getIcon(mContext, level, numLevels, + !mTelephonyManager.isDataEnabled()); final boolean isActiveCellularNetwork = mSubsPrefCtrlInjector.isActiveCellularNetwork(mContext); if (isActiveCellularNetwork || (mWifiPickerTrackerHelper != null) diff --git a/tests/unit/src/com/android/settings/network/ProviderModelSliceHelperTest.java b/tests/unit/src/com/android/settings/network/ProviderModelSliceHelperTest.java index 7d4323051c3..d06426d43b4 100644 --- a/tests/unit/src/com/android/settings/network/ProviderModelSliceHelperTest.java +++ b/tests/unit/src/com/android/settings/network/ProviderModelSliceHelperTest.java @@ -224,8 +224,9 @@ public class ProviderModelSliceHelperTest { public void getMobileDrawable_noCarrierData_getMobileDrawable() throws Throwable { mockConnections(false, ServiceState.STATE_OUT_OF_SERVICE, "", false, true); - when(mConnectivityManager.getActiveNetwork()).thenReturn(null); Drawable expectDrawable = mock(Drawable.class); + when(mConnectivityManager.getActiveNetwork()).thenReturn(null); + when(mTelephonyManager.isDataEnabled()).thenReturn(false); assertThat(mProviderModelSliceHelper.getMobileDrawable(expectDrawable)).isEqualTo( expectDrawable); @@ -236,8 +237,9 @@ public class ProviderModelSliceHelperTest { throws Throwable { mockConnections(true, ServiceState.STATE_IN_SERVICE, "", true, true); - addNetworkTransportType(NetworkCapabilities.TRANSPORT_CELLULAR); Drawable drawable = mock(Drawable.class); + addNetworkTransportType(NetworkCapabilities.TRANSPORT_CELLULAR); + when(mTelephonyManager.isDataEnabled()).thenReturn(true); assertThat(mProviderModelSliceHelper.getMobileDrawable(drawable)).isEqualTo( mDrawableWithSignalStrength); @@ -252,6 +254,7 @@ public class ProviderModelSliceHelperTest { true); Drawable drawable = mock(Drawable.class); addNetworkTransportType(NetworkCapabilities.TRANSPORT_WIFI); + when(mTelephonyManager.isDataEnabled()).thenReturn(true); assertThat(mProviderModelSliceHelper.getMobileDrawable(drawable)).isEqualTo( mDrawableWithSignalStrength); diff --git a/tests/unit/src/com/android/settings/network/SubscriptionsPreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/SubscriptionsPreferenceControllerTest.java index cb78d19714c..7cffb76f983 100644 --- a/tests/unit/src/com/android/settings/network/SubscriptionsPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/network/SubscriptionsPreferenceControllerTest.java @@ -665,6 +665,7 @@ public class SubscriptionsPreferenceControllerTest { doReturn(true).when(sInjector).isProviderModelEnabled(mContext); doReturn(sub.get(0)).when(mSubscriptionManager).getDefaultDataSubscriptionInfo(); Drawable icon = mock(Drawable.class); + when(mTelephonyManager.isDataEnabled()).thenReturn(true); doReturn(icon).when(sInjector).getIcon(any(), anyInt(), anyInt(), eq(false)); setupGetIconConditions(sub.get(0).getSubscriptionId(), true, true, true, ServiceState.STATE_IN_SERVICE); @@ -683,6 +684,7 @@ public class SubscriptionsPreferenceControllerTest { doReturn(true).when(sInjector).isProviderModelEnabled(mContext); doReturn(subs.get(0)).when(mSubscriptionManager).getDefaultDataSubscriptionInfo(); Drawable icon = mock(Drawable.class); + when(mTelephonyManager.isDataEnabled()).thenReturn(true); doReturn(icon).when(sInjector).getIcon(any(), anyInt(), anyInt(), eq(false)); setupGetIconConditions(subId, false, true, true, ServiceState.STATE_IN_SERVICE); @@ -701,7 +703,8 @@ public class SubscriptionsPreferenceControllerTest { doReturn(true).when(sInjector).isProviderModelEnabled(mContext); doReturn(subs.get(0)).when(mSubscriptionManager).getDefaultDataSubscriptionInfo(); Drawable icon = mock(Drawable.class); - doReturn(icon).when(sInjector).getIcon(any(), anyInt(), anyInt(), eq(false)); + when(mTelephonyManager.isDataEnabled()).thenReturn(false); + doReturn(icon).when(sInjector).getIcon(any(), anyInt(), anyInt(), eq(true)); setupGetIconConditions(subId, false, false, false, ServiceState.STATE_IN_SERVICE); From 6a8cbc9fac99e7161ba7cff53158e393ab718ee3 Mon Sep 17 00:00:00 2001 From: Alex Johnston Date: Mon, 2 Aug 2021 14:16:49 +0100 Subject: [PATCH 2/6] Fix USB tether option * USB tether option will be grayed out before USB cable is plugged in. Bug: 192225597 Test: manual testing Change-Id: Ibc87416b9aecb03f1ddd3df0d9f11a935f3a290e Merged-In: Ibc87416b9aecb03f1ddd3df0d9f11a935f3a290e (cherry picked from commit 685cacb54068bedaface37de1ce706ca4ab11cfd) --- src/com/android/settings/TetherSettings.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/TetherSettings.java b/src/com/android/settings/TetherSettings.java index ab1c437271f..1a21b5582a9 100644 --- a/src/com/android/settings/TetherSettings.java +++ b/src/com/android/settings/TetherSettings.java @@ -55,6 +55,7 @@ import com.android.settings.core.FeatureFlags; import com.android.settings.datausage.DataSaverBackend; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.wifi.tether.WifiTetherPreferenceController; +import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedSwitchPreference; import com.android.settingslib.TetherUtil; import com.android.settingslib.search.SearchIndexable; @@ -425,14 +426,16 @@ public class TetherSettings extends RestrictedSettingsFragment private void updateUsbPreference() { boolean usbAvailable = mUsbConnected && !mMassStorageActive; + final RestrictedLockUtils.EnforcedAdmin enforcedAdmin = + checkIfUsbDataSignalingIsDisabled(mContext, UserHandle.myUserId()); - if (usbAvailable) { + if (enforcedAdmin != null) { + mUsbTether.setDisabledByAdmin(enforcedAdmin); + } else if (usbAvailable) { mUsbTether.setEnabled(!mDataSaverEnabled); } else { mUsbTether.setEnabled(false); } - mUsbTether.setDisabledByAdmin( - checkIfUsbDataSignalingIsDisabled(mContext, UserHandle.myUserId())); } @VisibleForTesting From eb8d35c9cca030cbecff5431f960c2e2f16973cf Mon Sep 17 00:00:00 2001 From: Patrick Huang Date: Fri, 17 Dec 2021 08:38:15 +0000 Subject: [PATCH 3/6] Add config for showing/hiding emergency setting entry Add a definition for a boolean config value that will be used by devices to show or hide the "Safety & emergency" setting entry in Android top-level Settings. Bug: 205581282 Test: manual on devices in question, PTS Change-Id: Iec838505c4eea9c0d6c5db1379f9b4651eea7778 --- res/values/config.xml | 3 +++ res/xml/top_level_settings.xml | 1 + 2 files changed, 4 insertions(+) diff --git a/res/values/config.xml b/res/values/config.xml index 277176f5471..48d698cc465 100755 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -492,6 +492,9 @@ false + + true + true diff --git a/res/xml/top_level_settings.xml b/res/xml/top_level_settings.xml index 280c3f31bc3..c9e60170eb9 100644 --- a/res/xml/top_level_settings.xml +++ b/res/xml/top_level_settings.xml @@ -162,6 +162,7 @@ android:icon="@drawable/ic_settings_emergency" android:order="-20" android:fragment="com.android.settings.emergency.EmergencyDashboardFragment" + settings:isPreferenceVisible="@bool/config_show_emergency_settings" settings:highlightableMenuKey="@string/menu_key_emergency"/> Date: Mon, 5 Jul 2021 18:02:10 +0100 Subject: [PATCH 4/6] Make WifiDppEnrolleeActivity launches explicit Bug: 180518134 Test: make RunSettingsRoboTests \ ROBOTEST_FILTER=WifiDppUtilsTest\|WifiDialogActivityTest Test: Manually verified b/180518134 attack is no longer possible Change-Id: I8c4e1e17117582c78671d0e4658bd87715a9a046 (cherry picked from commit 59c0a7bc634a8f3bd205b2c444330af18ab0d0ff) --- .../settings/network/NetworkProviderSettings.java | 3 ++- src/com/android/settings/wifi/AddNetworkFragment.java | 3 ++- .../settings/wifi/AddWifiNetworkPreference.java | 2 +- src/com/android/settings/wifi/WifiDialogActivity.java | 4 ++-- src/com/android/settings/wifi/WifiSettings.java | 3 ++- src/com/android/settings/wifi/dpp/WifiDppUtils.java | 6 +++--- .../android/settings/wifi/dpp/WifiDppUtilsTest.java | 10 ++++++++++ 7 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java index bae3cda36a6..aedb2990ab7 100644 --- a/src/com/android/settings/network/NetworkProviderSettings.java +++ b/src/com/android/settings/network/NetworkProviderSettings.java @@ -1137,7 +1137,8 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment @Override public void onScan(WifiDialog2 dialog, String ssid) { // Launch QR code scanner to join a network. - startActivityForResult(WifiDppUtils.getEnrolleeQrCodeScannerIntent(ssid), + startActivityForResult( + WifiDppUtils.getEnrolleeQrCodeScannerIntent(dialog.getContext(), ssid), REQUEST_CODE_WIFI_DPP_ENROLLEE_QR_CODE_SCANNER); } diff --git a/src/com/android/settings/wifi/AddNetworkFragment.java b/src/com/android/settings/wifi/AddNetworkFragment.java index 4adc6727614..01d5ef1ca4a 100644 --- a/src/com/android/settings/wifi/AddNetworkFragment.java +++ b/src/com/android/settings/wifi/AddNetworkFragment.java @@ -109,7 +109,8 @@ public class AddNetworkFragment extends InstrumentedFragment implements WifiConf final String ssid = ssidEditText.getText().toString(); // Launch QR code scanner to join a network. - startActivityForResult(WifiDppUtils.getEnrolleeQrCodeScannerIntent(ssid), + startActivityForResult( + WifiDppUtils.getEnrolleeQrCodeScannerIntent(view.getContext(), ssid), REQUEST_CODE_WIFI_DPP_ENROLLEE_QR_CODE_SCANNER); } } diff --git a/src/com/android/settings/wifi/AddWifiNetworkPreference.java b/src/com/android/settings/wifi/AddWifiNetworkPreference.java index 8216f86ff64..ff4d38e6fde 100644 --- a/src/com/android/settings/wifi/AddWifiNetworkPreference.java +++ b/src/com/android/settings/wifi/AddWifiNetworkPreference.java @@ -59,7 +59,7 @@ public class AddWifiNetworkPreference extends Preference { getContext().getString(R.string.wifi_dpp_scan_qr_code)); scanButton.setOnClickListener(view -> { getContext().startActivity( - WifiDppUtils.getEnrolleeQrCodeScannerIntent(/* ssid */ null)); + WifiDppUtils.getEnrolleeQrCodeScannerIntent(getContext(), /* ssid */ null)); }); } diff --git a/src/com/android/settings/wifi/WifiDialogActivity.java b/src/com/android/settings/wifi/WifiDialogActivity.java index ffcfbb84c14..58e9a7b5bb9 100644 --- a/src/com/android/settings/wifi/WifiDialogActivity.java +++ b/src/com/android/settings/wifi/WifiDialogActivity.java @@ -309,7 +309,7 @@ public class WifiDialogActivity extends ObservableActivity implements WifiDialog @Override public void onScan(WifiDialog2 dialog, String ssid) { - Intent intent = WifiDppUtils.getEnrolleeQrCodeScannerIntent(ssid); + Intent intent = WifiDppUtils.getEnrolleeQrCodeScannerIntent(dialog.getContext(), ssid); WizardManagerHelper.copyWizardManagerExtras(mIntent, intent); // Launch QR code scanner to join a network. @@ -318,7 +318,7 @@ public class WifiDialogActivity extends ObservableActivity implements WifiDialog @Override public void onScan(WifiDialog dialog, String ssid) { - Intent intent = WifiDppUtils.getEnrolleeQrCodeScannerIntent(ssid); + Intent intent = WifiDppUtils.getEnrolleeQrCodeScannerIntent(dialog.getContext(), ssid); WizardManagerHelper.copyWizardManagerExtras(mIntent, intent); // Launch QR code scanner to join a network. diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java index f43fdc450e8..4c7be5871d2 100644 --- a/src/com/android/settings/wifi/WifiSettings.java +++ b/src/com/android/settings/wifi/WifiSettings.java @@ -1035,7 +1035,8 @@ public class WifiSettings extends RestrictedSettingsFragment @Override public void onScan(WifiDialog2 dialog, String ssid) { // Launch QR code scanner to join a network. - startActivityForResult(WifiDppUtils.getEnrolleeQrCodeScannerIntent(ssid), + startActivityForResult( + WifiDppUtils.getEnrolleeQrCodeScannerIntent(dialog.getContext(), ssid), REQUEST_CODE_WIFI_DPP_ENROLLEE_QR_CODE_SCANNER); } diff --git a/src/com/android/settings/wifi/dpp/WifiDppUtils.java b/src/com/android/settings/wifi/dpp/WifiDppUtils.java index abf5becfbc3..39a5431e636 100644 --- a/src/com/android/settings/wifi/dpp/WifiDppUtils.java +++ b/src/com/android/settings/wifi/dpp/WifiDppUtils.java @@ -114,9 +114,9 @@ public class WifiDppUtils { * @param ssid The data corresponding to {@code WifiConfiguration} SSID * @return Intent for launching QR code scanner */ - public static Intent getEnrolleeQrCodeScannerIntent(String ssid) { - final Intent intent = new Intent( - WifiDppEnrolleeActivity.ACTION_ENROLLEE_QR_CODE_SCANNER); + public static Intent getEnrolleeQrCodeScannerIntent(Context context, String ssid) { + final Intent intent = new Intent(context, WifiDppEnrolleeActivity.class); + intent.setAction(WifiDppEnrolleeActivity.ACTION_ENROLLEE_QR_CODE_SCANNER); if (!TextUtils.isEmpty(ssid)) { intent.putExtra(EXTRA_WIFI_SSID, ssid); } diff --git a/tests/robotests/src/com/android/settings/wifi/dpp/WifiDppUtilsTest.java b/tests/robotests/src/com/android/settings/wifi/dpp/WifiDppUtilsTest.java index d8bcb598f63..e60530847cd 100644 --- a/tests/robotests/src/com/android/settings/wifi/dpp/WifiDppUtilsTest.java +++ b/tests/robotests/src/com/android/settings/wifi/dpp/WifiDppUtilsTest.java @@ -27,6 +27,8 @@ import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiConfiguration.KeyMgmt; import android.net.wifi.WifiManager; +import androidx.test.core.app.ApplicationProvider; + import com.android.wifitrackerlib.WifiEntry; import org.junit.Before; @@ -80,4 +82,12 @@ public class WifiDppUtilsTest { assertThat(intent.getBooleanExtra(WifiDppUtils.EXTRA_WIFI_HIDDEN_SSID, false)) .isEqualTo(true); } + + @Test + public void getEnrolleeQrCodeScannerIntent_isExplicitIntent() { + Intent intent = WifiDppUtils.getEnrolleeQrCodeScannerIntent( + ApplicationProvider.getApplicationContext(), null); + assertThat(intent.getComponent()).isNotNull(); + } + } From 48c945e9b5fd1f50f3f940f4839a169b944b96d3 Mon Sep 17 00:00:00 2001 From: Bonian Chen Date: Tue, 21 Dec 2021 14:08:58 +0800 Subject: [PATCH 5/6] [Settings] Expand the display area of PIN error message PIN error message when user operating on PIN lock got long text string. Which not fit into 2 lines of display area. This is a change to expand the display area to max. capacity but remain tightly wrap the text. Bug: 211176734 Test: local Change-Id: If175a53de4646d2479b15b10f6b59e4e0870d521 --- src/com/android/settings/IccLockSettings.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/com/android/settings/IccLockSettings.java b/src/com/android/settings/IccLockSettings.java index e89e84b9dfb..71eb0f20e30 100644 --- a/src/com/android/settings/IccLockSettings.java +++ b/src/com/android/settings/IccLockSettings.java @@ -587,6 +587,7 @@ public class IccLockSettings extends SettingsPreferenceFragment .inflate(com.android.internal.R.layout.transient_notification, null); final TextView tv = (TextView) v.findViewById(com.android.internal.R.id.message); tv.setText(errorMessage); + tv.setSingleLine(false); final WindowManager.LayoutParams params = new WindowManager.LayoutParams(); final Configuration config = v.getContext().getResources().getConfiguration(); From 446f6dd886124f3df21f33cd74124b8b1ed48a24 Mon Sep 17 00:00:00 2001 From: Stanley Wang Date: Tue, 21 Dec 2021 17:25:38 +0800 Subject: [PATCH 6/6] Restore the style of the screen saver widget from switch style to button style. The operation of the Switch is not suitable for previewing the screen saver and will make the user confused. So we change the style of the screen saver widget back to the button style. Fix: 189505023 Test: manually test the screen saver Change-Id: I4a97d91cc0b76111d4cb7b6aa202f2207ee0ca5d --- res/layout/dream_start_button.xml | 36 +++++++++++++++++ res/values/strings.xml | 4 +- res/xml/dream_fragment_overview.xml | 13 +++--- .../dream/StartNowPreferenceController.java | 40 +++++++++---------- .../StartNowPreferenceControllerTest.java | 32 +++++++-------- 5 files changed, 78 insertions(+), 47 deletions(-) create mode 100644 res/layout/dream_start_button.xml diff --git a/res/layout/dream_start_button.xml b/res/layout/dream_start_button.xml new file mode 100644 index 00000000000..17ba78dbb7a --- /dev/null +++ b/res/layout/dream_start_button.xml @@ -0,0 +1,36 @@ + + + + + +