Set QR scan activity to light theme in setup flow

Test: atest
Bug: 131029518
Change-Id: Ibec28e78fcf17390cd3844ead4a88a4e6bff6094
diff --git a/res/values/themes.xml b/res/values/themes.xml
index 5db5f2f..1541b6d 100644
--- a/res/values/themes.xml
+++ b/res/values/themes.xml
@@ -210,4 +210,25 @@
         <item name="android:fontFamily">@*android:string/config_headlineFontFamilyMedium</item>
     </style>
 
+    <!-- This light theme for a window that can be applied to show light theme in setupwizard flow,
+         regardless of whether system theme changed to dark or light theme. WARNING: your settings
+         activity shows in setupwizard flow, but doesn't use setupwizard theme. This theme must be
+         set to ensure settings activity always shows light theme in setupwizard flow. -->
+    <style name="LightTheme.SettingsBase.SetupWizard" parent="@android:style/Theme.DeviceDefault">
+        <item name="android:windowLightStatusBar">true</item>
+        <item name="android:navigationBarColor">@android:color/white</item>
+        <item name="android:windowLightNavigationBar">true</item>
+        <item name="android:navigationBarDividerColor">@*android:color/navigation_bar_divider_device_default_settings</item>
+
+        <item name="android:colorPrimary">@*android:color/primary_device_default_settings_light</item>
+        <item name="android:colorPrimaryDark">@*android:color/primary_dark_device_default_settings_light</item>
+        <item name="android:colorBackground">@*android:color/background_device_default_light</item>
+        <item name="android:colorAccent">@*android:color/accent_device_default_light</item>
+
+        <item name="android:listDivider">@*android:color/list_divider_color_light</item>
+
+        <item name="android:textColorPrimary">@*android:color/primary_text_light</item>
+        <item name="android:textColorSecondary">@*android:color/secondary_text_light</item>
+    </style>
+
 </resources>
diff --git a/src/com/android/settings/wifi/WifiDialogActivity.java b/src/com/android/settings/wifi/WifiDialogActivity.java
index 8268ecc..7782786 100644
--- a/src/com/android/settings/wifi/WifiDialogActivity.java
+++ b/src/com/android/settings/wifi/WifiDialogActivity.java
@@ -60,16 +60,18 @@
 
     private WifiDialog mDialog;
 
+    private Intent mIntent;
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
-        final Intent intent = getIntent();
-        if (WizardManagerHelper.isSetupWizardIntent(intent)) {
-            setTheme(SetupWizardUtils.getTransparentTheme(intent));
+        mIntent = getIntent();
+        if (WizardManagerHelper.isSetupWizardIntent(mIntent)) {
+            setTheme(SetupWizardUtils.getTransparentTheme(mIntent));
         }
 
         super.onCreate(savedInstanceState);
 
-        final Bundle accessPointState = intent.getBundleExtra(KEY_ACCESS_POINT_STATE);
+        final Bundle accessPointState = mIntent.getBundleExtra(KEY_ACCESS_POINT_STATE);
         AccessPoint accessPoint = null;
         if (accessPointState != null) {
             accessPoint = new AccessPoint(this, accessPointState);
@@ -175,9 +177,11 @@
 
     @Override
     public void onScan(WifiDialog dialog, String ssid) {
+        Intent intent = WifiDppUtils.getEnrolleeQrCodeScannerIntent(ssid);
+        WizardManagerHelper.copyWizardManagerExtras(mIntent, intent);
+
         // Launch QR code scanner to join a network.
-        startActivityForResult(WifiDppUtils.getEnrolleeQrCodeScannerIntent(ssid),
-                REQUEST_CODE_WIFI_DPP_ENROLLEE_QR_CODE_SCANNER);
+        startActivityForResult(intent, REQUEST_CODE_WIFI_DPP_ENROLLEE_QR_CODE_SCANNER);
     }
 
     @Override
diff --git a/src/com/android/settings/wifi/dpp/WifiDppEnrolleeActivity.java b/src/com/android/settings/wifi/dpp/WifiDppEnrolleeActivity.java
index 392b27d..2229895 100644
--- a/src/com/android/settings/wifi/dpp/WifiDppEnrolleeActivity.java
+++ b/src/com/android/settings/wifi/dpp/WifiDppEnrolleeActivity.java
@@ -18,7 +18,6 @@
 
 import android.app.ActionBar;
 import android.app.settings.SettingsEnums;
-import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
 import android.util.Log;
@@ -30,6 +29,8 @@
 import com.android.settings.R;
 import com.android.settings.core.InstrumentedActivity;
 
+import com.google.android.setupcompat.util.WizardManagerHelper;
+
 /**
  * To provision "this" device with specified Wi-Fi network.
  *
@@ -54,6 +55,10 @@
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
+        if (WizardManagerHelper.isAnySetupWizard(getIntent())) {
+            setTheme(R.style.LightTheme_SettingsBase_SetupWizard);
+        }
+
         setContentView(R.layout.wifi_dpp_activity);
         mFragmentManager = getSupportFragmentManager();
 
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiDialogActivityTest.java b/tests/robotests/src/com/android/settings/wifi/WifiDialogActivityTest.java
index 41d1bbe..15a0780 100644
--- a/tests/robotests/src/com/android/settings/wifi/WifiDialogActivityTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/WifiDialogActivityTest.java
@@ -27,6 +27,7 @@
 import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
 import com.android.settings.testutils.shadow.ShadowConnectivityManager;
 import com.android.settings.testutils.shadow.ShadowWifiManager;
+import com.android.settings.wifi.dpp.WifiDppEnrolleeActivity;
 
 import com.google.android.setupcompat.util.WizardManagerHelper;
 
@@ -37,6 +38,7 @@
 import org.mockito.MockitoAnnotations;
 import org.robolectric.Robolectric;
 import org.robolectric.RobolectricTestRunner;
+import org.robolectric.android.controller.ActivityController;
 import org.robolectric.annotation.Config;
 import org.robolectric.util.ReflectionHelpers;
 
@@ -111,4 +113,23 @@
         assertThat(dialog.getContext().getThemeResId())
                 .isEqualTo(R.style.SuwAlertDialogThemeCompat_Light);
     }
+
+    @Test
+    public void onScan_whenLaunchFromDeferredSetup_shouldApplyLightTheme() {
+        ActivityController<WifiDppEnrolleeActivity> controller = Robolectric.buildActivity(
+                WifiDppEnrolleeActivity.class,
+                new Intent()
+                        .setAction(WifiDppEnrolleeActivity.ACTION_ENROLLEE_QR_CODE_SCANNER)
+                        .putExtra(WizardManagerHelper.EXTRA_IS_FIRST_RUN, true)
+                        .putExtra(WizardManagerHelper.EXTRA_IS_SETUP_FLOW, true)
+        );
+        controller.create();
+
+        Intent intent = controller.getIntent();
+        assertThat(intent.getBooleanExtra(WizardManagerHelper.EXTRA_IS_FIRST_RUN, false)).isTrue();
+        assertThat(intent.getBooleanExtra(WizardManagerHelper.EXTRA_IS_SETUP_FLOW, false)).isTrue();
+
+        assertThat(controller.get().getThemeResId()).
+                isEqualTo(R.style.LightTheme_SettingsBase_SetupWizard);
+    }
 }