From 5306f9674cb22c7a62068469b04443455120c4f7 Mon Sep 17 00:00:00 2001 From: Bonian Chen Date: Tue, 28 Dec 2021 15:54:44 +0800 Subject: [PATCH 1/3] [Settings] Add metrics for supporting performance measurement Add metrics log. Bug: 212360005 Test: local Change-Id: Ia51831d97f9193343de2da26d932ef9462f54e81 --- .../AbstractMobileNetworkSettings.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/network/telephony/AbstractMobileNetworkSettings.java b/src/com/android/settings/network/telephony/AbstractMobileNetworkSettings.java index ff831e85730..245ac8357ed 100644 --- a/src/com/android/settings/network/telephony/AbstractMobileNetworkSettings.java +++ b/src/com/android/settings/network/telephony/AbstractMobileNetworkSettings.java @@ -72,6 +72,8 @@ abstract class AbstractMobileNetworkSettings extends RestrictedDashboardFragment @Override public void onExpandButtonClick() { + final long startTime = SystemClock.elapsedRealtime(); + final PreferenceScreen screen = getPreferenceScreen(); mHiddenControllerList.stream() .filter(controller -> controller.isAvailable()) @@ -81,6 +83,11 @@ abstract class AbstractMobileNetworkSettings extends RestrictedDashboardFragment controller.updateState(preference); }); super.onExpandButtonClick(); + + final long endTime = SystemClock.elapsedRealtime(); + + mMetricsFeatureProvider.action(getMetricsCategory(), getMetricsCategory(), + 0, "onExpandButtonClick", (int)(endTime - startTime)); } /* @@ -95,9 +102,16 @@ abstract class AbstractMobileNetworkSettings extends RestrictedDashboardFragment return; } + final long startTime = SystemClock.elapsedRealtime(); + final PreferenceScreen screen = getPreferenceScreen(); getPreferenceControllersAsList().forEach(controller -> updateVisiblePreferenceControllers(screen, controller)); + + final long endTime = SystemClock.elapsedRealtime(); + + mMetricsFeatureProvider.action(getMetricsCategory(), getMetricsCategory(), + 0, "updatePreferenceStates", (int)(endTime - startTime)); } private void updateVisiblePreferenceControllers(PreferenceScreen screen, @@ -140,7 +154,8 @@ abstract class AbstractMobileNetworkSettings extends RestrictedDashboardFragment final long endTime = SystemClock.elapsedRealtime(); - Log.d(LOG_TAG, "redraw fragment: +" + (endTime - startTime) + "ms"); + mMetricsFeatureProvider.action(getMetricsCategory(), getMetricsCategory(), + 0, "redrawPreferenceControllers", (int)(endTime - startTime)); session.close(); } From b5766e442206bdfeb93da3e584227541d994903d Mon Sep 17 00:00:00 2001 From: SongFerngWang Date: Tue, 28 Dec 2021 16:31:07 +0800 Subject: [PATCH 2/3] The carrier name is wrong in the dialog The condition is wrong, should use the subId. Bug: 212195309 Test: build pass. manual test the dialog. Change-Id: I894c78fccab511f26bf779638cac1f18a07a86c4 --- .../SelectSpecificDataSimDialogFragment.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/com/android/settings/sim/SelectSpecificDataSimDialogFragment.java b/src/com/android/settings/sim/SelectSpecificDataSimDialogFragment.java index f5c24068543..0362e9a39aa 100644 --- a/src/com/android/settings/sim/SelectSpecificDataSimDialogFragment.java +++ b/src/com/android/settings/sim/SelectSpecificDataSimDialogFragment.java @@ -88,10 +88,11 @@ public class SelectSpecificDataSimDialogFragment extends SimDialogFragment imple if (subInfos == null || dds == null) { return null; } - return subInfos.stream().filter(subinfo -> subinfo != dds).findFirst().orElse(null); + return subInfos.stream().filter(subinfo -> subinfo.getSubscriptionId() + != dds.getSubscriptionId()).findFirst().orElse(null); } - private SubscriptionInfo getDefaultDataSubId() { + private SubscriptionInfo getDefaultDataSubInfo() { return getSubscriptionManager().getDefaultDataSubscriptionInfo(); } @@ -101,20 +102,22 @@ public class SelectSpecificDataSimDialogFragment extends SimDialogFragment imple return; } - SubscriptionInfo activeSubInfo = getDefaultDataSubId(); - SubscriptionInfo newSubInfo = getNonDefaultDataSubscriptionInfo(activeSubInfo); + SubscriptionInfo currentDataSubInfo = getDefaultDataSubInfo(); + SubscriptionInfo newSubInfo = getNonDefaultDataSubscriptionInfo(currentDataSubInfo); - if (newSubInfo == null || activeSubInfo == null) { + if (newSubInfo == null || currentDataSubInfo == null) { + Log.d(TAG, "one of target SubscriptionInfos is null"); dismiss(); return; } - + Log.d(TAG, "newSubId: " + newSubInfo.getSubscriptionId() + + "currentDataSubID: " + currentDataSubInfo.getSubscriptionId()); setTargetSubscriptionInfo(newSubInfo); CharSequence newDataCarrierName = SubscriptionUtil.getUniqueSubscriptionDisplayName( newSubInfo, getContext()); CharSequence currentDataCarrierName = SubscriptionUtil.getUniqueSubscriptionDisplayName( - activeSubInfo, getContext()); + currentDataSubInfo, getContext()); String positive = getContext().getString( R.string.select_specific_sim_for_data_button, newDataCarrierName); From 0219dc1378e1022a9972dab18fff53ffc26cb35a Mon Sep 17 00:00:00 2001 From: Weng Su Date: Tue, 28 Dec 2021 21:24:46 +0800 Subject: [PATCH 3/3] Fix WiFi toggle issue of Internet Settings - Because b/209906859 needs to add WiFi service check for WiFi-less pixel project. - But mWifiManager has not been initialized before the addWifiSwitchPreferenceController() function, which will cause the controller to not handle the WiFi switching UI. - Add a hasWifiManager() function to initialize the WiFi manager and handle related functions. Bug: 212211915 Test: manual test make RunSettingsRoboTests ROBOTEST_FILTER=NetworkProviderSettingsTest Change-Id: Idc0d4cdc31403f0ab9a4eb787e4c70be605f7ddb --- .../network/NetworkProviderSettings.java | 31 ++++++++++++------- .../network/NetworkProviderSettingsTest.java | 8 ++--- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java index 7df4645c709..008293462ec 100644 --- a/src/com/android/settings/network/NetworkProviderSettings.java +++ b/src/com/android/settings/network/NetworkProviderSettings.java @@ -266,13 +266,22 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment setPinnedHeaderView(R.layout.progress_header); setProgressBarVisible(false); - mWifiManager = activity.getSystemService(WifiManager.class); - if (mWifiManager != null) { + if (hasWifiManager()) { setLoading(true, false); mIsViewLoading = true; } } + private boolean hasWifiManager() { + if (mWifiManager != null) return true; + + Context context = getContext(); + if (context == null) return false; + + mWifiManager = context.getSystemService(WifiManager.class); + return (mWifiManager != null); + } + @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); @@ -337,7 +346,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment } private void addWifiSwitchPreferenceController() { - if (mWifiManager == null) return; + if (!hasWifiManager()) return; if (mWifiSwitchPreferenceController == null) { mWifiSwitchPreferenceController = new WifiSwitchPreferenceController(getContext(), getSettingsLifecycle()); @@ -349,7 +358,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - if (mWifiManager != null) { + if (hasWifiManager()) { mWifiPickerTrackerHelper = new WifiPickerTrackerHelper(getSettingsLifecycle(), getContext(), this); mWifiPickerTracker = mWifiPickerTrackerHelper.getWifiPickerTracker(); @@ -420,7 +429,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment public void onStart() { super.onStart(); if (mIsViewLoading) { - final long delayMillis = (mWifiManager != null && mWifiManager.isWifiEnabled()) + final long delayMillis = (hasWifiManager() && mWifiManager.isWifiEnabled()) ? 1000 : 100; getView().postDelayed(mRemoveLoadingRunnable, delayMillis); } @@ -482,7 +491,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); - if (mWifiManager == null) { + if (!hasWifiManager()) { // Do nothing } else if (requestCode == ADD_NETWORK_REQUEST) { handleAddNetworkRequest(resultCode, data); @@ -720,7 +729,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment /** Called when the state of Wifi has changed. */ @Override public void onWifiStateChanged() { - if (mIsRestricted || mWifiManager == null) { + if (mIsRestricted || !hasWifiManager()) { return; } final int wifiState = mWifiPickerTracker.getWifiState(); @@ -770,7 +779,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment } final LocationManager locationManager = context.getSystemService(LocationManager.class); - if (mWifiManager == null || isWifiEnabled || !locationManager.isLocationEnabled() + if (!hasWifiManager() || isWifiEnabled || !locationManager.isLocationEnabled() || !mWifiManager.isScanAlwaysAvailable()) { mWifiStatusMessagePreference.setVisible(false); return; @@ -1063,7 +1072,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment final Context context = getContext(); final PowerManager powerManager = context.getSystemService(PowerManager.class); final ContentResolver contentResolver = context.getContentResolver(); - return mWifiManager != null + return hasWifiManager() && mWifiManager.isAutoWakeupEnabled() && mWifiManager.isScanAlwaysAvailable() && Settings.Global.getInt(contentResolver, @@ -1085,7 +1094,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment private void handleAddNetworkSubmitEvent(Intent data) { final WifiConfiguration wifiConfiguration = data.getParcelableExtra( AddNetworkFragment.WIFI_CONFIG_KEY); - if (wifiConfiguration != null && mWifiManager != null) { + if (wifiConfiguration != null && hasWifiManager()) { mWifiManager.save(wifiConfiguration, mSaveListener); } } @@ -1122,7 +1131,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment @Override public void onSubmit(WifiDialog2 dialog) { - if (mWifiManager == null) return; + if (!hasWifiManager()) return; final int dialogMode = dialog.getMode(); final WifiConfiguration config = dialog.getController().getConfig(); diff --git a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java index d74d7173401..f3e3674bda7 100644 --- a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java +++ b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java @@ -45,7 +45,6 @@ import android.os.Bundle; import android.os.PowerManager; import android.os.UserManager; import android.provider.Settings; -import android.util.FeatureFlagUtils; import android.view.ContextMenu; import android.view.Menu; import android.view.MenuItem; @@ -162,15 +161,14 @@ public class NetworkProviderSettingsTest { @Test public void addNetworkFragmentSendResult_onActivityResult_shouldHandleEvent() { - final NetworkProviderSettings NetworkProviderSettings = spy(new NetworkProviderSettings()); final Intent intent = new Intent(); - doNothing().when(NetworkProviderSettings).handleAddNetworkRequest(anyInt(), + doNothing().when(mNetworkProviderSettings).handleAddNetworkRequest(anyInt(), any(Intent.class)); - NetworkProviderSettings.onActivityResult(NetworkProviderSettings.ADD_NETWORK_REQUEST, + mNetworkProviderSettings.onActivityResult(NetworkProviderSettings.ADD_NETWORK_REQUEST, Activity.RESULT_OK, intent); - verify(NetworkProviderSettings).handleAddNetworkRequest(anyInt(), any(Intent.class)); + verify(mNetworkProviderSettings).handleAddNetworkRequest(anyInt(), any(Intent.class)); } @Test