[Provider Model] Add Ethernet network to Internet Panel

- Show the Ethernet network to first item of internet panel

- Show the Ethernet network even when airplane mode is turned on

Bug: 192930745
Bug: 192931553
Test: manual test
atest -c InternetDialogControllerTest \
         InternetDialogTest

Change-Id: I5f5b8fa44f9d4b0801684b663b634138c83cff42
Merged-In: I5f5b8fa44f9d4b0801684b663b634138c83cff42
(cherry picked from commit 2ad830cc06)
This commit is contained in:
Weng Su
2021-09-13 08:56:28 +08:00
parent d9ba2df119
commit d20de58a2f
9 changed files with 278 additions and 169 deletions

View File

@@ -39,7 +39,7 @@
android:layout_width="wrap_content"
android:layout_height="32dp"
android:textColor="?android:attr/textColorPrimary"
android:fontFamily="google-sans"
android:fontFamily="@*android:string/config_headlineFontFamily"
android:textSize="24sp"/>
<TextView
@@ -50,7 +50,7 @@
android:layout_marginTop="4dp"
android:ellipsize="end"
android:maxLines="1"
android:fontFamily="google-sans"
android:fontFamily="@*android:string/config_headlineFontFamily"
android:textSize="14sp"/>
</LinearLayout>
@@ -87,24 +87,49 @@
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:id="@+id/internet_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:id="@+id/ethernet_layout"
style="@style/InternetDialog.Network"
android:background="@drawable/settingslib_switch_bar_bg_on"
android:visibility="gone">
<FrameLayout
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="center_vertical|start"
android:clickable="false">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:autoMirrored="true"
android:src="@drawable/stat_sys_ethernet_fully"
android:tint="@color/connected_network_primary_color"/>
</FrameLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="start|center_vertical"
android:orientation="vertical"
android:clickable="false">
<TextView
android:text="@string/ethernet_label"
style="@style/InternetDialog.NetworkTitle.Active"/>
<TextView
android:text="@string/to_switch_networks_disconnect_ethernet"
style="@style/InternetDialog.NetworkSummary.Active"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/mobile_network_layout"
android:layout_width="match_parent"
android:layout_height="88dp"
android:clickable="true"
android:focusable="true"
android:background="?android:attr/selectableItemBackground"
android:layout_gravity="center_vertical|start"
android:orientation="horizontal"
android:layout_marginEnd="@dimen/internet_dialog_network_layout_margin"
android:layout_marginStart="@dimen/internet_dialog_network_layout_margin"
android:paddingStart="22dp"
android:paddingEnd="22dp">
style="@style/InternetDialog.Network">
<FrameLayout
android:layout_width="24dp"
@@ -121,7 +146,6 @@
<LinearLayout
android:layout_weight="1"
android:id="@+id/mobile_network_list"
android:orientation="vertical"
android:clickable="false"
android:layout_width="wrap_content"
@@ -129,28 +153,10 @@
android:gravity="start|center_vertical">
<TextView
android:id="@+id/mobile_title"
android:textDirection="locale"
android:layout_marginStart="@dimen/internet_dialog_network_layout_margin"
android:layout_marginEnd="7dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|start"
android:ellipsize="end"
android:textColor="?android:attr/textColorPrimary"
android:textSize="16sp"
android:fontFamily="google-sans"/>
style="@style/InternetDialog.NetworkTitle"/>
<TextView
android:id="@+id/mobile_summary"
android:textDirection="locale"
android:layout_marginStart="@dimen/internet_dialog_network_layout_margin"
android:layout_marginEnd="34dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|start"
android:ellipsize="end"
android:textColor="?android:attr/textColorTertiary"
android:textSize="14sp"
android:fontFamily="google-sans"/>
style="@style/InternetDialog.NetworkSummary"/>
</LinearLayout>
<FrameLayout
@@ -172,17 +178,9 @@
<LinearLayout
android:id="@+id/turn_on_wifi_layout"
android:layout_width="match_parent"
style="@style/InternetDialog.Network"
android:layout_height="72dp"
android:clickable="true"
android:focusable="true"
android:background="?android:attr/selectableItemBackground"
android:gravity="center"
android:orientation="horizontal"
android:layout_marginEnd="@dimen/internet_dialog_network_layout_margin"
android:layout_marginStart="@dimen/internet_dialog_network_layout_margin"
android:paddingStart="22dp"
android:paddingEnd="22dp">
android:gravity="center">
<FrameLayout
android:layout_weight="1"
@@ -193,13 +191,10 @@
<TextView
android:id="@+id/wifi_toggle_title"
android:text="@string/turn_on_wifi"
android:textDirection="locale"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="start|center_vertical"
android:textColor="?android:attr/textColorPrimary"
android:textSize="16sp"
android:fontFamily="google-sans"/>
android:textAppearance="@style/TextAppearance.InternetDialog"/>
</FrameLayout>
<FrameLayout
@@ -222,18 +217,12 @@
<LinearLayout
android:id="@+id/wifi_connected_layout"
android:layout_width="match_parent"
style="@style/InternetDialog.Network"
android:layout_height="72dp"
android:layout_gravity="center_vertical|start"
android:clickable="true"
android:focusable="true"
android:visibility="gone"
android:background="?android:attr/selectableItemBackground"
android:orientation="horizontal"
android:layout_marginStart="@dimen/internet_dialog_network_layout_margin"
android:layout_marginEnd="@dimen/internet_dialog_network_layout_margin"
android:paddingStart="20dp"
android:paddingEnd="24dp">
android:paddingEnd="24dp"
android:background="@drawable/settingslib_switch_bar_bg_on"
android:visibility="gone">
<FrameLayout
android:layout_width="24dp"
@@ -248,7 +237,6 @@
</FrameLayout>
<LinearLayout
android:id="@+id/wifi_connected_list"
android:orientation="vertical"
android:clickable="false"
android:layout_width="wrap_content"
@@ -258,26 +246,11 @@
android:gravity="start|center_vertical">
<TextView
android:id="@+id/wifi_connected_title"
android:textDirection="locale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|start"
android:layout_marginStart="@dimen/internet_dialog_network_layout_margin"
android:ellipsize="end"
android:textColor="?android:attr/textColorPrimary"
android:textSize="14sp"
android:fontFamily="google-sans"/>
style="@style/InternetDialog.NetworkTitle.Active"
android:textSize="14sp"/>
<TextView
android:id="@+id/wifi_connected_summary"
android:textDirection="locale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|start"
android:layout_marginStart="@dimen/internet_dialog_network_layout_margin"
android:ellipsize="end"
android:textColor="?android:attr/textColorTertiary"
android:textSize="14sp"
android:fontFamily="google-sans"/>
style="@style/InternetDialog.NetworkSummary.Active"/>
</LinearLayout>
<FrameLayout
@@ -340,13 +313,11 @@
android:layout_marginStart="@dimen/internet_dialog_network_layout_margin">
<TextView
android:text="@string/see_all_networks"
android:textDirection="locale"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="start|center_vertical"
android:textColor="?android:attr/textColorPrimary"
android:textSize="14sp"
android:fontFamily="google-sans"/>
android:textAppearance="@style/TextAppearance.InternetDialog"
android:textSize="14sp"/>
</FrameLayout>
</LinearLayout>
@@ -366,7 +337,7 @@
android:textColor="?android:attr/textColorPrimary"
android:text="@string/inline_done_button"
android:textSize="14sp"
android:fontFamily="google-sans"/>
android:fontFamily="@*android:string/config_headlineFontFamily"/>
</FrameLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>

