diff --git a/res/drawable/ic_no_internet_available.xml b/res/drawable/ic_no_internet_available.xml new file mode 100644 index 00000000000..06c6ef37f2f --- /dev/null +++ b/res/drawable/ic_no_internet_available.xml @@ -0,0 +1,31 @@ + + + + + + \ No newline at end of file diff --git a/res/drawable/ic_no_internet_unavailable.xml b/res/drawable/ic_no_internet_unavailable.xml new file mode 100644 index 00000000000..d255cb47377 --- /dev/null +++ b/res/drawable/ic_no_internet_unavailable.xml @@ -0,0 +1,28 @@ + + + + + \ No newline at end of file diff --git a/res/layout/reset_network.xml b/res/layout/reset_network.xml index f6135a9af21..47fa56ad44f 100644 --- a/res/layout/reset_network.xml +++ b/res/layout/reset_network.xml @@ -19,7 +19,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > - - + false + + + false + + + com.android.cellbroadcastreceiver.module diff --git a/res/values/strings.xml b/res/values/strings.xml index 5abba1faabd..46864c2a8ad 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -7519,9 +7519,6 @@ Send & receive when mobile data is off - - com.android.cellbroadcastreceiver.module - diff --git a/res/values/styles.xml b/res/values/styles.xml index 993417aaf62..0d773f124fc 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -606,7 +606,7 @@ diff --git a/res/xml/app_and_notification.xml b/res/xml/app_and_notification.xml index bd2e85ce127..49d8e9b85fd 100644 --- a/res/xml/app_and_notification.xml +++ b/res/xml/app_and_notification.xml @@ -90,7 +90,7 @@ settings:useAdminDisabledSummary="true"> diff --git a/res/xml/configure_notification_settings_v2.xml b/res/xml/configure_notification_settings_v2.xml index 6c3ec5292c2..902922087c6 100644 --- a/res/xml/configure_notification_settings_v2.xml +++ b/res/xml/configure_notification_settings_v2.xml @@ -109,7 +109,7 @@ settings:useAdminDisabledSummary="true"> diff --git a/res/xml/emergency_settings.xml b/res/xml/emergency_settings.xml index 774e3281014..28ae8b19c56 100644 --- a/res/xml/emergency_settings.xml +++ b/res/xml/emergency_settings.xml @@ -39,7 +39,7 @@ settings:useAdminDisabledSummary="true"> diff --git a/src/com/android/settings/MainClear.java b/src/com/android/settings/MainClear.java index 326aeef61a4..a7aa8eacf92 100644 --- a/src/com/android/settings/MainClear.java +++ b/src/com/android/settings/MainClear.java @@ -59,11 +59,11 @@ import android.widget.TextView; import androidx.annotation.VisibleForTesting; import com.android.settings.core.InstrumentedFragment; -import com.android.settings.core.SubSettingLauncher; import com.android.settings.enterprise.ActionDisabledByAdminDialogHelper; import com.android.settings.password.ChooseLockSettingsHelper; import com.android.settings.password.ConfirmLockPattern; import com.android.settingslib.RestrictedLockUtilsInternal; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.development.DevelopmentSettingsEnabler; import com.google.android.setupcompat.template.FooterBarMixin; @@ -187,12 +187,15 @@ public class MainClear extends InstrumentedFragment implements OnGlobalLayoutLis final Bundle args = new Bundle(); args.putBoolean(ERASE_EXTERNAL_EXTRA, mExternalStorage.isChecked()); args.putBoolean(ERASE_ESIMS_EXTRA, mEsimStorage.isChecked()); - new SubSettingLauncher(getContext()) - .setDestination(MainClearConfirm.class.getName()) - .setArguments(args) - .setTitleRes(R.string.main_clear_confirm_title) - .setSourceMetricsCategory(getMetricsCategory()) - .launch(); + final Intent intent = new Intent(); + intent.setClass(getContext(), + com.android.settings.Settings.FactoryResetConfirmActivity.class); + intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT, MainClearConfirm.class.getName()); + intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS, args); + intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, + R.string.main_clear_confirm_title); + intent.putExtra(MetricsFeatureProvider.EXTRA_SOURCE_METRICS_CATEGORY, getMetricsCategory()); + getContext().startActivity(intent); } @VisibleForTesting diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java index f351d264b7b..8f715070936 100644 --- a/src/com/android/settings/Settings.java +++ b/src/com/android/settings/Settings.java @@ -123,7 +123,30 @@ public class Settings extends SettingsActivity { public static class ScanningSettingsActivity extends SettingsActivity { /* empty */ } public static class PrivacyDashboardActivity extends SettingsActivity { /* empty */ } public static class PrivacySettingsActivity extends SettingsActivity { /* empty */ } - public static class FactoryResetActivity extends SettingsActivity { /* empty */ } + public static class FactoryResetActivity extends SettingsActivity { + @Override + protected void onCreate(Bundle savedState) { + setTheme(SetupWizardUtils.getTheme(this, getIntent())); + super.onCreate(savedState); + } + + @Override + protected boolean isToolbarEnabled() { + return false; + } + } + public static class FactoryResetConfirmActivity extends SettingsActivity { + @Override + protected void onCreate(Bundle savedState) { + setTheme(SetupWizardUtils.getTheme(this, getIntent())); + super.onCreate(savedState); + } + + @Override + protected boolean isToolbarEnabled() { + return false; + } + } public static class RunningServicesActivity extends SettingsActivity { /* empty */ } public static class BatterySaverSettingsActivity extends SettingsActivity { /* empty */ } public static class BatterySaverScheduleSettingsActivity extends SettingsActivity { /* empty */ } diff --git a/src/com/android/settings/accessibility/ReduceBrightColorsIntensityPreferenceController.java b/src/com/android/settings/accessibility/ReduceBrightColorsIntensityPreferenceController.java index ea7fb7c3111..3b220e4aa3e 100644 --- a/src/com/android/settings/accessibility/ReduceBrightColorsIntensityPreferenceController.java +++ b/src/com/android/settings/accessibility/ReduceBrightColorsIntensityPreferenceController.java @@ -29,8 +29,11 @@ import com.android.settings.widget.SeekBarPreference; /** PreferenceController for feature intensity. */ public class ReduceBrightColorsIntensityPreferenceController extends SliderPreferenceController { + private final ColorDisplayManager mColorDisplayManager; + public ReduceBrightColorsIntensityPreferenceController(Context context, String key) { super(context, key); + mColorDisplayManager = context.getSystemService(ColorDisplayManager.class); } @Override @@ -59,31 +62,26 @@ public class ReduceBrightColorsIntensityPreferenceController extends SliderPrefe @Override public final void updateState(Preference preference) { super.updateState(preference); - preference.setEnabled(Settings.Secure.getInt(mContext.getContentResolver(), - Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED, 0) == 1); + preference.setEnabled(mColorDisplayManager.isReduceBrightColorsActivated()); } @Override public int getSliderPosition() { - return Settings.Secure.getInt(mContext.getContentResolver(), - Settings.Secure.REDUCE_BRIGHT_COLORS_LEVEL, 0); + return mColorDisplayManager.getReduceBrightColorsStrength(); } @Override public boolean setSliderPosition(int position) { - return Settings.Secure.putInt(mContext.getContentResolver(), - Settings.Secure.REDUCE_BRIGHT_COLORS_LEVEL, position); + return mColorDisplayManager.setReduceBrightColorsStrength(position); } @Override public int getMax() { - // TODO(b/170970675): Call into CDS to get config max intensity - return 100; + return ColorDisplayManager.getMaximumReduceBrightColorsStrength(mContext); } @Override public int getMin() { - // TODO(b/170970675): Call into CDS to get config min intensity - return 0; + return ColorDisplayManager.getMinimumReduceBrightColorsStrength(mContext); } } diff --git a/src/com/android/settings/accessibility/ToggleReduceBrightColorsPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleReduceBrightColorsPreferenceFragment.java index 09690d96ba7..f65bd62d786 100644 --- a/src/com/android/settings/accessibility/ToggleReduceBrightColorsPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleReduceBrightColorsPreferenceFragment.java @@ -29,9 +29,13 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import androidx.preference.PreferenceCategory; +import androidx.preference.SwitchPreference; + import com.android.internal.accessibility.AccessibilityShortcutController; import com.android.settings.R; import com.android.settings.search.BaseSearchIndexProvider; +import com.android.settings.widget.SeekBarPreference; import com.android.settings.widget.SettingsMainSwitchPreference; import com.android.settingslib.search.SearchIndexable; @@ -75,7 +79,21 @@ public class ToggleReduceBrightColorsPreferenceFragment extends ToggleFeaturePre } }; - return super.onCreateView(inflater, container, savedInstanceState); + final View view = super.onCreateView(inflater, container, savedInstanceState); + updateGeneralCategoryOrder(); + return view; + } + + private void updateGeneralCategoryOrder() { + final PreferenceCategory generalCategory = findPreference(KEY_GENERAL_CATEGORY); + final SeekBarPreference intensity = findPreference(KEY_INTENSITY); + getPreferenceScreen().removePreference(intensity); + intensity.setOrder(mShortcutPreference.getOrder() - 2); + generalCategory.addPreference(intensity); + final SwitchPreference persist = findPreference(KEY_PERSIST); + getPreferenceScreen().removePreference(persist); + persist.setOrder(mShortcutPreference.getOrder() - 1); + generalCategory.addPreference(persist); } @Override @@ -83,17 +101,6 @@ public class ToggleReduceBrightColorsPreferenceFragment extends ToggleFeaturePre super.onViewCreated(view, savedInstanceState); } - /** Customizes the order by preference key. */ - protected List getPreferenceOrderList() { - final List lists = new ArrayList<>(); - lists.add(KEY_USE_SERVICE_PREFERENCE); - lists.add(KEY_INTENSITY); - lists.add(KEY_GENERAL_CATEGORY); - lists.add(KEY_PERSIST); - lists.add(KEY_INTRODUCTION_CATEGORY); - return lists; - } - @Override public void onResume() { super.onResume(); diff --git a/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java b/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java index 52b1a8d1e49..5b74a8884aa 100644 --- a/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java +++ b/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java @@ -180,6 +180,9 @@ public class ApplicationFeatureProviderImpl implements ApplicationFeatureProvide // Keep Package Installer enabled. keepEnabledPackages.add(mContext.getString(R.string.config_package_installer_package_name)); + if (mPm.getWellbeingPackageName() != null) { + keepEnabledPackages.add(mPm.getWellbeingPackageName()); + } return keepEnabledPackages; } diff --git a/src/com/android/settings/core/gateway/SettingsGateway.java b/src/com/android/settings/core/gateway/SettingsGateway.java index bc2582eef71..5e51284c682 100644 --- a/src/com/android/settings/core/gateway/SettingsGateway.java +++ b/src/com/android/settings/core/gateway/SettingsGateway.java @@ -20,6 +20,7 @@ import com.android.settings.AllInOneTetherSettings; import com.android.settings.DisplaySettings; import com.android.settings.IccLockSettings; import com.android.settings.MainClear; +import com.android.settings.MainClearConfirm; import com.android.settings.Settings; import com.android.settings.TestingSettings; import com.android.settings.TetherSettings; @@ -283,6 +284,7 @@ public class SettingsGateway { WifiAPITest.class.getName(), WifiInfo.class.getName(), MainClear.class.getName(), + MainClearConfirm.class.getName(), ResetDashboardFragment.class.getName(), NightDisplaySettings.class.getName(), ManageDomainUrls.class.getName(), diff --git a/src/com/android/settings/homepage/RestrictedHomepagePreference.java b/src/com/android/settings/homepage/RestrictedHomepagePreference.java index bee52ec25f8..476642df138 100644 --- a/src/com/android/settings/homepage/RestrictedHomepagePreference.java +++ b/src/com/android/settings/homepage/RestrictedHomepagePreference.java @@ -16,27 +16,21 @@ package com.android.settings.homepage; -import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; - import android.content.Context; -import android.os.UserHandle; import android.util.AttributeSet; import androidx.core.content.res.TypedArrayUtils; -import androidx.preference.PreferenceManager; -import androidx.preference.PreferenceViewHolder; import com.android.settings.R; -import com.android.settingslib.RestrictedPreferenceHelper; +import com.android.settingslib.RestrictedTopLevelPreference; /** Homepage preference that can be disabled by a device admin using a user restriction. */ -public class RestrictedHomepagePreference extends HomepagePreference { - private RestrictedPreferenceHelper mHelper; +public class RestrictedHomepagePreference extends RestrictedTopLevelPreference { public RestrictedHomepagePreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); - mHelper = new RestrictedPreferenceHelper(context, /* preference= */ this, attrs); + setLayoutResource(R.layout.homepage_preference); } public RestrictedHomepagePreference(Context context, AttributeSet attrs, int defStyleAttr) { @@ -51,72 +45,4 @@ public class RestrictedHomepagePreference extends HomepagePreference { public RestrictedHomepagePreference(Context context) { this(context, /* attrs= */ null); } - - @Override - public void onBindViewHolder(PreferenceViewHolder holder) { - super.onBindViewHolder(holder); - mHelper.onBindViewHolder(holder); - } - - @Override - public void performClick() { - if (!mHelper.performClick()) { - super.performClick(); - } - } - - @Override - protected void onAttachedToHierarchy(PreferenceManager preferenceManager) { - mHelper.onAttachedToHierarchy(); - super.onAttachedToHierarchy(preferenceManager); - } - - /** - * Set the user restriction and disable this preference. - * - * @param userRestriction constant from {@link android.os.UserManager} - */ - public void checkRestrictionAndSetDisabled(String userRestriction) { - mHelper.checkRestrictionAndSetDisabled(userRestriction, UserHandle.myUserId()); - } - - /** - * Set the user restriction and disable this preference for the given user. - * - * @param userRestriction constant from {@link android.os.UserManager} - * @param userId user to check the restriction for. - */ - public void checkRestrictionAndSetDisabled(String userRestriction, int userId) { - mHelper.checkRestrictionAndSetDisabled(userRestriction, userId); - } - - @Override - public void setEnabled(boolean enabled) { - if (enabled && isDisabledByAdmin()) { - mHelper.setDisabledByAdmin(/* admin= */ null); - return; - } - super.setEnabled(enabled); - } - - /** - * Check whether this preference is disabled by admin. - * - * @return true if this preference is disabled by admin. - */ - public boolean isDisabledByAdmin() { - return mHelper.isDisabledByAdmin(); - } - - /** - * Disable preference based on the enforce admin. - * - * @param admin details of the admin who enforced the restriction. If it is {@code null}, then - * this preference will be enabled. Otherwise, it will be disabled. - */ - public void setDisabledByAdmin(EnforcedAdmin admin) { - if (mHelper.setDisabledByAdmin(admin)) { - notifyChanged(); - } - } } diff --git a/src/com/android/settings/network/ConnectedEthernetNetworkController.java b/src/com/android/settings/network/ConnectedEthernetNetworkController.java index 5918331ceb0..2f7b4a912f8 100644 --- a/src/com/android/settings/network/ConnectedEthernetNetworkController.java +++ b/src/com/android/settings/network/ConnectedEthernetNetworkController.java @@ -33,7 +33,7 @@ import com.android.settingslib.core.AbstractPreferenceController; * PreferenceController to show the connected ethernet network. */ public class ConnectedEthernetNetworkController extends AbstractPreferenceController - implements InternetUpdater.OnInternetTypeChangedListener { + implements InternetUpdater.InternetChangeListener { public static final String KEY = "connected_ethernet_network"; diff --git a/src/com/android/settings/network/InternetPreferenceController.java b/src/com/android/settings/network/InternetPreferenceController.java index 24fe284b2e4..2fe9c0adf16 100644 --- a/src/com/android/settings/network/InternetPreferenceController.java +++ b/src/com/android/settings/network/InternetPreferenceController.java @@ -19,10 +19,10 @@ package com.android.settings.network; import static androidx.lifecycle.Lifecycle.Event.ON_PAUSE; import static androidx.lifecycle.Lifecycle.Event.ON_RESUME; -import static com.android.settings.network.InternetUpdater.INTERNET_APM; -import static com.android.settings.network.InternetUpdater.INTERNET_APM_NETWORKS; import static com.android.settings.network.InternetUpdater.INTERNET_CELLULAR; import static com.android.settings.network.InternetUpdater.INTERNET_ETHERNET; +import static com.android.settings.network.InternetUpdater.INTERNET_NETWORKS_AVAILABLE; +import static com.android.settings.network.InternetUpdater.INTERNET_OFF; import static com.android.settings.network.InternetUpdater.INTERNET_WIFI; import android.content.Context; @@ -53,7 +53,7 @@ import java.util.Map; */ public class InternetPreferenceController extends AbstractPreferenceController implements LifecycleObserver, SummaryUpdater.OnSummaryChangeListener, - InternetUpdater.OnInternetTypeChangedListener { + InternetUpdater.InternetChangeListener { public static final String KEY = "internet_settings"; @@ -65,8 +65,8 @@ public class InternetPreferenceController extends AbstractPreferenceController i @VisibleForTesting static Map sIconMap = new HashMap<>(); static { - sIconMap.put(INTERNET_APM, R.drawable.ic_airplanemode_active); - sIconMap.put(INTERNET_APM_NETWORKS, R.drawable.ic_airplane_safe_networks_24dp); + sIconMap.put(INTERNET_OFF, R.drawable.ic_no_internet_unavailable); + sIconMap.put(INTERNET_NETWORKS_AVAILABLE, R.drawable.ic_no_internet_available); sIconMap.put(INTERNET_WIFI, R.drawable.ic_wifi_signal_4); sIconMap.put(INTERNET_CELLULAR, R.drawable.ic_network_cell); sIconMap.put(INTERNET_ETHERNET, R.drawable.ic_settings_ethernet); @@ -74,8 +74,8 @@ public class InternetPreferenceController extends AbstractPreferenceController i private static Map sSummaryMap = new HashMap<>(); static { - sSummaryMap.put(INTERNET_APM, R.string.condition_airplane_title); - sSummaryMap.put(INTERNET_APM_NETWORKS, R.string.airplane_mode_network_available); + sSummaryMap.put(INTERNET_OFF, R.string.condition_airplane_title); + sSummaryMap.put(INTERNET_NETWORKS_AVAILABLE, R.string.disconnected); sSummaryMap.put(INTERNET_WIFI, 0); sSummaryMap.put(INTERNET_CELLULAR, 0); sSummaryMap.put(INTERNET_ETHERNET, R.string.to_switch_networks_disconnect_ethernet); @@ -114,8 +114,8 @@ public class InternetPreferenceController extends AbstractPreferenceController i } } - if (mustUseWiFiHelperSummary(mSummaryHelper.isWifiConnected(), - mSummaryHelper.getSummary())) { + if (mInternetType == INTERNET_WIFI) { + mPreference.setSummary(mSummaryHelper.getSummary()); return; } @@ -124,6 +124,12 @@ public class InternetPreferenceController extends AbstractPreferenceController i return; } + if (mInternetType == INTERNET_NETWORKS_AVAILABLE + && mInternetUpdater.isApmNetworksAvailable()) { + mPreference.setSummary(R.string.airplane_mode_network_available); + return; + } + final @IdRes int summary = sSummaryMap.get(mInternetType); if (summary != 0) { mPreference.setSummary(summary); @@ -157,6 +163,7 @@ public class InternetPreferenceController extends AbstractPreferenceController i * * @param internetType the internet type */ + @Override public void onInternetTypeChanged(@InternetUpdater.InternetType int internetType) { final boolean needUpdate = (internetType != mInternetType); mInternetType = internetType; @@ -167,19 +174,21 @@ public class InternetPreferenceController extends AbstractPreferenceController i } } + /** + * Called when airplane mode state is changed. + */ @Override - public void onSummaryChanged(String summary) { - mustUseWiFiHelperSummary(mSummaryHelper.isWifiConnected(), summary); + public void onAirplaneModeChanged(boolean isAirplaneModeOn) { + ThreadUtils.postOnMainThread(() -> { + updateState(mPreference); + }); } - @VisibleForTesting - boolean mustUseWiFiHelperSummary(boolean isWifiConnected, String summary) { - final boolean needUpdate = (mInternetType == INTERNET_WIFI) - || (mInternetType == INTERNET_APM_NETWORKS && isWifiConnected); - if (needUpdate && mPreference != null) { + @Override + public void onSummaryChanged(String summary) { + if (mInternetType == INTERNET_WIFI && mPreference != null) { mPreference.setSummary(summary); } - return needUpdate; } @VisibleForTesting diff --git a/src/com/android/settings/network/InternetUpdater.java b/src/com/android/settings/network/InternetUpdater.java index d415b10e20c..3bd1e7b2204 100644 --- a/src/com/android/settings/network/InternetUpdater.java +++ b/src/com/android/settings/network/InternetUpdater.java @@ -34,6 +34,7 @@ import android.net.Network; import android.net.NetworkCapabilities; import android.net.NetworkCapabilities.Transport; import android.net.wifi.WifiManager; +import android.util.Log; import androidx.annotation.VisibleForTesting; import androidx.lifecycle.Lifecycle; @@ -55,27 +56,45 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange private static final String TAG = "InternetUpdater"; - private OnInternetTypeChangedListener mOnInternetTypeChangedListener; + private InternetChangeListener mListener; - /** Interface that handles the internet type changed callback */ - public interface OnInternetTypeChangedListener { + /** Interface that handles the internet updater callback */ + public interface InternetChangeListener { /** * Called when internet type is changed. * * @param internetType the internet type */ - void onInternetTypeChanged(@InternetType int internetType); + default void onInternetTypeChanged(@InternetType int internetType) {}; + + /** + * Called when airplane mode state is changed. + */ + default void onAirplaneModeChanged(boolean isAirplaneModeOn) {}; + + /** + * Called when airplane mode networks state is changed. + */ + default void onAirplaneModeNetworksChanged(boolean available) {}; } /** - * Indicates this internet is unavailable type in airplane mode on. + * Indicates the internet is off when airplane mode is on. */ - public static final int INTERNET_APM = 0; + public static final int INTERNET_OFF = 0; /** - * Indicates this internet uses an airplane mode network type. + * Indicates this internet is not connected (includes no networks connected) or network(s) + * available. + * + * Examples include: + *

When airplane mode is turned off, and some networks (Wi-Fi, Mobile-data) are turned on, + * but no network can access the Internet. + * + *

When the airplane mode is turned on, and the WiFi is also turned on, but the WiFi is not + * connected or cannot access the Internet. */ - public static final int INTERNET_APM_NETWORKS = 1; + public static final int INTERNET_NETWORKS_AVAILABLE = 1; /** * Indicates this internet uses a Wi-Fi network type. @@ -94,8 +113,8 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange @Retention(RetentionPolicy.SOURCE) @android.annotation.IntDef(prefix = { "INTERNET_" }, value = { - INTERNET_APM, - INTERNET_APM_NETWORKS, + INTERNET_OFF, + INTERNET_NETWORKS_AVAILABLE, INTERNET_WIFI, INTERNET_CELLULAR, INTERNET_ETHERNET, @@ -110,6 +129,8 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange @VisibleForTesting AirplaneModeEnabler mAirplaneModeEnabler; + @VisibleForTesting + boolean mInternetAvailable; @VisibleForTesting @Transport int mTransport; private static Map sTransportMap = new HashMap<>(); @@ -120,22 +141,14 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange } private NetworkCallback mNetworkCallback = new NetworkCallback() { + public void onCapabilitiesChanged(@NonNull Network network, + @NonNull NetworkCapabilities networkCapabilities) { + checkNetworkCapabilities(networkCapabilities); + } + @Override - public void onAvailable(@NonNull Network network) { - if (network == null) { - return; - } - final NetworkCapabilities networkCapabilities = - mConnectivityManager.getNetworkCapabilities(network); - if (networkCapabilities == null) { - return; - } - for (@Transport int transport : networkCapabilities.getTransportTypes()) { - if (sTransportMap.containsKey(transport)) { - mTransport = transport; - break; - } - } + public void onLost(@NonNull Network network) { + mInternetAvailable = false; update(); } }; @@ -143,18 +156,22 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange private final BroadcastReceiver mWifiStateReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { - update(); + fetchActiveNetwork(); + if (mListener != null && mAirplaneModeEnabler.isAirplaneModeOn()) { + mListener.onAirplaneModeNetworksChanged( + mWifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLED); + } } }; - public InternetUpdater(Context context, Lifecycle lifecycle, - OnInternetTypeChangedListener listener) { + public InternetUpdater(Context context, Lifecycle lifecycle, InternetChangeListener listener) { mContext = context; mAirplaneModeEnabler = new AirplaneModeEnabler(mContext, this); mConnectivityManager = mContext.getSystemService(ConnectivityManager.class); mWifiManager = mContext.getSystemService(WifiManager.class); mWifiStateFilter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION); - mOnInternetTypeChangedListener = listener; + mListener = listener; + fetchActiveNetwork(); if (lifecycle != null) { lifecycle.addObserver(this); } @@ -178,18 +195,65 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange @Override public void onAirplaneModeChanged(boolean isAirplaneModeOn) { + fetchActiveNetwork(); + if (mListener != null) { + mListener.onAirplaneModeChanged(isAirplaneModeOn); + } + } + + private void fetchActiveNetwork() { + Network activeNetwork = mConnectivityManager.getActiveNetwork(); + if (activeNetwork == null) { + mInternetAvailable = false; + update(); + return; + } + + NetworkCapabilities activeNetworkCapabilities = + mConnectivityManager.getNetworkCapabilities(activeNetwork); + if (activeNetworkCapabilities == null) { + mInternetAvailable = false; + update(); + return; + } + + checkNetworkCapabilities(activeNetworkCapabilities); + } + + private void checkNetworkCapabilities(@NonNull NetworkCapabilities networkCapabilities) { + if (!networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)) { + mInternetAvailable = false; + update(); + return; + } + + boolean internetAvailable = false; + for (@Transport int transport : networkCapabilities.getTransportTypes()) { + if (sTransportMap.containsKey(transport)) { + mTransport = transport; + internetAvailable = true; + Log.i(TAG, "Detect an internet capability network with transport type: " + + mTransport); + break; + } + } + mInternetAvailable = internetAvailable; update(); } @VisibleForTesting void update() { - if (mAirplaneModeEnabler.isAirplaneModeOn()) { - mInternetType = mWifiManager.isWifiEnabled() ? INTERNET_APM_NETWORKS : INTERNET_APM; - } else { - mInternetType = sTransportMap.get(mTransport); + @InternetType int internetType = INTERNET_NETWORKS_AVAILABLE; + if (mInternetAvailable) { + internetType = sTransportMap.get(mTransport); + } else if (mAirplaneModeEnabler.isAirplaneModeOn() + && mWifiManager.getWifiState() != WifiManager.WIFI_STATE_ENABLED) { + internetType = INTERNET_OFF; } - if (mOnInternetTypeChangedListener != null) { - mOnInternetTypeChangedListener.onInternetTypeChanged(mInternetType); + mInternetType = internetType; + + if (mListener != null) { + mListener.onInternetTypeChanged(mInternetType); } } @@ -199,4 +263,19 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange public @InternetType int getInternetType() { return mInternetType; } + + /** + * Return ture when the airplane mode is on. + */ + public boolean isAirplaneModeOn() { + return mAirplaneModeEnabler.isAirplaneModeOn(); + } + + /** + * Return ture when the APM networks is available. + */ + public boolean isApmNetworksAvailable() { + return mAirplaneModeEnabler.isAirplaneModeOn() + && (mWifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLED); + } } diff --git a/src/com/android/settings/network/SubscriptionUtil.java b/src/com/android/settings/network/SubscriptionUtil.java index aa704593f1f..be8f2578a64 100644 --- a/src/com/android/settings/network/SubscriptionUtil.java +++ b/src/com/android/settings/network/SubscriptionUtil.java @@ -70,6 +70,9 @@ public class SubscriptionUtil { if (sActiveResultsForTesting != null) { return sActiveResultsForTesting; } + if (manager == null) { + return Collections.emptyList(); + } final List subscriptions = manager.getActiveSubscriptionInfoList(); if (subscriptions == null) { return new ArrayList<>(); diff --git a/src/com/android/settings/network/telephony/BackupCallingPreferenceController.java b/src/com/android/settings/network/telephony/BackupCallingPreferenceController.java index 2c6c9631754..8d037fb15c7 100644 --- a/src/com/android/settings/network/telephony/BackupCallingPreferenceController.java +++ b/src/com/android/settings/network/telephony/BackupCallingPreferenceController.java @@ -32,6 +32,7 @@ import androidx.preference.SwitchPreference; import com.android.settings.R; import com.android.settings.network.SubscriptionUtil; +import java.util.List; import java.util.Objects; /** @@ -67,14 +68,22 @@ public class BackupCallingPreferenceController extends TelephonyTogglePreference @Override public int getAvailabilityStatus(int subId) { - return hasBackupCallingFeature(subId) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; + if (!hasBackupCallingFeature(subId)) { + return CONDITIONALLY_UNAVAILABLE; + } + List subIdList = getActiveSubscriptionList(); + SubscriptionInfo subInfo = getSubscriptionInfoFromList(subIdList, subId); + if (subInfo == null) { // given subId is not actives + return CONDITIONALLY_UNAVAILABLE; + } + return (subIdList.size() > 1) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; } /** * Implementation of abstract methods **/ public boolean setChecked(boolean isChecked) { - ImsMmTelManager imsMmTelMgr = getImsMmTelManager(); + ImsMmTelManager imsMmTelMgr = getImsMmTelManager(mSubId); if (imsMmTelMgr == null) { return false; } @@ -92,7 +101,7 @@ public class BackupCallingPreferenceController extends TelephonyTogglePreference * Implementation of abstract methods **/ public boolean isChecked() { - ImsMmTelManager imsMmTelMgr = getImsMmTelManager(); + ImsMmTelManager imsMmTelMgr = getImsMmTelManager(mSubId); if (imsMmTelMgr == null) { return false; } @@ -110,16 +119,17 @@ public class BackupCallingPreferenceController extends TelephonyTogglePreference if ((preference == null) || (!(preference instanceof SwitchPreference))) { return; } + SubscriptionInfo subInfo = getSubscriptionInfoFromActiveList(mSubId); + mPreference = preference; final SwitchPreference switchPreference = (SwitchPreference) preference; - switchPreference.setChecked(isChecked()); + switchPreference.setChecked((subInfo != null) ? isChecked() : false); - updateSummary(getLatestSummary()); + updateSummary(getLatestSummary(subInfo)); } - private String getLatestSummary() { - SubscriptionInfo subInfo = getSubscriptionInfo(); + private String getLatestSummary(SubscriptionInfo subInfo) { return Objects.toString((subInfo == null) ? null : SubscriptionUtil.getUniqueSubscriptionDisplayName(subInfo, mContext), ""); } @@ -144,19 +154,34 @@ public class BackupCallingPreferenceController extends TelephonyTogglePreference CarrierConfigManager.KEY_CARRIER_CROSS_SIM_IMS_AVAILABLE_BOOL, false); } - private ImsMmTelManager getImsMmTelManager() { - if (!SubscriptionManager.isUsableSubscriptionId(mSubId)) { + private ImsMmTelManager getImsMmTelManager(int subId) { + if (!SubscriptionManager.isUsableSubscriptionId(subId)) { return null; } ImsManager imsMgr = mContext.getSystemService(ImsManager.class); - return (imsMgr == null) ? null : imsMgr.getImsMmTelManager(mSubId); + return (imsMgr == null) ? null : imsMgr.getImsMmTelManager(subId); } - private SubscriptionInfo getSubscriptionInfo() { - SubscriptionManager subInfoMgr = mContext.getSystemService(SubscriptionManager.class); - if (subInfoMgr == null) { + private List getActiveSubscriptionList() { + SubscriptionManager subscriptionManager = + mContext.getSystemService(SubscriptionManager.class); + return SubscriptionUtil.getActiveSubscriptions(subscriptionManager); + } + + private SubscriptionInfo getSubscriptionInfoFromList( + List subInfoList, int subId) { + for (SubscriptionInfo subInfo : subInfoList) { + if ((subInfo != null) && (subInfo.getSubscriptionId() == subId)) { + return subInfo; + } + } + return null; + } + + private SubscriptionInfo getSubscriptionInfoFromActiveList(int subId) { + if (!SubscriptionManager.isUsableSubscriptionId(subId)) { return null; } - return subInfoMgr.getActiveSubscriptionInfo(mSubId); + return getSubscriptionInfoFromList(getActiveSubscriptionList(), subId); } } diff --git a/src/com/android/settings/network/telephony/NetworkProviderWorker.java b/src/com/android/settings/network/telephony/NetworkProviderWorker.java index 50c56cf659f..9e23c7ce2dc 100644 --- a/src/com/android/settings/network/telephony/NetworkProviderWorker.java +++ b/src/com/android/settings/network/telephony/NetworkProviderWorker.java @@ -49,9 +49,8 @@ import java.util.Collections; */ public class NetworkProviderWorker extends WifiScanWorker implements SignalStrengthListener.Callback, MobileDataEnabledListener.Client, - DataConnectivityListener.Client, - SubscriptionsChangeListener.SubscriptionsChangeListenerClient, - InternetUpdater.OnInternetTypeChangedListener { + DataConnectivityListener.Client, InternetUpdater.InternetChangeListener, + SubscriptionsChangeListener.SubscriptionsChangeListenerClient { private static final String TAG = "NetworkProviderWorker"; private static final int PROVIDER_MODEL_DEFAULT_EXPANDED_ROW_COUNT = 4; private DataContentObserver mMobileDataObserver; diff --git a/src/com/android/settings/panel/InternetConnectivityPanel.java b/src/com/android/settings/panel/InternetConnectivityPanel.java index c90d22b35de..bdaa8492230 100644 --- a/src/com/android/settings/panel/InternetConnectivityPanel.java +++ b/src/com/android/settings/panel/InternetConnectivityPanel.java @@ -19,8 +19,6 @@ package com.android.settings.panel; import static androidx.lifecycle.Lifecycle.Event.ON_PAUSE; import static androidx.lifecycle.Lifecycle.Event.ON_RESUME; -import static com.android.settings.network.InternetUpdater.INTERNET_APM; -import static com.android.settings.network.InternetUpdater.INTERNET_APM_NETWORKS; import static com.android.settings.network.NetworkProviderSettings.ACTION_NETWORK_PROVIDER_SETTINGS; import android.app.settings.SettingsEnums; @@ -46,14 +44,15 @@ import java.util.List; * Represents the Internet Connectivity Panel. */ public class InternetConnectivityPanel implements PanelContent, LifecycleObserver, - InternetUpdater.OnInternetTypeChangedListener { + InternetUpdater.InternetChangeListener { private final Context mContext; @VisibleForTesting boolean mIsProviderModelEnabled; private PanelContentCallback mCallback; private InternetUpdater mInternetUpdater; - private @InternetUpdater.InternetType int mInternetType; + private boolean mIsAirplaneModeOn; + private boolean mIsApmNetworksAvailable; public static InternetConnectivityPanel create(Context context) { return new InternetConnectivityPanel(context); @@ -63,7 +62,8 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve mContext = context.getApplicationContext(); mIsProviderModelEnabled = Utils.isProviderModelEnabled(mContext); mInternetUpdater = new InternetUpdater(context, null /* Lifecycle */, this); - mInternetType = mInternetUpdater.getInternetType(); + mIsAirplaneModeOn = mInternetUpdater.isAirplaneModeOn(); + mIsApmNetworksAvailable = mInternetUpdater.isApmNetworksAvailable(); } /** @OnLifecycleEvent(ON_RESUME) */ @@ -90,7 +90,7 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve @Override public CharSequence getTitle() { if (mIsProviderModelEnabled) { - return mContext.getText(mInternetType == INTERNET_APM_NETWORKS + return mContext.getText(mIsApmNetworksAvailable ? R.string.airplane_mode_network_panel_title : R.string.provider_internet_settings); } @@ -102,7 +102,7 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve */ @Override public CharSequence getSubTitle() { - if (mIsProviderModelEnabled && mInternetType == INTERNET_APM) { + if (mIsProviderModelEnabled && mIsAirplaneModeOn && !mIsApmNetworksAvailable) { return mContext.getText(R.string.condition_airplane_title); } return null; @@ -136,7 +136,7 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve @Override public CharSequence getCustomizedButtonTitle() { - if (mInternetType == INTERNET_APM) { + if (mIsAirplaneModeOn && !mIsApmNetworksAvailable) { return null; } return mContext.getText(R.string.settings_button); @@ -158,40 +158,43 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve } /** - * Called when internet type is changed. - * - * @param internetType the internet type + * Called when airplane mode state is changed. */ - public void onInternetTypeChanged(@InternetUpdater.InternetType int internetType) { - if (internetType == mInternetType) { + @Override + public void onAirplaneModeChanged(boolean isAirplaneModeOn) { + if (!isAirplaneModeOn) { + mIsApmNetworksAvailable = false; + } + mIsAirplaneModeOn = isAirplaneModeOn; + updatePanelTitle(); + } + + /** + * Called when airplane mode networks state is changed. + */ + @Override + public void onAirplaneModeNetworksChanged(boolean available) { + mIsApmNetworksAvailable = available; + updatePanelTitle(); + } + + private void updatePanelTitle() { + if (mCallback == null) { return; } - final boolean changeToApm = (internetType == INTERNET_APM); - final boolean changeFromApm = (mInternetType == INTERNET_APM); - final boolean changeWithApmNetworks = - (internetType == INTERNET_APM_NETWORKS || mInternetType == INTERNET_APM_NETWORKS); - mInternetType = internetType; - - if (mCallback != null) { - if (changeToApm) { - // The internet type is changed to the airplane mode. - // Title: Internet - // Sub-Title: Airplane mode is on - // Settings button: Hide - mCallback.onHeaderChanged(); - mCallback.onCustomizedButtonStateChanged(); - } else if (changeFromApm) { - // The internet type is changed from the airplane mode. - // Title: Internet - // Settings button: Show - mCallback.onTitleChanged(); - mCallback.onCustomizedButtonStateChanged(); - } else if (changeWithApmNetworks) { - // The internet type is changed with the airplane mode networks. - // Title: Airplane mode networks / Internet - mCallback.onTitleChanged(); - } + if (mIsAirplaneModeOn && !mIsApmNetworksAvailable) { + // When the airplane mode is on. + // Title: Internet + // Sub-Title: Airplane mode is on + // Settings button: Hide + mCallback.onHeaderChanged(); + } else { + // Except for airplane mode on. + // Title: Airplane mode networks / Internet + // Settings button: Show + mCallback.onTitleChanged(); } + mCallback.onCustomizedButtonStateChanged(); } } diff --git a/src/com/android/settings/system/FactoryResetPreferenceController.java b/src/com/android/settings/system/FactoryResetPreferenceController.java index cdeeaef5a3c..a307171d122 100644 --- a/src/com/android/settings/system/FactoryResetPreferenceController.java +++ b/src/com/android/settings/system/FactoryResetPreferenceController.java @@ -16,9 +16,13 @@ package com.android.settings.system; import android.content.Context; +import android.content.Intent; import android.os.UserManager; +import androidx.preference.Preference; + import com.android.settings.R; +import com.android.settings.Settings; import com.android.settings.Utils; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.core.AbstractPreferenceController; @@ -45,4 +49,14 @@ public class FactoryResetPreferenceController extends AbstractPreferenceControll public String getPreferenceKey() { return KEY_FACTORY_RESET; } + + @Override + public boolean handlePreferenceTreeClick(Preference preference) { + if (KEY_FACTORY_RESET.equals(preference.getKey())) { + final Intent intent = new Intent(mContext, Settings.FactoryResetActivity.class); + mContext.startActivity(intent); + return true; + } + return false; + } } diff --git a/src/com/android/settings/users/UserDialogs.java b/src/com/android/settings/users/UserDialogs.java index 0fb96369ef3..9aab5b03da1 100644 --- a/src/com/android/settings/users/UserDialogs.java +++ b/src/com/android/settings/users/UserDialogs.java @@ -92,8 +92,7 @@ public final class UserDialogs { View view = inflater.inflate(R.layout.delete_managed_profile_dialog, null); ImageView imageView = (ImageView) view.findViewById(R.id.delete_managed_profile_mdm_icon_view); - Drawable badgedApplicationIcon = packageManager.getUserBadgedIcon( - packageManager.getApplicationIcon(mdmApplicationInfo), new UserHandle(userId)); + Drawable badgedApplicationIcon = packageManager.getApplicationIcon(mdmApplicationInfo); imageView.setImageDrawable(badgedApplicationIcon); CharSequence appLabel = packageManager.getApplicationLabel(mdmApplicationInfo); diff --git a/tests/unit/src/com/android/settings/accessibility/ReduceBrightColorsIntensityPreferenceControllerTest.java b/tests/unit/src/com/android/settings/accessibility/ReduceBrightColorsIntensityPreferenceControllerTest.java index dee88176da5..8dac89318a0 100644 --- a/tests/unit/src/com/android/settings/accessibility/ReduceBrightColorsIntensityPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/accessibility/ReduceBrightColorsIntensityPreferenceControllerTest.java @@ -24,11 +24,14 @@ import static org.mockito.Mockito.when; import android.content.Context; import android.content.res.Resources; +import android.hardware.display.ColorDisplayManager; import android.provider.Settings; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; +import com.android.internal.R; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -79,8 +82,19 @@ public class ReduceBrightColorsIntensityPreferenceControllerTest { Settings.Secure.putInt(mContext.getContentResolver(), Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED, 1); mPreferenceController.onPreferenceChange(/* preference= */ null, 20); - assertThat(Settings.Secure.getInt(mContext.getContentResolver(), - Settings.Secure.REDUCE_BRIGHT_COLORS_LEVEL, 0)) + assertThat( + mContext.getSystemService( + ColorDisplayManager.class).getReduceBrightColorsStrength()) .isEqualTo(20); } + + @Test + public void rangeOfSlider_staysWithinValidRange() { + when(mResources.getInteger( + R.integer.config_reduceBrightColorsStrengthMax)).thenReturn(90); + when(mResources.getInteger( + R.integer.config_reduceBrightColorsStrengthMin)).thenReturn(10); + assertThat(mPreferenceController.getMax() - mPreferenceController.getMin()) + .isEqualTo(80); + } } diff --git a/tests/unit/src/com/android/settings/network/ConnectedEthernetNetworkControllerTest.java b/tests/unit/src/com/android/settings/network/ConnectedEthernetNetworkControllerTest.java index b5acdc5f584..5c56a45d63c 100644 --- a/tests/unit/src/com/android/settings/network/ConnectedEthernetNetworkControllerTest.java +++ b/tests/unit/src/com/android/settings/network/ConnectedEthernetNetworkControllerTest.java @@ -16,10 +16,10 @@ package com.android.settings.network; -import static com.android.settings.network.InternetUpdater.INTERNET_APM; -import static com.android.settings.network.InternetUpdater.INTERNET_APM_NETWORKS; import static com.android.settings.network.InternetUpdater.INTERNET_CELLULAR; import static com.android.settings.network.InternetUpdater.INTERNET_ETHERNET; +import static com.android.settings.network.InternetUpdater.INTERNET_NETWORKS_AVAILABLE; +import static com.android.settings.network.InternetUpdater.INTERNET_OFF; import static com.android.settings.network.InternetUpdater.INTERNET_WIFI; import static com.google.common.truth.Truth.assertThat; @@ -77,15 +77,15 @@ public class ConnectedEthernetNetworkControllerTest { } @Test - public void isAvailable_internetApm_shouldBeFalse() { - mController.onInternetTypeChanged(INTERNET_APM); + public void isAvailable_internetOff_shouldBeFalse() { + mController.onInternetTypeChanged(INTERNET_OFF); assertThat(mController.isAvailable()).isFalse(); } @Test - public void isAvailable_internetApmNetworks_shouldBeFalse() { - mController.onInternetTypeChanged(INTERNET_APM_NETWORKS); + public void isAvailable_internetNetworksAvailable_shouldBeFalse() { + mController.onInternetTypeChanged(INTERNET_NETWORKS_AVAILABLE); assertThat(mController.isAvailable()).isFalse(); } diff --git a/tests/unit/src/com/android/settings/network/InternetPreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/InternetPreferenceControllerTest.java index ad07953b27e..60057131da3 100644 --- a/tests/unit/src/com/android/settings/network/InternetPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/network/InternetPreferenceControllerTest.java @@ -16,7 +16,7 @@ package com.android.settings.network; -import static com.android.settings.network.InternetUpdater.INTERNET_APM_NETWORKS; +import static com.android.settings.network.InternetUpdater.INTERNET_NETWORKS_AVAILABLE; import static com.android.settings.network.InternetUpdater.INTERNET_WIFI; import static com.google.common.truth.Truth.assertThat; @@ -119,37 +119,24 @@ public class InternetPreferenceControllerTest { } @Test - public void mustUseWiFiHelperSummary_internetWifi_updateSummary() { + public void onSummaryChanged_internetWifi_updateSummary() { mController.onInternetTypeChanged(INTERNET_WIFI); mController.displayPreference(mScreen); - mController.mustUseWiFiHelperSummary(true /* isWifiConnected */, TEST_SUMMARY); - - assertThat(mPreference.getSummary()).isEqualTo(TEST_SUMMARY); - - mController.mustUseWiFiHelperSummary(false /* isWifiConnected */, NOT_CONNECTED); - - assertThat(mPreference.getSummary()).isEqualTo(NOT_CONNECTED); - } - - @Test - public void mustUseWiFiHelperSummary_internetApmNetworksWifiConnected_updateSummary() { - mController.onInternetTypeChanged(INTERNET_APM_NETWORKS); - mController.displayPreference(mScreen); - - mController.mustUseWiFiHelperSummary(true /* isWifiConnected */, TEST_SUMMARY); + mController.onSummaryChanged(TEST_SUMMARY); assertThat(mPreference.getSummary()).isEqualTo(TEST_SUMMARY); } @Test - public void mustUseWiFiHelperSummary_internetApmNetworksWifiDisconnected_notUpdateSummary() { - mController.onInternetTypeChanged(INTERNET_APM_NETWORKS); + public void onSummaryChanged_internetNetworksAvailable_notUpdateSummary() { + mController.onInternetTypeChanged(INTERNET_NETWORKS_AVAILABLE); mController.displayPreference(mScreen); + mPreference.setSummary(NOT_CONNECTED); - mController.mustUseWiFiHelperSummary(false /* isWifiConnected */, NOT_CONNECTED); + mController.onSummaryChanged(TEST_SUMMARY); - assertThat(mPreference.getSummary()).isNotEqualTo(NOT_CONNECTED); + assertThat(mPreference.getSummary()).isNotEqualTo(TEST_SUMMARY); } @Test diff --git a/tests/unit/src/com/android/settings/network/InternetUpdaterTest.java b/tests/unit/src/com/android/settings/network/InternetUpdaterTest.java index 18998b787c3..94456fe3f1d 100644 --- a/tests/unit/src/com/android/settings/network/InternetUpdaterTest.java +++ b/tests/unit/src/com/android/settings/network/InternetUpdaterTest.java @@ -20,10 +20,10 @@ import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR; import static android.net.NetworkCapabilities.TRANSPORT_ETHERNET; import static android.net.NetworkCapabilities.TRANSPORT_WIFI; -import static com.android.settings.network.InternetUpdater.INTERNET_APM; -import static com.android.settings.network.InternetUpdater.INTERNET_APM_NETWORKS; import static com.android.settings.network.InternetUpdater.INTERNET_CELLULAR; import static com.android.settings.network.InternetUpdater.INTERNET_ETHERNET; +import static com.android.settings.network.InternetUpdater.INTERNET_NETWORKS_AVAILABLE; +import static com.android.settings.network.InternetUpdater.INTERNET_OFF; import static com.android.settings.network.InternetUpdater.INTERNET_WIFI; import static com.google.common.truth.Truth.assertThat; @@ -109,26 +109,30 @@ public class InternetUpdaterTest { @Test public void update_apmOnWifiOff_getInternetApm() { doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); - doReturn(false).when(mWifiManager).isWifiEnabled(); + doReturn(WifiManager.WIFI_STATE_DISABLED).when(mWifiManager).getWifiState(); + mInternetUpdater.mInternetAvailable = false; mInternetUpdater.update(); - assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_APM); + assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_OFF); } @Test - public void update_apmOnWifiOn_getInternetApmNetworks() { + public void update_apmOnWifiOnNotConnected_getInternetNetworksAvailable() { + doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); + doReturn(WifiManager.WIFI_STATE_ENABLED).when(mWifiManager).getWifiState(); + mInternetUpdater.mInternetAvailable = false; + + mInternetUpdater.update(); + + assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_NETWORKS_AVAILABLE); + } + + @Test + public void update_apmOnWifiConnected_getInternetWifi() { doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); doReturn(true).when(mWifiManager).isWifiEnabled(); - - mInternetUpdater.update(); - - assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_APM_NETWORKS); - } - - @Test - public void update_apmOffWifiConnected_getInternetWifi() { - doReturn(false).when(mAirplaneModeEnabler).isAirplaneModeOn(); + mInternetUpdater.mInternetAvailable = true; mInternetUpdater.mTransport = TRANSPORT_WIFI; mInternetUpdater.update(); @@ -137,8 +141,9 @@ public class InternetUpdaterTest { } @Test - public void update_apmOffCellularConnected_getInternetCellular() { - doReturn(false).when(mAirplaneModeEnabler).isAirplaneModeOn(); + public void update_apmOnCellularConnected_getInternetCellular() { + doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); + mInternetUpdater.mInternetAvailable = true; mInternetUpdater.mTransport = TRANSPORT_CELLULAR; mInternetUpdater.update(); @@ -147,8 +152,9 @@ public class InternetUpdaterTest { } @Test - public void update_apmOffEthernetConnected_getInternetEthernet() { - doReturn(false).when(mAirplaneModeEnabler).isAirplaneModeOn(); + public void update_apmOnEthernetConnected_getInternetEthernet() { + doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); + mInternetUpdater.mInternetAvailable = true; mInternetUpdater.mTransport = TRANSPORT_ETHERNET; mInternetUpdater.update(); diff --git a/tests/unit/src/com/android/settings/panel/InternetConnectivityPanelTest.java b/tests/unit/src/com/android/settings/panel/InternetConnectivityPanelTest.java index a4d4ad1b916..4b4ec32681c 100644 --- a/tests/unit/src/com/android/settings/panel/InternetConnectivityPanelTest.java +++ b/tests/unit/src/com/android/settings/panel/InternetConnectivityPanelTest.java @@ -16,12 +16,6 @@ package com.android.settings.panel; -import static com.android.settings.network.InternetUpdater.INTERNET_APM; -import static com.android.settings.network.InternetUpdater.INTERNET_APM_NETWORKS; -import static com.android.settings.network.InternetUpdater.INTERNET_CELLULAR; -import static com.android.settings.network.InternetUpdater.INTERNET_ETHERNET; -import static com.android.settings.network.InternetUpdater.INTERNET_WIFI; - import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.clearInvocations; @@ -78,79 +72,70 @@ public class InternetConnectivityPanelTest { } @Test - public void getTitle_internetApmNetworks_shouldBeApmNetworks() { - mPanel.onInternetTypeChanged(INTERNET_APM_NETWORKS); + public void getTitle_apmOnApmNetworksOff_shouldBeInternet() { + mPanel.onAirplaneModeChanged(true); + mPanel.onAirplaneModeNetworksChanged(false); + + assertThat(mPanel.getTitle()).isEqualTo(TITLE_INTERNET); + } + + @Test + public void getTitle_apmOnApmNetworksOn_shouldBeApmNetworks() { + mPanel.onAirplaneModeChanged(true); + mPanel.onAirplaneModeNetworksChanged(true); assertThat(mPanel.getTitle()).isEqualTo(TITLE_APM_NETWORKS); } @Test public void getTitle_notInternetApmNetworks_shouldBeInternet() { - mPanel.onInternetTypeChanged(INTERNET_APM); - - assertThat(mPanel.getTitle()).isEqualTo(TITLE_INTERNET); - - mPanel.onInternetTypeChanged(INTERNET_WIFI); - - assertThat(mPanel.getTitle()).isEqualTo(TITLE_INTERNET); - - mPanel.onInternetTypeChanged(INTERNET_CELLULAR); - - assertThat(mPanel.getTitle()).isEqualTo(TITLE_INTERNET); - - mPanel.onInternetTypeChanged(INTERNET_ETHERNET); + mPanel.onAirplaneModeNetworksChanged(false); assertThat(mPanel.getTitle()).isEqualTo(TITLE_INTERNET); } @Test - public void getSubTitle_internetApm_shouldBeApmIsOn() { - mPanel.onInternetTypeChanged(INTERNET_APM); + public void getSubTitle_apmOnApmNetworksOff_shouldBeApmIsOn() { + mPanel.onAirplaneModeChanged(true); + mPanel.onAirplaneModeNetworksChanged(false); assertThat(mPanel.getSubTitle()).isEqualTo(SUBTITLE_APM_IS_ON); } @Test - public void getSubTitle_notinternetApm_shouldBeNull() { - mPanel.onInternetTypeChanged(INTERNET_APM_NETWORKS); - - assertThat(mPanel.getSubTitle()).isNull(); - - mPanel.onInternetTypeChanged(INTERNET_WIFI); - - assertThat(mPanel.getSubTitle()).isNull(); - - mPanel.onInternetTypeChanged(INTERNET_CELLULAR); - - assertThat(mPanel.getSubTitle()).isNull(); - - mPanel.onInternetTypeChanged(INTERNET_ETHERNET); + public void getSubTitle_apmOnApmNetworksOn_shouldBeNull() { + mPanel.onAirplaneModeChanged(true); + mPanel.onAirplaneModeNetworksChanged(true); assertThat(mPanel.getSubTitle()).isNull(); } @Test - public void getCustomizedButtonTitle_internetApm_shouldBeNull() { - mPanel.onInternetTypeChanged(INTERNET_APM); + public void getSubTitle_apmOff_shouldBeNull() { + mPanel.onAirplaneModeChanged(false); + + assertThat(mPanel.getSubTitle()).isNull(); + } + + @Test + public void getCustomizedButtonTitle_apmOnApmNetworksOff_shouldBeNull() { + mPanel.onAirplaneModeChanged(true); + mPanel.onAirplaneModeNetworksChanged(false); assertThat(mPanel.getCustomizedButtonTitle()).isNull(); } @Test - public void getCustomizedButtonTitle_notInternetApm_shouldBeSettings() { - mPanel.onInternetTypeChanged(INTERNET_APM_NETWORKS); + public void getCustomizedButtonTitle_apmOnApmNetworksOn_shouldBeSettings() { + mPanel.onAirplaneModeChanged(true); + mPanel.onAirplaneModeNetworksChanged(true); assertThat(mPanel.getCustomizedButtonTitle()).isEqualTo(BUTTON_SETTINGS); + } - mPanel.onInternetTypeChanged(INTERNET_WIFI); - - assertThat(mPanel.getCustomizedButtonTitle()).isEqualTo(BUTTON_SETTINGS); - - mPanel.onInternetTypeChanged(INTERNET_CELLULAR); - - assertThat(mPanel.getCustomizedButtonTitle()).isEqualTo(BUTTON_SETTINGS); - - mPanel.onInternetTypeChanged(INTERNET_ETHERNET); + @Test + public void getCustomizedButtonTitle_apmOff_shouldBeSettings() { + mPanel.onAirplaneModeChanged(false); assertThat(mPanel.getCustomizedButtonTitle()).isEqualTo(BUTTON_SETTINGS); } @@ -181,44 +166,46 @@ public class InternetConnectivityPanelTest { } @Test - public void onInternetTypeChanged_internetTypeChangedToApm_changeHeaderAndHideSettings() { - mPanel.onInternetTypeChanged(INTERNET_APM_NETWORKS); + public void onAirplaneModeOn_apmNetworksOff_changeHeaderAndHideSettings() { + mPanel.onAirplaneModeNetworksChanged(false); clearInvocations(mPanelContentCallback); - mPanel.onInternetTypeChanged(INTERNET_APM); + mPanel.onAirplaneModeChanged(true); verify(mPanelContentCallback).onHeaderChanged(); verify(mPanelContentCallback).onCustomizedButtonStateChanged(); } @Test - public void onInternetTypeChanged_internetTypeChangedFomApm_changeTitleAndShowSettings() { - mPanel.onInternetTypeChanged(INTERNET_APM); + public void onAirplaneModeOn_apmNetworksOn_changeTitleAndShowSettings() { + mPanel.onAirplaneModeNetworksChanged(true); clearInvocations(mPanelContentCallback); - mPanel.onInternetTypeChanged(INTERNET_APM_NETWORKS); + mPanel.onAirplaneModeChanged(true); verify(mPanelContentCallback).onTitleChanged(); verify(mPanelContentCallback).onCustomizedButtonStateChanged(); } @Test - public void onInternetTypeChanged_internetTypeChangedToApmNetworks_changeTitle() { - mPanel.onInternetTypeChanged(INTERNET_WIFI); + public void onAirplaneModeNetworksOn_apmOff_changeTitleAndShowSettings() { + mPanel.onAirplaneModeChanged(false); clearInvocations(mPanelContentCallback); - mPanel.onInternetTypeChanged(INTERNET_APM_NETWORKS); + mPanel.onAirplaneModeNetworksChanged(true); verify(mPanelContentCallback).onTitleChanged(); + verify(mPanelContentCallback).onCustomizedButtonStateChanged(); } @Test - public void onInternetTypeChanged_internetTypeChangedFromApmNetworks_changeTitle() { - mPanel.onInternetTypeChanged(INTERNET_APM_NETWORKS); + public void onAirplaneModeNetworksOff_apmOff_changeTitleAndShowSettings() { + mPanel.onAirplaneModeChanged(false); clearInvocations(mPanelContentCallback); - mPanel.onInternetTypeChanged(INTERNET_WIFI); + mPanel.onAirplaneModeNetworksChanged(false); verify(mPanelContentCallback).onTitleChanged(); + verify(mPanelContentCallback).onCustomizedButtonStateChanged(); } }