Use system day/night to switch theme instead of from intent extra.

Use value-night to give theme instead of directly from intent extra when Setup day/nNight mode enabled and in Setup flow

Before:
<vision settings>
https://hsv.googleplex.com/4837266235064320
<wifi dialog>
https://hsv.googleplex.com/5687053981319168
<lock screen with disabling button>
https://hsv.googleplex.com/4843506419892224
<lock screen with enabling button>
https://hsv.googleplex.com/5650348922372096
<fingerprint intro>
https://hsv.googleplex.com/5133769046491136
<fingerprint touch>
https://hsv.googleplex.com/5681937198874624
<fingerprint left touch>
https://hsv.googleplex.com/5767441676238848
<squeeze release>
https://hsv.googleplex.com/6632476812247040

After:
<vision settings>
https://hsv.googleplex.com/6213298875793408
<wifi dialog>
https://hsv.googleplex.com/6025790804197376
<lock screen with disabling button>
https://hsv.googleplex.com/5747461219942400
<lock screen with enabling button>
https://hsv.googleplex.com/5766700781797376
<fingerprint intro>
https://hsv.googleplex.com/6751334529236992
<fingerprint touch>
https://hsv.googleplex.com/5625963293442048
<fingerprint left touch>
https://hsv.googleplex.com/4518139360444416
<squeeze release>
https://hsv.googleplex.com/5220720579706880

Bug: 169734655
Test: robo test
Change-Id: I4aab843e28a932c7b823f36f1d8df1e5b2341f4e
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 97e701a..82088b2 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -103,7 +103,7 @@
     <uses-permission android:name="android.permission.INSTALL_DYNAMIC_SYSTEM" />
     <uses-permission android:name="android.permission.BIND_CELL_BROADCAST_SERVICE" />
     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
-    
+
     <application android:label="@string/settings_label"
             android:icon="@drawable/ic_launcher_settings"
             android:theme="@style/Theme.Settings"
diff --git a/res/values-night/themes_suw.xml b/res/values-night/themes_suw.xml
new file mode 100644
index 0000000..16aba76
--- /dev/null
+++ b/res/values-night/themes_suw.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2020 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.
+  -->
+
+<!-- SUW related themes -->
+<resources>
+    <!-- DayNight themes -->
+    <style name="GlifTheme.DayNight" parent="GlifTheme" />
+    <style name="GlifV2Theme.DayNight" parent="GlifV2Theme" />
+    <style name="GlifV3Theme.DayNight" parent="GlifV3Theme" />
+    <style name="GlifV2Theme.DayNight.Transparent" parent="GlifV2Theme.Transparent" />
+    <style name="GlifV3Theme.DayNight.Transparent" parent="GlifV3Theme.Transparent" />
+    <style name="SetupWizardTheme.DayNight.Transparent" parent="SetupWizardTheme.Transparent" />
+    <style name="SuwAlertDialogThemeCompat.DayNight" parent="SuwAlertDialogThemeCompat" />
+</resources>
diff --git a/res/values/themes_suw.xml b/res/values/themes_suw.xml
index 3c171a1..98ab28d 100644
--- a/res/values/themes_suw.xml
+++ b/res/values/themes_suw.xml
@@ -211,4 +211,13 @@
         <item name="colorAccent">@*android:color/accent_device_default_light</item>
         <item name="dialogCornerRadius">@*android:dimen/config_dialogCornerRadius</item>
     </style>