View File

@@ -24,21 +24,15 @@
<LinearLayout
android:id="@+id/wifi_list"
android:layout_width="match_parent"
style="@style/InternetDialog.Network"
android:layout_height="72dp"
android:layout_gravity="center_vertical|start"
android:clickable="true"
android:focusable="true"
android:background="?android:attr/selectableItemBackground"
android:orientation="horizontal"
android:paddingStart="20dp"
android:paddingEnd="40dp">
android:paddingEnd="24dp">
<FrameLayout
android:layout_width="24dp"
android:layout_height="24dp"
android:clickable="false"
android:layout_gravity="center_vertical|start"
android:layout_marginStart="@dimen/internet_dialog_network_layout_margin">
android:layout_gravity="center_vertical|start">
<ImageView
android:id="@+id/wifi_icon"
android:layout_width="wrap_content"
@@ -52,31 +46,16 @@
android:clickable="false"
android:layout_width="wrap_content"
android:layout_height="72dp"
android:layout_marginEnd="30dp"
android:layout_weight="1"
android:gravity="start|center_vertical"
android:layout_marginStart="@dimen/internet_dialog_network_layout_margin">
android:gravity="start|center_vertical">
<TextView
android:id="@+id/wifi_title"
android:textDirection="locale"
android:layout_width="wrap_content"
android:layout_height="20dp"
android:gravity="start|center_vertical"
android:ellipsize="end"
android:textColor="?android:attr/textColorPrimary"
android:textSize="14sp"
android:fontFamily="google-sans"
android:layout_marginEnd="18dp"/>
style="@style/InternetDialog.NetworkTitle"
android:textSize="14sp"/>
<TextView
android:id="@+id/wifi_summary"
android:textDirection="locale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="start|center_vertical"
android:ellipsize="end"
android:textColor="?android:attr/textColorSecondary"
android:textSize="14sp"
android:fontFamily="google-sans"
android:layout_marginEnd="18dp"/>
style="@style/InternetDialog.NetworkSummary"/>
</LinearLayout>
<FrameLayout

