Enable launching captive portal directly
Whenever a user has connected to a captive portal network, split the
ConnectedAccessPointPreference to allow directly signing into the
captive portal or modifying the network's settings. When in any other
network state, use the old behavior of a single tappable preference that
takes the user to settings.
Bug: 63929546
Bug: 68031656
Test: make RunSettingsRoboTests
Test: manual by connecting to Captive Portal and normal WiFi networks.
Change-Id: I444202a12138d90c94bda94945c121c8c0810536
(cherry picked from commit 7577624db7
)
This commit is contained in:
@@ -31,12 +31,31 @@ import com.android.settingslib.wifi.AccessPointPreference;
|
||||
public class ConnectedAccessPointPreference extends AccessPointPreference implements
|
||||
View.OnClickListener {
|
||||
|
||||
private final CaptivePortalStatus mCaptivePortalStatus;
|
||||
private OnGearClickListener mOnGearClickListener;
|
||||
private boolean mCaptivePortalNetwork;
|
||||
|
||||
public ConnectedAccessPointPreference(AccessPoint accessPoint, Context context,
|
||||
UserBadgeCache cache, @DrawableRes int iconResId, boolean forSavedNetworks) {
|
||||
UserBadgeCache cache, @DrawableRes int iconResId, boolean forSavedNetworks,
|
||||
CaptivePortalStatus captivePortalStatus) {
|
||||
super(accessPoint, context, cache, iconResId, forSavedNetworks);
|
||||
setWidgetLayoutResource(R.layout.preference_widget_gear_no_bg);
|
||||
mCaptivePortalStatus = captivePortalStatus;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getWidgetLayoutResourceId() {
|
||||
return R.layout.preference_widget_gear_optional_background;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void refresh() {
|
||||
super.refresh();
|
||||
|
||||
mCaptivePortalNetwork = mCaptivePortalStatus.isCaptivePortalNetwork();
|
||||
setShowDivider(mCaptivePortalNetwork);
|
||||
if (mCaptivePortalNetwork) {
|
||||
setSummary(R.string.wifi_tap_to_sign_in);
|
||||
}
|
||||
}
|
||||
|
||||
public void setOnGearClickListener(OnGearClickListener l) {
|
||||
@@ -44,6 +63,18 @@ public class ConnectedAccessPointPreference extends AccessPointPreference implem
|
||||
notifyChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(PreferenceViewHolder holder) {
|
||||
super.onBindViewHolder(holder);
|
||||
|
||||
final View gear = holder.findViewById(R.id.settings_button);
|
||||
gear.setOnClickListener(this);
|
||||
|
||||
final View gearNoBg = holder.findViewById(R.id.settings_button_no_background);
|
||||
gearNoBg.setVisibility(mCaptivePortalNetwork ? View.INVISIBLE : View.VISIBLE);
|
||||
gear.setVisibility(mCaptivePortalNetwork ? View.VISIBLE : View.INVISIBLE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (v.getId() == R.id.settings_button) {
|
||||
@@ -56,4 +87,8 @@ public class ConnectedAccessPointPreference extends AccessPointPreference implem
|
||||
public interface OnGearClickListener {
|
||||
void onGearClick(ConnectedAccessPointPreference p);
|
||||
}
|
||||
|
||||
public interface CaptivePortalStatus {
|
||||
boolean isCaptivePortalNetwork();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user