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;
+ }
+ }
}