View File

@@ -48,4 +48,16 @@
<item name="android:windowLightStatusBar">false</item>
</style>
<style name="TextAppearance.InternetDialog.Active">
<item name="android:fontFamily">@*android:string/config_headlineFontFamily</item>
<item name="android:textSize">16sp</item>
<item name="android:textColor">@color/connected_network_primary_color</item>
<item name="android:textDirection">locale</item>
</style>
<style name="TextAppearance.InternetDialog.Secondary.Active">
<item name="android:textSize">14sp</item>
<item name="android:textColor">@color/connected_network_secondary_color</item>
</style>
</resources>

View File

@@ -3027,4 +3027,6 @@
<string name="wifi_failed_connect_message">Failed to connect to network</string>
<!-- Provider Model: Title to see all the networks [CHAR LIMIT=50] -->
<string name="see_all_networks">See all</string>
<!-- Summary for warning to disconnect ethernet first then switch to other networks. [CHAR LIMIT=60] -->
<string name="to_switch_networks_disconnect_ethernet">To switch networks, disconnect ethernet</string>
</resources>

View File

@@ -951,4 +951,60 @@
<item name="android:maxHeight">4dp</item>
</style>
<!-- Internet Dialog -->
<style name="InternetDialog">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_gravity">center_vertical|start</item>
<item name="android:layout_marginStart">@dimen/internet_dialog_network_layout_margin</item>
</style>
<style name="InternetDialog.Network">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">88dp</item>
<item name="android:layout_marginEnd">@dimen/internet_dialog_network_layout_margin</item>
<item name="android:paddingStart">22dp</item>
<item name="android:paddingEnd">22dp</item>
<item name="android:orientation">horizontal</item>
<item name="android:focusable">true</item>
<item name="android:clickable">true</item>
</style>
<style name="InternetDialog.NetworkTitle">
<item name="android:layout_marginEnd">7dp</item>
<item name="android:ellipsize">end</item>
<item name="android:textAppearance">@style/TextAppearance.InternetDialog</item>
</style>
<style name="InternetDialog.NetworkTitle.Active">
<item name="android:textAppearance">@style/TextAppearance.InternetDialog.Active</item>
</style>
<style name="InternetDialog.NetworkSummary">
<item name="android:layout_marginEnd">34dp</item>
<item name="android:ellipsize">end</item>
<item name="android:textAppearance">@style/TextAppearance.InternetDialog.Secondary</item>
</style>
<style name="InternetDialog.NetworkSummary.Active">
<item name="android:textAppearance">@style/TextAppearance.InternetDialog.Secondary.Active
</item>
</style>
<style name="TextAppearance.InternetDialog">
<item name="android:fontFamily">@*android:string/config_headlineFontFamily</item>
<item name="android:textSize">16sp</item>
<item name="android:textColor">?android:attr/textColorPrimary</item>
<item name="android:textDirection">locale</item>
</style>
<style name="TextAppearance.InternetDialog.Secondary">
<item name="android:textSize">14sp</item>
<item name="android:textColor">?android:attr/textColorTertiary</item>
</style>
<style name="TextAppearance.InternetDialog.Active"/>
<style name="TextAppearance.InternetDialog.Secondary.Active"/>
</resources>

View File