-</resources>
+
+    <!-- DayNight themes -->
+    <style name="GlifTheme.DayNight" parent="GlifTheme.Light" />
+    <style name="GlifV2Theme.DayNight" parent="GlifV2Theme.Light" />
+    <style name="GlifV3Theme.DayNight" parent="GlifV3Theme.Light" />
+    <style name="GlifV2Theme.DayNight.Transparent" parent="GlifV2Theme.Light.Transparent" />
+    <style name="GlifV3Theme.DayNight.Transparent" parent="GlifV3Theme.Light.Transparent" />
+    <style name="SetupWizardTheme.DayNight.Transparent" parent="SetupWizardTheme.Light.Transparent" />
+    <style name="SuwAlertDialogThemeCompat.DayNight" parent="SuwAlertDialogThemeCompat.Light" />
+</resources>
\ No newline at end of file
diff --git a/src/com/android/settings/EncryptionInterstitial.java b/src/com/android/settings/EncryptionInterstitial.java
index c65cda7..4ab197d 100644
--- a/src/com/android/settings/EncryptionInterstitial.java
+++ b/src/com/android/settings/EncryptionInterstitial.java
@@ -62,8 +62,8 @@
 
     @Override
     protected void onApplyThemeResource(Resources.Theme theme, int resid, boolean first) {
-        resid = SetupWizardUtils.getTheme(getIntent());
-        super.onApplyThemeResource(theme, resid, first);
+        final int new_resid = SetupWizardUtils.getTheme(this, getIntent());
+        super.onApplyThemeResource(theme, new_resid, first);
     }
 
     @Override
diff --git a/src/com/android/settings/SetupWizardUtils.java b/src/com/android/settings/SetupWizardUtils.java
index bce6f3f..e0292ef 100644
--- a/src/com/android/settings/SetupWizardUtils.java
+++ b/src/com/android/settings/SetupWizardUtils.java
@@ -19,6 +19,7 @@
 import static com.google.android.setupcompat.util.WizardManagerHelper.EXTRA_IS_FIRST_RUN;
 import static com.google.android.setupcompat.util.WizardManagerHelper.EXTRA_IS_SETUP_FLOW;
 
+import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
 import android.sysprop.SetupWizardProperties;
@@ -39,25 +40,39 @@
         return theme;
     }
 
