Set WifiDialog to light theme in setup flow

Screenshot: https://screenshot.googleplex.com/X6tkxihEWFY

Test: Manual
Bug: 130507879
Change-Id: Icca6b827cdb62387fde4c91435d4df10e2ff4d04
This commit is contained in:
pastychang
2019-04-15 11:58:28 +08:00
committed by Pasty Chang
parent 96b534951c
commit 1d2b51aeb0
5 changed files with 60 additions and 5 deletions

View File

@@ -191,12 +191,14 @@
</style> </style>
<style name="SuwAlertDialogThemeCompat" parent="@style/Theme.AppCompat.Dialog.Alert"> <style name="SuwAlertDialogThemeCompat" parent="@style/Theme.AppCompat.Dialog.Alert">
<item name="android:windowSoftInputMode">adjustResize</item>
<!-- copied from Theme.DeviceDefault.Light.Dialog.Alert --> <!-- copied from Theme.DeviceDefault.Light.Dialog.Alert -->
<item name="colorAccent">@*android:color/accent_device_default_light</item> <item name="colorAccent">@*android:color/accent_device_default_light</item>
<item name="dialogCornerRadius">@*android:dimen/config_dialogCornerRadius</item> <item name="dialogCornerRadius">@*android:dimen/config_dialogCornerRadius</item>
</style> </style>
<style name="SuwAlertDialogThemeCompat.Light" parent="@style/Theme.AppCompat.Light.Dialog.Alert"> <style name="SuwAlertDialogThemeCompat.Light" parent="@style/Theme.AppCompat.Light.Dialog.Alert">
<item name="android:windowSoftInputMode">adjustResize</item>
<!-- copied from Theme.DeviceDefault.Light.Dialog.Alert --> <!-- copied from Theme.DeviceDefault.Light.Dialog.Alert -->
<item name="colorAccent">@*android:color/accent_device_default_light</item> <item name="colorAccent">@*android:color/accent_device_default_light</item>
<item name="dialogCornerRadius">@*android:dimen/config_dialogCornerRadius</item> <item name="dialogCornerRadius">@*android:dimen/config_dialogCornerRadius</item>

View File

@@ -16,6 +16,7 @@
package com.android.settings.wifi; package com.android.settings.wifi;
import android.annotation.StyleRes;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
@@ -64,11 +65,21 @@ public class WifiDialog extends AlertDialog implements WifiConfigUiBase,
public static WifiDialog createModal(Context context, WifiDialogListener listener, public static WifiDialog createModal(Context context, WifiDialogListener listener,
AccessPoint accessPoint, int mode) { AccessPoint accessPoint, int mode) {
return new WifiDialog(context, listener, accessPoint, mode, 0 /* style */, return new WifiDialog(context, listener, accessPoint, mode, 0 /* style */,
mode == WifiConfigUiBase.MODE_VIEW /* hideSubmitButton*/); mode == WifiConfigUiBase.MODE_VIEW /* hideSubmitButton */);
}
/**
* Creates a WifiDialog with customized style. It displays as a dialog above the current
* view.
*/
public static WifiDialog createModal(Context context, WifiDialogListener listener,
AccessPoint accessPoint, int mode, @StyleRes int style) {
return new WifiDialog(context, listener, accessPoint, mode, style,
mode == WifiConfigUiBase.MODE_VIEW /* hideSubmitButton */);
} }
/* package */ WifiDialog(Context context, WifiDialogListener listener, AccessPoint accessPoint, /* package */ WifiDialog(Context context, WifiDialogListener listener, AccessPoint accessPoint,
int mode, int style, boolean hideSubmitButton) { int mode, @StyleRes int style, boolean hideSubmitButton) {
super(context, style); super(context, style);
mMode = mode; mMode = mode;
mListener = listener; mListener = listener;

View File

@@ -28,6 +28,7 @@ import android.util.Log;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.SetupWizardUtils; import com.android.settings.SetupWizardUtils;
import com.android.settings.wifi.dpp.WifiDppUtils; import com.android.settings.wifi.dpp.WifiDppUtils;
import com.android.settingslib.wifi.AccessPoint; import com.android.settingslib.wifi.AccessPoint;
@@ -74,8 +75,13 @@ public class WifiDialogActivity extends Activity implements WifiDialog.WifiDialo
accessPoint = new AccessPoint(this, accessPointState); accessPoint = new AccessPoint(this, accessPointState);
} }
mDialog = WifiDialog.createModal( if (WizardManagerHelper.isAnySetupWizard(getIntent())) {
this, this, accessPoint, WifiConfigUiBase.MODE_CONNECT); mDialog = WifiDialog.createModal(this, this, accessPoint,
WifiConfigUiBase.MODE_CONNECT, R.style.SuwAlertDialogThemeCompat_Light);
} else {
mDialog = WifiDialog.createModal(
this, this, accessPoint, WifiConfigUiBase.MODE_CONNECT);
}
mDialog.show(); mDialog.show();
mDialog.setOnDismissListener(this); mDialog.setOnDismissListener(this);
} }