@@ -52,6 +52,7 @@ import android.widget.ProgressBar;
import android.widget.Switch;
import android.widget.TextView;
import androidx.annotation.MainThread;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.annotation.WorkerThread;
@@ -60,7 +61,6 @@ import androidx.recyclerview.widget.RecyclerView;
import com.android.internal.logging.UiEvent;
import com.android.internal.logging.UiEventLogger;
import com.android.settingslib.Utils;
import com.android.systemui.Prefs;
import com.android.systemui.R;
import com.android.systemui.dagger.SysUISingleton;
@@ -105,12 +105,10 @@ public class InternetDialog extends SystemUIDialog implements
private View mDivider;
private ProgressBar mProgressBar;
private LinearLayout mInternetDialogLayout;
private LinearLayout mInternetListLayout;
private LinearLayout mConnectedWifListLayout;
private LinearLayout mConnectedWifList;
private LinearLayout mMobileNetworkLayout;
private LinearLayout mMobileNetworkList;
private LinearLayout mTurnWifiOnLayout;
private LinearLayout mEthernetLayout;
private TextView mWifiToggleTitleText;
private LinearLayout mSeeAllLayout;
private RecyclerView mWifiRecyclerView;
@@ -126,7 +124,6 @@ public class InternetDialog extends SystemUIDialog implements
private Button mDoneButton;
private Drawable mBackgroundOn;
private int mListMaxHeight;
private int mLayoutWidth;
private int mDefaultDataSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
private boolean mCanConfigMobileData;
@@ -181,8 +178,6 @@ public class InternetDialog extends SystemUIDialog implements
};
mListMaxHeight = context.getResources().getDimensionPixelSize(
R.dimen.internet_dialog_list_max_height);
mLayoutWidth = context.getResources().getDimensionPixelSize(
R.dimen.internet_dialog_list_max_width);
mUiEventLogger = uiEventLogger;
mAdapter = new InternetAdapter(mInternetDialogController);
if (!aboveStatusBar) {
@@ -221,13 +216,11 @@ public class InternetDialog extends SystemUIDialog implements
mInternetDialogSubTitle = mDialogView.requireViewById(R.id.internet_dialog_subtitle);
mDivider = mDialogView.requireViewById(R.id.divider);
mProgressBar = mDialogView.requireViewById(R.id.wifi_searching_progress);
mInternetListLayout = mDialogView.requireViewById(R.id.internet_list);
mEthernetLayout = mDialogView.requireViewById(R.id.ethernet_layout);
mMobileNetworkLayout = mDialogView.requireViewById(R.id.mobile_network_layout);
mMobileNetworkList = mDialogView.requireViewById(R.id.mobile_network_list);
mTurnWifiOnLayout = mDialogView.requireViewById(R.id.turn_on_wifi_layout);
mWifiToggleTitleText = mDialogView.requireViewById(R.id.wifi_toggle_title);
mConnectedWifListLayout = mDialogView.requireViewById(R.id.wifi_connected_layout);
mConnectedWifList = mDialogView.requireViewById(R.id.wifi_connected_list);
mConnectedWifiIcon = mDialogView.requireViewById(R.id.wifi_connected_icon);
mConnectedWifiTitleText = mDialogView.requireViewById(R.id.wifi_connected_title);
mConnectedWifiSummaryText = mDialogView.requireViewById(R.id.wifi_connected_summary);
@@ -309,6 +302,7 @@ public class InternetDialog extends SystemUIDialog implements
} else {
mInternetDialogSubTitle.setText(getSubtitleText());
}
updateEthernet();
setMobileDataLayout(mInternetDialogController.activeNetworkIsCellular());
if (!mCanConfigWifi) {
@@ -355,6 +349,12 @@ public class InternetDialog extends SystemUIDialog implements
mDoneButton.setOnClickListener(v -> dismiss());
}
@MainThread
private void updateEthernet() {
mEthernetLayout.setVisibility(
mInternetDialogController.hasEthernet() ? View.VISIBLE : View.GONE);
}
private void setMobileDataLayout(boolean isCellularNetwork) {
if (mInternetDialogController.isAirplaneModeEnabled()
|| !mInternetDialogController.hasCarrier()) {
@@ -371,38 +371,33 @@ public class InternetDialog extends SystemUIDialog implements
mMobileSummaryText.setVisibility(View.GONE);
}
mSignalIcon.setImageDrawable(getSignalStrengthDrawable());
if (mInternetDialogController.isNightMode()) {
int titleColor = isCellularNetwork ? mContext.getColor(
R.color.connected_network_primary_color) : Utils.getColorAttrDefaultColor(
mContext, android.R.attr.textColorPrimary);
int summaryColor = isCellularNetwork ? mContext.getColor(
R.color.connected_network_secondary_color) : Utils.getColorAttrDefaultColor(
mContext, android.R.attr.textColorSecondary);
mMobileTitleText.setTextColor(titleColor);
mMobileSummaryText.setTextColor(summaryColor);
}
mMobileTitleText.setTextAppearance(isCellularNetwork
? R.style.TextAppearance_InternetDialog_Active
: R.style.TextAppearance_InternetDialog);
mMobileSummaryText.setTextAppearance(isCellularNetwork
? R.style.TextAppearance_InternetDialog_Secondary_Active
: R.style.TextAppearance_InternetDialog_Secondary);
mMobileNetworkLayout.setBackground(isCellularNetwork ? mBackgroundOn : null);
mMobileDataToggle.setVisibility(mCanConfigMobileData ? View.VISIBLE : View.INVISIBLE);
}
}
@MainThread
private void updateWifiToggle(boolean isWifiEnabled, boolean isDeviceLocked) {
mWiFiToggle.setChecked(isWifiEnabled);
if (isDeviceLocked && mInternetDialogController.isNightMode()) {
int titleColor = mConnectedWifiEntry != null ? mContext.getColor(
R.color.connected_network_primary_color) : Utils.getColorAttrDefaultColor(
mContext, android.R.attr.textColorPrimary);
mWifiToggleTitleText.setTextColor(titleColor);
if (isDeviceLocked) {
mWifiToggleTitleText.setTextAppearance((mConnectedWifiEntry != null)
? R.style.TextAppearance_InternetDialog_Active
: R.style.TextAppearance_InternetDialog);
}
mTurnWifiOnLayout.setBackground(
(isDeviceLocked && mConnectedWifiEntry != null) ? mBackgroundOn : null);
}
@MainThread
private void updateConnectedWifi(boolean isWifiEnabled, boolean isDeviceLocked) {
if (!isWifiEnabled || mConnectedWifiEntry == null || isDeviceLocked) {
mConnectedWifListLayout.setBackground(null);
mConnectedWifListLayout.setVisibility(View.GONE);
return;
}
@@ -411,15 +406,8 @@ public class InternetDialog extends SystemUIDialog implements
mConnectedWifiSummaryText.setText(mConnectedWifiEntry.getSummary(false));
mConnectedWifiIcon.setImageDrawable(
mInternetDialogController.getInternetWifiDrawable(mConnectedWifiEntry));
if (mInternetDialogController.isNightMode()) {
mConnectedWifiTitleText.setTextColor(
mContext.getColor(R.color.connected_network_primary_color));
mConnectedWifiSummaryText.setTextColor(
mContext.getColor(R.color.connected_network_secondary_color));
}
mWifiSettingsIcon.setColorFilter(
mContext.getColor(R.color.connected_network_primary_color));
mConnectedWifListLayout.setBackground(mBackgroundOn);
}
void onClickConnectedWifi() {
@@ -528,10 +516,17 @@ public class InternetDialog extends SystemUIDialog implements
}
@Override
@WorkerThread
public void onCapabilitiesChanged(Network network, NetworkCapabilities networkCapabilities) {
mHandler.post(() -> updateDialog());
}
@Override
@WorkerThread
public void onLost(Network network) {
mHandler.post(() -> updateDialog());
}
@Override
public void onSubscriptionsChanged(int defaultDataSubId) {
mDefaultDataSubId = defaultDataSubId;

View File

@@ -23,7 +23,6 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Configuration;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
@@ -31,7 +30,6 @@ import android.graphics.drawable.LayerDrawable;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkRequest;
import android.net.wifi.WifiManager;
import android.os.Handler;
import android.provider.Settings;
@@ -49,6 +47,7 @@ import android.util.Log;
import android.view.Gravity;
import android.widget.Toast;
import androidx.annotation.MainThread;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
@@ -133,6 +132,7 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
private GlobalSettings mGlobalSettings;
private int mDefaultDataSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
private ConnectivityManager.NetworkCallback mConnectivityManagerNetworkCallback;
@VisibleForTesting
protected ActivityStarter mActivityStarter;
@@ -146,6 +146,8 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
protected boolean mCanConfigWifi;
@VisibleForTesting
protected KeyguardStateController mKeyguardStateController;
@VisibleForTesting
protected boolean mHasEthernet = false;
private final KeyguardUpdateMonitorCallback mKeyguardUpdateCallback =
new KeyguardUpdateMonitorCallback() {
@@ -193,6 +195,7 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
mAccessPointController = accessPointController;
mConfig = MobileMappings.Config.readConfig(mContext);
mWifiIconInjector = new WifiUtils.InternetIconInjector(mContext);
mConnectivityManagerNetworkCallback = new DataConnectivityListener();
}
void onStart(@NonNull InternetDialogCallback callback, boolean canConfigWifi) {
@@ -216,9 +219,7 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
mInternetTelephonyCallback = new InternetTelephonyCallback();
mTelephonyManager.registerTelephonyCallback(mExecutor, mInternetTelephonyCallback);
// Listen the connectivity changes
mConnectivityManager.registerNetworkCallback(new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.build(), new DataConnectivityListener(), mHandler);
mConnectivityManager.registerDefaultNetworkCallback(mConnectivityManagerNetworkCallback);
mCanConfigWifi = canConfigWifi;
scanWifiAccessPoints();
}
@@ -233,6 +234,7 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
mOnSubscriptionsChangedListener);
mAccessPointController.removeAccessPointCallback(this);
mKeyguardUpdateMonitor.removeCallback(mKeyguardUpdateCallback);
mConnectivityManager.unregisterNetworkCallback(mConnectivityManagerNetworkCallback);
}
@VisibleForTesting
@@ -351,11 +353,6 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
return drawable;
}
boolean isNightMode() {
return (mContext.getResources().getConfiguration().uiMode
& Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_YES;
}
Drawable getSignalStrengthDrawable() {
Drawable drawable = mContext.getDrawable(
R.drawable.ic_signal_strength_zero_bar_no_internet);
@@ -800,6 +797,9 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
}
int count = MAX_WIFI_ENTRY_COUNT;
if (mHasEthernet) {
count -= 1;
}
if (hasCarrier()) {
count -= 1;
}
@@ -870,21 +870,30 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
@Override
@WorkerThread
public void onCapabilitiesChanged(@NonNull Network network,
@NonNull NetworkCapabilities networkCapabilities) {
if (mCanConfigWifi) {
for (int transport : networkCapabilities.getTransportTypes()) {
if (transport == NetworkCapabilities.TRANSPORT_WIFI) {
scanWifiAccessPoints();
break;
}
}
}
final Network activeNetwork = mConnectivityManager.getActiveNetwork();
if (activeNetwork != null && activeNetwork.equals(network)) {
// update UI
mCallback.onCapabilitiesChanged(network, networkCapabilities);
@NonNull NetworkCapabilities capabilities) {
mHasEthernet = capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET);
if (mCanConfigWifi && (mHasEthernet || capabilities.hasTransport(
NetworkCapabilities.TRANSPORT_WIFI))) {
scanWifiAccessPoints();
}
// update UI
mCallback.onCapabilitiesChanged(network, capabilities);
}
@Override
@WorkerThread
public void onLost(@NonNull Network network) {
mHasEthernet = false;
mCallback.onLost(network);
}
}
/**
* Return {@code true} If the Ethernet exists
*/
@MainThread
public boolean hasEthernet() {
return mHasEthernet;
}
private final BroadcastReceiver mConnectionStateReceiver = new BroadcastReceiver() {
@@ -934,6 +943,8 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
void onCapabilitiesChanged(Network network, NetworkCapabilities networkCapabilities);
void onLost(@NonNull Network network);
void onSubscriptionsChanged(int defaultDataSubId);
void onServiceStateChanged(ServiceState serviceState);

View File

@@ -444,6 +444,47 @@ public class InternetDialogControllerTest extends SysuiTestCase {
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries, mConnectedEntry);
}
@Test
public void onAccessPointsChanged_fourWifiEntries_callbackCutMore() {
reset(mInternetDialogCallback);
mInternetDialogController.setAirplaneModeEnabled(true);
mAccessPoints.clear();
mAccessPoints.add(mWifiEntry1);
mAccessPoints.add(mWifiEntry2);
mAccessPoints.add(mWifiEntry3);
mAccessPoints.add(mWifiEntry4);
mInternetDialogController.onAccessPointsChanged(mAccessPoints);
mWifiEntries.clear();
mWifiEntries.add(mWifiEntry1);
mWifiEntries.add(mWifiEntry2);
mWifiEntries.add(mWifiEntry3);
mWifiEntries.add(mWifiEntry4);
verify(mInternetDialogCallback)
.onAccessPointsChanged(mWifiEntries, null /* connectedEntry */);
// If the Ethernet exists, then Wi-Fi entries will cut last one.
reset(mInternetDialogCallback);
mInternetDialogController.mHasEthernet = true;
mInternetDialogController.onAccessPointsChanged(mAccessPoints);
mWifiEntries.remove(mWifiEntry4);
verify(mInternetDialogCallback)
.onAccessPointsChanged(mWifiEntries, null /* connectedEntry */);
// Turn off airplane mode to has carrier network, then Wi-Fi entries will cut last one.
reset(mInternetDialogCallback);
mInternetDialogController.setAirplaneModeEnabled(false);
mInternetDialogController.onAccessPointsChanged(mAccessPoints);
mWifiEntries.remove(mWifiEntry3);
verify(mInternetDialogCallback)
.onAccessPointsChanged(mWifiEntries, null /* connectedEntry */);
}
private String getResourcesString(String name) {
return mContext.getResources().getString(getResourcesId(name));
}

