[fenix] For https://github.com/mozilla-mobile/fenix/issues/4118 - Creates setting for auto closing tabs
parent
0c03651086
commit
b8e2bfebd4
@ -0,0 +1,58 @@
|
|||||||
|
/* 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/. */
|
||||||
|
|
||||||
|
@file:Suppress("TooManyFunctions")
|
||||||
|
|
||||||
|
package org.mozilla.fenix.ui.robots
|
||||||
|
|
||||||
|
import androidx.test.espresso.Espresso.onView
|
||||||
|
import androidx.test.espresso.action.ViewActions
|
||||||
|
import androidx.test.espresso.assertion.ViewAssertions
|
||||||
|
import androidx.test.espresso.matcher.ViewMatchers
|
||||||
|
import androidx.test.espresso.matcher.ViewMatchers.withText
|
||||||
|
import androidx.test.platform.app.InstrumentationRegistry
|
||||||
|
import androidx.test.uiautomator.UiDevice
|
||||||
|
import org.hamcrest.CoreMatchers.allOf
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implementation of Robot Pattern for the settings Tabs sub menu.
|
||||||
|
*/
|
||||||
|
class SettingsSubMenuTabsRobot {
|
||||||
|
|
||||||
|
fun verifyOptions() = assertOptions()
|
||||||
|
|
||||||
|
class Transition {
|
||||||
|
val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
||||||
|
|
||||||
|
fun goBack(interact: SettingsRobot.() -> Unit): SettingsRobot.Transition {
|
||||||
|
mDevice.waitForIdle()
|
||||||
|
goBackButton().perform(ViewActions.click())
|
||||||
|
|
||||||
|
SettingsRobot().interact()
|
||||||
|
return SettingsRobot.Transition()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun assertOptions() {
|
||||||
|
afterOneDayToggle()
|
||||||
|
.check(ViewAssertions.matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
manualToggle()
|
||||||
|
.check(ViewAssertions.matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
afterOneWeekToggle()
|
||||||
|
.check(ViewAssertions.matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
afterOneMonthToggle()
|
||||||
|
.check(ViewAssertions.matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun manualToggle() = onView(withText("Manually"))
|
||||||
|
|
||||||
|
private fun afterOneDayToggle() = onView(withText("After one day"))
|
||||||
|
|
||||||
|
private fun afterOneWeekToggle() = onView(withText("After one week"))
|
||||||
|
|
||||||
|
private fun afterOneMonthToggle() = onView(withText("After one month"))
|
||||||
|
|
||||||
|
private fun goBackButton() =
|
||||||
|
onView(allOf(ViewMatchers.withContentDescription("Navigate up")))
|
@ -0,0 +1,48 @@
|
|||||||
|
/* 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 org.mozilla.fenix.settings
|
||||||
|
|
||||||
|
import android.os.Bundle
|
||||||
|
import androidx.preference.PreferenceFragmentCompat
|
||||||
|
import org.mozilla.fenix.R
|
||||||
|
import org.mozilla.fenix.ext.showToolbar
|
||||||
|
import org.mozilla.fenix.utils.view.addToRadioGroup
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Lets the user customize auto closing tabs.
|
||||||
|
*/
|
||||||
|
class CloseTabsSettingsFragment : PreferenceFragmentCompat() {
|
||||||
|
private lateinit var radioManual: RadioButtonPreference
|
||||||
|
private lateinit var radioOneDay: RadioButtonPreference
|
||||||
|
private lateinit var radioOneWeek: RadioButtonPreference
|
||||||
|
private lateinit var radioOneMonth: RadioButtonPreference
|
||||||
|
|
||||||
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||||
|
setPreferencesFromResource(R.xml.close_tabs_preferences, rootKey)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onResume() {
|
||||||
|
super.onResume()
|
||||||
|
showToolbar(getString(R.string.preferences_close_tabs))
|
||||||
|
setupPreferences()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setupPreferences() {
|
||||||
|
radioManual = requirePreference(R.string.pref_key_close_tabs_manually)
|
||||||
|
radioOneDay = requirePreference(R.string.pref_key_close_tabs_after_one_day)
|
||||||
|
radioOneWeek = requirePreference(R.string.pref_key_close_tabs_after_one_week)
|
||||||
|
radioOneMonth = requirePreference(R.string.pref_key_close_tabs_after_one_month)
|
||||||
|
setupRadioGroups()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setupRadioGroups() {
|
||||||
|
addToRadioGroup(
|
||||||
|
radioManual,
|
||||||
|
radioOneDay,
|
||||||
|
radioOneMonth,
|
||||||
|
radioOneWeek
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- 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/. -->
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24">
|
||||||
|
<path
|
||||||
|
android:pathData="M15.22 22H5.78A3.78 3.78 0 0 1 2 18.22V8.78C2 6.69 3.7 5 5.78 5h9.44C17.31 5 19 6.7 19 8.78v9.44c0 2-1.7 3.78-3.78 3.78zM5.86 7C4.83 7 4 7.83 4 8.86v9.28C4 19.17 4.83 20 5.86 20h9.28c1 0 1.86-0.83 1.86-1.86V8.86C17 8 16.17 7 15 7H6zM6 4c0-1.1 1-2 2-2h8a6 6 0 0 1 6 6v0L22 16a2 2 0 0 1-2 2L20 8V8a4 4 0 0 0-4-4H6z"
|
||||||
|
android:fillColor="?primaryText" />
|
||||||
|
</vector>
|
@ -0,0 +1,25 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- 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/. -->
|
||||||
|
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<org.mozilla.fenix.settings.RadioButtonPreference
|
||||||
|
android:defaultValue="true"
|
||||||
|
android:key="@string/pref_key_close_tabs_manually"
|
||||||
|
android:title="@string/close_tabs_manually" />
|
||||||
|
|
||||||
|
<org.mozilla.fenix.settings.RadioButtonPreference
|
||||||
|
android:defaultValue="false"
|
||||||
|
android:key="@string/pref_key_close_tabs_after_one_day"
|
||||||
|
android:title="@string/close_tabs_after_one_day" />
|
||||||
|
|
||||||
|
<org.mozilla.fenix.settings.RadioButtonPreference
|
||||||
|
android:defaultValue="false"
|
||||||
|
android:key="@string/pref_key_close_tabs_after_one_week"
|
||||||
|
android:title="@string/close_tabs_after_one_week" />
|
||||||
|
|
||||||
|
<org.mozilla.fenix.settings.RadioButtonPreference
|
||||||
|
android:defaultValue="false"
|
||||||
|
android:key="@string/pref_key_close_tabs_after_one_month"
|
||||||
|
android:title="@string/close_tabs_after_one_month" />
|
||||||
|
</androidx.preference.PreferenceScreen>
|
Loading…
Reference in New Issue