[Provider Model] Add Fix connectivity toggle to Internet Settings
- Add Fix connectivity toggle in menu item - Show "Resetting your internet..." when recovering - Screenshot: https://screenshot.googleplex.com/BPyRADfNUoPE8Dc Bug: 172297799 Test: manual test - make RunSettingsRoboTests ROBOTEST_FILTER=NetworkProviderSettingsTest Change-Id: I27594d24659ca281e224f86accc20d49514d5001
This commit is contained in:
26
res/drawable/ic_refresh_24dp.xml
Normal file
26
res/drawable/ic_refresh_24dp.xml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
Copyright (C) 2021 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.
|
||||||
|
-->
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24"
|
||||||
|
android:tint="?android:attr/colorAccent">
|
||||||
|
<path
|
||||||
|
android:fillColor="@android:color/white"
|
||||||
|
android:pathData="M13,9v2h7V4h-2v2.74C16.53,5.07 14.4,4 12,4c-2.21,0 -4.21,0.9 -5.66,2.34S4,9.79 4,12c0,4.42 3.58,8 8,8 2.21,0 4.21,-0.9 5.66,-2.34l-1.42,-1.42C15.15,17.33 13.65,18 12,18c-3.31,0 -6,-2.69 -6,-6 0,-1.65 0.67,-3.15 1.76,-4.24C8.85,6.67 10.35,6 12,6c2.21,0 4.15,1.21 5.19,3H13z"/>
|
||||||
|
</vector>
|
47
res/layout/resetting_internet.xml
Normal file
47
res/layout/resetting_internet.xml
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
~ Copyright (C) 2021 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.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center_horizontal"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="@dimen/content_margin_left"
|
||||||
|
android:layout_marginEnd="@dimen/content_margin_left"
|
||||||
|
android:layout_marginTop="@dimen/description_margin_top"
|
||||||
|
android:layout_marginBottom="@dimen/description_margin_top"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<ProgressBar
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginEnd="@dimen/reset_internet_ring_progress_right_margin"
|
||||||
|
style="?android:attr/progressBarStyleSmallTitle"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/resetting_internet_text"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceSmall"/>
|
||||||
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
@@ -209,6 +209,7 @@
|
|||||||
|
|
||||||
<!-- Internet Preferences -->
|
<!-- Internet Preferences -->
|
||||||
<dimen name="view_airplane_mode_networks_button_margin_vertical">24dp</dimen>
|
<dimen name="view_airplane_mode_networks_button_margin_vertical">24dp</dimen>
|
||||||
|
<dimen name="reset_internet_ring_progress_right_margin">4dp</dimen>
|
||||||
|
|
||||||
<!-- Color picker -->
|
<!-- Color picker -->
|
||||||
<dimen name="color_swatch_size">16dp</dimen>
|
<dimen name="color_swatch_size">16dp</dimen>
|
||||||
|
@@ -12536,6 +12536,16 @@
|
|||||||
<string name="viewing_airplane_mode_networks">Viewing airplane mode networks</string>
|
<string name="viewing_airplane_mode_networks">Viewing airplane mode networks</string>
|
||||||
<!-- Label text to turn off airplane mode. [CHAR LIMIT=40] -->
|
<!-- Label text to turn off airplane mode. [CHAR LIMIT=40] -->
|
||||||
<string name="turn_off_airplane_mode">Turn off airplane mode</string>
|
<string name="turn_off_airplane_mode">Turn off airplane mode</string>
|
||||||
|
<!-- Title for interrupting the voice call alert. [CHAR_LIMIT=NONE] -->
|
||||||
|
<string name="reset_your_internet_title">Reset your internet?</string>
|
||||||
|
<!-- Description for interrupting the voice call alert. [CHAR_LIMIT=NONE] -->
|
||||||
|
<string name="reset_internet_text" product="default">This will end your phone call</string>
|
||||||
|
<!-- Description for interrupting the voice call alert. [CHAR_LIMIT=NONE] -->
|
||||||
|
<string name="reset_internet_text" product="tablet">This will end your phone call</string>
|
||||||
|
<!-- Description to wait device resetting internet networks. [CHAR_LIMIT=NONE] -->
|
||||||
|
<string name="resetting_internet_text">Resetting your internet\u2026</string>
|
||||||
|
<!-- Menu option for data connectivity recovery for all requested technologies. [CHAR_LIMIT=NONE] -->
|
||||||
|
<string name="fix_connectivity">Fix connectivity</string>
|
||||||
|
|
||||||
<!-- Summary text separator for preferences including a short description
|
<!-- Summary text separator for preferences including a short description
|
||||||
(eg. "Connected / 5G"). [CHAR LIMIT=50] -->
|
(eg. "Connected / 5G"). [CHAR LIMIT=50] -->
|
||||||
|
@@ -20,6 +20,14 @@
|
|||||||
android:title="@string/provider_internet_settings"
|
android:title="@string/provider_internet_settings"
|
||||||
settings:keywords="@string/keywords_wifi">
|
settings:keywords="@string/keywords_wifi">
|
||||||
|
|
||||||
|
<!-- Resetting your internet description -->
|
||||||
|
<com.android.settingslib.widget.LayoutPreference
|
||||||
|
android:key="resetting_your_internet"
|
||||||
|
android:title="@string/resetting_internet_text"
|
||||||
|
android:selectable="false"
|
||||||
|
android:layout="@layout/resetting_internet"
|
||||||
|
settings:allowDividerBelow="true"/>
|
||||||
|
|
||||||
<!-- View airplane mode networks button -->
|
<!-- View airplane mode networks button -->
|
||||||
<com.android.settingslib.widget.LayoutPreference
|
<com.android.settingslib.widget.LayoutPreference
|
||||||
android:key="view_airplane_mode_netwokrs_button"
|
android:key="view_airplane_mode_netwokrs_button"
|
||||||
|
@@ -32,19 +32,24 @@ import android.net.wifi.WifiConfiguration;
|
|||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.os.HandlerThread;
|
||||||
import android.os.PowerManager;
|
import android.os.PowerManager;
|
||||||
|
import android.os.Process;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
import android.telephony.TelephonyManager;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.FeatureFlagUtils;
|
import android.util.FeatureFlagUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.ContextMenu;
|
import android.view.ContextMenu;
|
||||||
import android.view.ContextMenu.ContextMenuInfo;
|
import android.view.ContextMenu.ContextMenuInfo;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
|
import android.view.MenuInflater;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
|
import androidx.appcompat.app.AlertDialog;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
import androidx.preference.PreferenceCategory;
|
import androidx.preference.PreferenceCategory;
|
||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
@@ -71,8 +76,10 @@ import com.android.settings.wifi.dpp.WifiDppUtils;
|
|||||||
import com.android.settingslib.HelpUtils;
|
import com.android.settingslib.HelpUtils;
|
||||||
import com.android.settingslib.RestrictedLockUtils;
|
import com.android.settingslib.RestrictedLockUtils;
|
||||||
import com.android.settingslib.RestrictedLockUtilsInternal;
|
import com.android.settingslib.RestrictedLockUtilsInternal;
|
||||||
|
import com.android.settingslib.connectivity.ConnectivitySubsystemsRecoveryManager;
|
||||||
import com.android.settingslib.search.Indexable;
|
import com.android.settingslib.search.Indexable;
|
||||||
import com.android.settingslib.search.SearchIndexable;
|
import com.android.settingslib.search.SearchIndexable;
|
||||||
|
import com.android.settingslib.widget.LayoutPreference;
|
||||||
import com.android.settingslib.wifi.LongPressWifiEntryPreference;
|
import com.android.settingslib.wifi.LongPressWifiEntryPreference;
|
||||||
import com.android.settingslib.wifi.WifiSavedConfigUtils;
|
import com.android.settingslib.wifi.WifiSavedConfigUtils;
|
||||||
import com.android.wifitrackerlib.WifiEntry;
|
import com.android.wifitrackerlib.WifiEntry;
|
||||||
@@ -90,7 +97,8 @@ import java.util.Optional;
|
|||||||
@SearchIndexable
|
@SearchIndexable
|
||||||
public class NetworkProviderSettings extends RestrictedSettingsFragment
|
public class NetworkProviderSettings extends RestrictedSettingsFragment
|
||||||
implements Indexable, WifiPickerTracker.WifiPickerTrackerCallback,
|
implements Indexable, WifiPickerTracker.WifiPickerTrackerCallback,
|
||||||
WifiDialog2.WifiDialog2Listener, DialogInterface.OnDismissListener {
|
WifiDialog2.WifiDialog2Listener, DialogInterface.OnDismissListener,
|
||||||
|
ConnectivitySubsystemsRecoveryManager.RecoveryStatusCallback {
|
||||||
|
|
||||||
public static final String ACTION_NETWORK_PROVIDER_SETTINGS =
|
public static final String ACTION_NETWORK_PROVIDER_SETTINGS =
|
||||||
"android.settings.NETWORK_PROVIDER_SETTINGS";
|
"android.settings.NETWORK_PROVIDER_SETTINGS";
|
||||||
@@ -103,6 +111,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
static final int MENU_ID_FORGET = Menu.FIRST + 3;
|
static final int MENU_ID_FORGET = Menu.FIRST + 3;
|
||||||
static final int MENU_ID_MODIFY = Menu.FIRST + 4;
|
static final int MENU_ID_MODIFY = Menu.FIRST + 4;
|
||||||
|
static final int MENU_FIX_CONNECTIVITY = Menu.FIRST + 5;
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
static final int ADD_NETWORK_REQUEST = 2;
|
static final int ADD_NETWORK_REQUEST = 2;
|
||||||
@@ -117,6 +126,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
private static final String PREF_KEY_SAVED_NETWORKS = "saved_networks";
|
private static final String PREF_KEY_SAVED_NETWORKS = "saved_networks";
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
static final String PREF_KEY_DATA_USAGE = "non_carrier_data_usage";
|
static final String PREF_KEY_DATA_USAGE = "non_carrier_data_usage";
|
||||||
|
private static final String PREF_KEY_RESET_INTERNET = "resetting_your_internet";
|
||||||
|
|
||||||
private static final int REQUEST_CODE_WIFI_DPP_ENROLLEE_QR_CODE_SCANNER = 0;
|
private static final int REQUEST_CODE_WIFI_DPP_ENROLLEE_QR_CODE_SCANNER = 0;
|
||||||
|
|
||||||
@@ -163,6 +173,10 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
private WifiManager.ActionListener mSaveListener;
|
private WifiManager.ActionListener mSaveListener;
|
||||||
private WifiManager.ActionListener mForgetListener;
|
private WifiManager.ActionListener mForgetListener;
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
protected ConnectivitySubsystemsRecoveryManager mConnectivitySubsystemsRecoveryManager;
|
||||||
|
private HandlerThread mRecoveryThread;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The state of {@link #isUiRestricted()} at {@link #onCreate(Bundle)}}. This is necessary to
|
* The state of {@link #isUiRestricted()} at {@link #onCreate(Bundle)}}. This is necessary to
|
||||||
* ensure that behavior is consistent if {@link #isUiRestricted()} changes. It could be changed
|
* ensure that behavior is consistent if {@link #isUiRestricted()} changes. It could be changed
|
||||||
@@ -188,8 +202,11 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
Preference mSavedNetworksPreference;
|
Preference mSavedNetworksPreference;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
DataUsagePreference mDataUsagePreference;
|
DataUsagePreference mDataUsagePreference;
|
||||||
private ViewAirplaneModeNetworksLayoutPreferenceController
|
@VisibleForTesting
|
||||||
|
ViewAirplaneModeNetworksLayoutPreferenceController
|
||||||
mViewAirplaneModeNetworksButtonPreference;
|
mViewAirplaneModeNetworksButtonPreference;
|
||||||
|
@VisibleForTesting
|
||||||
|
LayoutPreference mResetInternetPreference;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mobile networks list for provider model
|
* Mobile networks list for provider model
|
||||||
@@ -244,6 +261,10 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
mDataUsagePreference.setTemplate(NetworkTemplate.buildTemplateWifiWildcard(),
|
mDataUsagePreference.setTemplate(NetworkTemplate.buildTemplateWifiWildcard(),
|
||||||
0 /*subId*/,
|
0 /*subId*/,
|
||||||
null /*service*/);
|
null /*service*/);
|
||||||
|
mResetInternetPreference = findPreference(PREF_KEY_RESET_INTERNET);
|
||||||
|
if (mResetInternetPreference != null) {
|
||||||
|
mResetInternetPreference.setVisible(false);
|
||||||
|
}
|
||||||
addNetworkMobileProviderController();
|
addNetworkMobileProviderController();
|
||||||
addViewAirplaneModeNetworksButtonController();
|
addViewAirplaneModeNetworksButtonController();
|
||||||
}
|
}
|
||||||
@@ -1078,4 +1099,89 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
Intent getHelpIntent(Context context, String helpUrlString) {
|
Intent getHelpIntent(Context context, String helpUrlString) {
|
||||||
return HelpUtils.getHelpIntent(context, helpUrlString, context.getClass().getName());
|
return HelpUtils.getHelpIntent(context, helpUrlString, context.getClass().getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
||||||
|
MenuItem item = menu.add(0, MENU_FIX_CONNECTIVITY, 0, R.string.fix_connectivity);
|
||||||
|
item.setIcon(R.drawable.ic_refresh_24dp);
|
||||||
|
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
|
||||||
|
super.onCreateOptionsMenu(menu, inflater);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onOptionsItemSelected(MenuItem menuItem) {
|
||||||
|
if (menuItem.getItemId() == MENU_FIX_CONNECTIVITY) {
|
||||||
|
if (isPhoneOnCall()) {
|
||||||
|
showResetInternetDialog();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
fixConnectivity();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return super.onOptionsItemSelected(menuItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
void showResetInternetDialog() {
|
||||||
|
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
|
||||||
|
DialogInterface.OnClickListener resetInternetClickListener =
|
||||||
|
new Dialog.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
|
fixConnectivity();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
builder.setTitle(R.string.reset_your_internet_title)
|
||||||
|
.setMessage(R.string.reset_internet_text)
|
||||||
|
.setPositiveButton(R.string.tts_reset, resetInternetClickListener)
|
||||||
|
.setNegativeButton(android.R.string.cancel, null)
|
||||||
|
.create()
|
||||||
|
.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
boolean isPhoneOnCall() {
|
||||||
|
TelephonyManager mTelephonyManager = getActivity().getSystemService(TelephonyManager.class);
|
||||||
|
int state = mTelephonyManager.getCallState();
|
||||||
|
return state != TelephonyManager.CALL_STATE_IDLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void fixConnectivity() {
|
||||||
|
if (mConnectivitySubsystemsRecoveryManager == null) {
|
||||||
|
mRecoveryThread = new HandlerThread(TAG
|
||||||
|
+ "{" + Integer.toHexString(System.identityHashCode(this)) + "}",
|
||||||
|
Process.THREAD_PRIORITY_BACKGROUND);
|
||||||
|
mRecoveryThread.start();
|
||||||
|
mConnectivitySubsystemsRecoveryManager = new ConnectivitySubsystemsRecoveryManager(
|
||||||
|
getContext(), mRecoveryThread.getThreadHandler());
|
||||||
|
}
|
||||||
|
if (mConnectivitySubsystemsRecoveryManager.isRecoveryAvailable()) {
|
||||||
|
mConnectivitySubsystemsRecoveryManager.triggerSubsystemRestart(TAG, this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Callback for the internet recovery started.
|
||||||
|
*/
|
||||||
|
public void onSubsystemRestartOperationBegin() {
|
||||||
|
if (mResetInternetPreference != null) {
|
||||||
|
mResetInternetPreference.setVisible(true);
|
||||||
|
}
|
||||||
|
if (mViewAirplaneModeNetworksButtonPreference != null) {
|
||||||
|
mViewAirplaneModeNetworksButtonPreference.setVisible(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Callback for the internet recovery ended.
|
||||||
|
*/
|
||||||
|
public void onSubsystemRestartOperationEnd() {
|
||||||
|
if (mResetInternetPreference != null) {
|
||||||
|
mResetInternetPreference.setVisible(false);
|
||||||
|
}
|
||||||
|
if (mViewAirplaneModeNetworksButtonPreference != null
|
||||||
|
&& mViewAirplaneModeNetworksButtonPreference.isAvailable()) {
|
||||||
|
mViewAirplaneModeNetworksButtonPreference.setVisible(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -90,9 +90,7 @@ public class ViewAirplaneModeNetworksLayoutPreferenceController extends Abstract
|
|||||||
public void displayPreference(PreferenceScreen screen) {
|
public void displayPreference(PreferenceScreen screen) {
|
||||||
super.displayPreference(screen);
|
super.displayPreference(screen);
|
||||||
mPreference = screen.findPreference(getPreferenceKey());
|
mPreference = screen.findPreference(getPreferenceKey());
|
||||||
if (isAvailable()) {
|
generateLayout();
|
||||||
generateLayout();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Lifecycle.Event.ON_START */
|
/** Lifecycle.Event.ON_START */
|
||||||
@@ -158,4 +156,13 @@ public class ViewAirplaneModeNetworksLayoutPreferenceController extends Abstract
|
|||||||
mButton.setVisibility(isWifiEnabled ? View.GONE : View.VISIBLE);
|
mButton.setVisibility(isWifiEnabled ? View.GONE : View.VISIBLE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the visibility of the preference.
|
||||||
|
*/
|
||||||
|
public void setVisible(boolean visible) {
|
||||||
|
if (mPreference != null) {
|
||||||
|
mPreference.setVisible(visible);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -27,6 +27,7 @@ import static org.mockito.ArgumentMatchers.eq;
|
|||||||
import static org.mockito.Mockito.doNothing;
|
import static org.mockito.Mockito.doNothing;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.times;
|
import static org.mockito.Mockito.times;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
@@ -44,6 +45,7 @@ import android.os.PowerManager;
|
|||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.view.ContextMenu;
|
import android.view.ContextMenu;
|
||||||
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
import androidx.fragment.app.FragmentActivity;
|
import androidx.fragment.app.FragmentActivity;
|
||||||
@@ -59,6 +61,8 @@ import com.android.settings.testutils.shadow.ShadowFragment;
|
|||||||
import com.android.settings.wifi.AddWifiNetworkPreference;
|
import com.android.settings.wifi.AddWifiNetworkPreference;
|
||||||
import com.android.settings.wifi.WifiConfigController2;
|
import com.android.settings.wifi.WifiConfigController2;
|
||||||
import com.android.settings.wifi.WifiDialog2;
|
import com.android.settings.wifi.WifiDialog2;
|
||||||
|
import com.android.settingslib.connectivity.ConnectivitySubsystemsRecoveryManager;
|
||||||
|
import com.android.settingslib.widget.LayoutPreference;
|
||||||
import com.android.settingslib.wifi.LongPressWifiEntryPreference;
|
import com.android.settingslib.wifi.LongPressWifiEntryPreference;
|
||||||
import com.android.wifitrackerlib.WifiEntry;
|
import com.android.wifitrackerlib.WifiEntry;
|
||||||
import com.android.wifitrackerlib.WifiPickerTracker;
|
import com.android.wifitrackerlib.WifiPickerTracker;
|
||||||
@@ -91,6 +95,15 @@ public class NetworkProviderSettingsTest {
|
|||||||
private WifiPickerTracker mMockWifiPickerTracker;
|
private WifiPickerTracker mMockWifiPickerTracker;
|
||||||
@Mock
|
@Mock
|
||||||
private PreferenceManager mPreferenceManager;
|
private PreferenceManager mPreferenceManager;
|
||||||
|
@Mock
|
||||||
|
private ConnectivitySubsystemsRecoveryManager mConnectivitySubsystemsRecoveryManager;
|
||||||
|
@Mock
|
||||||
|
private ViewAirplaneModeNetworksLayoutPreferenceController
|
||||||
|
mViewAirplaneModeNetworksButtonPreference;
|
||||||
|
@Mock
|
||||||
|
private LayoutPreference mResetInternetPreference;
|
||||||
|
@Mock
|
||||||
|
private MenuItem mMenuItem;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
@@ -374,4 +387,57 @@ public class NetworkProviderSettingsTest {
|
|||||||
when(wifiDialog2.getController()).thenReturn(controller);
|
when(wifiDialog2.getController()).thenReturn(controller);
|
||||||
return wifiDialog2;
|
return wifiDialog2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onOptionsItemSelected_fixConnectivity_triggerSubsystemRestart() {
|
||||||
|
doReturn(true).when(mConnectivitySubsystemsRecoveryManager).isRecoveryAvailable();
|
||||||
|
mNetworkProviderSettings.mConnectivitySubsystemsRecoveryManager =
|
||||||
|
mConnectivitySubsystemsRecoveryManager;
|
||||||
|
doReturn(false).when(mNetworkProviderSettings).isPhoneOnCall();
|
||||||
|
doReturn(NetworkProviderSettings.MENU_FIX_CONNECTIVITY).when(mMenuItem).getItemId();
|
||||||
|
|
||||||
|
mNetworkProviderSettings.onOptionsItemSelected(mMenuItem);
|
||||||
|
|
||||||
|
verify(mConnectivitySubsystemsRecoveryManager).triggerSubsystemRestart(any(), any());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onOptionsItemSelected_fixConnectivityOnCall_neverTriggerSubsystemRestart() {
|
||||||
|
doReturn(true).when(mConnectivitySubsystemsRecoveryManager).isRecoveryAvailable();
|
||||||
|
mNetworkProviderSettings.mConnectivitySubsystemsRecoveryManager =
|
||||||
|
mConnectivitySubsystemsRecoveryManager;
|
||||||
|
doReturn(true).when(mNetworkProviderSettings).isPhoneOnCall();
|
||||||
|
doNothing().when(mNetworkProviderSettings).showResetInternetDialog();
|
||||||
|
doReturn(NetworkProviderSettings.MENU_FIX_CONNECTIVITY).when(mMenuItem).getItemId();
|
||||||
|
|
||||||
|
mNetworkProviderSettings.onOptionsItemSelected(mMenuItem);
|
||||||
|
|
||||||
|
verify(mConnectivitySubsystemsRecoveryManager, never()).triggerSubsystemRestart(any(),
|
||||||
|
any());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onSubsystemRestartOperationBegin_showResetInternetHideApmNetworks() {
|
||||||
|
mNetworkProviderSettings.mResetInternetPreference = mResetInternetPreference;
|
||||||
|
mNetworkProviderSettings.mViewAirplaneModeNetworksButtonPreference =
|
||||||
|
mViewAirplaneModeNetworksButtonPreference;
|
||||||
|
|
||||||
|
mNetworkProviderSettings.onSubsystemRestartOperationBegin();
|
||||||
|
|
||||||
|
verify(mResetInternetPreference).setVisible(true);
|
||||||
|
verify(mViewAirplaneModeNetworksButtonPreference).setVisible(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onSubsystemRestartOperationEnd_showApmNetworksHideResetInternet() {
|
||||||
|
mNetworkProviderSettings.mResetInternetPreference = mResetInternetPreference;
|
||||||
|
mNetworkProviderSettings.mViewAirplaneModeNetworksButtonPreference =
|
||||||
|
mViewAirplaneModeNetworksButtonPreference;
|
||||||
|
doReturn(true).when(mViewAirplaneModeNetworksButtonPreference).isAvailable();
|
||||||
|
|
||||||
|
mNetworkProviderSettings.onSubsystemRestartOperationEnd();
|
||||||
|
|
||||||
|
verify(mResetInternetPreference).setVisible(false);
|
||||||
|
verify(mViewAirplaneModeNetworksButtonPreference).setVisible(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user