-    public static int getTheme(Intent intent) {
+    public static int getTheme(Context context, Intent intent) {
         String theme = getThemeString(intent);
         // TODO(yukl): Move to ThemeResolver and add any additional required attributes in
         // onApplyThemeResource using Theme overlays
         if (theme != null) {
             if (WizardManagerHelper.isAnySetupWizard(intent)) {
-                switch (theme) {
-                    case ThemeHelper.THEME_GLIF_V3_LIGHT:
-                        return R.style.GlifV3Theme_Light;
-                    case ThemeHelper.THEME_GLIF_V3:
-                        return R.style.GlifV3Theme;
-                    case ThemeHelper.THEME_GLIF_V2_LIGHT:
-                        return R.style.GlifV2Theme_Light;
-                    case ThemeHelper.THEME_GLIF_V2:
-                        return R.style.GlifV2Theme;
-                    case ThemeHelper.THEME_GLIF_LIGHT:
-                        return R.style.GlifTheme_Light;
-                    case ThemeHelper.THEME_GLIF:
-                        return R.style.GlifTheme;
+                if (ThemeHelper.isSetupWizardDayNightEnabled(context)) {
+                    switch (theme) {
+                        case ThemeHelper.THEME_GLIF_V3_LIGHT:
+                        case ThemeHelper.THEME_GLIF_V3:
+                            return R.style.GlifV3Theme_DayNight;
+                        case ThemeHelper.THEME_GLIF_V2_LIGHT:
+                        case ThemeHelper.THEME_GLIF_V2:
+                            return R.style.GlifV2Theme_DayNight;
+                        case ThemeHelper.THEME_GLIF_LIGHT:
+                        case ThemeHelper.THEME_GLIF:
+                            return R.style.GlifTheme_DayNight;
+                    }
+                } else {
+                    switch (theme) {
+                        case ThemeHelper.THEME_GLIF_V3_LIGHT:
+                            return R.style.GlifV3Theme_Light;
+                        case ThemeHelper.THEME_GLIF_V3:
+                            return R.style.GlifV3Theme;
+                        case ThemeHelper.THEME_GLIF_V2_LIGHT:
+                            return R.style.GlifV2Theme_Light;
+                        case ThemeHelper.THEME_GLIF_V2:
+                            return R.style.GlifV2Theme;
+                        case ThemeHelper.THEME_GLIF_LIGHT:
+                            return R.style.GlifTheme_Light;
+                        case ThemeHelper.THEME_GLIF:
+                            return R.style.GlifTheme;
+                    }
                 }
             } else {
                 switch (theme) {
@@ -76,17 +91,30 @@
         return R.style.GlifTheme;
     }
 
-    public static int getTransparentTheme(Intent intent) {
-        final int suwTheme = getTheme(intent);
-        int transparentTheme = R.style.GlifV2Theme_Light_Transparent;
-        if (suwTheme == R.style.GlifV3Theme) {
-            transparentTheme = R.style.GlifV3Theme_Transparent;
+    public static int getTransparentTheme(Context context, Intent intent) {
+        int transparentTheme;
+        final int suwTheme = getTheme(context, intent);
+        if (ThemeHelper.isSetupWizardDayNightEnabled(context)) {
+            transparentTheme = R.style.GlifV2Theme_DayNight_Transparent;
+        } else {
+            transparentTheme = R.style.GlifV2Theme_Light_Transparent;
+        }
+        if (suwTheme == R.style.GlifV3Theme_DayNight) {
+            transparentTheme = R.style.GlifV3Theme_DayNight_Transparent;
         } else if (suwTheme == R.style.GlifV3Theme_Light) {
             transparentTheme = R.style.GlifV3Theme_Light_Transparent;
-        } else if (suwTheme == R.style.GlifV2Theme) {
-            transparentTheme = R.style.GlifV2Theme_Transparent;
+        } else if (suwTheme == R.style.GlifV2Theme_DayNight) {
+            transparentTheme = R.style.GlifV2Theme_DayNight_Transparent;
+        } else if (suwTheme == R.style.GlifV2Theme_Light) {
+            transparentTheme = R.style.GlifV2Theme_Light_Transparent;
+        } else if (suwTheme == R.style.GlifTheme_DayNight) {
+            transparentTheme = R.style.SetupWizardTheme_DayNight_Transparent;
         } else if (suwTheme == R.style.GlifTheme_Light) {
             transparentTheme = R.style.SetupWizardTheme_Light_Transparent;
+        } else if (suwTheme == R.style.GlifV3Theme) {
+            transparentTheme = R.style.GlifV3Theme_Transparent;
+        } else if (suwTheme == R.style.GlifV2Theme) {
+            transparentTheme = R.style.GlifV2Theme_Transparent;
         } else if (suwTheme == R.style.GlifTheme) {
             transparentTheme = R.style.SetupWizardTheme_Transparent;
         }
diff --git a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java
index 1a6c8e8..2b9ca48 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java
@@ -17,6 +17,7 @@
 package com.android.settings.accessibility;
 
 import android.content.ComponentName;
+import android.content.res.Resources;
 import android.os.Bundle;
 import android.util.Log;
 import android.view.Menu;
@@ -122,4 +123,11 @@
             finish();
         }
     }
+
+    @Override
+    protected void onApplyThemeResource(Resources.Theme theme, int resid, boolean first) {
+        final int new_resid = SetupWizardUtils.getTheme(this, getIntent());
+        theme.applyStyle(R.style.SetupWizardPartnerResource, true);
+        super.onApplyThemeResource(theme, new_resid, first);
+    }
 }
diff --git a/src/com/android/settings/biometrics/BiometricEnrollActivity.java b/src/com/android/settings/biometrics/BiometricEnrollActivity.java
index 791efa7..4822607 100644
--- a/src/com/android/settings/biometrics/BiometricEnrollActivity.java
+++ b/src/com/android/settings/biometrics/BiometricEnrollActivity.java
@@ -203,9 +203,9 @@
 
     @Override
     protected void onApplyThemeResource(Resources.Theme theme, int resid, boolean first) {
-        resid = SetupWizardUtils.getTheme(getIntent());
+        final int new_resid = SetupWizardUtils.getTheme(this, getIntent());
         theme.applyStyle(R.style.SetupWizardPartnerResource, true);
-        super.onApplyThemeResource(theme, resid, first);
+        super.onApplyThemeResource(theme, new_resid, first);
     }
 
     @Override
diff --git a/src/com/android/settings/biometrics/BiometricEnrollBase.java b/src/com/android/settings/biometrics/BiometricEnrollBase.java
index 1d9d07b..7936f66 100644
--- a/src/com/android/settings/biometrics/BiometricEnrollBase.java
+++ b/src/com/android/settings/biometrics/BiometricEnrollBase.java
@@ -116,9 +116,9 @@
 
     @Override
     protected void onApplyThemeResource(Resources.Theme theme, int resid, boolean first) {
-        resid = SetupWizardUtils.getTheme(getIntent());
+        final int new_resid = SetupWizardUtils.getTheme(this, getIntent());
         theme.applyStyle(R.style.SetupWizardPartnerResource, true);
-        super.onApplyThemeResource(theme, resid, first);
+        super.onApplyThemeResource(theme, new_resid, first);
     }
 
     @Override
diff --git a/src/com/android/settings/notification/RedactionInterstitial.java b/src/com/android/settings/notification/RedactionInterstitial.java
index ac648a5..a17298f 100644
--- a/src/com/android/settings/notification/RedactionInterstitial.java
+++ b/src/com/android/settings/notification/RedactionInterstitial.java
@@ -62,8 +62,8 @@
 
     @Override
     protected void onApplyThemeResource(Resources.Theme theme, int resid, boolean first) {
-        resid = SetupWizardUtils.getTheme(getIntent());
-        super.onApplyThemeResource(theme, resid, first);
+        final int new_resid = SetupWizardUtils.getTheme(this, getIntent());
+        super.onApplyThemeResource(theme, new_resid, first);
     }
 
     @Override
diff --git a/src/com/android/settings/password/ChooseLockPassword.java b/src/com/android/settings/password/ChooseLockPassword.java
index e393af5..a73b73a 100644
--- a/src/com/android/settings/password/ChooseLockPassword.java
+++ b/src/com/android/settings/password/ChooseLockPassword.java
@@ -105,8 +105,8 @@
 
     @Override
     protected void onApplyThemeResource(Theme theme, int resid, boolean first) {
-        resid = SetupWizardUtils.getTheme(getIntent());
-        super.onApplyThemeResource(theme, resid, first);
+        final int new_resid = SetupWizardUtils.getTheme(this, getIntent());
+        super.onApplyThemeResource(theme, new_resid, first);
     }
 
     public static class IntentBuilder {
diff --git a/src/com/android/settings/password/ChooseLockPattern.java b/src/com/android/settings/password/ChooseLockPattern.java
index ff9bf1a..6e9cf98 100644
--- a/src/com/android/settings/password/ChooseLockPattern.java
+++ b/src/com/android/settings/password/ChooseLockPattern.java
@@ -94,8 +94,8 @@
 
     @Override
     protected void onApplyThemeResource(Theme theme, int resid, boolean first) {
-        resid = SetupWizardUtils.getTheme(getIntent());
-        super.onApplyThemeResource(theme, resid, first);
+        final int new_resid = SetupWizardUtils.getTheme(this, getIntent());
+        super.onApplyThemeResource(theme, new_resid, first);
     }
 
     public static class IntentBuilder {
diff --git a/src/com/android/settings/password/ConfirmDeviceCredentialBaseActivity.java b/src/com/android/settings/password/ConfirmDeviceCredentialBaseActivity.java
index 383ae4f..3ecff58 100644
--- a/src/com/android/settings/password/ConfirmDeviceCredentialBaseActivity.java
+++ b/src/com/android/settings/password/ConfirmDeviceCredentialBaseActivity.java
@@ -64,14 +64,14 @@
             return;
         }
         if (UserManager.get(this).isManagedProfile(credentialOwnerUserId)) {
-            setTheme(SetupWizardUtils.getTheme(getIntent()));
+            setTheme(SetupWizardUtils.getTheme(this, getIntent()));
             mConfirmCredentialTheme = ConfirmCredentialTheme.WORK;
         } else if (getIntent().getBooleanExtra(
                 ConfirmDeviceCredentialBaseFragment.DARK_THEME, false)) {
             setTheme(R.style.Theme_ConfirmDeviceCredentialsDark);
             mConfirmCredentialTheme = ConfirmCredentialTheme.DARK;
         } else {
-            setTheme(SetupWizardUtils.getTheme(getIntent()));
+            setTheme(SetupWizardUtils.getTheme(this, getIntent()));
             mConfirmCredentialTheme = ConfirmCredentialTheme.NORMAL;
         }
         super.onCreate(savedState);
diff --git a/src/com/android/settings/password/SetupChooseLockGeneric.java b/src/com/android/settings/password/SetupChooseLockGeneric.java
index 5a0a2a6..7818f0d 100644
--- a/src/com/android/settings/password/SetupChooseLockGeneric.java
+++ b/src/com/android/settings/password/SetupChooseLockGeneric.java
@@ -31,7 +31,6 @@
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.LinearLayout;
 
 import androidx.fragment.app.Fragment;
 import androidx.preference.Preference;
@@ -42,8 +41,6 @@
 import com.android.settings.R;
 import com.android.settings.SetupEncryptionInterstitial;
 import com.android.settings.SetupWizardUtils;
-import com.android.settings.biometrics.BiometricEnrollActivity;
-import com.android.settings.biometrics.fingerprint.SetupFingerprintEnrollFindSensor;
 import com.android.settings.utils.SettingsDividerItemDecoration;
 
 import com.google.android.setupdesign.GlifPreferenceLayout;
@@ -72,8 +69,8 @@
 
     @Override
     protected void onApplyThemeResource(Resources.Theme theme, int resid, boolean first) {
-        resid = SetupWizardUtils.getTheme(getIntent());
-        super.onApplyThemeResource(theme, resid, first);
+        final int new_resid = SetupWizardUtils.getTheme(this, getIntent());
+        super.onApplyThemeResource(theme, new_resid, first);
     }
 
     @Override
diff --git a/src/com/android/settings/wifi/WifiDialogActivity.java b/src/com/android/settings/wifi/WifiDialogActivity.java
index 754f99d..000ed3e 100644
--- a/src/com/android/settings/wifi/WifiDialogActivity.java
+++ b/src/com/android/settings/wifi/WifiDialogActivity.java
@@ -45,6 +45,7 @@
 import com.android.wifitrackerlib.WifiEntry;
 
 import com.google.android.setupcompat.util.WizardManagerHelper;
+import com.google.android.setupdesign.util.ThemeHelper;
 
 import java.time.Clock;
 import java.time.ZoneOffset;
@@ -105,7 +106,7 @@
     protected void onCreate(Bundle savedInstanceState) {
         mIntent = getIntent();
         if (WizardManagerHelper.isSetupWizardIntent(mIntent)) {
-            setTheme(SetupWizardUtils.getTransparentTheme(mIntent));
+            setTheme(SetupWizardUtils.getTransparentTheme(this, mIntent));
         }
 
         super.onCreate(savedInstanceState);
@@ -151,13 +152,16 @@
         }
 
         if (WizardManagerHelper.isAnySetupWizard(getIntent())) {
+            final int targetStyle = ThemeHelper.isSetupWizardDayNightEnabled(this)
+                    ? R.style.SuwAlertDialogThemeCompat_DayNight :
+                    R.style.SuwAlertDialogThemeCompat_Light;
             if (mIsWifiTrackerLib) {
                 mDialog2 = WifiDialog2.createModal(this, this,
                         mNetworkDetailsTracker.getWifiEntry(),
-                        WifiConfigUiBase2.MODE_CONNECT, R.style.SuwAlertDialogThemeCompat_Light);
+                        WifiConfigUiBase2.MODE_CONNECT, targetStyle);
             } else {
                 mDialog = WifiDialog.createModal(this, this, mAccessPoint,
-                        WifiConfigUiBase.MODE_CONNECT, R.style.SuwAlertDialogThemeCompat_Light);
+                        WifiConfigUiBase.MODE_CONNECT, targetStyle);
             }
         } else {
             if (mIsWifiTrackerLib) {
diff --git a/src/com/android/settings/wifi/dpp/WifiDppBaseActivity.java b/src/com/android/settings/wifi/dpp/WifiDppBaseActivity.java
index a7daee6..499f66c 100644
--- a/src/com/android/settings/wifi/dpp/WifiDppBaseActivity.java
+++ b/src/com/android/settings/wifi/dpp/WifiDppBaseActivity.java
@@ -45,8 +45,8 @@
 
     @Override
     protected void onApplyThemeResource(Resources.Theme theme, int resid, boolean first) {
-        resid = SetupWizardUtils.getTheme(getIntent());
+        final int new_resid = SetupWizardUtils.getTheme(this, getIntent());
         theme.applyStyle(R.style.SetupWizardPartnerResource, /* force */ true);
-        super.onApplyThemeResource(theme, resid, first);
+        super.onApplyThemeResource(theme, new_resid, first);
     }
 }
diff --git a/tests/robotests/src/com/android/settings/SetupWizardUtilsTest.java b/tests/robotests/src/com/android/settings/SetupWizardUtilsTest.java
index 5f4f31b..5fddb80 100644
--- a/tests/robotests/src/com/android/settings/SetupWizardUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/SetupWizardUtilsTest.java
@@ -18,20 +18,42 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+
+import android.content.ContentProvider;
+import android.content.ContentValues;
+import android.content.Context;
 import android.content.Intent;
+import android.database.Cursor;
+import android.net.Uri;
 import android.os.Bundle;
 import android.sysprop.SetupWizardProperties;
+import android.text.TextUtils;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.test.core.app.ApplicationProvider;
+
+import com.google.android.setupcompat.partnerconfig.PartnerConfigHelper;
 import com.google.android.setupcompat.util.WizardManagerHelper;
 import com.google.android.setupdesign.util.ThemeHelper;
 
+import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.robolectric.Robolectric;
 import org.robolectric.RobolectricTestRunner;
 
 @RunWith(RobolectricTestRunner.class)
 public class SetupWizardUtilsTest {
 
+    private Context mContext;
+
+    @Before
+    public void setup() {
+        PartnerConfigHelper.resetInstance();
+        mContext = ApplicationProvider.getApplicationContext();
+    }
+
     @Test
     public void testCopySetupExtras() {
         Intent fromIntent = new Intent();
@@ -66,12 +88,13 @@
     }
 
     @Test
-    public void testGetTheme_withIntentExtra_shouldReturnExtraTheme() {
+    public void testGetTheme_withIntentExtra_shouldReturnTheme() {
         SetupWizardProperties.theme(ThemeHelper.THEME_GLIF);
         Intent intent = createSetupWizardIntent();
         intent.putExtra(WizardManagerHelper.EXTRA_THEME, ThemeHelper.THEME_GLIF_V2);
 
-        assertThat(SetupWizardUtils.getTheme(intent)).isEqualTo(R.style.GlifV2Theme);
+        assertThat(SetupWizardUtils.getTheme(mContext, intent))
+                .isEqualTo(R.style.GlifV2Theme);
     }
 
     @Test
@@ -79,26 +102,109 @@
         SetupWizardProperties.theme(ThemeHelper.THEME_GLIF_V2_LIGHT);
         Intent intent = createSetupWizardIntent();
 
-        assertThat(SetupWizardUtils.getTheme(intent)).isEqualTo(R.style.GlifV2Theme_Light);
+        assertThat(SetupWizardUtils.getTheme(mContext, intent))
+                .isEqualTo(R.style.GlifV2Theme_Light);
     }
 
     @Test
-    public void testGetTheme_glifV3Light_shouldReturnThemeResource() {
+    public void testGetTheme_whenSuwDayNightEnabledAndWithIntentExtra_shouldReturnDayNightTheme() {
+        FakePartnerContentProvider provider =
+                Robolectric.setupContentProvider(
+                        FakePartnerContentProvider.class, "com.google.android.setupwizard.partner");
+        provider.injectFakeDayNightEnabledResult(true);
+        SetupWizardProperties.theme(ThemeHelper.THEME_GLIF_V2_LIGHT);
+        Intent intent = createSetupWizardIntent();
+        intent.putExtra(WizardManagerHelper.EXTRA_THEME, ThemeHelper.THEME_GLIF_V2);
+
+        assertThat(SetupWizardUtils.getTheme(mContext, intent))
+                .isEqualTo(R.style.GlifV2Theme_DayNight);
+    }
+
+    @Test
+    public void testGetTheme_glifV3Light_shouldReturnLightTheme() {
         SetupWizardProperties.theme(ThemeHelper.THEME_GLIF_V3_LIGHT);
         Intent intent = createSetupWizardIntent();
 
-        assertThat(SetupWizardUtils.getTheme(intent)).isEqualTo(R.style.GlifV3Theme_Light);
-        assertThat(SetupWizardUtils.getTransparentTheme(intent))
+        assertThat(SetupWizardUtils.getTheme(mContext, intent))
+                .isEqualTo(R.style.GlifV3Theme_Light);
+        assertThat(SetupWizardUtils.getTransparentTheme(mContext, intent))
                 .isEqualTo(R.style.GlifV3Theme_Light_Transparent);
     }
 
     @Test
-    public void testGetTheme_nonSuw_shouldReturnDayNightTheme() {
+    public void testGetTheme_glifV3_shouldReturnTheme() {
+        SetupWizardProperties.theme(ThemeHelper.THEME_GLIF_V3);
+        Intent intent = createSetupWizardIntent();
+
+        assertThat(SetupWizardUtils.getTheme(mContext, intent))
+                .isEqualTo(R.style.GlifV3Theme);
+        assertThat(SetupWizardUtils.getTransparentTheme(mContext, intent))
+                .isEqualTo(R.style.GlifV3Theme_Transparent);
+    }
+
+    @Test
+    public void testGetTheme_whenSuwDayNightDisabledAndGlifV2_shouldReturnLightTheme() {
+        FakePartnerContentProvider provider =
+                Robolectric.setupContentProvider(
+                        FakePartnerContentProvider.class, "com.google.android.setupwizard.partner");
+        provider.injectFakeDayNightEnabledResult(false);
+        SetupWizardProperties.theme(ThemeHelper.THEME_GLIF_V2_LIGHT);
+        Intent intent = createSetupWizardIntent();
+
+        assertThat(SetupWizardUtils.getTheme(mContext, intent))
+                .isEqualTo(R.style.GlifV2Theme_Light);
+    }
+
+    @Test
+    public void testGetTheme_whenSuwDayNightEnabledAndGlifV2_shouldReturnDayNightTheme() {
+        FakePartnerContentProvider provider =
+                Robolectric.setupContentProvider(
+                        FakePartnerContentProvider.class, "com.google.android.setupwizard.partner");
+        provider.injectFakeDayNightEnabledResult(true);
+        SetupWizardProperties.theme(ThemeHelper.THEME_GLIF_V2_LIGHT);
+        Intent intent = createSetupWizardIntent();
+
+        assertThat(SetupWizardUtils.getTheme(mContext, intent))
+                .isEqualTo(R.style.GlifV2Theme_DayNight);
+    }
+
+    @Test
+    public void testGetTheme_whenSuwDayNightDisabledAndGlifV3_shouldReturnTheme() {
+        FakePartnerContentProvider provider =
+                Robolectric.setupContentProvider(
+                        FakePartnerContentProvider.class, "com.google.android.setupwizard.partner");
+        provider.injectFakeDayNightEnabledResult(false);
+        SetupWizardProperties.theme(ThemeHelper.THEME_GLIF_V3);
+        Intent intent = createSetupWizardIntent();
+
+        assertThat(SetupWizardUtils.getTheme(mContext, intent))
+                .isEqualTo(R.style.GlifV3Theme);
+        assertThat(SetupWizardUtils.getTransparentTheme(mContext, intent))
+                .isEqualTo(R.style.GlifV3Theme_Transparent);
+    }
+
+    @Test
+    public void testGetTheme_whenSuwDayNightEnabledAndGlifV3_shouldReturnDayNightTheme() {
+        FakePartnerContentProvider provider =
+                Robolectric.setupContentProvider(
+                        FakePartnerContentProvider.class, "com.google.android.setupwizard.partner");
+        provider.injectFakeDayNightEnabledResult(true);
+        SetupWizardProperties.theme(ThemeHelper.THEME_GLIF_V3);
+        Intent intent = createSetupWizardIntent();
+
+        assertThat(SetupWizardUtils.getTheme(mContext, intent))
+                .isEqualTo(R.style.GlifV3Theme_DayNight);
+        assertThat(SetupWizardUtils.getTransparentTheme(mContext, intent))
+                .isEqualTo(R.style.GlifV3Theme_DayNight_Transparent);
+    }
+
+    @Test
+    public void testGetTheme_nonSuw_shouldReturnTheme() {
         SetupWizardProperties.theme(ThemeHelper.THEME_GLIF_V3_LIGHT);
         Intent intent = new Intent();
 
-        assertThat(SetupWizardUtils.getTheme(intent)).isEqualTo(R.style.GlifV3Theme);
-        assertThat(SetupWizardUtils.getTransparentTheme(intent))
+        assertThat(SetupWizardUtils.getTheme(mContext, intent)).isEqualTo(R.style.GlifV3Theme);
+        assertThat(SetupWizardUtils.getTransparentTheme(mContext, intent))
                 .isEqualTo(R.style.GlifV3Theme_Transparent);
     }
 
@@ -107,4 +213,65 @@
                 .putExtra(WizardManagerHelper.EXTRA_IS_SETUP_FLOW, true)
                 .putExtra(WizardManagerHelper.EXTRA_IS_FIRST_RUN, true);
     }
+
+    private static final class FakePartnerContentProvider extends ContentProvider {
+
+        private final Bundle mFakeProviderDayNightEnabledResultBundle = new Bundle();
+
+        @Override
+        public boolean onCreate() {
+            return true;
+        }
+
+        @Override
+        public Cursor query(
+                @NonNull Uri uri,
+                @Nullable String[] projection,
+                @Nullable String selection,
+                @Nullable String[] selectionArgs,
+                @Nullable String sortOrder) {
+            return null;
+        }
+
+        @Nullable
+        @Override
+        public String getType(@NonNull Uri uri) {
+            return null;
+        }
+
+        @Nullable
+        @Override
+        public Uri insert(@NonNull Uri uri, @Nullable ContentValues values) {
+            return null;
+        }
+
+        @Override
+        public int delete(
+                @NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) {
+            return 0;
+        }
+
+        @Override
+        public int update(
+                @NonNull Uri uri,
+                @Nullable ContentValues values,
+                @Nullable String selection,
+                @Nullable String[] selectionArgs) {
+            return 0;
+        }
+
+        @Override
+        public Bundle call(String method, String arg, Bundle extras) {
+            if (TextUtils.equals(method, "isSuwDayNightEnabled")) {
+                return mFakeProviderDayNightEnabledResultBundle;
+            }
+            return null;
+        }
+
+        public FakePartnerContentProvider injectFakeDayNightEnabledResult(boolean dayNightEnabled) {
+            mFakeProviderDayNightEnabledResultBundle.putBoolean(
+                    "isSuwDayNightEnabled", dayNightEnabled);
+            return this;
+        }
+    }
 }