View File

@@ -23,10 +23,13 @@ import static org.mockito.Mockito.doReturn;
import android.content.Intent; import android.content.Intent;
import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiConfiguration;
import com.android.settings.R;
import com.android.settings.testutils.shadow.ShadowAlertDialogCompat; import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
import com.android.settings.testutils.shadow.ShadowConnectivityManager; import com.android.settings.testutils.shadow.ShadowConnectivityManager;
import com.android.settings.testutils.shadow.ShadowWifiManager; import com.android.settings.testutils.shadow.ShadowWifiManager;
import com.google.android.setupcompat.util.WizardManagerHelper;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
@@ -72,7 +75,7 @@ public class WifiDialogActivityTest {
} }
@Test @Test
public void onSubmit_shouldNotConnectToNetwork_whenConnectForCallerIsFalse() { public void onSubmit_whenConnectForCallerIsFalse_shouldNotConnectToNetwork() {
WifiDialogActivity activity = WifiDialogActivity activity =
Robolectric.buildActivity( Robolectric.buildActivity(
WifiDialogActivity.class, WifiDialogActivity.class,
@@ -88,4 +91,24 @@ public class WifiDialogActivityTest {
assertThat(ShadowWifiManager.get().savedWifiConfig).isNull(); assertThat(ShadowWifiManager.get().savedWifiConfig).isNull();
} }
@Test
public void onSubmit_whenLaunchInSetupFlow_shouldBeLightThemeForWifiDialog() {
WifiDialogActivity activity =
Robolectric.buildActivity(
WifiDialogActivity.class,
new Intent()
.putExtra(WifiDialogActivity.KEY_CONNECT_FOR_CALLER, false)
.putExtra(WizardManagerHelper.EXTRA_IS_FIRST_RUN, true)
.putExtra(WizardManagerHelper.EXTRA_IS_SETUP_FLOW, true))
.setup().get();
WifiDialog dialog = (WifiDialog) ShadowAlertDialogCompat.getLatestAlertDialog();
assertThat(dialog).isNotNull();
activity.onSubmit(dialog);
assertThat(dialog.getContext().getThemeResId())
.isEqualTo(R.style.SuwAlertDialogThemeCompat_Light);
}
} }

View File

@@ -4,6 +4,7 @@ import static com.google.common.truth.Truth.assertThat;
import android.content.Context; import android.content.Context;
import com.android.settings.R;
import com.android.settings.testutils.shadow.ShadowEntityHeaderController; import com.android.settings.testutils.shadow.ShadowEntityHeaderController;
import com.android.settings.wifi.WifiDialog.WifiDialogListener; import com.android.settings.wifi.WifiDialog.WifiDialogListener;
import com.android.settingslib.wifi.AccessPoint; import com.android.settingslib.wifi.AccessPoint;
@@ -41,4 +42,16 @@ public class WifiDialogTest {
assertThat(modal.getContext().getThemeResId()) assertThat(modal.getContext().getThemeResId())
.isEqualTo(wifiDialog.getContext().getThemeResId()); .isEqualTo(wifiDialog.getContext().getThemeResId());
} }
@Test
public void createModal_whenSetTheme_shouldBeCustomizedTheme() {
WifiDialog modal = WifiDialog.createModal(mContext, mListener, mockAccessPoint,
WifiConfigUiBase.MODE_CONNECT, R.style.SuwAlertDialogThemeCompat_Light);
WifiDialog wifiDialog = new WifiDialog(mContext, mListener, mockAccessPoint,
WifiConfigUiBase.MODE_CONNECT, R.style.SuwAlertDialogThemeCompat_Light,
false /* hideSubmitButton */);
assertThat(modal.getContext().getThemeResId())
.isEqualTo(wifiDialog.getContext().getThemeResId());
}
} }