diff --git a/components/support/ktx/build.gradle b/components/support/ktx/build.gradle
index 3618fed7351..14d00cc4bbc 100644
--- a/components/support/ktx/build.gradle
+++ b/components/support/ktx/build.gradle
@@ -52,6 +52,12 @@ dependencies {
testImplementation Dependencies.testing_coroutines
testImplementation Dependencies.testing_robolectric
testImplementation Dependencies.testing_mockito
+
+ androidTestImplementation project(':support-android-test')
+ androidTestImplementation Dependencies.androidx_test_core
+ androidTestImplementation Dependencies.androidx_test_runner
+ androidTestImplementation Dependencies.androidx_test_rules
+ androidTestImplementation Dependencies.androidx_test_junit
}
apply from: '../../../publish.gradle'
diff --git a/components/support/ktx/src/androidTest/AndroidManifest.xml b/components/support/ktx/src/androidTest/AndroidManifest.xml
new file mode 100644
index 00000000000..d526611a975
--- /dev/null
+++ b/components/support/ktx/src/androidTest/AndroidManifest.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
diff --git a/components/support/ktx/src/androidTest/java/mozilla/components/support/ktx/TestActivity.kt b/components/support/ktx/src/androidTest/java/mozilla/components/support/ktx/TestActivity.kt
new file mode 100644
index 00000000000..ad3d123c10b
--- /dev/null
+++ b/components/support/ktx/src/androidTest/java/mozilla/components/support/ktx/TestActivity.kt
@@ -0,0 +1,12 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+package mozilla.components.support.ktx
+
+import android.app.Activity
+
+/**
+ * Empty activity only to be used in UI tests.
+ */
+internal class TestActivity : Activity()
diff --git a/components/support/ktx/src/androidTest/java/mozilla/components/support/ktx/android/view/WindowKtTest.kt b/components/support/ktx/src/androidTest/java/mozilla/components/support/ktx/android/view/WindowKtTest.kt
new file mode 100644
index 00000000000..35d3ce32678
--- /dev/null
+++ b/components/support/ktx/src/androidTest/java/mozilla/components/support/ktx/android/view/WindowKtTest.kt
@@ -0,0 +1,57 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+package mozilla.components.support.ktx.android.view
+
+import android.graphics.Color
+import androidx.test.ext.junit.rules.ActivityScenarioRule
+import androidx.test.filters.SdkSuppress
+import mozilla.components.support.ktx.TestActivity
+import org.junit.Assert.assertFalse
+import org.junit.Assert.assertTrue
+import org.junit.Rule
+import org.junit.Test
+
+class WindowKtTest {
+ @get:Rule
+ internal val activityRule: ActivityScenarioRule = ActivityScenarioRule(TestActivity::class.java)
+
+ @SdkSuppress(minSdkVersion = 23)
+ @Test
+ fun whenALightColorIsAppliedToStatusBarThenSetIsAppearanceLightStatusBarsToTrue() {
+ activityRule.scenario.onActivity {
+ it.window.setStatusBarTheme(Color.WHITE)
+
+ assertTrue(it.window.getWindowInsetsController().isAppearanceLightStatusBars)
+ }
+ }
+
+ @Test
+ fun whenADarkColorIsAppliedToStatusBarThenSetIsAppearanceLightStatusBarsToFalse() {
+ activityRule.scenario.onActivity {
+ it.window.setStatusBarTheme(Color.BLACK)
+
+ assertFalse(it.window.getWindowInsetsController().isAppearanceLightStatusBars)
+ }
+ }
+
+ @SdkSuppress(minSdkVersion = 23)
+ @Test
+ fun whenALightColorIsAppliedToNavigationBarThemeThenSetIsAppearanceLightNavigationBarsToTrue() {
+ activityRule.scenario.onActivity {
+ it.window.setNavigationBarTheme(Color.WHITE)
+
+ assertTrue(it.window.getWindowInsetsController().isAppearanceLightNavigationBars)
+ }
+ }
+
+ @Test
+ fun whenADarkColorIsAppliedToNavigationBarThemeThenSetIsAppearanceLightNavigationBarsToFalse() {
+ activityRule.scenario.onActivity {
+ it.window.setNavigationBarTheme(Color.BLACK)
+
+ assertFalse(it.window.getWindowInsetsController().isAppearanceLightNavigationBars)
+ }
+ }
+}
diff --git a/components/support/ktx/src/main/java/mozilla/components/support/ktx/android/view/Window.kt b/components/support/ktx/src/main/java/mozilla/components/support/ktx/android/view/Window.kt
index e2eff49a3fb..b54a34f6e3e 100644
--- a/components/support/ktx/src/main/java/mozilla/components/support/ktx/android/view/Window.kt
+++ b/components/support/ktx/src/main/java/mozilla/components/support/ktx/android/view/Window.kt
@@ -15,24 +15,24 @@ import mozilla.components.support.utils.ColorUtils.isDark
* Colors the status bar.
* If the color is light enough, a light status bar with dark icons will be used.
*/
-fun Window.setStatusBarTheme(@ColorInt color: Int) {
+fun Window.setStatusBarTheme(@ColorInt toolbarColor: Int) {
getWindowInsetsController().isAppearanceLightStatusBars =
- isDark(color)
- statusBarColor = color
+ !isDark(toolbarColor)
+ statusBarColor = toolbarColor
}
/**
* Colors the navigation bar.
* If the color is light enough, a light navigation bar with dark icons will be used.
*/
-fun Window.setNavigationBarTheme(@ColorInt color: Int) {
+fun Window.setNavigationBarTheme(@ColorInt toolbarColor: Int) {
getWindowInsetsController().isAppearanceLightNavigationBars =
- isDark(color)
+ !isDark(toolbarColor)
if (SDK_INT >= Build.VERSION_CODES.P) {
navigationBarDividerColor = 0
}
- navigationBarColor = color
+ navigationBarColor = toolbarColor
}
/**
diff --git a/docs/changelog.md b/docs/changelog.md
index 5d3516324f3..04dc9a4526f 100644
--- a/docs/changelog.md
+++ b/docs/changelog.md
@@ -13,6 +13,9 @@ permalink: /changelog/
* **feature-qr**
* QRFeature now allows querying if scanning is in progress with a new `isScanInProgress` property. This helps deciding on whether to resume scanning by calling `scan` in a new `QRFeature` instance as it can happen if the process is restarted as a followup to the user updating system permissions for the app.
+* **support-ktx**:
+ * The colors of the icons from the status bar should be in contrast with the status bar background color [#1795650](https://bugzilla.mozilla.org/show_bug.cgi?id=1795650)
+
# 107.0.0
* [Commits](https://github.com/mozilla-mobile/android-components/compare/v106.0.0..v107.0.0)
* [Milestone](https://github.com/mozilla-mobile/android-components/milestone/154?closed=1)