View File

@@ -67,6 +67,7 @@ public class InternetDialogTest extends SysuiTestCase {
private InternetDialog mInternetDialog;
private View mDialogView;
private View mSubTitle;
private LinearLayout mEthernet;
private LinearLayout mMobileDataToggle;
private LinearLayout mWifiToggle;
private LinearLayout mConnectedWifi;
@@ -97,6 +98,7 @@ public class InternetDialogTest extends SysuiTestCase {
mDialogView = mInternetDialog.mDialogView;
mSubTitle = mDialogView.requireViewById(R.id.internet_dialog_subtitle);
mEthernet = mDialogView.requireViewById(R.id.ethernet_layout);
mMobileDataToggle = mDialogView.requireViewById(R.id.mobile_network_layout);
mWifiToggle = mDialogView.requireViewById(R.id.turn_on_wifi_layout);
mConnectedWifi = mDialogView.requireViewById(R.id.wifi_connected_layout);
@@ -138,6 +140,46 @@ public class InternetDialogTest extends SysuiTestCase {
assertThat(mSubTitle.getVisibility()).isEqualTo(View.VISIBLE);
}
@Test
public void updateDialog_apmOffAndHasEthernet_showEthernet() {
when(mInternetDialogController.isAirplaneModeEnabled()).thenReturn(false);
when(mInternetDialogController.hasEthernet()).thenReturn(true);
mInternetDialog.updateDialog();
assertThat(mEthernet.getVisibility()).isEqualTo(View.VISIBLE);
}
@Test
public void updateDialog_apmOffAndNoEthernet_hideEthernet() {
when(mInternetDialogController.isAirplaneModeEnabled()).thenReturn(false);
when(mInternetDialogController.hasEthernet()).thenReturn(false);
mInternetDialog.updateDialog();
assertThat(mEthernet.getVisibility()).isEqualTo(View.GONE);
}
@Test
public void updateDialog_apmOnAndHasEthernet_showEthernet() {
when(mInternetDialogController.isAirplaneModeEnabled()).thenReturn(true);
when(mInternetDialogController.hasEthernet()).thenReturn(true);
mInternetDialog.updateDialog();
assertThat(mEthernet.getVisibility()).isEqualTo(View.VISIBLE);
}
@Test
public void updateDialog_apmOnAndNoEthernet_hideEthernet() {
when(mInternetDialogController.isAirplaneModeEnabled()).thenReturn(true);
when(mInternetDialogController.hasEthernet()).thenReturn(false);
mInternetDialog.updateDialog();
assertThat(mEthernet.getVisibility()).isEqualTo(View.GONE);
}
@Test
public void updateDialog_withApmOn_mobileDataLayoutGone() {
when(mInternetDialogController.isAirplaneModeEnabled()).thenReturn(true);