Copione merged onto master
continuous-integration/drone/push Build is failing
Details
continuous-integration/drone/push Build is failing
Details
commit
3ab24baa82
|
@ -20,7 +20,7 @@ import org.mozilla.fenix.gradle.tasks.LintUnitTestRunner
|
||||||
import static org.gradle.api.tasks.testing.TestResult.ResultType
|
import static org.gradle.api.tasks.testing.TestResult.ResultType
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 28
|
compileSdkVersion Config.compileSdkVersion
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "org.mozilla"
|
applicationId "org.mozilla"
|
||||||
minSdkVersion Config.minSdkVersion
|
minSdkVersion Config.minSdkVersion
|
||||||
|
|
|
@ -9,7 +9,7 @@ import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.preference.PreferenceManager
|
import androidx.preference.PreferenceManager
|
||||||
import androidx.test.espresso.Espresso.onView
|
import androidx.test.espresso.Espresso.onView
|
||||||
import androidx.test.espresso.ViewAction
|
import androidx.test.espresso.ViewAction
|
||||||
import androidx.test.espresso.action.CoordinatesProvider
|
import androidx.test.espresso.action.CoordinatesProvider
|
||||||
|
|
|
@ -6,35 +6,32 @@ package org.mozilla.fenix.syncintegration
|
||||||
|
|
||||||
import android.os.SystemClock.sleep
|
import android.os.SystemClock.sleep
|
||||||
import android.widget.EditText
|
import android.widget.EditText
|
||||||
|
|
||||||
import androidx.test.espresso.Espresso.onView
|
import androidx.test.espresso.Espresso.onView
|
||||||
import androidx.test.espresso.action.ViewActions.click
|
import androidx.test.espresso.action.ViewActions.click
|
||||||
import androidx.test.espresso.matcher.ViewMatchers.withId
|
import androidx.test.espresso.matcher.ViewMatchers.withId
|
||||||
import androidx.test.espresso.matcher.ViewMatchers.withText
|
import androidx.test.espresso.matcher.ViewMatchers.withText
|
||||||
|
|
||||||
import org.junit.Rule
|
|
||||||
import org.junit.Test
|
|
||||||
import org.mozilla.fenix.helpers.HomeActivityTestRule
|
|
||||||
|
|
||||||
import androidx.test.platform.app.InstrumentationRegistry
|
import androidx.test.platform.app.InstrumentationRegistry
|
||||||
|
import androidx.test.uiautomator.By
|
||||||
import androidx.test.uiautomator.UiDevice
|
import androidx.test.uiautomator.UiDevice
|
||||||
import androidx.test.uiautomator.UiSelector
|
import androidx.test.uiautomator.UiSelector
|
||||||
import androidx.test.uiautomator.By
|
|
||||||
import androidx.test.uiautomator.Until
|
import androidx.test.uiautomator.Until
|
||||||
import okhttp3.mockwebserver.MockWebServer
|
import okhttp3.mockwebserver.MockWebServer
|
||||||
import org.hamcrest.Matchers.allOf
|
import org.hamcrest.Matchers.allOf
|
||||||
import org.junit.After
|
import org.junit.After
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
|
import org.junit.Rule
|
||||||
|
import org.junit.Test
|
||||||
import org.mozilla.fenix.R
|
import org.mozilla.fenix.R
|
||||||
import org.mozilla.fenix.helpers.AndroidAssetDispatcher
|
import org.mozilla.fenix.helpers.AndroidAssetDispatcher
|
||||||
|
import org.mozilla.fenix.helpers.HomeActivityTestRule
|
||||||
import org.mozilla.fenix.helpers.TestAssetHelper
|
import org.mozilla.fenix.helpers.TestAssetHelper
|
||||||
import org.mozilla.fenix.helpers.ext.toUri
|
import org.mozilla.fenix.helpers.ext.toUri
|
||||||
import org.mozilla.fenix.helpers.ext.waitNotNull
|
import org.mozilla.fenix.helpers.ext.waitNotNull
|
||||||
import org.mozilla.fenix.ui.robots.homeScreen
|
|
||||||
import org.mozilla.fenix.ui.robots.accountSettings
|
import org.mozilla.fenix.ui.robots.accountSettings
|
||||||
import org.mozilla.fenix.ui.robots.settingsSubMenuLoginsAndPassword
|
|
||||||
import org.mozilla.fenix.ui.robots.navigationToolbar
|
|
||||||
import org.mozilla.fenix.ui.robots.browserScreen
|
import org.mozilla.fenix.ui.robots.browserScreen
|
||||||
|
import org.mozilla.fenix.ui.robots.homeScreen
|
||||||
|
import org.mozilla.fenix.ui.robots.navigationToolbar
|
||||||
|
import org.mozilla.fenix.ui.robots.settingsSubMenuLoginsAndPassword
|
||||||
|
|
||||||
@Suppress("RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS")
|
@Suppress("RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS")
|
||||||
class SyncIntegrationTest {
|
class SyncIntegrationTest {
|
||||||
|
@ -185,7 +182,7 @@ class SyncIntegrationTest {
|
||||||
.className(EditText::class.java))
|
.className(EditText::class.java))
|
||||||
emailInput.waitForExists(TestAssetHelper.waitingTime)
|
emailInput.waitForExists(TestAssetHelper.waitingTime)
|
||||||
|
|
||||||
val emailAddress = javaClass.classLoader.getResource("email.txt").readText()
|
val emailAddress = javaClass.classLoader!!.getResource("email.txt").readText()
|
||||||
emailInput.setText(emailAddress)
|
emailInput.setText(emailAddress)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -199,7 +196,7 @@ class SyncIntegrationTest {
|
||||||
.instance(0)
|
.instance(0)
|
||||||
.className(EditText::class.java))
|
.className(EditText::class.java))
|
||||||
|
|
||||||
val passwordValue = javaClass.classLoader.getResource("password.txt").readText()
|
val passwordValue = javaClass.classLoader!!.getResource("password.txt").readText()
|
||||||
passwordInput.setText(passwordValue)
|
passwordInput.setText(passwordValue)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -55,6 +55,7 @@ class DownloadTest {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Suppress("Deprecation")
|
||||||
@After
|
@After
|
||||||
fun tearDown() {
|
fun tearDown() {
|
||||||
mockWebServer.shutdown()
|
mockWebServer.shutdown()
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
package org.mozilla.fenix.ui
|
package org.mozilla.fenix.ui
|
||||||
|
|
||||||
|
import androidx.core.net.toUri
|
||||||
import androidx.test.platform.app.InstrumentationRegistry
|
import androidx.test.platform.app.InstrumentationRegistry
|
||||||
import androidx.test.uiautomator.UiDevice
|
import androidx.test.uiautomator.UiDevice
|
||||||
import okhttp3.mockwebserver.MockWebServer
|
import okhttp3.mockwebserver.MockWebServer
|
||||||
|
@ -62,4 +63,158 @@ class SmokeTest {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun verifyPageMainMenuItemsListInPortraitNormalModeTest() {
|
||||||
|
val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
|
||||||
|
// Add this to check openInApp and youtube is a default app available in every Android emulator/device
|
||||||
|
val youtubeUrl = "www.youtube.com"
|
||||||
|
|
||||||
|
navigationToolbar {
|
||||||
|
}.enterURLAndEnterToBrowser(defaultWebPage.url) {
|
||||||
|
}.openThreeDotMenu {
|
||||||
|
verifyThreeDotMainMenuItems()
|
||||||
|
verifySaveCollection()
|
||||||
|
}.clickAddOnsReportSiteIssue {
|
||||||
|
verifyUrl("webcompat.com/issues/new")
|
||||||
|
}.openTabDrawer {
|
||||||
|
}.openTab(defaultWebPage.title) {
|
||||||
|
}.openThreeDotMenu {
|
||||||
|
}.openHistory {
|
||||||
|
verifyTestPageUrl(defaultWebPage.url)
|
||||||
|
}.goBackToBrowser {
|
||||||
|
}.openThreeDotMenu {
|
||||||
|
}.openBookmarks {
|
||||||
|
verifyBookmarksMenuView()
|
||||||
|
verifyEmptyBookmarksList()
|
||||||
|
}.goBackToBrowser {
|
||||||
|
}.openThreeDotMenu {
|
||||||
|
}.openSyncedTabs {
|
||||||
|
verifyNavigationToolBarHeader()
|
||||||
|
verifySyncedTabsStatus()
|
||||||
|
}.goBack {
|
||||||
|
}.openThreeDotMenu {
|
||||||
|
}.openSettings {
|
||||||
|
verifySettingsView()
|
||||||
|
}.goBackToBrowser {
|
||||||
|
}.openThreeDotMenu {
|
||||||
|
}.openFindInPage {
|
||||||
|
verifyFindInPageSearchBarItems()
|
||||||
|
}.closeFindInPage {
|
||||||
|
}.openThreeDotMenu {
|
||||||
|
}.addToFirefoxHome {
|
||||||
|
verifySnackBarText("Added to top sites!")
|
||||||
|
}.openTabDrawer {
|
||||||
|
}.openHomeScreen {
|
||||||
|
verifyExistingTopSitesTabs(defaultWebPage.title)
|
||||||
|
}.openTabDrawer {
|
||||||
|
}.openTab(defaultWebPage.title) {
|
||||||
|
}.openThreeDotMenu {
|
||||||
|
}.openAddToHomeScreen {
|
||||||
|
verifyShortcutNameField(defaultWebPage.title)
|
||||||
|
clickAddShortcutButton()
|
||||||
|
clickAddAutomaticallyButton()
|
||||||
|
}.openHomeScreenShortcut(defaultWebPage.title) {
|
||||||
|
}.openThreeDotMenu {
|
||||||
|
}.openSaveToCollection {
|
||||||
|
verifyCollectionNameTextField()
|
||||||
|
}.goBackToBrowser {
|
||||||
|
}.openThreeDotMenu {
|
||||||
|
}.bookmarkPage {
|
||||||
|
verifySnackBarText("Bookmark saved!")
|
||||||
|
}.openThreeDotMenu {
|
||||||
|
}.sharePage {
|
||||||
|
verifyShareAppsLayout()
|
||||||
|
}.closeShareDialogReturnToPage {
|
||||||
|
}.openThreeDotMenu {
|
||||||
|
}.refreshPage {
|
||||||
|
verifyUrl(defaultWebPage.url.toString())
|
||||||
|
}.openTabDrawer {
|
||||||
|
closeTabViaXButton(defaultWebPage.title)
|
||||||
|
}.openHomeScreen {
|
||||||
|
navigationToolbar {
|
||||||
|
}.enterURLAndEnterToBrowser(youtubeUrl.toUri()) {
|
||||||
|
verifyBlueDot()
|
||||||
|
}.openThreeDotMenu {
|
||||||
|
verifyOpenInAppButton()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun verifyPageMainMenuItemsListInPortraitPrivateModeTest() {
|
||||||
|
val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
|
||||||
|
// Add this to check openInApp and also youtube is a default app available in every Android emulator/device
|
||||||
|
val youtubeUrl = "www.youtube.com"
|
||||||
|
|
||||||
|
homeScreen {
|
||||||
|
togglePrivateBrowsingModeOnOff()
|
||||||
|
navigationToolbar {
|
||||||
|
}.enterURLAndEnterToBrowser(defaultWebPage.url) {
|
||||||
|
}.openThreeDotMenu {
|
||||||
|
verifyThreeDotMainMenuItems()
|
||||||
|
}.clickAddOnsReportSiteIssue {
|
||||||
|
verifyUrl("webcompat.com/issues/new")
|
||||||
|
}.openTabDrawer {
|
||||||
|
}.openTab(defaultWebPage.title) {
|
||||||
|
}.openThreeDotMenu {
|
||||||
|
}.openHistory {
|
||||||
|
verifyEmptyHistoryView()
|
||||||
|
}.goBackToBrowser {
|
||||||
|
}.openThreeDotMenu {
|
||||||
|
}.openBookmarks {
|
||||||
|
verifyBookmarksMenuView()
|
||||||
|
verifyEmptyBookmarksList()
|
||||||
|
}.goBackToBrowser {
|
||||||
|
}.openThreeDotMenu {
|
||||||
|
}.openSyncedTabs {
|
||||||
|
verifyNavigationToolBarHeader()
|
||||||
|
verifySyncedTabsStatus()
|
||||||
|
}.goBack {
|
||||||
|
}.openThreeDotMenu {
|
||||||
|
}.openSettings {
|
||||||
|
verifySettingsView()
|
||||||
|
}.goBackToBrowser {
|
||||||
|
}.openThreeDotMenu {
|
||||||
|
}.openFindInPage {
|
||||||
|
verifyFindInPageSearchBarItems()
|
||||||
|
}.closeFindInPage {
|
||||||
|
}.openThreeDotMenu {
|
||||||
|
}.addToFirefoxHome {
|
||||||
|
verifySnackBarText("Added to top sites!")
|
||||||
|
}.openTabDrawer {
|
||||||
|
}.openHomeScreen {
|
||||||
|
togglePrivateBrowsingModeOnOff()
|
||||||
|
verifyExistingTopSitesTabs(defaultWebPage.title)
|
||||||
|
togglePrivateBrowsingModeOnOff()
|
||||||
|
}.openTabDrawer {
|
||||||
|
}.openTab(defaultWebPage.title) {
|
||||||
|
}.openThreeDotMenu {
|
||||||
|
}.openAddToHomeScreen {
|
||||||
|
verifyShortcutNameField(defaultWebPage.title)
|
||||||
|
clickAddShortcutButton()
|
||||||
|
clickAddAutomaticallyButton()
|
||||||
|
}.openHomeScreenShortcut(defaultWebPage.title) {
|
||||||
|
}.openThreeDotMenu {
|
||||||
|
}.bookmarkPage {
|
||||||
|
verifySnackBarText("Bookmark saved!")
|
||||||
|
}.openThreeDotMenu {
|
||||||
|
}.sharePage {
|
||||||
|
verifyShareAppsLayout()
|
||||||
|
}.closeShareDialogReturnToPage {
|
||||||
|
}.openThreeDotMenu {
|
||||||
|
}.refreshPage {
|
||||||
|
verifyUrl(defaultWebPage.url.toString())
|
||||||
|
}.openTabDrawer {
|
||||||
|
closeTabViaXButton(defaultWebPage.title)
|
||||||
|
}.openHomeScreen {
|
||||||
|
navigationToolbar {
|
||||||
|
}.enterURLAndEnterToBrowser(youtubeUrl.toUri()) {
|
||||||
|
verifyBlueDot()
|
||||||
|
}.openThreeDotMenu {
|
||||||
|
verifyOpenInAppButton()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,14 +8,19 @@ import android.os.Build
|
||||||
import androidx.test.espresso.Espresso.onView
|
import androidx.test.espresso.Espresso.onView
|
||||||
import androidx.test.espresso.action.ViewActions.clearText
|
import androidx.test.espresso.action.ViewActions.clearText
|
||||||
import androidx.test.espresso.action.ViewActions.typeText
|
import androidx.test.espresso.action.ViewActions.typeText
|
||||||
|
import androidx.test.espresso.assertion.ViewAssertions.matches
|
||||||
|
import androidx.test.espresso.matcher.ViewMatchers.isCompletelyDisplayed
|
||||||
import androidx.test.espresso.matcher.ViewMatchers.withId
|
import androidx.test.espresso.matcher.ViewMatchers.withId
|
||||||
import androidx.test.espresso.matcher.ViewMatchers.withText
|
import androidx.test.espresso.matcher.ViewMatchers.withText
|
||||||
import androidx.test.uiautomator.By
|
import androidx.test.uiautomator.By
|
||||||
|
import androidx.test.uiautomator.By.text
|
||||||
import androidx.test.uiautomator.By.textContains
|
import androidx.test.uiautomator.By.textContains
|
||||||
import androidx.test.uiautomator.UiScrollable
|
import androidx.test.uiautomator.UiScrollable
|
||||||
import androidx.test.uiautomator.UiSelector
|
import androidx.test.uiautomator.UiSelector
|
||||||
import androidx.test.uiautomator.Until
|
import androidx.test.uiautomator.Until
|
||||||
|
import org.hamcrest.CoreMatchers.allOf
|
||||||
import org.hamcrest.CoreMatchers.anyOf
|
import org.hamcrest.CoreMatchers.anyOf
|
||||||
|
import org.junit.Assert
|
||||||
import org.mozilla.fenix.R
|
import org.mozilla.fenix.R
|
||||||
import org.mozilla.fenix.helpers.TestAssetHelper.waitingTime
|
import org.mozilla.fenix.helpers.TestAssetHelper.waitingTime
|
||||||
import org.mozilla.fenix.helpers.click
|
import org.mozilla.fenix.helpers.click
|
||||||
|
@ -26,6 +31,8 @@ import org.mozilla.fenix.helpers.ext.waitNotNull
|
||||||
*/
|
*/
|
||||||
class AddToHomeScreenRobot {
|
class AddToHomeScreenRobot {
|
||||||
|
|
||||||
|
fun verifyShortcutIcon() = assertShortcutIcon()
|
||||||
|
|
||||||
fun addShortcutName(title: String) {
|
fun addShortcutName(title: String) {
|
||||||
mDevice.waitNotNull(Until.findObject(By.text("Add to Home screen")), waitingTime)
|
mDevice.waitNotNull(Until.findObject(By.text("Add to Home screen")), waitingTime)
|
||||||
shortcutNameField()
|
shortcutNameField()
|
||||||
|
@ -33,6 +40,8 @@ class AddToHomeScreenRobot {
|
||||||
.perform(typeText(title))
|
.perform(typeText(title))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun verifyShortcutNameField(expectedText: String) = assertShortcutNameField(expectedText)
|
||||||
|
|
||||||
fun clickAddShortcutButton() = addButton().click()
|
fun clickAddShortcutButton() = addButton().click()
|
||||||
|
|
||||||
fun clickAddAutomaticallyButton() {
|
fun clickAddAutomaticallyButton() {
|
||||||
|
@ -77,7 +86,21 @@ fun addToHomeScreen(interact: AddToHomeScreenRobot.() -> Unit): AddToHomeScreenR
|
||||||
|
|
||||||
private fun shortcutNameField() = onView(withId(R.id.shortcut_text))
|
private fun shortcutNameField() = onView(withId(R.id.shortcut_text))
|
||||||
|
|
||||||
|
private fun assertShortcutNameField(expectedText: String) {
|
||||||
|
onView(allOf(withId(R.id.shortcut_text),
|
||||||
|
withText(expectedText)))
|
||||||
|
.check(matches(isCompletelyDisplayed()))
|
||||||
|
}
|
||||||
|
|
||||||
private fun addButton() = onView(anyOf(withText("ADD")))
|
private fun addButton() = onView(anyOf(withText("ADD")))
|
||||||
|
|
||||||
private fun addAutomaticallyButton() =
|
private fun addAutomaticallyButton() =
|
||||||
mDevice.findObject(UiSelector().textContains("add automatically"))
|
mDevice.findObject(UiSelector().textContains("add automatically"))
|
||||||
|
|
||||||
|
private fun assertShortcutIcon() {
|
||||||
|
mDevice.wait(
|
||||||
|
Until.findObject(text("Firefox Preview")),
|
||||||
|
waitingTime
|
||||||
|
)
|
||||||
|
Assert.assertTrue(mDevice.hasObject(By.text("Firefox Preview")))
|
||||||
|
}
|
||||||
|
|
|
@ -132,6 +132,8 @@ class BookmarksRobot {
|
||||||
addFolderButton().click()
|
addFolderButton().click()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun clickdeleteBookmarkButton() = deleteBookmarkButton().click()
|
||||||
|
|
||||||
fun addNewFolderName(name: String) {
|
fun addNewFolderName(name: String) {
|
||||||
addFolderTitleField()
|
addFolderTitleField()
|
||||||
.click()
|
.click()
|
||||||
|
@ -188,6 +190,23 @@ class BookmarksRobot {
|
||||||
return Transition()
|
return Transition()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun goBackToBrowser(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition {
|
||||||
|
closeButton().click()
|
||||||
|
|
||||||
|
BrowserRobot().interact()
|
||||||
|
return BrowserRobot.Transition()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun confirmBookmarkFolderDeletionAndGoBackToBrowser(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition {
|
||||||
|
onView(withText(R.string.delete_browsing_data_prompt_allow))
|
||||||
|
.inRoot(RootMatchers.isDialog())
|
||||||
|
.check(matches(isDisplayed()))
|
||||||
|
.click()
|
||||||
|
|
||||||
|
BrowserRobot().interact()
|
||||||
|
return BrowserRobot.Transition()
|
||||||
|
}
|
||||||
|
|
||||||
fun openThreeDotMenu(interact: ThreeDotMenuBookmarksRobot.() -> Unit): ThreeDotMenuBookmarksRobot.Transition {
|
fun openThreeDotMenu(interact: ThreeDotMenuBookmarksRobot.() -> Unit): ThreeDotMenuBookmarksRobot.Transition {
|
||||||
mDevice.waitNotNull(Until.findObject(res("org.mozilla.fenix.debug:id/overflow_menu")))
|
mDevice.waitNotNull(Until.findObject(res("org.mozilla.fenix.debug:id/overflow_menu")))
|
||||||
threeDotMenu().click()
|
threeDotMenu().click()
|
||||||
|
@ -248,6 +267,8 @@ private fun addFolderTitleField() = onView(withId(R.id.bookmarkNameEdit))
|
||||||
|
|
||||||
private fun saveFolderButton() = onView(withId(R.id.confirm_add_folder_button))
|
private fun saveFolderButton() = onView(withId(R.id.confirm_add_folder_button))
|
||||||
|
|
||||||
|
private fun deleteBookmarkButton() = onView(withId(R.id.delete_bookmark_button))
|
||||||
|
|
||||||
private fun threeDotMenu(bookmarkUrl: Uri) = onView(
|
private fun threeDotMenu(bookmarkUrl: Uri) = onView(
|
||||||
allOf(
|
allOf(
|
||||||
withId(R.id.overflow_menu),
|
withId(R.id.overflow_menu),
|
||||||
|
|
|
@ -157,6 +157,8 @@ class BrowserRobot {
|
||||||
|
|
||||||
fun verifyMenuButton() = assertMenuButton()
|
fun verifyMenuButton() = assertMenuButton()
|
||||||
|
|
||||||
|
fun verifyBlueDot() = assertBlueDot()
|
||||||
|
|
||||||
fun verifyNavURLBarItems() {
|
fun verifyNavURLBarItems() {
|
||||||
verifyEnhancedTrackingOptions()
|
verifyEnhancedTrackingOptions()
|
||||||
pressBack()
|
pressBack()
|
||||||
|
@ -448,3 +450,10 @@ private fun mediaPlayerPlayButton() =
|
||||||
.clazz("android.widget.Button")
|
.clazz("android.widget.Button")
|
||||||
.textContains("Play")
|
.textContains("Play")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
private fun assertBlueDot() {
|
||||||
|
onView(withId(R.id.notification_dot))
|
||||||
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun addOnsReportSiteIssue() = onView(withText("Report Site Issue"))
|
||||||
|
|
|
@ -29,10 +29,18 @@ class FindInPageRobot {
|
||||||
|
|
||||||
val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())!!
|
val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())!!
|
||||||
|
|
||||||
|
fun verifyFindInPageQuery() = assertFindInPageQuery()!!
|
||||||
fun verifyFindInPageNextButton() = assertFindInPageNextButton()!!
|
fun verifyFindInPageNextButton() = assertFindInPageNextButton()!!
|
||||||
fun verifyFindInPagePrevButton() = assertFindInPagePrevButton()!!
|
fun verifyFindInPagePrevButton() = assertFindInPagePrevButton()!!
|
||||||
fun verifyFindInPageCloseButton() = assertFindInPageCloseButton()!!
|
fun verifyFindInPageCloseButton() = assertFindInPageCloseButton()!!
|
||||||
|
|
||||||
|
fun verifyFindInPageSearchBarItems() {
|
||||||
|
verifyFindInPageQuery()
|
||||||
|
verifyFindInPageNextButton()
|
||||||
|
verifyFindInPagePrevButton()
|
||||||
|
verifyFindInPageCloseButton()
|
||||||
|
}
|
||||||
|
|
||||||
fun enterFindInPageQuery(expectedText: String) {
|
fun enterFindInPageQuery(expectedText: String) {
|
||||||
mDevice.waitNotNull(Until.findObject(By.res("org.mozilla.fenix.debug:id/find_in_page_query_text")), waitingTime)
|
mDevice.waitNotNull(Until.findObject(By.res("org.mozilla.fenix.debug:id/find_in_page_query_text")), waitingTime)
|
||||||
findInPageQuery().perform(clearText())
|
findInPageQuery().perform(clearText())
|
||||||
|
@ -73,6 +81,9 @@ private fun findInPageNextButton() = onView(withId(R.id.find_in_page_next_btn))
|
||||||
private fun findInPagePrevButton() = onView(withId(R.id.find_in_page_prev_btn))
|
private fun findInPagePrevButton() = onView(withId(R.id.find_in_page_prev_btn))
|
||||||
private fun findInPageCloseButton() = onView(withId(R.id.find_in_page_close_btn))
|
private fun findInPageCloseButton() = onView(withId(R.id.find_in_page_close_btn))
|
||||||
|
|
||||||
|
private fun assertFindInPageQuery() = findInPageQuery()
|
||||||
|
.check(matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
|
||||||
private fun assertFindInPageNextButton() = findInPageNextButton()
|
private fun assertFindInPageNextButton() = findInPageNextButton()
|
||||||
.check(matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
.check(matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
|
||||||
|
|
|
@ -90,6 +90,13 @@ class HistoryRobot {
|
||||||
return Transition()
|
return Transition()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun goBackToBrowser(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition {
|
||||||
|
closeButton().click()
|
||||||
|
|
||||||
|
BrowserRobot().interact()
|
||||||
|
return BrowserRobot.Transition()
|
||||||
|
}
|
||||||
|
|
||||||
fun openThreeDotMenu(interact: ThreeDotMenuHistoryItemRobot.() -> Unit):
|
fun openThreeDotMenu(interact: ThreeDotMenuHistoryItemRobot.() -> Unit):
|
||||||
ThreeDotMenuHistoryItemRobot.Transition {
|
ThreeDotMenuHistoryItemRobot.Transition {
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
package org.mozilla.fenix.ui.robots
|
package org.mozilla.fenix.ui.robots
|
||||||
|
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
|
import android.widget.TextView
|
||||||
import androidx.test.espresso.Espresso.onView
|
import androidx.test.espresso.Espresso.onView
|
||||||
import androidx.test.espresso.assertion.ViewAssertions.matches
|
import androidx.test.espresso.assertion.ViewAssertions.matches
|
||||||
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
|
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
|
||||||
|
@ -14,12 +15,14 @@ import androidx.test.espresso.matcher.ViewMatchers.withText
|
||||||
import androidx.test.espresso.matcher.ViewMatchers.withParent
|
import androidx.test.espresso.matcher.ViewMatchers.withParent
|
||||||
import androidx.test.espresso.matcher.ViewMatchers.withChild
|
import androidx.test.espresso.matcher.ViewMatchers.withChild
|
||||||
import androidx.test.uiautomator.By
|
import androidx.test.uiautomator.By
|
||||||
|
import androidx.test.uiautomator.UiSelector
|
||||||
import androidx.test.uiautomator.Until
|
import androidx.test.uiautomator.Until
|
||||||
import org.mozilla.fenix.R
|
import org.mozilla.fenix.R
|
||||||
import org.mozilla.fenix.helpers.TestAssetHelper.waitingTime
|
import org.mozilla.fenix.helpers.TestAssetHelper.waitingTime
|
||||||
import org.mozilla.fenix.helpers.click
|
import org.mozilla.fenix.helpers.click
|
||||||
import org.mozilla.fenix.helpers.ext.waitNotNull
|
import org.mozilla.fenix.helpers.ext.waitNotNull
|
||||||
import org.hamcrest.Matchers.allOf
|
import org.hamcrest.Matchers.allOf
|
||||||
|
import org.mozilla.fenix.helpers.TestAssetHelper
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Implementation of Robot Pattern for the multiple selection toolbar of History and Bookmarks menus.
|
* Implementation of Robot Pattern for the multiple selection toolbar of History and Bookmarks menus.
|
||||||
|
@ -38,6 +41,8 @@ class LibrarySubMenusMultipleSelectionToolbarRobot {
|
||||||
|
|
||||||
fun verifyShareOverlay() = assertShareOverlay()
|
fun verifyShareOverlay() = assertShareOverlay()
|
||||||
|
|
||||||
|
fun verifyShareAppsLayout() = assertShareAppsLayout()
|
||||||
|
|
||||||
fun verifyShareTabFavicon() = assertShareTabFavicon()
|
fun verifyShareTabFavicon() = assertShareTabFavicon()
|
||||||
|
|
||||||
fun verifyShareTabTitle() = assertShareTabTitle()
|
fun verifyShareTabTitle() = assertShareTabTitle()
|
||||||
|
@ -71,6 +76,12 @@ class LibrarySubMenusMultipleSelectionToolbarRobot {
|
||||||
}
|
}
|
||||||
|
|
||||||
class Transition {
|
class Transition {
|
||||||
|
fun closeShareDialogReturnToPage(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition {
|
||||||
|
|
||||||
|
BrowserRobot().interact()
|
||||||
|
return BrowserRobot.Transition()
|
||||||
|
}
|
||||||
|
|
||||||
fun closeToolbarReturnToHistory(interact: HistoryRobot.() -> Unit): HistoryRobot.Transition {
|
fun closeToolbarReturnToHistory(interact: HistoryRobot.() -> Unit): HistoryRobot.Transition {
|
||||||
closeToolbarButton().click()
|
closeToolbarButton().click()
|
||||||
|
|
||||||
|
@ -158,6 +169,15 @@ private fun assertShareBookmarksButton() =
|
||||||
private fun assertShareOverlay() =
|
private fun assertShareOverlay() =
|
||||||
onView(withId(R.id.shareWrapper)).check(matches(isDisplayed()))
|
onView(withId(R.id.shareWrapper)).check(matches(isDisplayed()))
|
||||||
|
|
||||||
|
private fun assertShareAppsLayout() = {
|
||||||
|
val sendToDeviceTitle = mDevice.findObject(
|
||||||
|
UiSelector()
|
||||||
|
.instance(0)
|
||||||
|
.className(TextView::class.java)
|
||||||
|
)
|
||||||
|
sendToDeviceTitle.waitForExists(TestAssetHelper.waitingTime)
|
||||||
|
}
|
||||||
|
|
||||||
private fun assertShareTabTitle() =
|
private fun assertShareTabTitle() =
|
||||||
onView(withId(R.id.share_tab_title)).check(matches(isDisplayed()))
|
onView(withId(R.id.share_tab_title)).check(matches(isDisplayed()))
|
||||||
|
|
||||||
|
|
|
@ -96,6 +96,13 @@ class SettingsRobot {
|
||||||
return HomeScreenRobot.Transition()
|
return HomeScreenRobot.Transition()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun goBackToBrowser(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition {
|
||||||
|
goBackButton().click()
|
||||||
|
|
||||||
|
BrowserRobot().interact()
|
||||||
|
return BrowserRobot.Transition()
|
||||||
|
}
|
||||||
|
|
||||||
fun openAboutFirefoxPreview(interact: SettingsSubMenuAboutRobot.() -> Unit):
|
fun openAboutFirefoxPreview(interact: SettingsSubMenuAboutRobot.() -> Unit):
|
||||||
SettingsSubMenuAboutRobot.Transition {
|
SettingsSubMenuAboutRobot.Transition {
|
||||||
|
|
||||||
|
|
|
@ -34,8 +34,8 @@ import java.text.SimpleDateFormat
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
import java.time.format.DateTimeFormatterBuilder
|
import java.time.format.DateTimeFormatterBuilder
|
||||||
import java.time.temporal.ChronoField
|
import java.time.temporal.ChronoField
|
||||||
import java.util.Date
|
|
||||||
import java.util.Calendar
|
import java.util.Calendar
|
||||||
|
import java.util.Date
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implementation of Robot Pattern for the settings search sub menu.
|
* Implementation of Robot Pattern for the settings search sub menu.
|
||||||
|
@ -250,7 +250,9 @@ class BuildDateAssertion {
|
||||||
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.N_MR1) {
|
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.N_MR1) {
|
||||||
val simpleDateFormat = SimpleDateFormat(DATE_PATTERN)
|
val simpleDateFormat = SimpleDateFormat(DATE_PATTERN)
|
||||||
val date = simpleDateFormat.parse(dateText)
|
val date = simpleDateFormat.parse(dateText)
|
||||||
if (!date.isWithinRangeOf(hours)) throw AssertionError("The build date is not within Range.")
|
if (date == null || !date.isWithinRangeOf(hours)) {
|
||||||
|
throw AssertionError("The build date is not within Range.")
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
val textviewDate = getLocalDateTimeFromString(dateText)
|
val textviewDate = getLocalDateTimeFromString(dateText)
|
||||||
val buildConfigDate = getLocalDateTimeFromString(BuildConfig.BUILD_DATE)
|
val buildConfigDate = getLocalDateTimeFromString(BuildConfig.BUILD_DATE)
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
/* 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.ui.robots
|
||||||
|
|
||||||
|
import androidx.test.espresso.Espresso.onView
|
||||||
|
import androidx.test.espresso.assertion.ViewAssertions.matches
|
||||||
|
import androidx.test.espresso.matcher.ViewMatchers.withContentDescription
|
||||||
|
import androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility
|
||||||
|
import androidx.test.espresso.matcher.ViewMatchers.withResourceName
|
||||||
|
import androidx.test.espresso.matcher.ViewMatchers.withText
|
||||||
|
import androidx.test.espresso.matcher.ViewMatchers.Visibility
|
||||||
|
import androidx.test.platform.app.InstrumentationRegistry
|
||||||
|
import androidx.test.uiautomator.UiDevice
|
||||||
|
import org.hamcrest.CoreMatchers.allOf
|
||||||
|
import org.mozilla.fenix.R
|
||||||
|
import org.mozilla.fenix.helpers.click
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implementation of Robot Pattern for Synced Tabs sub menu.
|
||||||
|
*/
|
||||||
|
class SyncedTabsRobot {
|
||||||
|
|
||||||
|
fun verifyNavigationToolBarHeader() = assertNavigationToolBarHeader()
|
||||||
|
|
||||||
|
fun verifySyncedTabsStatus() = assertSyncedTabsStatus()
|
||||||
|
|
||||||
|
class Transition {
|
||||||
|
val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())!!
|
||||||
|
|
||||||
|
fun goBack(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition {
|
||||||
|
goBackButton().click()
|
||||||
|
|
||||||
|
BrowserRobot().interact()
|
||||||
|
return BrowserRobot.Transition()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun goBackButton() =
|
||||||
|
onView(allOf(withContentDescription("Navigate up")))
|
||||||
|
|
||||||
|
private fun assertNavigationToolBarHeader() {
|
||||||
|
onView(withText(R.string.synced_tabs))
|
||||||
|
.check((matches(withEffectiveVisibility(Visibility.VISIBLE))))
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun assertSyncedTabsStatus() {
|
||||||
|
onView(withResourceName("sync_tabs_status"))
|
||||||
|
.check((matches(withEffectiveVisibility(Visibility.VISIBLE))))
|
||||||
|
}
|
|
@ -9,6 +9,7 @@ package org.mozilla.fenix.ui.robots
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import androidx.test.espresso.Espresso.onView
|
import androidx.test.espresso.Espresso.onView
|
||||||
|
import androidx.test.espresso.Espresso.pressBack
|
||||||
import androidx.test.espresso.UiController
|
import androidx.test.espresso.UiController
|
||||||
import androidx.test.espresso.ViewAction
|
import androidx.test.espresso.ViewAction
|
||||||
import androidx.test.espresso.action.ViewActions
|
import androidx.test.espresso.action.ViewActions
|
||||||
|
@ -44,8 +45,10 @@ import org.mozilla.fenix.share.ShareFragment
|
||||||
*/
|
*/
|
||||||
class ThreeDotMenuMainRobot {
|
class ThreeDotMenuMainRobot {
|
||||||
fun verifySettingsButton() = assertSettingsButton()
|
fun verifySettingsButton() = assertSettingsButton()
|
||||||
|
fun verifyAddOnsButton() = assertAddOnsButton()
|
||||||
fun verifyHistoryButton() = assertHistoryButton()
|
fun verifyHistoryButton() = assertHistoryButton()
|
||||||
fun verifyBookmarksButton() = assertBookmarksButton()
|
fun verifyBookmarksButton() = assertBookmarksButton()
|
||||||
|
fun verifySyncedTabsButton() = assertSyncedTabsButton()
|
||||||
fun verifyHelpButton() = assertHelpButton()
|
fun verifyHelpButton() = assertHelpButton()
|
||||||
fun verifyThreeDotMenuExists() = threeDotMenuRecyclerViewExists()
|
fun verifyThreeDotMenuExists() = threeDotMenuRecyclerViewExists()
|
||||||
fun verifyForwardButton() = assertForwardButton()
|
fun verifyForwardButton() = assertForwardButton()
|
||||||
|
@ -106,12 +109,40 @@ class ThreeDotMenuMainRobot {
|
||||||
fun verifyShareALinkTitle() = assertShareALinkTitle()
|
fun verifyShareALinkTitle() = assertShareALinkTitle()
|
||||||
fun verifyWhatsNewButton() = assertWhatsNewButton()
|
fun verifyWhatsNewButton() = assertWhatsNewButton()
|
||||||
fun verifyAddFirefoxHome() = assertAddToFirefoxHome()
|
fun verifyAddFirefoxHome() = assertAddToFirefoxHome()
|
||||||
|
fun verifyAddToMobileHome() = assertAddToMobileHome()
|
||||||
|
fun verifyDesktopSite() = assertDesktopSite()
|
||||||
|
fun verifyOpenInAppButton() = assertOpenInAppButton()
|
||||||
|
|
||||||
|
fun verifyThreeDotMainMenuItems() {
|
||||||
|
verifyAddOnsButton()
|
||||||
|
verifyHistoryButton()
|
||||||
|
verifyBookmarksButton()
|
||||||
|
verifySyncedTabsButton()
|
||||||
|
verifySettingsButton()
|
||||||
|
verifyFindInPageButton()
|
||||||
|
verifyAddFirefoxHome()
|
||||||
|
verifyAddToMobileHome()
|
||||||
|
verifyDesktopSite()
|
||||||
|
verifyAddBookmarkButton()
|
||||||
|
verifyShareButton()
|
||||||
|
verifyForwardButton()
|
||||||
|
verifyRefreshButton()
|
||||||
|
}
|
||||||
|
|
||||||
class Transition {
|
class Transition {
|
||||||
|
|
||||||
private val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
private val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
||||||
|
|
||||||
|
fun clickAddOnsReportSiteIssue(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition {
|
||||||
|
addOnsButton().click()
|
||||||
|
addOnsReportSiteIssueButton().click()
|
||||||
|
|
||||||
|
BrowserRobot().interact()
|
||||||
|
return BrowserRobot.Transition()
|
||||||
|
}
|
||||||
|
|
||||||
fun openSettings(interact: SettingsRobot.() -> Unit): SettingsRobot.Transition {
|
fun openSettings(interact: SettingsRobot.() -> Unit): SettingsRobot.Transition {
|
||||||
|
onView(withId(R.id.mozac_browser_menu_recyclerView)).perform(ViewActions.swipeDown())
|
||||||
onView(allOf(withResourceName("text"), withText(R.string.browser_menu_settings)))
|
onView(allOf(withResourceName("text"), withText(R.string.browser_menu_settings)))
|
||||||
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
||||||
.check(matches(isCompletelyDisplayed()))
|
.check(matches(isCompletelyDisplayed()))
|
||||||
|
@ -121,7 +152,17 @@ class ThreeDotMenuMainRobot {
|
||||||
return SettingsRobot.Transition()
|
return SettingsRobot.Transition()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun openSyncedTabs(interact: SyncedTabsRobot.() -> Unit): SyncedTabsRobot.Transition {
|
||||||
|
onView(withId(R.id.mozac_browser_menu_recyclerView)).perform(ViewActions.swipeDown())
|
||||||
|
mDevice.waitNotNull(Until.findObject(By.text("Synced tabs")), waitingTime)
|
||||||
|
syncedTabsButton().click()
|
||||||
|
|
||||||
|
SyncedTabsRobot().interact()
|
||||||
|
return SyncedTabsRobot.Transition()
|
||||||
|
}
|
||||||
|
|
||||||
fun openBookmarks(interact: BookmarksRobot.() -> Unit): BookmarksRobot.Transition {
|
fun openBookmarks(interact: BookmarksRobot.() -> Unit): BookmarksRobot.Transition {
|
||||||
|
onView(withId(R.id.mozac_browser_menu_recyclerView)).perform(ViewActions.swipeDown())
|
||||||
mDevice.waitNotNull(Until.findObject(By.text("Bookmarks")), waitingTime)
|
mDevice.waitNotNull(Until.findObject(By.text("Bookmarks")), waitingTime)
|
||||||
bookmarksButton().click()
|
bookmarksButton().click()
|
||||||
|
|
||||||
|
@ -130,6 +171,7 @@ class ThreeDotMenuMainRobot {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun openHistory(interact: HistoryRobot.() -> Unit): HistoryRobot.Transition {
|
fun openHistory(interact: HistoryRobot.() -> Unit): HistoryRobot.Transition {
|
||||||
|
onView(withId(R.id.mozac_browser_menu_recyclerView)).perform(ViewActions.swipeDown())
|
||||||
mDevice.waitNotNull(Until.findObject(By.text("History")), waitingTime)
|
mDevice.waitNotNull(Until.findObject(By.text("History")), waitingTime)
|
||||||
historyButton().click()
|
historyButton().click()
|
||||||
|
|
||||||
|
@ -137,6 +179,23 @@ class ThreeDotMenuMainRobot {
|
||||||
return HistoryRobot.Transition()
|
return HistoryRobot.Transition()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun bookmarkPage(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition {
|
||||||
|
mDevice.waitNotNull(Until.findObject(By.desc("Bookmark")), waitingTime)
|
||||||
|
addBookmarkButton().click()
|
||||||
|
|
||||||
|
BrowserRobot().interact()
|
||||||
|
return BrowserRobot.Transition()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun sharePage(interact: LibrarySubMenusMultipleSelectionToolbarRobot.() -> Unit): LibrarySubMenusMultipleSelectionToolbarRobot.Transition {
|
||||||
|
mDevice.waitNotNull(Until.findObject(By.desc("Share")), waitingTime)
|
||||||
|
shareButton().click()
|
||||||
|
pressBack()
|
||||||
|
|
||||||
|
LibrarySubMenusMultipleSelectionToolbarRobot().interact()
|
||||||
|
return LibrarySubMenusMultipleSelectionToolbarRobot.Transition()
|
||||||
|
}
|
||||||
|
|
||||||
fun openHelp(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition {
|
fun openHelp(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition {
|
||||||
mDevice.waitNotNull(Until.findObject(By.text("Help")), waitingTime)
|
mDevice.waitNotNull(Until.findObject(By.text("Help")), waitingTime)
|
||||||
helpButton().click()
|
helpButton().click()
|
||||||
|
@ -163,6 +222,13 @@ class ThreeDotMenuMainRobot {
|
||||||
return BrowserRobot.Transition()
|
return BrowserRobot.Transition()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun goBackToBrowser(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition {
|
||||||
|
mDevice.pressBack()
|
||||||
|
|
||||||
|
BrowserRobot().interact()
|
||||||
|
return BrowserRobot.Transition()
|
||||||
|
}
|
||||||
|
|
||||||
fun close(interact: HomeScreenRobot.() -> Unit): HomeScreenRobot.Transition {
|
fun close(interact: HomeScreenRobot.() -> Unit): HomeScreenRobot.Transition {
|
||||||
// Close three dot
|
// Close three dot
|
||||||
mDevice.pressBack()
|
mDevice.pressBack()
|
||||||
|
@ -196,6 +262,7 @@ class ThreeDotMenuMainRobot {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun openFindInPage(interact: FindInPageRobot.() -> Unit): FindInPageRobot.Transition {
|
fun openFindInPage(interact: FindInPageRobot.() -> Unit): FindInPageRobot.Transition {
|
||||||
|
onView(withId(R.id.mozac_browser_menu_recyclerView)).perform(ViewActions.swipeDown())
|
||||||
mDevice.waitNotNull(Until.findObject(By.text("Find in page")), waitingTime)
|
mDevice.waitNotNull(Until.findObject(By.text("Find in page")), waitingTime)
|
||||||
findInPageButton().click()
|
findInPageButton().click()
|
||||||
|
|
||||||
|
@ -274,6 +341,13 @@ class ThreeDotMenuMainRobot {
|
||||||
HomeScreenRobot().interact()
|
HomeScreenRobot().interact()
|
||||||
return HomeScreenRobot.Transition()
|
return HomeScreenRobot.Transition()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun openSaveToCollection(interact: ThreeDotMenuMainRobot.() -> Unit): ThreeDotMenuMainRobot.Transition {
|
||||||
|
mDevice.waitNotNull(Until.findObject(By.text("Save to collection")), waitingTime)
|
||||||
|
saveCollectionButton().click()
|
||||||
|
ThreeDotMenuMainRobot().interact()
|
||||||
|
return ThreeDotMenuMainRobot.Transition()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -286,6 +360,11 @@ private fun assertSettingsButton() = settingsButton()
|
||||||
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
||||||
.check(matches(isCompletelyDisplayed()))
|
.check(matches(isCompletelyDisplayed()))
|
||||||
|
|
||||||
|
private fun addOnsButton() = onView(allOf(withText("Add-ons")))
|
||||||
|
private fun assertAddOnsButton() = addOnsButton()
|
||||||
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
||||||
|
private fun addOnsReportSiteIssueButton() = onView(allOf(withText("Report Site Issue…")))
|
||||||
|
|
||||||
private fun historyButton() = onView(allOf(withText(R.string.library_history)))
|
private fun historyButton() = onView(allOf(withText(R.string.library_history)))
|
||||||
private fun assertHistoryButton() = historyButton()
|
private fun assertHistoryButton() = historyButton()
|
||||||
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
||||||
|
@ -294,6 +373,10 @@ private fun bookmarksButton() = onView(allOf(withText(R.string.library_bookmarks
|
||||||
private fun assertBookmarksButton() = bookmarksButton()
|
private fun assertBookmarksButton() = bookmarksButton()
|
||||||
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
||||||
|
|
||||||
|
private fun syncedTabsButton() = onView(allOf(withText(R.string.library_synced_tabs)))
|
||||||
|
private fun assertSyncedTabsButton() = syncedTabsButton()
|
||||||
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
||||||
|
|
||||||
private fun helpButton() = onView(allOf(withText(R.string.browser_menu_help)))
|
private fun helpButton() = onView(allOf(withText(R.string.browser_menu_help)))
|
||||||
private fun assertHelpButton() = helpButton()
|
private fun assertHelpButton() = helpButton()
|
||||||
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
||||||
|
@ -399,3 +482,36 @@ private fun assertAddToFirefoxHome() {
|
||||||
)
|
)
|
||||||
).check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
).check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun addToMobileHomeButton() =
|
||||||
|
onView(allOf(withText(R.string.browser_menu_add_to_homescreen)))
|
||||||
|
private fun assertAddToMobileHome() {
|
||||||
|
onView(withId(R.id.mozac_browser_menu_recyclerView))
|
||||||
|
.perform(
|
||||||
|
RecyclerViewActions.scrollTo<RecyclerView.ViewHolder>(
|
||||||
|
hasDescendant(withText(R.string.browser_menu_add_to_homescreen))
|
||||||
|
)
|
||||||
|
).check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun desktopSiteButton() =
|
||||||
|
onView(allOf(withText(R.string.browser_menu_desktop_site)))
|
||||||
|
private fun assertDesktopSite() {
|
||||||
|
onView(withId(R.id.mozac_browser_menu_recyclerView))
|
||||||
|
.perform(
|
||||||
|
RecyclerViewActions.scrollTo<RecyclerView.ViewHolder>(
|
||||||
|
hasDescendant(withText(R.string.browser_menu_desktop_site))
|
||||||
|
)
|
||||||
|
).check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun openInAppButton() =
|
||||||
|
onView(allOf(withText(R.string.browser_menu_open_app_link)))
|
||||||
|
private fun assertOpenInAppButton() {
|
||||||
|
onView(withId(R.id.mozac_browser_menu_recyclerView))
|
||||||
|
.perform(
|
||||||
|
RecyclerViewActions.scrollTo<RecyclerView.ViewHolder>(
|
||||||
|
hasDescendant(withText(R.string.browser_menu_open_app_link))
|
||||||
|
)
|
||||||
|
).check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
||||||
|
}
|
||||||
|
|
|
@ -211,6 +211,7 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
|
||||||
isPrivate = (activity as HomeActivity).browsingModeManager.mode.isPrivate
|
isPrivate = (activity as HomeActivity).browsingModeManager.mode.isPrivate
|
||||||
),
|
),
|
||||||
sessionManager = requireComponents.core.sessionManager,
|
sessionManager = requireComponents.core.sessionManager,
|
||||||
|
sessionFeature = sessionFeature,
|
||||||
findInPageLauncher = { findInPageIntegration.withFeature { it.launch() } },
|
findInPageLauncher = { findInPageIntegration.withFeature { it.launch() } },
|
||||||
engineView = engineView,
|
engineView = engineView,
|
||||||
swipeRefresh = swipeRefresh,
|
swipeRefresh = swipeRefresh,
|
||||||
|
|
|
@ -221,21 +221,37 @@ class BrowserFragment : BaseBrowserFragment(), UserInteractionHandler {
|
||||||
|
|
||||||
private val collectionStorageObserver = object : TabCollectionStorage.Observer {
|
private val collectionStorageObserver = object : TabCollectionStorage.Observer {
|
||||||
override fun onCollectionCreated(title: String, sessions: List<Session>) {
|
override fun onCollectionCreated(title: String, sessions: List<Session>) {
|
||||||
showTabSavedToCollectionSnackbar()
|
showTabSavedToCollectionSnackbar(sessions.size, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onTabsAdded(tabCollection: TabCollection, sessions: List<Session>) {
|
override fun onTabsAdded(tabCollection: TabCollection, sessions: List<Session>) {
|
||||||
showTabSavedToCollectionSnackbar()
|
showTabSavedToCollectionSnackbar(sessions.size)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showTabSavedToCollectionSnackbar() {
|
private fun showTabSavedToCollectionSnackbar(tabSize: Int, isNewCollection: Boolean = false) {
|
||||||
view?.let { view ->
|
view?.let { view ->
|
||||||
|
val messageStringRes = when {
|
||||||
|
isNewCollection -> {
|
||||||
|
R.string.create_collection_tabs_saved_new_collection
|
||||||
|
}
|
||||||
|
tabSize > 1 -> {
|
||||||
|
R.string.create_collection_tabs_saved
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
R.string.create_collection_tab_saved
|
||||||
|
}
|
||||||
|
}
|
||||||
FenixSnackbar.make(
|
FenixSnackbar.make(
|
||||||
view = view,
|
view = view,
|
||||||
duration = Snackbar.LENGTH_SHORT,
|
duration = Snackbar.LENGTH_SHORT,
|
||||||
isDisplayedWithBrowserToolbar = true
|
isDisplayedWithBrowserToolbar = true
|
||||||
)
|
)
|
||||||
.setText(view.context.getString(R.string.create_collection_tab_saved))
|
.setText(view.context.getString(messageStringRes))
|
||||||
|
.setAction(requireContext().getString(R.string.create_collection_view)) {
|
||||||
|
findNavController().navigate(
|
||||||
|
BrowserFragmentDirections.actionGlobalHome(focusOnAddressBar = false)
|
||||||
|
)
|
||||||
|
}
|
||||||
.show()
|
.show()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,8 @@ import mozilla.components.browser.session.Session
|
||||||
import mozilla.components.browser.session.SessionManager
|
import mozilla.components.browser.session.SessionManager
|
||||||
import mozilla.components.concept.engine.EngineView
|
import mozilla.components.concept.engine.EngineView
|
||||||
import mozilla.components.concept.engine.prompt.ShareData
|
import mozilla.components.concept.engine.prompt.ShareData
|
||||||
|
import mozilla.components.feature.session.SessionFeature
|
||||||
|
import mozilla.components.support.base.feature.ViewBoundFeatureWrapper
|
||||||
import mozilla.components.support.ktx.kotlin.isUrl
|
import mozilla.components.support.ktx.kotlin.isUrl
|
||||||
import org.mozilla.fenix.HomeActivity
|
import org.mozilla.fenix.HomeActivity
|
||||||
import org.mozilla.fenix.NavGraphDirections
|
import org.mozilla.fenix.NavGraphDirections
|
||||||
|
@ -61,6 +63,7 @@ class DefaultBrowserToolbarController(
|
||||||
private val activity: HomeActivity,
|
private val activity: HomeActivity,
|
||||||
private val navController: NavController,
|
private val navController: NavController,
|
||||||
private val readerModeController: ReaderModeController,
|
private val readerModeController: ReaderModeController,
|
||||||
|
private val sessionFeature: ViewBoundFeatureWrapper<SessionFeature>,
|
||||||
private val sessionManager: SessionManager,
|
private val sessionManager: SessionManager,
|
||||||
private val findInPageLauncher: () -> Unit,
|
private val findInPageLauncher: () -> Unit,
|
||||||
private val engineView: EngineView,
|
private val engineView: EngineView,
|
||||||
|
@ -260,8 +263,10 @@ class DefaultBrowserToolbarController(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ToolbarMenu.Item.OpenInFenix -> {
|
ToolbarMenu.Item.OpenInFenix -> {
|
||||||
// Release the session from this view so that it can immediately be rendered by a different view
|
// Stop the SessionFeature from updating the EngineView and let it release the session
|
||||||
engineView.release()
|
// from the EngineView so that it can immediately be rendered by a different view once
|
||||||
|
// we switch to the actual browser.
|
||||||
|
sessionFeature.get()?.release()
|
||||||
|
|
||||||
// Strip the CustomTabConfig to turn this Session into a regular tab and then select it
|
// Strip the CustomTabConfig to turn this Session into a regular tab and then select it
|
||||||
customTabSession!!.customTabConfig = null
|
customTabSession!!.customTabConfig = null
|
||||||
|
|
|
@ -6,9 +6,7 @@ package org.mozilla.fenix.library.bookmarks
|
||||||
|
|
||||||
import android.content.ClipData
|
import android.content.ClipData
|
||||||
import android.content.ClipboardManager
|
import android.content.ClipboardManager
|
||||||
import android.content.Context
|
|
||||||
import android.content.res.Resources
|
import android.content.res.Resources
|
||||||
import androidx.core.content.getSystemService
|
|
||||||
import androidx.navigation.NavController
|
import androidx.navigation.NavController
|
||||||
import androidx.navigation.NavDirections
|
import androidx.navigation.NavDirections
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
@ -51,8 +49,9 @@ interface BookmarkController {
|
||||||
|
|
||||||
@SuppressWarnings("TooManyFunctions")
|
@SuppressWarnings("TooManyFunctions")
|
||||||
class DefaultBookmarkController(
|
class DefaultBookmarkController(
|
||||||
private val context: Context,
|
private val activity: HomeActivity,
|
||||||
private val navController: NavController,
|
private val navController: NavController,
|
||||||
|
private val clipboardManager: ClipboardManager?,
|
||||||
private val scope: CoroutineScope,
|
private val scope: CoroutineScope,
|
||||||
private val store: BookmarkFragmentStore,
|
private val store: BookmarkFragmentStore,
|
||||||
private val sharedViewModel: BookmarksSharedViewModel,
|
private val sharedViewModel: BookmarksSharedViewModel,
|
||||||
|
@ -63,8 +62,7 @@ class DefaultBookmarkController(
|
||||||
private val invokePendingDeletion: () -> Unit
|
private val invokePendingDeletion: () -> Unit
|
||||||
) : BookmarkController {
|
) : BookmarkController {
|
||||||
|
|
||||||
private val activity: HomeActivity = context as HomeActivity
|
private val resources: Resources = activity.resources
|
||||||
private val resources: Resources = context.resources
|
|
||||||
|
|
||||||
override fun handleBookmarkChanged(item: BookmarkNode) {
|
override fun handleBookmarkChanged(item: BookmarkNode) {
|
||||||
sharedViewModel.selectedFolder = item
|
sharedViewModel.selectedFolder = item
|
||||||
|
@ -115,7 +113,7 @@ class DefaultBookmarkController(
|
||||||
|
|
||||||
override fun handleCopyUrl(item: BookmarkNode) {
|
override fun handleCopyUrl(item: BookmarkNode) {
|
||||||
val urlClipData = ClipData.newPlainText(item.url, item.url)
|
val urlClipData = ClipData.newPlainText(item.url, item.url)
|
||||||
context.getSystemService<ClipboardManager>()?.primaryClip = urlClipData
|
clipboardManager?.setPrimaryClip(urlClipData)
|
||||||
showSnackbar(resources.getString(R.string.url_copied))
|
showSnackbar(resources.getString(R.string.url_copied))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,14 +141,14 @@ class DefaultBookmarkController(
|
||||||
scope.launch {
|
scope.launch {
|
||||||
store.dispatch(BookmarkFragmentAction.StartSync)
|
store.dispatch(BookmarkFragmentAction.StartSync)
|
||||||
invokePendingDeletion()
|
invokePendingDeletion()
|
||||||
context.components.backgroundServices.accountManager.syncNowAsync(SyncReason.User).await()
|
activity.components.backgroundServices.accountManager.syncNowAsync(SyncReason.User).await()
|
||||||
// The current bookmark node we are viewing may be made invalid after syncing so we
|
// The current bookmark node we are viewing may be made invalid after syncing so we
|
||||||
// check if the current node is valid and if it isn't we find the nearest valid ancestor
|
// check if the current node is valid and if it isn't we find the nearest valid ancestor
|
||||||
// and open it
|
// and open it
|
||||||
val validAncestorGuid = store.state.guidBackstack.findLast { guid ->
|
val validAncestorGuid = store.state.guidBackstack.findLast { guid ->
|
||||||
context.bookmarkStorage.getBookmark(guid) != null
|
activity.bookmarkStorage.getBookmark(guid) != null
|
||||||
} ?: BookmarkRoot.Mobile.id
|
} ?: BookmarkRoot.Mobile.id
|
||||||
val node = context.bookmarkStorage.getBookmark(validAncestorGuid)!!
|
val node = activity.bookmarkStorage.getBookmark(validAncestorGuid)!!
|
||||||
handleBookmarkExpand(node)
|
handleBookmarkExpand(node)
|
||||||
store.dispatch(BookmarkFragmentAction.FinishSync)
|
store.dispatch(BookmarkFragmentAction.FinishSync)
|
||||||
}
|
}
|
||||||
|
@ -160,12 +158,12 @@ class DefaultBookmarkController(
|
||||||
invokePendingDeletion.invoke()
|
invokePendingDeletion.invoke()
|
||||||
scope.launch {
|
scope.launch {
|
||||||
val parentGuid = store.state.guidBackstack.findLast { guid ->
|
val parentGuid = store.state.guidBackstack.findLast { guid ->
|
||||||
store.state.tree?.guid != guid && context.bookmarkStorage.getBookmark(guid) != null
|
store.state.tree?.guid != guid && activity.bookmarkStorage.getBookmark(guid) != null
|
||||||
}
|
}
|
||||||
if (parentGuid == null) {
|
if (parentGuid == null) {
|
||||||
navController.popBackStack()
|
navController.popBackStack()
|
||||||
} else {
|
} else {
|
||||||
val parent = context.bookmarkStorage.getBookmark(parentGuid)!!
|
val parent = activity.bookmarkStorage.getBookmark(parentGuid)!!
|
||||||
handleBookmarkExpand(parent)
|
handleBookmarkExpand(parent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,7 @@ import android.view.MenuItem
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
|
import androidx.core.content.getSystemService
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.fragment.app.activityViewModels
|
import androidx.fragment.app.activityViewModels
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
|
@ -37,6 +38,7 @@ import mozilla.components.concept.storage.BookmarkNode
|
||||||
import mozilla.components.concept.storage.BookmarkNodeType
|
import mozilla.components.concept.storage.BookmarkNodeType
|
||||||
import mozilla.components.lib.state.ext.consumeFrom
|
import mozilla.components.lib.state.ext.consumeFrom
|
||||||
import mozilla.components.support.base.feature.UserInteractionHandler
|
import mozilla.components.support.base.feature.UserInteractionHandler
|
||||||
|
import org.mozilla.fenix.HomeActivity
|
||||||
import org.mozilla.fenix.NavHostActivity
|
import org.mozilla.fenix.NavHostActivity
|
||||||
import org.mozilla.fenix.R
|
import org.mozilla.fenix.R
|
||||||
import org.mozilla.fenix.components.FenixSnackbar
|
import org.mozilla.fenix.components.FenixSnackbar
|
||||||
|
@ -85,8 +87,9 @@ class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), UserInteractionHan
|
||||||
|
|
||||||
_bookmarkInteractor = BookmarkFragmentInteractor(
|
_bookmarkInteractor = BookmarkFragmentInteractor(
|
||||||
bookmarksController = DefaultBookmarkController(
|
bookmarksController = DefaultBookmarkController(
|
||||||
context = requireContext(),
|
activity = requireActivity() as HomeActivity,
|
||||||
navController = findNavController(),
|
navController = findNavController(),
|
||||||
|
clipboardManager = requireContext().getSystemService(),
|
||||||
scope = viewLifecycleOwner.lifecycleScope,
|
scope = viewLifecycleOwner.lifecycleScope,
|
||||||
store = bookmarkStore,
|
store = bookmarkStore,
|
||||||
sharedViewModel = sharedViewModel,
|
sharedViewModel = sharedViewModel,
|
||||||
|
|
|
@ -81,7 +81,7 @@ class DefaultHistoryController(
|
||||||
|
|
||||||
override fun handleCopyUrl(item: HistoryItem) {
|
override fun handleCopyUrl(item: HistoryItem) {
|
||||||
val urlClipData = ClipData.newPlainText(item.url, item.url)
|
val urlClipData = ClipData.newPlainText(item.url, item.url)
|
||||||
clipboardManager.primaryClip = urlClipData
|
clipboardManager.setPrimaryClip(urlClipData)
|
||||||
with(snackbar) {
|
with(snackbar) {
|
||||||
setText(resources.getString(R.string.url_copied))
|
setText(resources.getString(R.string.url_copied))
|
||||||
show()
|
show()
|
||||||
|
|
|
@ -18,6 +18,7 @@ import androidx.appcompat.app.AlertDialog
|
||||||
import androidx.biometric.BiometricManager
|
import androidx.biometric.BiometricManager
|
||||||
import androidx.biometric.BiometricPrompt
|
import androidx.biometric.BiometricPrompt
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
|
import androidx.core.content.getSystemService
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import androidx.preference.Preference
|
import androidx.preference.Preference
|
||||||
|
@ -270,8 +271,9 @@ class SavedLoginsAuthFragment : PreferenceFragmentCompat(), AccountObserver {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Suppress("Deprecation")
|
||||||
private fun showPinVerification() {
|
private fun showPinVerification() {
|
||||||
val manager = activity?.getSystemService(KEYGUARD_SERVICE) as KeyguardManager
|
val manager = activity?.getSystemService<KeyguardManager>()!!
|
||||||
val intent = manager.createConfirmDeviceCredentialIntent(
|
val intent = manager.createConfirmDeviceCredentialIntent(
|
||||||
getString(R.string.logins_biometric_prompt_message_pin),
|
getString(R.string.logins_biometric_prompt_message_pin),
|
||||||
getString(R.string.logins_biometric_prompt_message)
|
getString(R.string.logins_biometric_prompt_message)
|
||||||
|
|
|
@ -7,6 +7,7 @@ package org.mozilla.fenix.utils
|
||||||
import android.content.ClipData
|
import android.content.ClipData
|
||||||
import android.content.ClipboardManager
|
import android.content.ClipboardManager
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import androidx.core.content.getSystemService
|
||||||
import mozilla.components.support.utils.WebURLFinder
|
import mozilla.components.support.utils.WebURLFinder
|
||||||
|
|
||||||
private const val MIME_TYPE_TEXT_PLAIN = "text/plain"
|
private const val MIME_TYPE_TEXT_PLAIN = "text/plain"
|
||||||
|
@ -16,7 +17,7 @@ private const val MIME_TYPE_TEXT_HTML = "text/html"
|
||||||
* A clipboard utility class that allows copying and pasting links/text to & from the clipboard
|
* A clipboard utility class that allows copying and pasting links/text to & from the clipboard
|
||||||
*/
|
*/
|
||||||
class ClipboardHandler(context: Context) {
|
class ClipboardHandler(context: Context) {
|
||||||
private val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
|
private val clipboard = context.getSystemService<ClipboardManager>()!!
|
||||||
|
|
||||||
var text: String?
|
var text: String?
|
||||||
get() {
|
get() {
|
||||||
|
@ -29,7 +30,7 @@ class ClipboardHandler(context: Context) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
set(value) {
|
set(value) {
|
||||||
clipboard.primaryClip = ClipData.newPlainText("Text", value)
|
clipboard.setPrimaryClip(ClipData.newPlainText("Text", value))
|
||||||
}
|
}
|
||||||
|
|
||||||
val url: String?
|
val url: String?
|
||||||
|
|
|
@ -6,7 +6,7 @@ package org.mozilla.fenix.whatsnew
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.SharedPreferences
|
import android.content.SharedPreferences
|
||||||
import android.preference.PreferenceManager
|
import androidx.preference.PreferenceManager
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
|
|
||||||
// This file is a modified port from Focus Android
|
// This file is a modified port from Focus Android
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
android:fontFamily="@font/metropolis_bold"
|
android:fontFamily="@font/metropolis_bold"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="@dimen/tracking_protection_item_height"
|
android:layout_height="@dimen/tracking_protection_item_height"
|
||||||
android:layout_marginStart="16dp"
|
android:layout_marginStart="72dp"
|
||||||
android:layout_marginEnd="16dp"
|
android:layout_marginEnd="16dp"
|
||||||
android:paddingStart="0dp"
|
android:paddingStart="0dp"
|
||||||
android:paddingEnd="0dp"
|
android:paddingEnd="0dp"
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
android:id="@+id/trackingProtectionCategoryTitle"
|
android:id="@+id/trackingProtectionCategoryTitle"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="@dimen/library_item_icon_margin_horizontal"
|
android:layout_marginStart="32dp"
|
||||||
android:layout_marginTop="12dp"
|
android:layout_marginTop="12dp"
|
||||||
android:layout_marginEnd="@dimen/library_item_icon_margin_horizontal"
|
android:layout_marginEnd="@dimen/library_item_icon_margin_horizontal"
|
||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
|
@ -44,7 +44,7 @@
|
||||||
android:id="@+id/trackingProtectionCategoryItemDescription"
|
android:id="@+id/trackingProtectionCategoryItemDescription"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="@dimen/library_item_icon_margin_horizontal"
|
android:layout_marginStart="32dp"
|
||||||
android:layout_marginEnd="@dimen/library_item_icon_margin_horizontal"
|
android:layout_marginEnd="@dimen/library_item_icon_margin_horizontal"
|
||||||
android:layout_marginBottom="18dp"
|
android:layout_marginBottom="18dp"
|
||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
|
|
|
@ -217,6 +217,10 @@
|
||||||
<string name="preferences_private_browsing_options">Поверително разглеждане</string>
|
<string name="preferences_private_browsing_options">Поверително разглеждане</string>
|
||||||
<!-- Preference for opening links in a private tab-->
|
<!-- Preference for opening links in a private tab-->
|
||||||
<string name="preferences_open_links_in_a_private_tab">Отваряне препратките в поверителен раздел</string>
|
<string name="preferences_open_links_in_a_private_tab">Отваряне препратките в поверителен раздел</string>
|
||||||
|
<!-- Preference for allowing screenshots to be taken while in a private tab-->
|
||||||
|
<string name="preferences_allow_screenshots_in_private_mode">Снимки на екрана в поверителен режим</string>
|
||||||
|
<!-- Preference for adding private browsing shortcut -->
|
||||||
|
<string name="preferences_add_private_browsing_shortcut">Добавяне на икона за поверителен режим</string>
|
||||||
<!-- Preference for accessibility -->
|
<!-- Preference for accessibility -->
|
||||||
<string name="preferences_accessibility">Достъпност</string>
|
<string name="preferences_accessibility">Достъпност</string>
|
||||||
<!-- Preference category for account information -->
|
<!-- Preference category for account information -->
|
||||||
|
@ -233,6 +237,8 @@
|
||||||
<string name="preferences_sign_in_description">Синхронизирайте отметки, пароли и други с вашия Firefox Account</string>
|
<string name="preferences_sign_in_description">Синхронизирайте отметки, пароли и други с вашия Firefox Account</string>
|
||||||
<!-- Preference shown instead of account display name while account profile information isn't available yet. -->
|
<!-- Preference shown instead of account display name while account profile information isn't available yet. -->
|
||||||
<string name="preferences_account_default_name">Firefox Account</string>
|
<string name="preferences_account_default_name">Firefox Account</string>
|
||||||
|
<!-- Preference text for account title when there was an error syncing FxA -->
|
||||||
|
<string name="preferences_account_sync_error">Свържете повторно, за да бъде възобновено синхронизирането</string>
|
||||||
<!-- Preference for language -->
|
<!-- Preference for language -->
|
||||||
<string name="preferences_language">Език</string>
|
<string name="preferences_language">Език</string>
|
||||||
<!-- Preference for data choices -->
|
<!-- Preference for data choices -->
|
||||||
|
@ -251,6 +257,8 @@
|
||||||
<string name="preferences_show_search_suggestions">Показване на предложения</string>
|
<string name="preferences_show_search_suggestions">Показване на предложения</string>
|
||||||
<!-- Preference title for switch preference to show voice search button -->
|
<!-- Preference title for switch preference to show voice search button -->
|
||||||
<string name="preferences_show_voice_search">Показване на гласово търсене</string>
|
<string name="preferences_show_voice_search">Показване на гласово търсене</string>
|
||||||
|
<!-- Preference title for switch preference to show search suggestions also in private mode -->
|
||||||
|
<string name="preferences_show_search_suggestions_in_private">Показване в поверителен режим</string>
|
||||||
<!-- Preference title for switch preference to show a clipboard suggestion when searching -->
|
<!-- Preference title for switch preference to show a clipboard suggestion when searching -->
|
||||||
<string name="preferences_show_clipboard_suggestions">Показване на предложения от буфера</string>
|
<string name="preferences_show_clipboard_suggestions">Показване на предложения от буфера</string>
|
||||||
<!-- Preference title for switch preference to suggest browsing history when searching -->
|
<!-- Preference title for switch preference to suggest browsing history when searching -->
|
||||||
|
@ -285,6 +293,14 @@
|
||||||
<string name="empty_device_name_error">Името не може да е празно.</string>
|
<string name="empty_device_name_error">Името не може да е празно.</string>
|
||||||
<!-- Label indicating that sync is in progress -->
|
<!-- Label indicating that sync is in progress -->
|
||||||
<string name="sync_syncing_in_progress">Синхронизиране…</string>
|
<string name="sync_syncing_in_progress">Синхронизиране…</string>
|
||||||
|
<!-- Label summary indicating that sync failed. The first parameter is the date stamp showing last time it succeeded -->
|
||||||
|
<string name="sync_failed_summary">Грешка при синхронизиране. Последен успех: %s</string>
|
||||||
|
<!-- Label summary showing never synced -->
|
||||||
|
<string name="sync_failed_never_synced_summary">Грешка при синхронизиране. Последно синхронизиране: никога</string>
|
||||||
|
<!-- Label summary the date we last synced. The first parameter is date stamp showing last time synced -->
|
||||||
|
<string name="sync_last_synced_summary">Последно синхронизиране: %s</string>
|
||||||
|
<!-- Label summary showing never synced -->
|
||||||
|
<string name="sync_never_synced_summary">Последно синхронизиране: никога</string>
|
||||||
<!-- Text for displaying the default device name.
|
<!-- Text for displaying the default device name.
|
||||||
The first parameter is the application name, the second is the device manufacturer name
|
The first parameter is the application name, the second is the device manufacturer name
|
||||||
and the third is the device model. -->
|
and the third is the device model. -->
|
||||||
|
@ -320,6 +336,9 @@
|
||||||
<!-- Text displayed when there are no exceptions, with learn more link that brings users to a tracking protection SUMO page -->
|
<!-- Text displayed when there are no exceptions, with learn more link that brings users to a tracking protection SUMO page -->
|
||||||
<string name="exceptions_empty_message_learn_more_link">Научете повече</string>
|
<string name="exceptions_empty_message_learn_more_link">Научете повече</string>
|
||||||
|
|
||||||
|
<!-- Description in Quick Settings that tells user tracking protection is off globally for all sites, and links to Settings to turn it on -->
|
||||||
|
<string name="preferences_tracking_protection_turned_off_globally">Изключено глобално, посетете Настройки, за да го включите.</string>
|
||||||
|
|
||||||
<!-- Preference switch for Telemetry -->
|
<!-- Preference switch for Telemetry -->
|
||||||
<string name="preferences_telemetry">Телеметрия</string>
|
<string name="preferences_telemetry">Телеметрия</string>
|
||||||
<!-- Preference switch for usage and technical data collection -->
|
<!-- Preference switch for usage and technical data collection -->
|
||||||
|
@ -335,9 +354,14 @@
|
||||||
<!-- Preference switch for Mozilla location service -->
|
<!-- Preference switch for Mozilla location service -->
|
||||||
<string name="preferences_mozilla_location_service">Услуга за местоположение на Mozilla</string>
|
<string name="preferences_mozilla_location_service">Услуга за местоположение на Mozilla</string>
|
||||||
|
|
||||||
|
<!-- Preference switch for app health report. The first parameter is the name of the application (For example: Fenix) -->
|
||||||
|
<string name="preferences_fenix_health_report">Здравен доклад за %s</string>
|
||||||
|
|
||||||
<!-- Turn On Sync Preferences -->
|
<!-- Turn On Sync Preferences -->
|
||||||
<!-- Header of the Turn on Sync preference view -->
|
<!-- Header of the Turn on Sync preference view -->
|
||||||
<string name="preferences_sync">Включване на Sync</string>
|
<string name="preferences_sync">Включване на Sync</string>
|
||||||
|
<!-- Preference for pairing -->
|
||||||
|
<string name="preferences_sync_pair">Сканирайте кода за сдвояване в настолен Firefox</string>
|
||||||
<!-- Preference for account login -->
|
<!-- Preference for account login -->
|
||||||
<string name="preferences_sync_sign_in">Вход</string>
|
<string name="preferences_sync_sign_in">Вход</string>
|
||||||
<!-- Preference for reconnecting to FxA sync -->
|
<!-- Preference for reconnecting to FxA sync -->
|
||||||
|
@ -349,6 +373,8 @@
|
||||||
<!-- Instructions on how to access pairing -->
|
<!-- Instructions on how to access pairing -->
|
||||||
<string name="pair_instructions_2"><![CDATA[Сканирайте кода на QR, показан на <b>firefox.com/pair</b>]]></string>
|
<string name="pair_instructions_2"><![CDATA[Сканирайте кода на QR, показан на <b>firefox.com/pair</b>]]></string>
|
||||||
|
|
||||||
|
<!-- Button to open camera for pairing -->
|
||||||
|
<string name="pair_open_camera">Отваряне на камерата</string>
|
||||||
<!-- Button to cancel pairing -->
|
<!-- Button to cancel pairing -->
|
||||||
<string name="pair_cancel">Отказ</string>
|
<string name="pair_cancel">Отказ</string>
|
||||||
|
|
||||||
|
@ -364,6 +390,104 @@
|
||||||
<!-- Preference for using dark theme -->
|
<!-- Preference for using dark theme -->
|
||||||
<string name="preference_dark_theme">Тъмна</string>
|
<string name="preference_dark_theme">Тъмна</string>
|
||||||
|
|
||||||
|
<!-- Preference for using using dark or light theme automatically set by battery -->
|
||||||
|
<string name="preference_auto_battery_theme">Зададена от приложението за пестене на батерия</string>
|
||||||
|
<!-- Preference for using following device theme -->
|
||||||
|
<string name="preference_follow_device_theme">Следва темата на устройството</string>
|
||||||
|
|
||||||
|
<!-- Library -->
|
||||||
|
<!-- Option in Library to open Sessions page -->
|
||||||
|
<string name="library_sessions">Сесии</string>
|
||||||
|
<!-- Option in Library to open Screenshots page -->
|
||||||
|
<string name="library_screenshots">Снимки на екрана</string>
|
||||||
|
<!-- Option in Library to open Downloads page -->
|
||||||
|
<string name="library_downloads">Изтегляния</string>
|
||||||
|
<!-- Option in library to open Bookmarks page -->
|
||||||
|
<string name="library_bookmarks">Отметки</string>
|
||||||
|
<!-- Option in library to open Desktop Bookmarks root page -->
|
||||||
|
<string name="library_desktop_bookmarks_root">Настолни отметки</string>
|
||||||
|
<!-- Option in library to open Desktop Bookmarks "menu" page -->
|
||||||
|
<string name="library_desktop_bookmarks_menu">Меню с отметки</string>
|
||||||
|
<!-- Option in library to open Desktop Bookmarks "toolbar" page -->
|
||||||
|
<string name="library_desktop_bookmarks_toolbar">Лента с отметки</string>
|
||||||
|
<!-- Option in library to open Desktop Bookmarks "unfiled" page -->
|
||||||
|
<string name="library_desktop_bookmarks_unfiled">Други отметки</string>
|
||||||
|
<!-- Option in Library to open History page -->
|
||||||
|
<string name="library_history">История</string>
|
||||||
|
<!-- Option in Library to open Synced Tabs page -->
|
||||||
|
<string name="library_synced_tabs">Синхронизирани раздели</string>
|
||||||
|
<!-- Option in Library to open Reading List -->
|
||||||
|
<string name="library_reading_list">Списък за четене</string>
|
||||||
|
<!-- Menu Item Label for Search in Library -->
|
||||||
|
<string name="library_search">Търсене</string>
|
||||||
|
<!-- Settings Page Title -->
|
||||||
|
<string name="settings_title">Настройки</string>
|
||||||
|
<!-- Content description (not visible, for screen readers etc.): "Menu icon for items on a history item" -->
|
||||||
|
<string name="content_description_history_menu">Меню на елемент от историята</string>
|
||||||
|
<!-- Content description (not visible, for screen readers etc.): "Close button for library settings" -->
|
||||||
|
<string name="content_description_close_button">Затваряне</string>
|
||||||
|
|
||||||
|
<!-- Sessions -->
|
||||||
|
<!-- Title for the list of tabs -->
|
||||||
|
<string name="tab_header_label">Отворени раздели</string>
|
||||||
|
<!-- Title for the list of tabs in the current private session -->
|
||||||
|
<string name="tabs_header_private_title">Поверителни сесии</string>
|
||||||
|
<!-- Title for the list of tabs in the current private session -->
|
||||||
|
<string name="tabs_header_private_tabs_title">Поверителни раздели</string>
|
||||||
|
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||||
|
<string name="add_tab">Добавяне на раздел</string>
|
||||||
|
<!-- Content description (not visible, for screen readers etc.): Add tab button. Adds a news tab when pressed -->
|
||||||
|
<string name="add_private_tab">Отваря поверителен раздел</string>
|
||||||
|
<!-- Text for the new tab button to indicate adding a new private tab in the tab -->
|
||||||
|
<string name="tab_drawer_fab_content">Поверителен</string>
|
||||||
|
<!-- Text shown as the title of the open tab tray -->
|
||||||
|
<string name="tab_tray_title">Отворени раздели</string>
|
||||||
|
<!-- Text shown in the menu for saving tabs to a collection -->
|
||||||
|
<string name="tab_tray_menu_item_save">Добавяне в списък</string>
|
||||||
|
<!-- Text shown in the menu for sharing all tabs -->
|
||||||
|
<string name="tab_tray_menu_item_share">Споделяне на всички раздели</string>
|
||||||
|
<!-- Text shown in the menu for closing all tabs -->
|
||||||
|
<string name="tab_tray_menu_item_close">Затваряне на всички раздели</string>
|
||||||
|
<!-- Shortcut action to open new tab -->
|
||||||
|
<string name="tab_tray_menu_open_new_tab">Нов раздел</string>
|
||||||
|
<!-- Shortcut action to open the home screen -->
|
||||||
|
<string name="tab_tray_menu_home">Начален екран</string>
|
||||||
|
<!-- Shortcut action to toggle private mode -->
|
||||||
|
<string name="tab_tray_menu_toggle">Превключване режима на раздела</string>
|
||||||
|
<!-- Content description (not visible, for screen readers etc.): Removes tab from collection button. Removes the selected tab from collection when pressed -->
|
||||||
|
<string name="remove_tab_from_collection">Премахване на раздела от спъсъка</string>
|
||||||
|
<!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed -->
|
||||||
|
<string name="close_tab">Затваряне на раздел</string>
|
||||||
|
<!-- Content description (not visible, for screen readers etc.): Close tab <title> button. First parameter is tab title -->
|
||||||
|
<string name="close_tab_title">Затваряне на раздел %s</string>
|
||||||
|
<!-- Content description (not visible, for screen readers etc.): Opens the open tabs menu when pressed -->
|
||||||
|
<string name="open_tabs_menu">Отваряне на меню Раздели</string>
|
||||||
|
<!-- Open tabs menu item to close all tabs -->
|
||||||
|
<string name="tabs_menu_close_all_tabs">Затваряне на всички раздели</string>
|
||||||
|
<!-- Open tabs menu item to share all tabs -->
|
||||||
|
<string name="tabs_menu_share_tabs">Споделяне на раздели</string>
|
||||||
|
<!-- Open tabs menu item to save tabs to collection -->
|
||||||
|
<string name="tabs_menu_save_to_collection1">Запазване на раздели в списък</string>
|
||||||
|
<!-- Content description (not visible, for screen readers etc.): Opens the tab menu when pressed -->
|
||||||
|
<string name="tab_menu">Меню Раздели</string>
|
||||||
|
<!-- Tab menu item to share the tab -->
|
||||||
|
<string name="tab_share">Споделяне на раздел</string>
|
||||||
|
<!-- Button in the current session menu. Deletes the session when pressed -->
|
||||||
|
<string name="current_session_delete">Изтриване</string>
|
||||||
|
<!-- Button in the current session menu. Saves the session when pressed -->
|
||||||
|
<string name="current_session_save">Запазване</string>
|
||||||
|
<!-- Button in the current session menu. Opens the share menu when pressed -->
|
||||||
|
<string name="current_session_share">Споделяне</string>
|
||||||
|
<!-- Content description (not visible, for screen readers etc.): Title icon for current session menu -->
|
||||||
|
<string name="current_session_image">Заглавна пиктограма на текущото меню на сесия</string>
|
||||||
|
|
||||||
|
<!-- Content description (not visible, for screen readers etc.): Quick settings sheet
|
||||||
|
to give users access to site specific information / settings. For example:
|
||||||
|
Secure settings status and a button to modify site permissions -->
|
||||||
|
<string name="quick_settings_sheet">Списък с бързи настройки</string>
|
||||||
|
|
||||||
|
<!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed -->
|
||||||
|
<string name="collection_menu_button_content_description">Меню Списъци</string>
|
||||||
<!-- Button to select all tabs in the "select tabs" step of the collection creator -->
|
<!-- Button to select all tabs in the "select tabs" step of the collection creator -->
|
||||||
<string name="create_collection_select_all">Избиране на всички</string>
|
<string name="create_collection_select_all">Избиране на всички</string>
|
||||||
<!-- Text shown in snackbar when multiple tabs have been saved in a collection -->
|
<!-- Text shown in snackbar when multiple tabs have been saved in a collection -->
|
||||||
|
@ -375,10 +499,50 @@
|
||||||
<!-- Button to save currently selected tabs in the "select tabs" step of the collection creator-->
|
<!-- Button to save currently selected tabs in the "select tabs" step of the collection creator-->
|
||||||
<string name="create_collection_save">Запазване</string>
|
<string name="create_collection_save">Запазване</string>
|
||||||
|
|
||||||
|
<!-- Content description (not visible, for screen readers etc.):
|
||||||
|
"Share" button. Opens the share menu when pressed. -->
|
||||||
|
<string name="share_button_content_description">Споделяне</string>
|
||||||
|
|
||||||
<!-- QR code scanner prompt which appears after scanning a code, but before navigating to it
|
<!-- QR code scanner prompt which appears after scanning a code, but before navigating to it
|
||||||
First parameter is the name of the app, second parameter is the URL or text scanned-->
|
First parameter is the name of the app, second parameter is the URL or text scanned-->
|
||||||
<string name="qr_scanner_confirmation_dialog_message">Разрешете %1$s да отвори %2$s</string>
|
<string name="qr_scanner_confirmation_dialog_message">Разрешете %1$s да отвори %2$s</string>
|
||||||
|
|
||||||
|
<!-- text for the Firefox Preview feature section header
|
||||||
|
The first parameter is the name of the app (e.g. Firefox Preview) -->
|
||||||
|
<string name="onboarding_feature_section_header">Запознайте се с %s</string>
|
||||||
|
<!-- text for the "What's New" onboarding card header -->
|
||||||
|
<string name="onboarding_whats_new_header1">Вижте какво е новото</string>
|
||||||
|
<!-- text for the "what's new" onboarding card description
|
||||||
|
The first parameter is the short name of the app (e.g. Firefox) -->
|
||||||
|
<string name="onboarding_whats_new_description">Имате въпроси относно новия дизайн на %s? Искате ли да разберете какви са промените?</string>
|
||||||
|
<!-- text for underlined clickable link that is part of "what's new" onboarding card description that links to an FAQ -->
|
||||||
|
<string name="onboarding_whats_new_description_linktext">Получете отговори тук</string>
|
||||||
|
<!-- text for the firefox account onboarding card header
|
||||||
|
The first parameter is the name of the app (e.g. Firefox Preview) -->
|
||||||
|
<string name="onboarding_firefox_account_header">Извлечете максимума от %s</string>
|
||||||
|
|
||||||
|
<!-- text for the tracking protection onboarding card header -->
|
||||||
|
<string name="onboarding_tracking_protection_header_2">Автоматична поверителност</string>
|
||||||
|
<!-- text for the tracking protection card description
|
||||||
|
The first parameter is the name of the app (e.g. Firefox Preview) -->
|
||||||
|
<string name="onboarding_tracking_protection_description_2">Настройките за поверителност и сигурност спират проследяващ и злонамерен код, както и компании, които ви преследват.</string>
|
||||||
|
<!-- text for tracking protection radio button option for standard level of blocking -->
|
||||||
|
<string name="onboarding_tracking_protection_standard_button_2">Стандартна (по подразбиране)</string>
|
||||||
|
<!-- text for standard blocking option button description -->
|
||||||
|
<string name="onboarding_tracking_protection_standard_button_description_2">Спира малко проследявания. Страниците зареждат нормално.</string>
|
||||||
|
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||||
|
<string name="onboarding_tracking_protection_strict_button">Строга (препоръчителна)</string>
|
||||||
|
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||||
|
<string name="onboarding_tracking_protection_strict_option">Строга</string>
|
||||||
|
<!-- text for strict blocking option button description -->
|
||||||
|
<string name="onboarding_tracking_protection_strict_button_description_2">Спира повече проследявания, реклами и изскачащи прозорци. Страниците зареждат по-бързо, но може да не работят.</string>
|
||||||
|
<!-- Content description (not visible, for screen readers etc.): Close onboarding screen -->
|
||||||
|
<string name="onboarding_close">Затваряне</string>
|
||||||
|
|
||||||
|
<!-- Onboarding theme -->
|
||||||
|
<!-- text for the theme picker onboarding card header -->
|
||||||
|
<string name="onboarding_theme_picker_header">Изберете тема</string>
|
||||||
|
|
||||||
<!-- Title for the description of enhanced tracking protection -->
|
<!-- Title for the description of enhanced tracking protection -->
|
||||||
<string name="preference_enhanced_tracking_protection_explanation_title">Преглеждайте без да бъдете следени</string>
|
<string name="preference_enhanced_tracking_protection_explanation_title">Преглеждайте без да бъдете следени</string>
|
||||||
|
|
||||||
|
@ -388,11 +552,23 @@
|
||||||
<!-- Text displayed that links to website about enhanced tracking protection -->
|
<!-- Text displayed that links to website about enhanced tracking protection -->
|
||||||
<string name="preference_enhanced_tracking_protection_explanation_learn_more">Научете повече</string>
|
<string name="preference_enhanced_tracking_protection_explanation_learn_more">Научете повече</string>
|
||||||
|
|
||||||
|
<!-- Content description (not visible, for screen readers etc.): Navigate
|
||||||
|
back from ETP details (Ex: Tracking content) -->
|
||||||
|
<string name="etp_back_button_content_description">Връщане назад</string>
|
||||||
|
|
||||||
<!-- Preference to access list of saved logins -->
|
<!-- Preference to access list of saved logins -->
|
||||||
<string name="preferences_passwords_saved_logins_description_empty_learn_more_link">Научете повече за Sync.</string>
|
<string name="preferences_passwords_saved_logins_description_empty_learn_more_link">Научете повече за Sync.</string>
|
||||||
<!-- Learn more link that will link to a page with more information displayed when a connection is insecure and we detect the user is entering a password -->
|
<!-- Learn more link that will link to a page with more information displayed when a connection is insecure and we detect the user is entering a password -->
|
||||||
<string name="logins_insecure_connection_warning_learn_more">Научете повече</string>
|
<string name="logins_insecure_connection_warning_learn_more">Научете повече</string>
|
||||||
|
|
||||||
|
<!-- Content description (not visible, for screen readers etc.): Sort saved logins dropdown menu chevron icon -->
|
||||||
|
<string name="saved_logins_menu_dropdown_chevron_icon_content_description">Меню за сортиране на регистрации</string>
|
||||||
|
|
||||||
|
<!-- Content description (not visible, for screen readers etc.): Title for the button to add a search engine in the action bar -->
|
||||||
|
<string name="search_engine_add_button_content_description">Добавяне</string>
|
||||||
|
<!-- Content description (not visible, for screen readers etc.): Title for the button to save a search engine in the action bar -->
|
||||||
|
<string name="search_engine_add_custom_search_engine_edit_button_content_description">Запазване</string>
|
||||||
|
|
||||||
<!-- Text for the button to learn more about adding a custom search engine -->
|
<!-- Text for the button to learn more about adding a custom search engine -->
|
||||||
<string name="search_add_custom_engine_learn_more_label">Научете повече</string>
|
<string name="search_add_custom_engine_learn_more_label">Научете повече</string>
|
||||||
<!-- Accessibility description for the 'Learn more' link -->
|
<!-- Accessibility description for the 'Learn more' link -->
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
<!-- Private Browsing -->
|
<!-- Private Browsing -->
|
||||||
<!-- Title for private session option -->
|
<!-- Title for private session option -->
|
||||||
<string name="private_browsing_title">Nalazite se u privatnoj sesiji</string>
|
<string name="private_browsing_title">Nalazite se u privatnoj sesiji</string>
|
||||||
|
<string name="private_browsing_common_myths">Uobičajeni mitovi o privatnom surfanju</string>
|
||||||
<!-- Delete session button to erase your history in a private session -->
|
<!-- Delete session button to erase your history in a private session -->
|
||||||
<string name="private_browsing_delete_session">Obriši sesiju</string>
|
<string name="private_browsing_delete_session">Obriši sesiju</string>
|
||||||
|
|
||||||
|
@ -210,6 +211,8 @@
|
||||||
<string name="preferences_allow_screenshots_in_private_mode">Dozvoli screenshote u privatnom surfanju</string>
|
<string name="preferences_allow_screenshots_in_private_mode">Dozvoli screenshote u privatnom surfanju</string>
|
||||||
<!-- Preference for adding private browsing shortcut -->
|
<!-- Preference for adding private browsing shortcut -->
|
||||||
<string name="preferences_add_private_browsing_shortcut">Dodaj prečicu za privatno surfanje</string>
|
<string name="preferences_add_private_browsing_shortcut">Dodaj prečicu za privatno surfanje</string>
|
||||||
|
<!-- Preference for accessibility -->
|
||||||
|
<string name="preferences_accessibility">Pristupačnost</string>
|
||||||
<!-- Preference to override the Firefox Account server -->
|
<!-- Preference to override the Firefox Account server -->
|
||||||
<string name="preferences_override_fxa_server">Zaseban Firefox Account server</string>
|
<string name="preferences_override_fxa_server">Zaseban Firefox Account server</string>
|
||||||
<!-- Preference to override the Sync token server -->
|
<!-- Preference to override the Sync token server -->
|
||||||
|
@ -230,6 +233,8 @@
|
||||||
<string name="preferences_sign_in_description">Sinhronizujte zabilješke, historiju i više od toga s vašim Firefox računom</string>
|
<string name="preferences_sign_in_description">Sinhronizujte zabilješke, historiju i više od toga s vašim Firefox računom</string>
|
||||||
<!-- Preference shown instead of account display name while account profile information isn't available yet. -->
|
<!-- Preference shown instead of account display name while account profile information isn't available yet. -->
|
||||||
<string name="preferences_account_default_name">Firefox račun</string>
|
<string name="preferences_account_default_name">Firefox račun</string>
|
||||||
|
<!-- Preference text for account title when there was an error syncing FxA -->
|
||||||
|
<string name="preferences_account_sync_error">Ponovo se povežite za nastavak sinhronizacije</string>
|
||||||
<!-- Preference for language -->
|
<!-- Preference for language -->
|
||||||
<string name="preferences_language">Jezik</string>
|
<string name="preferences_language">Jezik</string>
|
||||||
<!-- Preference for data choices -->
|
<!-- Preference for data choices -->
|
||||||
|
@ -358,6 +363,8 @@
|
||||||
<string name="preferences_sync_pair">Skenirajte kod za uparivanje u desktop Firefoxu</string>
|
<string name="preferences_sync_pair">Skenirajte kod za uparivanje u desktop Firefoxu</string>
|
||||||
<!-- Preference for account login -->
|
<!-- Preference for account login -->
|
||||||
<string name="preferences_sync_sign_in">Prijava</string>
|
<string name="preferences_sync_sign_in">Prijava</string>
|
||||||
|
<!-- Preference for reconnecting to FxA sync -->
|
||||||
|
<string name="preferences_sync_sign_in_to_reconnect">Prijavite se radi ponovnog povezivanja</string>
|
||||||
<!-- Preference for removing FxA account -->
|
<!-- Preference for removing FxA account -->
|
||||||
<string name="preferences_sync_remove_account">Ukloni račun</string>
|
<string name="preferences_sync_remove_account">Ukloni račun</string>
|
||||||
|
|
||||||
|
@ -439,18 +446,24 @@
|
||||||
<string name="tab_tray_menu_open_new_tab">Novi tab</string>
|
<string name="tab_tray_menu_open_new_tab">Novi tab</string>
|
||||||
<!-- Shortcut action to open the home screen -->
|
<!-- Shortcut action to open the home screen -->
|
||||||
<string name="tab_tray_menu_home">Početni</string>
|
<string name="tab_tray_menu_home">Početni</string>
|
||||||
|
<!-- Shortcut action to toggle private mode -->
|
||||||
|
<string name="tab_tray_menu_toggle">Promijeni režim taba</string>
|
||||||
<!-- Content description (not visible, for screen readers etc.): Removes tab from collection button. Removes the selected tab from collection when pressed -->
|
<!-- Content description (not visible, for screen readers etc.): Removes tab from collection button. Removes the selected tab from collection when pressed -->
|
||||||
<string name="remove_tab_from_collection">Ukloni tab iz kolekcije</string>
|
<string name="remove_tab_from_collection">Ukloni tab iz kolekcije</string>
|
||||||
<!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed -->
|
<!-- Content description (not visible, for screen readers etc.): Close tab button. Closes the current session when pressed -->
|
||||||
<string name="close_tab">Zatvori tab</string>
|
<string name="close_tab">Zatvori tab</string>
|
||||||
<!-- Content description (not visible, for screen readers etc.): Close tab <title> button. First parameter is tab title -->
|
<!-- Content description (not visible, for screen readers etc.): Close tab <title> button. First parameter is tab title -->
|
||||||
<string name="close_tab_title">Zatvori tab %s</string>
|
<string name="close_tab_title">Zatvori tab %s</string>
|
||||||
|
<!-- Content description (not visible, for screen readers etc.): Opens the open tabs menu when pressed -->
|
||||||
|
<string name="open_tabs_menu">Meni otvorenih tabova</string>
|
||||||
<!-- Open tabs menu item to close all tabs -->
|
<!-- Open tabs menu item to close all tabs -->
|
||||||
<string name="tabs_menu_close_all_tabs">Zatvori sve tabove</string>
|
<string name="tabs_menu_close_all_tabs">Zatvori sve tabove</string>
|
||||||
<!-- Open tabs menu item to share all tabs -->
|
<!-- Open tabs menu item to share all tabs -->
|
||||||
<string name="tabs_menu_share_tabs">Podijeli tabove</string>
|
<string name="tabs_menu_share_tabs">Podijeli tabove</string>
|
||||||
<!-- Open tabs menu item to save tabs to collection -->
|
<!-- Open tabs menu item to save tabs to collection -->
|
||||||
<string name="tabs_menu_save_to_collection1">Spasi tabove u kolekciju</string>
|
<string name="tabs_menu_save_to_collection1">Spasi tabove u kolekciju</string>
|
||||||
|
<!-- Content description (not visible, for screen readers etc.): Opens the tab menu when pressed -->
|
||||||
|
<string name="tab_menu">Meni tabova</string>
|
||||||
<!-- Tab menu item to share the tab -->
|
<!-- Tab menu item to share the tab -->
|
||||||
<string name="tab_share">Podijeli tab</string>
|
<string name="tab_share">Podijeli tab</string>
|
||||||
<!-- Button in the current session menu. Deletes the session when pressed -->
|
<!-- Button in the current session menu. Deletes the session when pressed -->
|
||||||
|
@ -804,8 +817,6 @@
|
||||||
<!-- Title for the Delete browsing data on quit preference -->
|
<!-- Title for the Delete browsing data on quit preference -->
|
||||||
<string name="preferences_delete_browsing_data_on_quit">Obriši podatke surfanja pri izlazu</string>
|
<string name="preferences_delete_browsing_data_on_quit">Obriši podatke surfanja pri izlazu</string>
|
||||||
|
|
||||||
<!-- Category for history items to delete on quit in delete browsing data on quit -->
|
|
||||||
<string name="preferences_delete_browsing_data_on_quit_browsing_history">Historija surfanja</string>
|
|
||||||
<!-- Action item in menu for the Delete browsing data on quit feature -->
|
<!-- Action item in menu for the Delete browsing data on quit feature -->
|
||||||
<string name="delete_browsing_data_on_quit_action">Ugasi</string>
|
<string name="delete_browsing_data_on_quit_action">Ugasi</string>
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -13,8 +13,6 @@
|
||||||
<string name="content_description_disable_private_browsing_button">Desactivar la navigacion privada.</string>
|
<string name="content_description_disable_private_browsing_button">Desactivar la navigacion privada.</string>
|
||||||
<!-- Placeholder text shown in the search bar before a user enters text -->
|
<!-- Placeholder text shown in the search bar before a user enters text -->
|
||||||
<string name="search_hint">Recèrca o adreça</string>
|
<string name="search_hint">Recèrca o adreça</string>
|
||||||
<!-- No Open Tabs Message Header -->
|
|
||||||
<string name="no_open_tabs_header_2">Cap d’onglet pas dobèrt</string>
|
|
||||||
|
|
||||||
<!-- Delete session button to erase your history in a private session -->
|
<!-- Delete session button to erase your history in a private session -->
|
||||||
<string name="private_browsing_delete_session">Suprimir la session</string>
|
<string name="private_browsing_delete_session">Suprimir la session</string>
|
||||||
|
@ -278,10 +276,22 @@
|
||||||
<!-- Text for the menu button to remove a top site -->
|
<!-- Text for the menu button to remove a top site -->
|
||||||
<string name="remove_top_site">Suprimir</string>
|
<string name="remove_top_site">Suprimir</string>
|
||||||
|
|
||||||
|
<!-- History -->
|
||||||
|
<!-- Text for the button to clear all history -->
|
||||||
|
<string name="history_delete_all">Escafar l’istoric</string>
|
||||||
|
<!-- Text for the dialog to confirm clearing all history -->
|
||||||
|
<string name="history_delete_all_dialog">Volètz vertadièrament netejar l’istoric ?</string>
|
||||||
|
<!-- Text for the snackbar to confirm that multiple browsing history items has been deleted -->
|
||||||
|
<string name="history_delete_multiple_items_snackbar">Istoric escafat</string>
|
||||||
|
<!-- Text for the snackbar to confirm that a single browsing history item has been deleted. The first parameter is the shortened URL of the deleted history item. -->
|
||||||
|
<string name="history_delete_single_item_snackbar">%1$s suprimit</string>
|
||||||
<!-- Text for positive action to delete history in deleting history dialog -->
|
<!-- Text for positive action to delete history in deleting history dialog -->
|
||||||
<string name="history_clear_dialog">Escafar</string>
|
<string name="history_clear_dialog">Escafar</string>
|
||||||
<!-- Text for the button to delete a single history item -->
|
<!-- Text for the button to delete a single history item -->
|
||||||
<string name="history_delete_item">Suprimir</string>
|
<string name="history_delete_item">Suprimir</string>
|
||||||
|
<!-- Text for the button to clear selected history items. The first parameter
|
||||||
|
is a digit showing the number of items you have selected -->
|
||||||
|
<string name="history_delete_some">Suprimir %1$d elements</string>
|
||||||
<!-- Text for the header that groups the history for last 24 hours -->
|
<!-- Text for the header that groups the history for last 24 hours -->
|
||||||
<string name="history_24_hours">Las darrièras 24 oras</string>
|
<string name="history_24_hours">Las darrièras 24 oras</string>
|
||||||
<!-- Text for the header that groups the history the past 7 days -->
|
<!-- Text for the header that groups the history the past 7 days -->
|
||||||
|
@ -297,6 +307,8 @@
|
||||||
<!-- Restore tab button text on the tab crash page -->
|
<!-- Restore tab button text on the tab crash page -->
|
||||||
<string name="tab_crash_restore">Restablir l’onglet</string>
|
<string name="tab_crash_restore">Restablir l’onglet</string>
|
||||||
|
|
||||||
|
<!-- Confirmation message for a dialog confirming if the user wants to delete the selected folder -->
|
||||||
|
<string name="bookmark_delete_folder_confirmation_dialog">Volètz vertadièrament suprimir aqueste dorsièr ?</string>
|
||||||
<!-- Bookmark overflow menu copy button -->
|
<!-- Bookmark overflow menu copy button -->
|
||||||
<string name="bookmark_menu_copy_button">Copiar</string>
|
<string name="bookmark_menu_copy_button">Copiar</string>
|
||||||
<!-- Bookmark overflow menu share button -->
|
<!-- Bookmark overflow menu share button -->
|
||||||
|
@ -313,6 +325,9 @@
|
||||||
<!-- Bookmark editing error missing or improper URL -->
|
<!-- Bookmark editing error missing or improper URL -->
|
||||||
<string name="bookmark_invalid_url_error">URL invalida</string>
|
<string name="bookmark_invalid_url_error">URL invalida</string>
|
||||||
|
|
||||||
|
<!-- Bookmark snackbar message on deleting multiple bookmarks -->
|
||||||
|
<string name="bookmark_deletion_multiple_snackbar_message_2">Marcapagina suprimit</string>
|
||||||
|
|
||||||
<!-- Button label that take the user to the Android App setting -->
|
<!-- Button label that take the user to the Android App setting -->
|
||||||
<string name="phone_feature_go_to_settings">Anar als paramètres</string>
|
<string name="phone_feature_go_to_settings">Anar als paramètres</string>
|
||||||
<!-- Preference for altering the camera access for all websites -->
|
<!-- Preference for altering the camera access for all websites -->
|
||||||
|
@ -347,4 +362,69 @@
|
||||||
<!-- Text for the warning message on the Add new device screen -->
|
<!-- Text for the warning message on the Add new device screen -->
|
||||||
<string name="sync_add_new_device_message">Cap de periferic pas connectat</string>
|
<string name="sync_add_new_device_message">Cap de periferic pas connectat</string>
|
||||||
|
|
||||||
|
<!-- Text shown in snackbar when user deletes a tab -->
|
||||||
|
<string name="snackbar_tab_deleted">Onglet suprimit</string>
|
||||||
|
<!-- Text shown in snackbar when user deletes all tabs -->
|
||||||
|
<string name="snackbar_tabs_deleted">Onglets suprimits</string>
|
||||||
|
<!-- Text for action to confirm deleting a tab or collection shown in a11y dialog -->
|
||||||
|
<string name="a11y_dialog_deleted_confirm">Confirmar</string>
|
||||||
|
<!-- Tab collection deletion prompt dialog message. Placeholder will be replaced with the collection name -->
|
||||||
|
<string name="tab_collection_dialog_message">Volètz vertadièrament suprimir %1$s ?</string>
|
||||||
|
<!-- Tab collection deletion prompt dialog option to delete the collection -->
|
||||||
|
<string name="tab_collection_dialog_positive">Suprimir</string>
|
||||||
|
<!-- Tab collection deletion prompt dialog option to cancel deleting the collection -->
|
||||||
|
<string name="tab_collection_dialog_negative">Anullar</string>
|
||||||
|
|
||||||
|
<!-- Title for the tabs item in Delete browsing data -->
|
||||||
|
<string name="preferences_delete_browsing_data_tabs_title_2">Onglets dobèrts</string>
|
||||||
|
<!-- Subtitle for the tabs item in Delete browsing data, parameter will be replaced with the number of open tabs -->
|
||||||
|
<string name="preferences_delete_browsing_data_tabs_subtitle">%d onglets</string>
|
||||||
|
<!-- Subtitle for the data and history items in delete browsing data, parameter will be replaced with the
|
||||||
|
number of history items the user has -->
|
||||||
|
<string name="preferences_delete_browsing_data_browsing_data_subtitle">%d adreças</string>
|
||||||
|
<!-- Title for history items in Delete browsing data -->
|
||||||
|
<string name="preferences_delete_browsing_data_browsing_history_title">Istoric</string>
|
||||||
|
<!-- Subtitle for the history items in delete browsing data, parameter will be replaced with the
|
||||||
|
number of history pages the user has -->
|
||||||
|
<string name="preferences_delete_browsing_data_browsing_history_subtitle">%d paginas</string>
|
||||||
|
<!-- Title for the cookies item in Delete browsing data -->
|
||||||
|
<string name="preferences_delete_browsing_data_cookies">Cookies</string>
|
||||||
|
<!-- Title for the cached images and files item in Delete browsing data -->
|
||||||
|
<string name="preferences_delete_browsing_data_cached_files">Imatges e fichièrs en cache</string>
|
||||||
|
<!-- Action item in menu for the Delete browsing data on quit feature -->
|
||||||
|
<string name="delete_browsing_data_on_quit_action">Sortir</string>
|
||||||
|
|
||||||
|
<!-- Text for the cancel button for the data deletion dialog -->
|
||||||
|
<string name="delete_browsing_data_prompt_cancel">Anullar</string>
|
||||||
|
|
||||||
|
<!-- Text for the allow button for the data deletion dialog -->
|
||||||
|
<string name="delete_browsing_data_prompt_allow">Suprimir</string>
|
||||||
|
|
||||||
|
<!-- Option to cancel signing out shown in confirmation dialog to sign out of account -->
|
||||||
|
<string name="sign_out_cancel">Anullar</string>
|
||||||
|
|
||||||
|
<!-- Cancel button text for the Add to Homescreen dialog -->
|
||||||
|
<string name="add_to_homescreen_cancel">Anullar</string>
|
||||||
|
|
||||||
|
<!-- Text for the menu button to delete a search engine -->
|
||||||
|
<string name="search_engine_delete">Suprimir</string>
|
||||||
|
|
||||||
|
<!-- Text shown when a user successfully deletes a custom search engine -->
|
||||||
|
<string name="search_delete_search_engine_success_message">%s : supression realizada</string>
|
||||||
|
|
||||||
|
<!-- Confirmation message for a dialog confirming if the user wants to delete all the permissions for all sites-->
|
||||||
|
<string name="confirm_clear_permissions_on_all_sites">Volètz vertadièrament suprimir totas las autorizacions per totes los sites ?</string>
|
||||||
|
<!-- Confirmation message for a dialog confirming if the user wants to delete all the permissions for a site-->
|
||||||
|
<string name="confirm_clear_permissions_site">Volètz vertadièrament suprimir totas las autorizacions per aqueste site ?</string>
|
||||||
|
<!-- Confirmation message for a dialog confirming if the user wants to set default value a permission for a site-->
|
||||||
|
<string name="confirm_clear_permission_site">Volètz vertadièrament suprimir aquesta autorizacion per aqueste site ?</string>
|
||||||
|
<!-- Bookmark deletion confirmation -->
|
||||||
|
<string name="bookmark_deletion_confirmation">Sètz segur que volètz suprimir aqueste marcapagina ?</string>
|
||||||
|
<!-- Login overflow menu delete button -->
|
||||||
|
<string name="login_menu_delete_button">Suprimir</string>
|
||||||
|
<!-- Message in delete confirmation dialog for logins -->
|
||||||
|
<string name="login_deletion_confirmation">Sètz segur que volètz suprimir aqueste identificant ?</string>
|
||||||
|
<!-- Positive action of a dialog asking to delete -->
|
||||||
|
<string name="dialog_delete_positive">Suprimir</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
|
|
||||||
<!-- Private mode shortcut "contextual feature recommendation" (CFR) -->
|
<!-- Private mode shortcut "contextual feature recommendation" (CFR) -->
|
||||||
<!-- Text for the main message -->
|
<!-- Text for the main message -->
|
||||||
<string name="cfr_message">Adiciona um atalho na tela inicial para abrir abas privativas.</string>
|
<string name="cfr_message">Adicione um atalho na tela inicial para abrir abas privativas.</string>
|
||||||
<!-- Text for the positive button -->
|
<!-- Text for the positive button -->
|
||||||
<string name="cfr_pos_button_text">Adicionar atalho</string>
|
<string name="cfr_pos_button_text">Adicionar atalho</string>
|
||||||
<!-- Text for the negative button -->
|
<!-- Text for the negative button -->
|
||||||
|
@ -221,7 +221,7 @@
|
||||||
<!-- Preference for private browsing options -->
|
<!-- Preference for private browsing options -->
|
||||||
<string name="preferences_private_browsing_options">Navegação privativa</string>
|
<string name="preferences_private_browsing_options">Navegação privativa</string>
|
||||||
<!-- Preference for opening links in a private tab-->
|
<!-- Preference for opening links in a private tab-->
|
||||||
<string name="preferences_open_links_in_a_private_tab">Abrir links em uma aba privativa</string>
|
<string name="preferences_open_links_in_a_private_tab">Abrir links em abas privativas</string>
|
||||||
<!-- Preference for allowing screenshots to be taken while in a private tab-->
|
<!-- Preference for allowing screenshots to be taken while in a private tab-->
|
||||||
<string name="preferences_allow_screenshots_in_private_mode">Permitir capturas de tela na navegação privativa</string>
|
<string name="preferences_allow_screenshots_in_private_mode">Permitir capturas de tela na navegação privativa</string>
|
||||||
<!-- Preference for adding private browsing shortcut -->
|
<!-- Preference for adding private browsing shortcut -->
|
||||||
|
@ -700,7 +700,7 @@
|
||||||
<!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed -->
|
<!-- Content description (not visible, for screen readers etc.): Opens the collection menu when pressed -->
|
||||||
<string name="collection_menu_button_content_description">Menu de coleções</string>
|
<string name="collection_menu_button_content_description">Menu de coleções</string>
|
||||||
<!-- No Open Tabs Message Header -->
|
<!-- No Open Tabs Message Header -->
|
||||||
<string name="no_collections_header1">Colete o que é importante para você</string>
|
<string name="no_collections_header1">Colecione o que é importante para você</string>
|
||||||
<!-- Label to describe what collections are to a new user without any collections -->
|
<!-- Label to describe what collections are to a new user without any collections -->
|
||||||
<string name="no_collections_description1">Agrupe pesquisas, sites e abas semelhantes para acesso rápido mais tarde.</string>
|
<string name="no_collections_description1">Agrupe pesquisas, sites e abas semelhantes para acesso rápido mais tarde.</string>
|
||||||
<!-- Title for the "select tabs" step of the collection creator -->
|
<!-- Title for the "select tabs" step of the collection creator -->
|
||||||
|
|
|
@ -1,6 +1,13 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
|
|
||||||
|
<!-- App name for private browsing mode. The first parameter is the name of the app defined in app_name (for example: Fenix)-->
|
||||||
|
<string name="app_name_private_5">%s nyamuni</string>
|
||||||
|
<!-- App name for private browsing mode. The first parameter is the name of the app defined in app_name (for example: Fenix)-->
|
||||||
|
<string name="app_name_private_4">%s (Nyamuni)</string>
|
||||||
|
<!-- Home Fragment -->
|
||||||
|
<!-- Content description (not visible, for screen readers etc.): "Three dot" menu button. -->
|
||||||
|
<string name="content_description_menu">Pilihan séjén</string>
|
||||||
<!-- Placeholder text shown in the search bar before a user enters text -->
|
<!-- Placeholder text shown in the search bar before a user enters text -->
|
||||||
<string name="search_hint">Paluruh atawa asupkeun alamat</string>
|
<string name="search_hint">Paluruh atawa asupkeun alamat</string>
|
||||||
|
|
||||||
|
@ -49,8 +56,6 @@
|
||||||
|
|
||||||
<!-- Browser menu button that saves the current tab to a collection -->
|
<!-- Browser menu button that saves the current tab to a collection -->
|
||||||
<string name="browser_menu_save_to_collection_2">Simpen kana koléksi</string>
|
<string name="browser_menu_save_to_collection_2">Simpen kana koléksi</string>
|
||||||
<!-- Browser menu button that opens a dialog to report issues with the current site -->
|
|
||||||
<string name="browser_menu_report_issue">Laporkeun masalah loka</string>
|
|
||||||
<!-- Browser menu button that open a share menu to share the current site -->
|
<!-- Browser menu button that open a share menu to share the current site -->
|
||||||
<string name="browser_menu_share">Bagikeun</string>
|
<string name="browser_menu_share">Bagikeun</string>
|
||||||
<!-- Browser menu button shown in custom tabs that opens the current tab in Fenix
|
<!-- Browser menu button shown in custom tabs that opens the current tab in Fenix
|
||||||
|
@ -62,7 +67,7 @@
|
||||||
<!-- Browser menu text shown in custom tabs to indicate this is a Fenix tab
|
<!-- Browser menu text shown in custom tabs to indicate this is a Fenix tab
|
||||||
The first parameter is the name of the app defined in app_name (for example: Fenix) -->
|
The first parameter is the name of the app defined in app_name (for example: Fenix) -->
|
||||||
<string name="browser_menu_powered_by2">Dijalankeun ku %1$s</string>
|
<string name="browser_menu_powered_by2">Dijalankeun ku %1$s</string>
|
||||||
<!-- Browser menu button to put the the current page in reader mode -->
|
<!-- Browser menu button to put the current page in reader mode -->
|
||||||
<string name="browser_menu_read">Pidangan baca</string>
|
<string name="browser_menu_read">Pidangan baca</string>
|
||||||
<!-- Browser menu button to open the current page in an external app -->
|
<!-- Browser menu button to open the current page in an external app -->
|
||||||
<string name="browser_menu_open_app_link">Buka di aplikasi</string>
|
<string name="browser_menu_open_app_link">Buka di aplikasi</string>
|
||||||
|
@ -105,18 +110,46 @@
|
||||||
<!-- Text preview for larger sized widgets -->
|
<!-- Text preview for larger sized widgets -->
|
||||||
<string name="search_widget_text_long">Paluruh raramat</string>
|
<string name="search_widget_text_long">Paluruh raramat</string>
|
||||||
|
|
||||||
|
<!-- Preferences -->
|
||||||
|
<!-- Title for the settings page-->
|
||||||
|
<string name="settings">Setélan</string>
|
||||||
|
<!-- Preference category for basic settings -->
|
||||||
|
<string name="preferences_category_basics">Dasar</string>
|
||||||
|
<!-- Preference category for general settings -->
|
||||||
|
<string name="preferences_category_general">Umum</string>
|
||||||
|
<!-- Preference category for all links about Fenix -->
|
||||||
|
<string name="preferences_category_about">Ngeunaan</string>
|
||||||
<!-- Preference for settings related to changing the default search engine -->
|
<!-- Preference for settings related to changing the default search engine -->
|
||||||
<string name="preferences_default_search_engine">Mesin pamaluruh baku</string>
|
<string name="preferences_default_search_engine">Mesin pamaluruh baku</string>
|
||||||
<!-- Preference for settings related to Search -->
|
<!-- Preference for settings related to Search -->
|
||||||
<string name="preferences_search">Paluruh</string>
|
<string name="preferences_search">Paluruh</string>
|
||||||
<!-- Preference for settings related to Search address bar -->
|
<!-- Preference for settings related to Search address bar -->
|
||||||
<string name="preferences_search_address_bar">Palang alamat</string>
|
<string name="preferences_search_address_bar">Palang alamat</string>
|
||||||
|
<!-- Preference linking to help about Fenix -->
|
||||||
|
<string name="preferences_help">Pitulung</string>
|
||||||
|
<!-- Preference link to rating Fenix on the Play Store -->
|
||||||
|
<string name="preferences_rate">Peunteun dina Google Play</string>
|
||||||
|
<!-- Preference for giving feedback about Fenix -->
|
||||||
|
<string name="preferences_feedback">Béré pangdeudeul</string>
|
||||||
|
<!-- Preference linking to about page for Fenix
|
||||||
|
The first parameter is the name of the app defined in app_name (for example: Fenix) -->
|
||||||
|
<string name="preferences_about">Ngeunaan %1$s</string>
|
||||||
|
<!-- Preference linking to the your rights SUMO page -->
|
||||||
|
<string name="preferences_your_rights">Hak Anjeun</string>
|
||||||
|
<!-- Preference for settings related to saved passwords -->
|
||||||
|
<string name="preferences_passwords">Kecap sandi</string>
|
||||||
<!-- Preference for settings related to changing the default browser -->
|
<!-- Preference for settings related to changing the default browser -->
|
||||||
<string name="preferences_set_as_default_browser">Jadikeun panyungsi baku</string>
|
<string name="preferences_set_as_default_browser">Jadikeun panyungsi baku</string>
|
||||||
|
<!-- Preference category for advanced settings -->
|
||||||
|
<string name="preferences_category_advanced">Terusan</string>
|
||||||
<!-- Preference for private browsing options -->
|
<!-- Preference for private browsing options -->
|
||||||
<string name="preferences_private_browsing_options">Nyungsi nyamuni</string>
|
<string name="preferences_private_browsing_options">Nyungsi nyamuni</string>
|
||||||
|
<!-- Preference for opening links in a private tab-->
|
||||||
|
<string name="preferences_open_links_in_a_private_tab">Buka tutumbu di tab nyamuni</string>
|
||||||
<!-- Preference for adding private browsing shortcut -->
|
<!-- Preference for adding private browsing shortcut -->
|
||||||
<string name="preferences_add_private_browsing_shortcut">Tambahan tarabas nyungsi nyamuni</string>
|
<string name="preferences_add_private_browsing_shortcut">Tambahan tarabas nyungsi nyamuni</string>
|
||||||
|
<!-- Preference for accessibility -->
|
||||||
|
<string name="preferences_accessibility">Aksésibilitas</string>
|
||||||
<!-- Preference to override the Firefox Account server -->
|
<!-- Preference to override the Firefox Account server -->
|
||||||
<string name="preferences_override_fxa_server">Serper Firefox Account biasa</string>
|
<string name="preferences_override_fxa_server">Serper Firefox Account biasa</string>
|
||||||
<!-- Preference category for account information -->
|
<!-- Preference category for account information -->
|
||||||
|
@ -146,12 +179,30 @@
|
||||||
<!-- Preference for account settings -->
|
<!-- Preference for account settings -->
|
||||||
<string name="preferences_account_settings">Setélan akun</string>
|
<string name="preferences_account_settings">Setélan akun</string>
|
||||||
|
|
||||||
|
<!-- Preference for add_ons -->
|
||||||
|
<string name="preferences_addons">Émbohan</string>
|
||||||
|
|
||||||
<!-- Account Preferences -->
|
<!-- Account Preferences -->
|
||||||
<!-- Preference for triggering sync -->
|
<!-- Preference for triggering sync -->
|
||||||
<string name="preferences_sync_now">Singkronkeun ayeuna</string>
|
<string name="preferences_sync_now">Singkronkeun ayeuna</string>
|
||||||
|
<!-- Preference category for sync -->
|
||||||
|
<string name="preferences_sync_category">Pilih nu rék disingkronkeun</string>
|
||||||
|
<!-- Preference for syncing history -->
|
||||||
|
<string name="preferences_sync_history">Jujutan</string>
|
||||||
<!-- Preference for syncing bookmarks -->
|
<!-- Preference for syncing bookmarks -->
|
||||||
<string name="preferences_sync_bookmarks">Markah</string>
|
<string name="preferences_sync_bookmarks">Markah</string>
|
||||||
|
|
||||||
|
<!-- Preference for syncing logins -->
|
||||||
|
<string name="preferences_sync_logins">Asup log</string>
|
||||||
|
<!-- Preference for syncing tabs -->
|
||||||
|
<string name="preferences_sync_tabs_2">Buka tab</string>
|
||||||
|
<!-- Preference for signing out -->
|
||||||
|
<string name="preferences_sign_out">Kaluar</string>
|
||||||
|
<!-- Preference displays and allows changing current FxA device name -->
|
||||||
|
<string name="preferences_sync_device_name">Ngaran parangkat</string>
|
||||||
|
<!-- Label indicating that sync is in progress -->
|
||||||
|
<string name="sync_syncing_in_progress">Nyingkronkeun…</string>
|
||||||
|
|
||||||
<!-- Preference description for tracking protection exceptions -->
|
<!-- Preference description for tracking protection exceptions -->
|
||||||
<string name="preferences_tracking_protection_exceptions_description">Kilung Palacakan pikeun ieu loka ayeuna pareum</string>
|
<string name="preferences_tracking_protection_exceptions_description">Kilung Palacakan pikeun ieu loka ayeuna pareum</string>
|
||||||
|
|
||||||
|
@ -329,8 +380,6 @@
|
||||||
<string name="preference_summary_delete_browsing_data_on_quit">Otomatis mupus data nyungsi nalika anjeun milih tombol "Kaluar" ti menu utama</string>
|
<string name="preference_summary_delete_browsing_data_on_quit">Otomatis mupus data nyungsi nalika anjeun milih tombol "Kaluar" ti menu utama</string>
|
||||||
<!-- Summary for the Delete browsing data on quit preference. "Quit" translation should match delete_browsing_data_on_quit_action translation. -->
|
<!-- Summary for the Delete browsing data on quit preference. "Quit" translation should match delete_browsing_data_on_quit_action translation. -->
|
||||||
<string name="preference_summary_delete_browsing_data_on_quit_2">Otomatis mupus data nyungsi nalika anjeun milih \"Kaluar\" ti menu utama</string>
|
<string name="preference_summary_delete_browsing_data_on_quit_2">Otomatis mupus data nyungsi nalika anjeun milih \"Kaluar\" ti menu utama</string>
|
||||||
<!-- Category for history items to delete on quit in delete browsing data on quit -->
|
|
||||||
<string name="preferences_delete_browsing_data_on_quit_browsing_history">Jujutan nyungsi</string>
|
|
||||||
<!-- Action item in menu for the Delete browsing data on quit feature -->
|
<!-- Action item in menu for the Delete browsing data on quit feature -->
|
||||||
<string name="delete_browsing_data_on_quit_action">Kaluar</string>
|
<string name="delete_browsing_data_on_quit_action">Kaluar</string>
|
||||||
|
|
||||||
|
@ -372,6 +421,9 @@
|
||||||
<!-- Option to cancel signing out shown in confirmation dialog to sign out of account -->
|
<!-- Option to cancel signing out shown in confirmation dialog to sign out of account -->
|
||||||
<string name="sign_out_cancel">Bolay</string>
|
<string name="sign_out_cancel">Bolay</string>
|
||||||
|
|
||||||
|
<!-- Enhanced Tracking Protection -->
|
||||||
|
<!-- Link displayed in enhanced tracking protection panel to access tracking protection settings -->
|
||||||
|
<string name="etp_settings">Setélan Kilung</string>
|
||||||
<!-- Text displayed that links to website about enhanced tracking protection -->
|
<!-- Text displayed that links to website about enhanced tracking protection -->
|
||||||
<string name="preference_enhanced_tracking_protection_explanation_learn_more">Lenyepan</string>
|
<string name="preference_enhanced_tracking_protection_explanation_learn_more">Lenyepan</string>
|
||||||
<!-- Header for categories that are being blocked by current Enhanced Tracking Protection settings -->
|
<!-- Header for categories that are being blocked by current Enhanced Tracking Protection settings -->
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -15,6 +15,9 @@
|
||||||
<!-- No Private Tabs Message Description -->
|
<!-- No Private Tabs Message Description -->
|
||||||
<string name="no_private_tabs_description">మీ అంతరంగిక ట్యాబులు ఇక్కడ కనిపిస్తాయి.</string>
|
<string name="no_private_tabs_description">మీ అంతరంగిక ట్యాబులు ఇక్కడ కనిపిస్తాయి.</string>
|
||||||
|
|
||||||
|
<!-- Text for the negative button -->
|
||||||
|
<string name="cfr_neg_button_text">ఫరవాలేదు వద్దు</string>
|
||||||
|
|
||||||
<!-- Text for the negative button -->
|
<!-- Text for the negative button -->
|
||||||
<string name="search_widget_cfr_neg_button_text">ఇప్పుడు కాదు</string>
|
<string name="search_widget_cfr_neg_button_text">ఇప్పుడు కాదు</string>
|
||||||
|
|
||||||
|
@ -29,14 +32,26 @@
|
||||||
<string name="browser_tabs_button">తెరిచివున్న ట్యాబులు</string>
|
<string name="browser_tabs_button">తెరిచివున్న ట్యాబులు</string>
|
||||||
<!-- Content description (not visible, for screen readers etc.): Navigate backward (browsing history) -->
|
<!-- Content description (not visible, for screen readers etc.): Navigate backward (browsing history) -->
|
||||||
<string name="browser_menu_back">వెనుకకు</string>
|
<string name="browser_menu_back">వెనుకకు</string>
|
||||||
|
<!-- Browser menu button that opens the addon manager -->
|
||||||
|
<string name="browser_menu_add_ons">పొడగింతలు</string>
|
||||||
|
<!-- Text displayed when there are no add-ons to be shown -->
|
||||||
|
<string name="no_add_ons">పొడగింతలేమీ లేవు</string>
|
||||||
<!-- Browser menu button that sends a user to help articles -->
|
<!-- Browser menu button that sends a user to help articles -->
|
||||||
<string name="browser_menu_help">సహాయం</string>
|
<string name="browser_menu_help">సహాయం</string>
|
||||||
<!-- Browser menu button that sends a to a the what's new article -->
|
<!-- Browser menu button that sends a to a the what's new article -->
|
||||||
<string name="browser_menu_whats_new">కొత్తవి ఏమిటి</string>
|
<string name="browser_menu_whats_new">కొత్తవి ఏమిటి</string>
|
||||||
<!-- Browser menu button that opens the settings menu -->
|
<!-- Browser menu button that opens the settings menu -->
|
||||||
<string name="browser_menu_settings">అమరికలు</string>
|
<string name="browser_menu_settings">అమరికలు</string>
|
||||||
|
<!-- Browser menu button that opens a user's library -->
|
||||||
|
<string name="browser_menu_library">గ్రంథాలయం</string>
|
||||||
|
<!-- Browser menu toggle that requests a desktop site -->
|
||||||
|
<string name="browser_menu_desktop_site">డెస్క్టాప్ సైటు</string>
|
||||||
|
<!-- Browser menu toggle that adds a shortcut to the site on the device home screen. -->
|
||||||
|
<string name="browser_menu_add_to_homescreen">ముంగిలి తెరకు చేర్చు</string>
|
||||||
<!-- Browser menu toggle that installs a Progressive Web App shortcut to the site on the device home screen. -->
|
<!-- Browser menu toggle that installs a Progressive Web App shortcut to the site on the device home screen. -->
|
||||||
<string name="browser_menu_install_on_homescreen">స్థాపించు</string>
|
<string name="browser_menu_install_on_homescreen">స్థాపించు</string>
|
||||||
|
<!-- Menu option on the toolbar that takes you to synced tabs page-->
|
||||||
|
<string name="synced_tabs">సింకైన ట్యాబులు</string>
|
||||||
<!-- Browser menu button that creates a new tab -->
|
<!-- Browser menu button that creates a new tab -->
|
||||||
<string name="browser_menu_new_tab">కొత్త ట్యాబు</string>
|
<string name="browser_menu_new_tab">కొత్త ట్యాబు</string>
|
||||||
<!-- Browser menu button to configure reader mode appearance e.g. the used font type and size -->
|
<!-- Browser menu button to configure reader mode appearance e.g. the used font type and size -->
|
||||||
|
@ -133,6 +148,9 @@
|
||||||
<!-- Title for experiments preferences -->
|
<!-- Title for experiments preferences -->
|
||||||
<string name="preference_experiments">ప్రయోగాలు</string>
|
<string name="preference_experiments">ప్రయోగాలు</string>
|
||||||
|
|
||||||
|
<!-- Preference for removing FxA account -->
|
||||||
|
<string name="preferences_sync_remove_account">ఖాతాను తొలగించు</string>
|
||||||
|
|
||||||
<!-- Button to cancel pairing -->
|
<!-- Button to cancel pairing -->
|
||||||
<string name="pair_cancel">రద్దుచేయి</string>
|
<string name="pair_cancel">రద్దుచేయి</string>
|
||||||
|
|
||||||
|
@ -173,6 +191,8 @@
|
||||||
<string name="tab_drawer_fab_content">అంతరంగికం</string>
|
<string name="tab_drawer_fab_content">అంతరంగికం</string>
|
||||||
<!-- Text shown as the title of the open tab tray -->
|
<!-- Text shown as the title of the open tab tray -->
|
||||||
<string name="tab_tray_title">తెరిచివున్న ట్యాబులు</string>
|
<string name="tab_tray_title">తెరిచివున్న ట్యాబులు</string>
|
||||||
|
<!-- Text shown in the menu for sharing all tabs -->
|
||||||
|
<string name="tab_tray_menu_item_share">అన్ని ట్యాబులను పంచుకో</string>
|
||||||
<!-- Text shown in the menu for closing all tabs -->
|
<!-- Text shown in the menu for closing all tabs -->
|
||||||
<string name="tab_tray_menu_item_close">ట్యాబులన్నీ మూసివేయి</string>
|
<string name="tab_tray_menu_item_close">ట్యాబులన్నీ మూసివేయి</string>
|
||||||
<!-- Shortcut action to open new tab -->
|
<!-- Shortcut action to open new tab -->
|
||||||
|
@ -182,6 +202,8 @@
|
||||||
<string name="close_tab">ట్యాబును మూసివేయి</string>
|
<string name="close_tab">ట్యాబును మూసివేయి</string>
|
||||||
<!-- Content description (not visible, for screen readers etc.): Close tab <title> button. First parameter is tab title -->
|
<!-- Content description (not visible, for screen readers etc.): Close tab <title> button. First parameter is tab title -->
|
||||||
<string name="close_tab_title">%s ట్యాబును మూసివేయి</string>
|
<string name="close_tab_title">%s ట్యాబును మూసివేయి</string>
|
||||||
|
<!-- Content description (not visible, for screen readers etc.): Opens the open tabs menu when pressed -->
|
||||||
|
<string name="open_tabs_menu">తెరిచివున్న ట్యాబుల మెనూ</string>
|
||||||
<!-- Open tabs menu item to close all tabs -->
|
<!-- Open tabs menu item to close all tabs -->
|
||||||
<string name="tabs_menu_close_all_tabs">ట్యాబులన్నీ మూసివేయి</string>
|
<string name="tabs_menu_close_all_tabs">ట్యాబులన్నీ మూసివేయి</string>
|
||||||
<!-- Button in the current session menu. Deletes the session when pressed -->
|
<!-- Button in the current session menu. Deletes the session when pressed -->
|
||||||
|
@ -204,6 +226,10 @@
|
||||||
is a digit showing the number of items you have selected -->
|
is a digit showing the number of items you have selected -->
|
||||||
<string name="history_delete_some">%1$d అంశాలను తొలగించు</string>
|
<string name="history_delete_some">%1$d అంశాలను తొలగించు</string>
|
||||||
|
|
||||||
|
<!-- Text for the header that groups the history for last 24 hours -->
|
||||||
|
<string name="history_24_hours">గత 24 గంటలు</string>
|
||||||
|
<!-- Text for the header that groups the history the past 7 days -->
|
||||||
|
<string name="history_7_days">గత 7 రోజులు</string>
|
||||||
<!-- Text for the header that groups the history the past 30 days -->
|
<!-- Text for the header that groups the history the past 30 days -->
|
||||||
<string name="history_30_days">గత 30 రోజులు</string>
|
<string name="history_30_days">గత 30 రోజులు</string>
|
||||||
<!-- Text for the header that groups the history older than the last month -->
|
<!-- Text for the header that groups the history older than the last month -->
|
||||||
|
@ -214,6 +240,11 @@
|
||||||
<!-- Close tab button text on the tab crash page -->
|
<!-- Close tab button text on the tab crash page -->
|
||||||
<string name="tab_crash_close">ట్యాబును మూసివేయి</string>
|
<string name="tab_crash_close">ట్యాబును మూసివేయి</string>
|
||||||
|
|
||||||
|
<!-- Content Description for session item menu button -->
|
||||||
|
<string name="content_description_session_menu">సెషను ఎంపికలు</string>
|
||||||
|
|
||||||
|
<!-- Screen title for adding a bookmarks folder -->
|
||||||
|
<string name="bookmark_add_folder">సంచయం చేర్చు</string>
|
||||||
<!-- Bookmark overflow menu delete button -->
|
<!-- Bookmark overflow menu delete button -->
|
||||||
<string name="bookmark_menu_delete_button">తొలగించు</string>
|
<string name="bookmark_menu_delete_button">తొలగించు</string>
|
||||||
<!--Bookmark overflow menu save button -->
|
<!--Bookmark overflow menu save button -->
|
||||||
|
@ -227,14 +258,37 @@
|
||||||
<!-- Site permissions preferences header -->
|
<!-- Site permissions preferences header -->
|
||||||
<string name="permissions_header">అనుమతులు</string>
|
<string name="permissions_header">అనుమతులు</string>
|
||||||
|
|
||||||
|
<!-- Button label that take the user to the Android App setting -->
|
||||||
|
<string name="phone_feature_go_to_settings">అమరికలకు వెళ్లు</string>
|
||||||
|
<!-- Preference for altering the camera access for all websites -->
|
||||||
|
<string name="preference_phone_feature_camera">కెమెరా</string>
|
||||||
|
<!-- Preference for altering the microphone access for all websites -->
|
||||||
|
<string name="preference_phone_feature_microphone">మైక్రోఫోను</string>
|
||||||
<!-- Preference for altering the location access for all websites -->
|
<!-- Preference for altering the location access for all websites -->
|
||||||
<string name="preference_phone_feature_location">స్థానం</string>
|
<string name="preference_phone_feature_location">స్థానం</string>
|
||||||
<!-- Preference for showing a list of websites that the default configurations won't apply to them -->
|
<!-- Preference for showing a list of websites that the default configurations won't apply to them -->
|
||||||
<string name="preference_exceptions">మినహాయింపులు</string>
|
<string name="preference_exceptions">మినహాయింపులు</string>
|
||||||
|
|
||||||
|
<!-- Label that indicates that video autoplay is allowed, but audio autoplay is blocked -->
|
||||||
|
<string name="preference_option_autoplay_block_audio2">ఆడియోను మాత్రమే నిరోధించు</string>
|
||||||
|
<!-- Label that indicates that all video and audio autoplay is blocked -->
|
||||||
|
<string name="preference_option_autoplay_blocked3">ఆడియో, వీడియోలను నిరోధించు</string>
|
||||||
|
|
||||||
<!-- Collections -->
|
<!-- Collections -->
|
||||||
<!-- Collections header on home fragment -->
|
<!-- Collections header on home fragment -->
|
||||||
<string name="collections_header">సేకరణలు</string>
|
<string name="collections_header">సేకరణలు</string>
|
||||||
|
<!-- Button to select all tabs in the "select tabs" step of the collection creator -->
|
||||||
|
<string name="create_collection_select_all">అన్నిటినీ ఎంచుకో</string>
|
||||||
|
<!-- Text to show users how many tabs they have selected in the "select tabs" step of the collection creator.
|
||||||
|
%d is a placeholder for the number of tabs selected. -->
|
||||||
|
<string name="create_collection_save_to_collection_tabs_selected">%d ట్యాబులు ఎంచుకున్నారు</string>
|
||||||
|
<!-- Text to show users they have one tab selected in the "select tabs" step of the collection creator.
|
||||||
|
%d is a placeholder for the number of tabs selected. -->
|
||||||
|
<string name="create_collection_save_to_collection_tab_selected">%d ట్యాబు ఎంచుకున్నారు</string>
|
||||||
|
<!-- Text shown in snackbar when multiple tabs have been saved in a collection -->
|
||||||
|
<string name="create_collection_tabs_saved">ట్యాబులు భద్రమయ్యాయి!</string>
|
||||||
|
<!-- Text shown in snackbar when one tab has been saved in a collection -->
|
||||||
|
<string name="create_collection_tab_saved">ట్యాబు భద్రమయింది!</string>
|
||||||
<!-- Content description (not visible, for screen readers etc.): button to close the collection creator -->
|
<!-- Content description (not visible, for screen readers etc.): button to close the collection creator -->
|
||||||
<string name="create_collection_close">మూసివేయి</string>
|
<string name="create_collection_close">మూసివేయి</string>
|
||||||
|
|
||||||
|
@ -243,18 +297,100 @@
|
||||||
<!-- Snackbar action to view the collection the user just created or updated -->
|
<!-- Snackbar action to view the collection the user just created or updated -->
|
||||||
<string name="create_collection_view">చూడండి</string>
|
<string name="create_collection_view">చూడండి</string>
|
||||||
|
|
||||||
|
<!-- Default name for a new collection in "name new collection" step of the collection creator. %d is a placeholder for the number of collections-->
|
||||||
|
<string name="create_collection_default_name">సేకరణ %d</string>
|
||||||
|
|
||||||
|
<!-- Sub-header in the dialog to share a link to another sync device -->
|
||||||
|
<string name="share_device_subheader">పరికరానికి పంపించు</string>
|
||||||
|
<!-- Sub-header in the dialog to share a link to an app from the full list -->
|
||||||
|
<string name="share_link_all_apps_subheader">అన్ని చర్యలు</string>
|
||||||
|
<!-- Sub-header in the dialog to share a link to an app from the most-recent sorted list -->
|
||||||
|
<string name="share_link_recent_apps_subheader">ఇటీవల వాడినవి</string>
|
||||||
|
<!-- An option from the share dialog to send link to all other sync devices -->
|
||||||
|
<string name="sync_send_to_all">పరికరాలన్నిటికీ పంపించు</string>
|
||||||
|
<!-- Text displayed when sync is offline and cannot be accessed -->
|
||||||
|
<string name="sync_offline">ఆఫ్లైన్</string>
|
||||||
|
<!-- An option to connect additional devices -->
|
||||||
|
<string name="sync_connect_device">మరొక పరికరాన్ని అనుసంధానించు</string>
|
||||||
|
<!-- Confirmation dialog button -->
|
||||||
|
<string name="sync_confirmation_button">అర్థమైంది</string>
|
||||||
|
<!-- Share error message -->
|
||||||
|
<string name="share_error_snackbar">ఈ అనువర్తనంతో పంచుకోలేము</string>
|
||||||
|
<!-- Add new device screen title -->
|
||||||
|
<string name="sync_add_new_device_title">పరికరానికి పంపించు</string>
|
||||||
|
<!-- Text for the warning message on the Add new device screen -->
|
||||||
|
<string name="sync_add_new_device_message">పరికరాలేమీ అనుసంధానం కాలేదు</string>
|
||||||
|
<!-- Text for the button to learn about sending tabs -->
|
||||||
|
<string name="sync_add_new_device_learn_button">ట్యాబులు పంపడం గురించి తెలుసుకోండి…</string>
|
||||||
|
<!-- Text for the button to connect another device -->
|
||||||
|
<string name="sync_add_new_device_connect_button">మరొక పరికరాన్ని అనుసంధానించు…</string>
|
||||||
|
|
||||||
|
<!-- Notifications -->
|
||||||
|
<!-- The user visible name of the "notification channel" (Android 8+ feature) for the ongoing notification shown while a browsing session is active. -->
|
||||||
|
<string name="notification_pbm_channel_name">అంతరంగిక విహరణ సెషను</string>
|
||||||
|
<!-- Text shown in the notification that pops up to remind the user that a private browsing session is active. -->
|
||||||
|
<string name="notification_pbm_delete_text">అంతరంగిక ట్యాబులను తొలగించు</string>
|
||||||
|
<!-- Text shown in the notification that pops up to remind the user that a private browsing session is active. -->
|
||||||
|
<string name="notification_pbm_delete_text_2">అంతరంగిక ట్యాబులను మూసివేయి</string>
|
||||||
<!-- Notification action to open Fenix and resume the current browsing session. -->
|
<!-- Notification action to open Fenix and resume the current browsing session. -->
|
||||||
<string name="notification_pbm_action_open">తెరువు</string>
|
<string name="notification_pbm_action_open">తెరువు</string>
|
||||||
|
<!-- Notification action to delete all current private browsing sessions AND switch to Fenix (bring it to the foreground) -->
|
||||||
|
<string name="notification_pbm_action_delete_and_open">తొలగించి, తెరువు</string>
|
||||||
|
<!-- Name of the "Powered by Fenix" notification channel. Displayed in the "App notifications" system settings for the app -->
|
||||||
|
<string name="notification_powered_by_channel_name">దీనితో శక్తిమంతం</string>
|
||||||
|
<!-- Text shown in snackbar when user deletes a collection -->
|
||||||
|
<string name="snackbar_collection_deleted">సేకరణ తొలగించబడింది</string>
|
||||||
|
<!-- Text shown in snackbar when user renames a collection -->
|
||||||
|
<string name="snackbar_collection_renamed">సేకరణ పేరు మార్చబడింది</string>
|
||||||
|
<!-- Text shown in snackbar when user deletes a tab -->
|
||||||
|
<string name="snackbar_tab_deleted">ట్యాబు తొలగించబడింది</string>
|
||||||
|
<!-- Text shown in snackbar when user deletes all tabs -->
|
||||||
|
<string name="snackbar_tabs_deleted">ట్యాబులు తొలగించబడ్డాయి</string>
|
||||||
|
<!-- Text shown in snackbar when user closes a tab -->
|
||||||
|
<string name="snackbar_tab_closed">ట్యాబు మూసివేయబడింది</string>
|
||||||
|
<!-- Text shown in snackbar when user closes all tabs -->
|
||||||
|
<string name="snackbar_tabs_closed">ట్యాబులు మూసివేయబడ్డాయి</string>
|
||||||
|
<!-- Text shown in snackbar when user adds a site to top sites -->
|
||||||
|
<string name="snackbar_added_to_top_sites">మేటి సైట్లకు చేర్చబడింది!</string>
|
||||||
|
<!-- Text shown in snackbar when user closes a private tab -->
|
||||||
|
<string name="snackbar_private_tab_closed">అంతరంగిక ట్యాబు మూసివేయబడింది</string>
|
||||||
|
<!-- Text shown in snackbar when user closes all private tabs -->
|
||||||
|
<string name="snackbar_private_tabs_closed">అంతరంగిక ట్యాబులు మూసివేయబడ్డాయి</string>
|
||||||
|
<!-- Text shown in snackbar when user deletes all private tabs -->
|
||||||
|
<string name="snackbar_private_tabs_deleted">అంతరంగిక ట్యాబులు తొలగించబడ్డాయి</string>
|
||||||
|
<!-- Text shown in snackbar to undo deleting a tab, top site or collection -->
|
||||||
|
<string name="snackbar_deleted_undo">చర్య రద్దుచేయి</string>
|
||||||
|
<!-- Text shown in snackbar when user removes a top site -->
|
||||||
|
<string name="snackbar_top_site_removed">సైటు తీసివేయబడింది</string>
|
||||||
|
<!-- Text for action to undo deleting a tab or collection shown in a11y dialog -->
|
||||||
|
<string name="a11y_dialog_deleted_undo">చర్య రద్దుచేయి</string>
|
||||||
|
<!-- Text for action to confirm deleting a tab or collection shown in a11y dialog -->
|
||||||
|
<string name="a11y_dialog_deleted_confirm">నిర్ధారించు</string>
|
||||||
|
<!-- QR code scanner prompt which appears after scanning a code, but before navigating to it
|
||||||
|
First parameter is the name of the app, second parameter is the URL or text scanned-->
|
||||||
|
<string name="qr_scanner_confirmation_dialog_message">%2$s తెరవడానికి %1$sను అనుమతించు</string>
|
||||||
<!-- QR code scanner prompt dialog positive option to allow navigation to scanned link -->
|
<!-- QR code scanner prompt dialog positive option to allow navigation to scanned link -->
|
||||||
<string name="qr_scanner_dialog_positive">అనుమతించు</string>
|
<string name="qr_scanner_dialog_positive">అనుమతించు</string>
|
||||||
|
<!-- QR code scanner prompt dialog positive option to deny navigation to scanned link -->
|
||||||
|
<string name="qr_scanner_dialog_negative">తిరస్కరించు</string>
|
||||||
|
<!-- Tab collection deletion prompt dialog message. Placeholder will be replaced with the collection name -->
|
||||||
|
<string name="tab_collection_dialog_message">మీరు నిజంగానే %1$sను తొలగించాలనుకుంటున్నారా?</string>
|
||||||
<!-- Tab collection deletion prompt dialog option to delete the collection -->
|
<!-- Tab collection deletion prompt dialog option to delete the collection -->
|
||||||
<string name="tab_collection_dialog_positive">తొలగించు</string>
|
<string name="tab_collection_dialog_positive">తొలగించు</string>
|
||||||
<!-- Tab collection deletion prompt dialog option to cancel deleting the collection -->
|
<!-- Tab collection deletion prompt dialog option to cancel deleting the collection -->
|
||||||
<string name="tab_collection_dialog_negative">రద్దుచేయి</string>
|
<string name="tab_collection_dialog_negative">రద్దుచేయి</string>
|
||||||
|
|
||||||
|
<!-- Text displayed in a notification when the user enters full screen mode -->
|
||||||
|
<string name="full_screen_notification">నిండు తెర రీతిలోకి వెళ్తున్నారు</string>
|
||||||
|
<!-- Message for copying the URL via long press on the toolbar -->
|
||||||
|
<string name="url_copied">URL కాపీ అయ్యింది</string>
|
||||||
|
<!-- Summary for Accessibility Text Size Scaling Preference -->
|
||||||
|
<string name="preference_accessibility_text_size_summary">వెబ్సైట్లలో వచనాన్ని పెద్దదిగా లేదా చిన్నదిగా చేయండి</string>
|
||||||
<!-- Title for Accessibility Text Size Scaling Preference -->
|
<!-- Title for Accessibility Text Size Scaling Preference -->
|
||||||
<string name="preference_accessibility_font_size_title">ఫాంటు పరిమాణం</string>
|
<string name="preference_accessibility_font_size_title">ఫాంటు పరిమాణం</string>
|
||||||
|
|
||||||
|
<!-- Title for the Delete browsing data preference -->
|
||||||
|
<string name="preferences_delete_browsing_data">విహరణ డేటాను తొలగించు</string>
|
||||||
<!-- Title for the tabs item in Delete browsing data -->
|
<!-- Title for the tabs item in Delete browsing data -->
|
||||||
<string name="preferences_delete_browsing_data_tabs_title_2">తెరిచివున్న ట్యాబులు</string>
|
<string name="preferences_delete_browsing_data_tabs_title_2">తెరిచివున్న ట్యాబులు</string>
|
||||||
<!-- Subtitle for the tabs item in Delete browsing data, parameter will be replaced with the number of open tabs -->
|
<!-- Subtitle for the tabs item in Delete browsing data, parameter will be replaced with the number of open tabs -->
|
||||||
|
@ -271,12 +407,18 @@
|
||||||
<!-- Title for the cookies item in Delete browsing data -->
|
<!-- Title for the cookies item in Delete browsing data -->
|
||||||
<string name="preferences_delete_browsing_data_cookies">కుకీలు</string>
|
<string name="preferences_delete_browsing_data_cookies">కుకీలు</string>
|
||||||
|
|
||||||
|
<!-- Title for the site permissions item in Delete browsing data -->
|
||||||
|
<string name="preferences_delete_browsing_data_site_permissions">సైటు అనుమతులు</string>
|
||||||
|
|
||||||
<!-- Text for the cancel button for the data deletion dialog -->
|
<!-- Text for the cancel button for the data deletion dialog -->
|
||||||
<string name="delete_browsing_data_prompt_cancel">రద్దుచేయి</string>
|
<string name="delete_browsing_data_prompt_cancel">రద్దుచేయి</string>
|
||||||
|
|
||||||
<!-- Text for the allow button for the data deletion dialog -->
|
<!-- Text for the allow button for the data deletion dialog -->
|
||||||
<string name="delete_browsing_data_prompt_allow">తొలగించు</string>
|
<string name="delete_browsing_data_prompt_allow">తొలగించు</string>
|
||||||
|
|
||||||
|
<!-- text for firefox preview moving tip button -->
|
||||||
|
<string name="tip_firefox_preview_moved_button_preview_not_installed">కొత్త నైట్లీని పొందండి</string>
|
||||||
|
|
||||||
<!-- Onboarding -->
|
<!-- Onboarding -->
|
||||||
<!-- Text for onboarding welcome message
|
<!-- Text for onboarding welcome message
|
||||||
The first parameter is the name of the app (e.g. Firefox Preview) -->
|
The first parameter is the name of the app (e.g. Firefox Preview) -->
|
||||||
|
@ -287,9 +429,44 @@
|
||||||
<string name="onboarding_whats_new_header1">కొత్తవేమిటో చూడండి</string>
|
<string name="onboarding_whats_new_header1">కొత్తవేమిటో చూడండి</string>
|
||||||
<!-- text for underlined clickable link that is part of "what's new" onboarding card description that links to an FAQ -->
|
<!-- text for underlined clickable link that is part of "what's new" onboarding card description that links to an FAQ -->
|
||||||
<string name="onboarding_whats_new_description_linktext">ఇక్కడ సమాధానాలు పొందండి</string>
|
<string name="onboarding_whats_new_description_linktext">ఇక్కడ సమాధానాలు పొందండి</string>
|
||||||
|
<!-- text for the button to manually sign into Firefox account. The word "Firefox" should not be translated -->
|
||||||
|
<string name="onboarding_firefox_account_sign_in">Firefox లోనికి ప్రవేశించండి</string>
|
||||||
|
<!-- text for tracking protection radio button option for standard level of blocking -->
|
||||||
|
<string name="onboarding_tracking_protection_standard_button_2">ప్రామాణికం (అప్రమేయం)</string>
|
||||||
|
<!-- text for standard blocking option button description -->
|
||||||
|
<string name="onboarding_tracking_protection_standard_button_description_2">తక్కువ ట్రాకర్లను నిరోధిస్తుంది. పేజీలు మామూలుగానే తెరుచుకుంటాయి.</string>
|
||||||
|
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||||
|
<string name="onboarding_tracking_protection_strict_button">కఠినం (సిఫార్సు చేయబడింది)</string>
|
||||||
|
<!-- text for tracking protection radio button option for strict level of blocking -->
|
||||||
|
<string name="onboarding_tracking_protection_strict_option">కఠినం</string>
|
||||||
|
<!-- text for the private browsing onbording card button, that launches settings -->
|
||||||
|
<string name="onboarding_private_browsing_button">అమరికలను తెరువు</string>
|
||||||
|
<!-- text for the privacy notice onboarding card header -->
|
||||||
|
<string name="onboarding_privacy_notice_header">మీ అంతరంగికత</string>
|
||||||
<!-- Content description (not visible, for screen readers etc.): Close onboarding screen -->
|
<!-- Content description (not visible, for screen readers etc.): Close onboarding screen -->
|
||||||
<string name="onboarding_close">మూసివేయి</string>
|
<string name="onboarding_close">మూసివేయి</string>
|
||||||
|
|
||||||
|
<!-- Onboarding theme -->
|
||||||
|
<!-- text for the theme picker onboarding card header -->
|
||||||
|
<string name="onboarding_theme_picker_header">మీ అలంకారాన్ని ఎంచుకోండి</string>
|
||||||
|
|
||||||
|
<!-- Summary of automatic theme setting (will follow device setting) -->
|
||||||
|
<string name="onboarding_theme_automatic_summary">మీ పరికర అమరికలకు తగ్గట్టు మారుతుంది</string>
|
||||||
|
|
||||||
|
<!-- Text shown in snackbar when multiple tabs have been sent to device -->
|
||||||
|
<string name="sync_sent_tabs_snackbar">ట్యాబులు పంపబడ్డాయి!</string>
|
||||||
|
<!-- Text shown in snackbar when one tab has been sent to device -->
|
||||||
|
<string name="sync_sent_tab_snackbar">ట్యాబు పంపబడింది!</string>
|
||||||
|
<!-- Text shown in snackbar when sharing tabs failed -->
|
||||||
|
<string name="sync_sent_tab_error_snackbar">పంపించలేకపోయాం</string>
|
||||||
|
<!-- Text shown in snackbar for the "retry" action that the user has after sharing tabs failed -->
|
||||||
|
<string name="sync_sent_tab_error_snackbar_action">మళ్లీ ప్రయత్నించు</string>
|
||||||
|
<!-- Title of QR Pairing Fragment -->
|
||||||
|
<string name="sync_scan_code">కోడును స్కాను చేయండి</string>
|
||||||
|
<!-- Text shown for settings option for sign with pairing -->
|
||||||
|
<string name="sign_in_with_camera">మీ కెమెరాతో ప్రవేశించండి</string>
|
||||||
|
<!-- Text shown for settings option for sign with email -->
|
||||||
|
<string name="sign_in_with_email">లేదా ఈమెయిలు వాడండి</string>
|
||||||
<!-- Option to cancel signing out shown in confirmation dialog to sign out of account -->
|
<!-- Option to cancel signing out shown in confirmation dialog to sign out of account -->
|
||||||
<string name="sign_out_cancel">రద్దుచేయి</string>
|
<string name="sign_out_cancel">రద్దుచేయి</string>
|
||||||
|
|
||||||
|
|
|
@ -818,7 +818,7 @@
|
||||||
<!-- Text shown in snackbar when user closes all tabs -->
|
<!-- Text shown in snackbar when user closes all tabs -->
|
||||||
<string name="snackbar_tabs_closed">Вкладки закрито</string>
|
<string name="snackbar_tabs_closed">Вкладки закрито</string>
|
||||||
<!-- Text shown in snackbar when user adds a site to top sites -->
|
<!-- Text shown in snackbar when user adds a site to top sites -->
|
||||||
<string name="snackbar_added_to_top_sites">Додано до найпопулярніших сайтів!</string>
|
<string name="snackbar_added_to_top_sites">Додано до популярних сайтів!</string>
|
||||||
<!-- Text shown in snackbar when user closes a private tab -->
|
<!-- Text shown in snackbar when user closes a private tab -->
|
||||||
<string name="snackbar_private_tab_closed">Приватну вкладку закрито</string>
|
<string name="snackbar_private_tab_closed">Приватну вкладку закрито</string>
|
||||||
<!-- Text shown in snackbar when user closes all private tabs -->
|
<!-- Text shown in snackbar when user closes all private tabs -->
|
||||||
|
@ -1400,7 +1400,7 @@
|
||||||
<!-- Bookmark deletion confirmation -->
|
<!-- Bookmark deletion confirmation -->
|
||||||
<string name="bookmark_deletion_confirmation">Ви впевнені, що хочете видалити цю закладку?</string>
|
<string name="bookmark_deletion_confirmation">Ви впевнені, що хочете видалити цю закладку?</string>
|
||||||
<!-- Browser menu button that adds a top site to the home fragment -->
|
<!-- Browser menu button that adds a top site to the home fragment -->
|
||||||
<string name="browser_menu_add_to_top_sites">Додати до найпопулярніших сайтів</string>
|
<string name="browser_menu_add_to_top_sites">Додати до популярних сайтів</string>
|
||||||
<!-- text shown before the issuer name to indicate who its verified by, parameter is the name of
|
<!-- text shown before the issuer name to indicate who its verified by, parameter is the name of
|
||||||
the certificate authority that verified the ticket-->
|
the certificate authority that verified the ticket-->
|
||||||
<string name="certificate_info_verified_by">Засвідчено: %1$s</string>
|
<string name="certificate_info_verified_by">Засвідчено: %1$s</string>
|
||||||
|
|
|
@ -940,9 +940,7 @@
|
||||||
<!-- text for firefox preview moving tip header "Firefox Preview" and "Firefox Nightly" are intentionally hardcoded -->
|
<!-- text for firefox preview moving tip header "Firefox Preview" and "Firefox Nightly" are intentionally hardcoded -->
|
||||||
<string name="tip_firefox_preview_moved_header">Firefox Nightly 已接手原 Firefox Preview 功能</string>
|
<string name="tip_firefox_preview_moved_header">Firefox Nightly 已接手原 Firefox Preview 功能</string>
|
||||||
<!-- text for firefox preview moving tip description -->
|
<!-- text for firefox preview moving tip description -->
|
||||||
<string name="tip_firefox_preview_moved_description">Firefox Nightly 每天都會更新,當中包含實驗中的新功能,然而這些新功能可能會較不穩定。\n\n
|
<string name="tip_firefox_preview_moved_description">Firefox Nightly 每天都會更新,當中包含實驗中的新功能,然而這些新功能可能會較不穩定。\n\n若想要有較穩定的使用體驗,請下載我們的 Beta 測試版。</string>
|
||||||
|
|
||||||
若想要有較穩定的使用體驗,請下載我們的 Beta 測試版。</string>
|
|
||||||
|
|
||||||
<!-- text for firefox preview moving tip button. "Firefox for Android Beta" is intentionally hardcoded -->
|
<!-- text for firefox preview moving tip button. "Firefox for Android Beta" is intentionally hardcoded -->
|
||||||
<string name="tip_firefox_preview_moved_button_2">下載 Firefox for Android Beta 測試版</string>
|
<string name="tip_firefox_preview_moved_button_2">下載 Firefox for Android Beta 測試版</string>
|
||||||
|
|
|
@ -33,9 +33,11 @@ import mozilla.components.browser.state.state.createTab
|
||||||
import mozilla.components.browser.state.store.BrowserStore
|
import mozilla.components.browser.state.store.BrowserStore
|
||||||
import mozilla.components.concept.engine.EngineView
|
import mozilla.components.concept.engine.EngineView
|
||||||
import mozilla.components.feature.search.SearchUseCases
|
import mozilla.components.feature.search.SearchUseCases
|
||||||
|
import mozilla.components.feature.session.SessionFeature
|
||||||
import mozilla.components.feature.session.SessionUseCases
|
import mozilla.components.feature.session.SessionUseCases
|
||||||
import mozilla.components.feature.tab.collections.TabCollection
|
import mozilla.components.feature.tab.collections.TabCollection
|
||||||
import mozilla.components.feature.tabs.TabsUseCases
|
import mozilla.components.feature.tabs.TabsUseCases
|
||||||
|
import mozilla.components.support.base.feature.ViewBoundFeatureWrapper
|
||||||
import mozilla.components.support.test.rule.MainCoroutineRule
|
import mozilla.components.support.test.rule.MainCoroutineRule
|
||||||
import org.junit.After
|
import org.junit.After
|
||||||
import org.junit.Assert.assertEquals
|
import org.junit.Assert.assertEquals
|
||||||
|
@ -93,6 +95,8 @@ class DefaultBrowserToolbarControllerTest {
|
||||||
@RelaxedMockK private lateinit var tabCollectionStorage: TabCollectionStorage
|
@RelaxedMockK private lateinit var tabCollectionStorage: TabCollectionStorage
|
||||||
@RelaxedMockK private lateinit var topSiteStorage: TopSiteStorage
|
@RelaxedMockK private lateinit var topSiteStorage: TopSiteStorage
|
||||||
@RelaxedMockK private lateinit var readerModeController: ReaderModeController
|
@RelaxedMockK private lateinit var readerModeController: ReaderModeController
|
||||||
|
@RelaxedMockK private lateinit var sessionFeatureWrapper: ViewBoundFeatureWrapper<SessionFeature>
|
||||||
|
@RelaxedMockK private lateinit var sessionFeature: SessionFeature
|
||||||
private val store: BrowserStore = BrowserStore(initialState = BrowserState(
|
private val store: BrowserStore = BrowserStore(initialState = BrowserState(
|
||||||
listOf(
|
listOf(
|
||||||
createTab("https://www.mozilla.org", id = "reader-inactive-tab"),
|
createTab("https://www.mozilla.org", id = "reader-inactive-tab"),
|
||||||
|
@ -124,6 +128,7 @@ class DefaultBrowserToolbarControllerTest {
|
||||||
every { activity.components.core.sessionManager } returns sessionManager
|
every { activity.components.core.sessionManager } returns sessionManager
|
||||||
every { activity.components.core.store } returns store
|
every { activity.components.core.store } returns store
|
||||||
every { sessionManager.selectedSession } returns currentSession
|
every { sessionManager.selectedSession } returns currentSession
|
||||||
|
every { sessionFeatureWrapper.get() } returns sessionFeature
|
||||||
|
|
||||||
val onComplete = slot<() -> Unit>()
|
val onComplete = slot<() -> Unit>()
|
||||||
every { browserAnimator.captureEngineViewAndDrawStatically(capture(onComplete)) } answers { onComplete.captured.invoke() }
|
every { browserAnimator.captureEngineViewAndDrawStatically(capture(onComplete)) } answers { onComplete.captured.invoke() }
|
||||||
|
@ -469,7 +474,7 @@ class DefaultBrowserToolbarControllerTest {
|
||||||
|
|
||||||
controller.handleToolbarItemInteraction(item)
|
controller.handleToolbarItemInteraction(item)
|
||||||
|
|
||||||
verify { engineView.release() }
|
verify { sessionFeature.release() }
|
||||||
verify { currentSession.customTabConfig = null }
|
verify { currentSession.customTabConfig = null }
|
||||||
verify { sessionManager.select(currentSession) }
|
verify { sessionManager.select(currentSession) }
|
||||||
verify { activity.startActivity(openInFenixIntent) }
|
verify { activity.startActivity(openInFenixIntent) }
|
||||||
|
@ -571,6 +576,7 @@ class DefaultBrowserToolbarControllerTest {
|
||||||
bookmarkTapped = bookmarkTapped,
|
bookmarkTapped = bookmarkTapped,
|
||||||
readerModeController = readerModeController,
|
readerModeController = readerModeController,
|
||||||
sessionManager = sessionManager,
|
sessionManager = sessionManager,
|
||||||
|
sessionFeature = sessionFeatureWrapper,
|
||||||
onTabCounterClicked = onTabCounterClicked,
|
onTabCounterClicked = onTabCounterClicked,
|
||||||
onCloseTab = onCloseTab
|
onCloseTab = onCloseTab
|
||||||
).apply {
|
).apply {
|
||||||
|
|
|
@ -37,7 +37,7 @@ class DrawableTest {
|
||||||
|
|
||||||
override fun draw(canvas: Canvas) {}
|
override fun draw(canvas: Canvas) {}
|
||||||
override fun setAlpha(alpha: Int) {}
|
override fun setAlpha(alpha: Int) {}
|
||||||
override fun setColorFilter(cf: ColorFilter) {}
|
override fun setColorFilter(cf: ColorFilter?) {}
|
||||||
override fun onBoundsChange(bounds: Rect) {
|
override fun onBoundsChange(bounds: Rect) {
|
||||||
boundsChanged = true
|
boundsChanged = true
|
||||||
super.onBoundsChange(bounds)
|
super.onBoundsChange(bounds)
|
||||||
|
|
|
@ -7,7 +7,6 @@ package org.mozilla.fenix.library.bookmarks
|
||||||
import android.content.ClipData
|
import android.content.ClipData
|
||||||
import android.content.ClipboardManager
|
import android.content.ClipboardManager
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.core.content.getSystemService
|
|
||||||
import androidx.navigation.NavController
|
import androidx.navigation.NavController
|
||||||
import androidx.navigation.NavDestination
|
import androidx.navigation.NavDestination
|
||||||
import androidx.navigation.NavDirections
|
import androidx.navigation.NavDirections
|
||||||
|
@ -18,7 +17,6 @@ import io.mockk.coVerify
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.just
|
import io.mockk.just
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
import io.mockk.mockkStatic
|
|
||||||
import io.mockk.runs
|
import io.mockk.runs
|
||||||
import io.mockk.slot
|
import io.mockk.slot
|
||||||
import io.mockk.spyk
|
import io.mockk.spyk
|
||||||
|
@ -42,7 +40,7 @@ import org.mozilla.fenix.components.metrics.Event
|
||||||
import org.mozilla.fenix.ext.bookmarkStorage
|
import org.mozilla.fenix.ext.bookmarkStorage
|
||||||
import org.mozilla.fenix.ext.components
|
import org.mozilla.fenix.ext.components
|
||||||
|
|
||||||
@SuppressWarnings("TooManyFunctions", "LargeClass")
|
@Suppress("TooManyFunctions", "LargeClass")
|
||||||
@ExperimentalCoroutinesApi
|
@ExperimentalCoroutinesApi
|
||||||
class BookmarkControllerTest {
|
class BookmarkControllerTest {
|
||||||
|
|
||||||
|
@ -51,6 +49,7 @@ class BookmarkControllerTest {
|
||||||
private val bookmarkStore = spyk(BookmarkFragmentStore(BookmarkFragmentState(null)))
|
private val bookmarkStore = spyk(BookmarkFragmentStore(BookmarkFragmentState(null)))
|
||||||
private val context: Context = mockk(relaxed = true)
|
private val context: Context = mockk(relaxed = true)
|
||||||
private val scope = TestCoroutineScope()
|
private val scope = TestCoroutineScope()
|
||||||
|
private val clipboardManager: ClipboardManager = mockk(relaxUnitFun = true)
|
||||||
private val navController: NavController = mockk(relaxed = true)
|
private val navController: NavController = mockk(relaxed = true)
|
||||||
private val sharedViewModel: BookmarksSharedViewModel = mockk()
|
private val sharedViewModel: BookmarksSharedViewModel = mockk()
|
||||||
private val loadBookmarkNode: suspend (String) -> BookmarkNode? = mockk(relaxed = true)
|
private val loadBookmarkNode: suspend (String) -> BookmarkNode? = mockk(relaxed = true)
|
||||||
|
@ -90,13 +89,6 @@ class BookmarkControllerTest {
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setup() {
|
fun setup() {
|
||||||
// needed for mocking 'getSystemService<ClipboardManager>()'
|
|
||||||
mockkStatic(
|
|
||||||
"androidx.core.content.ContextCompat",
|
|
||||||
"android.content.ClipData",
|
|
||||||
"org.mozilla.fenix.ext.ContextKt"
|
|
||||||
)
|
|
||||||
|
|
||||||
every { homeActivity.components.services } returns services
|
every { homeActivity.components.services } returns services
|
||||||
every { navController.currentDestination } returns NavDestination("").apply {
|
every { navController.currentDestination } returns NavDestination("").apply {
|
||||||
id = R.id.bookmarkFragment
|
id = R.id.bookmarkFragment
|
||||||
|
@ -105,8 +97,9 @@ class BookmarkControllerTest {
|
||||||
every { sharedViewModel.selectedFolder = any() } just runs
|
every { sharedViewModel.selectedFolder = any() } just runs
|
||||||
|
|
||||||
controller = DefaultBookmarkController(
|
controller = DefaultBookmarkController(
|
||||||
context = homeActivity,
|
activity = homeActivity,
|
||||||
navController = navController,
|
navController = navController,
|
||||||
|
clipboardManager = clipboardManager,
|
||||||
scope = scope,
|
scope = scope,
|
||||||
store = bookmarkStore,
|
store = bookmarkStore,
|
||||||
sharedViewModel = sharedViewModel,
|
sharedViewModel = sharedViewModel,
|
||||||
|
@ -247,10 +240,7 @@ class BookmarkControllerTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `handleCopyUrl should copy bookmark url to clipboard and show a toast`() {
|
fun `handleCopyUrl should copy bookmark url to clipboard and show a toast`() {
|
||||||
val clipboardManager: ClipboardManager = mockk(relaxed = true)
|
|
||||||
val urlCopiedMessage = context.getString(R.string.url_copied)
|
val urlCopiedMessage = context.getString(R.string.url_copied)
|
||||||
every { any<Context>().getSystemService<ClipboardManager>() } returns clipboardManager
|
|
||||||
every { ClipData.newPlainText(any(), any()) } returns mockk(relaxed = true)
|
|
||||||
|
|
||||||
controller.handleCopyUrl(item)
|
controller.handleCopyUrl(item)
|
||||||
|
|
||||||
|
|
|
@ -178,7 +178,7 @@ class HistoryControllerTest {
|
||||||
controller.handleCopyUrl(historyItem)
|
controller.handleCopyUrl(historyItem)
|
||||||
|
|
||||||
verify {
|
verify {
|
||||||
clipboardManager.primaryClip = capture(clipdata)
|
clipboardManager.setPrimaryClip(capture(clipdata))
|
||||||
snackbar.show()
|
snackbar.show()
|
||||||
}
|
}
|
||||||
assertEquals(1, clipdata.captured.itemCount)
|
assertEquals(1, clipdata.captured.itemCount)
|
||||||
|
|
|
@ -7,12 +7,12 @@ package org.mozilla.fenix.utils
|
||||||
import android.content.ClipData
|
import android.content.ClipData
|
||||||
import android.content.ClipboardManager
|
import android.content.ClipboardManager
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
|
||||||
import mozilla.components.support.test.robolectric.testContext
|
import mozilla.components.support.test.robolectric.testContext
|
||||||
import org.junit.Assert.assertEquals
|
import org.junit.Assert.assertEquals
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
|
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||||
|
|
||||||
@RunWith(FenixRobolectricTestRunner::class)
|
@RunWith(FenixRobolectricTestRunner::class)
|
||||||
class ClipboardHandlerTest {
|
class ClipboardHandlerTest {
|
||||||
|
@ -32,7 +32,7 @@ class ClipboardHandlerTest {
|
||||||
fun getText() {
|
fun getText() {
|
||||||
assertEquals(null, clipboardHandler.text)
|
assertEquals(null, clipboardHandler.text)
|
||||||
|
|
||||||
clipboard.primaryClip = ClipData.newPlainText("Text", clipboardText)
|
clipboard.setPrimaryClip(ClipData.newPlainText("Text", clipboardText))
|
||||||
assertEquals(clipboardText, clipboardHandler.text)
|
assertEquals(clipboardText, clipboardHandler.text)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ class ClipboardHandlerTest {
|
||||||
fun getUrl() {
|
fun getUrl() {
|
||||||
assertEquals(null, clipboardHandler.url)
|
assertEquals(null, clipboardHandler.url)
|
||||||
|
|
||||||
clipboard.primaryClip = ClipData.newPlainText("Text", clipboardUrl)
|
clipboard.setPrimaryClip(ClipData.newPlainText("Text", clipboardUrl))
|
||||||
assertEquals(clipboardUrl, clipboardHandler.url)
|
assertEquals(clipboardUrl, clipboardHandler.url)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ class ClipboardHandlerTest {
|
||||||
fun getUrlfromTextUrlMIME() {
|
fun getUrlfromTextUrlMIME() {
|
||||||
assertEquals(null, clipboardHandler.url)
|
assertEquals(null, clipboardHandler.url)
|
||||||
|
|
||||||
clipboard.primaryClip = ClipData.newHtmlText("Html", clipboardUrl, clipboardUrl)
|
clipboard.setPrimaryClip(ClipData.newHtmlText("Html", clipboardUrl, clipboardUrl))
|
||||||
assertEquals(clipboardUrl, clipboardHandler.url)
|
assertEquals(clipboardUrl, clipboardHandler.url)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,11 +23,11 @@ import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.mozilla.fenix.HomeActivity.Companion.OPEN_TO_BROWSER_AND_LOAD
|
import org.mozilla.fenix.HomeActivity.Companion.OPEN_TO_BROWSER_AND_LOAD
|
||||||
import org.mozilla.fenix.IntentReceiverActivity
|
import org.mozilla.fenix.IntentReceiverActivity
|
||||||
|
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||||
import org.mozilla.fenix.widget.VoiceSearchActivity.Companion.PREVIOUS_INTENT
|
import org.mozilla.fenix.widget.VoiceSearchActivity.Companion.PREVIOUS_INTENT
|
||||||
import org.mozilla.fenix.widget.VoiceSearchActivity.Companion.SPEECH_PROCESSING
|
import org.mozilla.fenix.widget.VoiceSearchActivity.Companion.SPEECH_PROCESSING
|
||||||
import org.mozilla.fenix.widget.VoiceSearchActivity.Companion.SPEECH_REQUEST_CODE
|
import org.mozilla.fenix.widget.VoiceSearchActivity.Companion.SPEECH_REQUEST_CODE
|
||||||
import org.robolectric.Robolectric
|
import org.robolectric.Robolectric
|
||||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
|
||||||
import org.robolectric.Shadows
|
import org.robolectric.Shadows
|
||||||
import org.robolectric.android.controller.ActivityController
|
import org.robolectric.android.controller.ActivityController
|
||||||
import org.robolectric.shadows.ShadowActivity
|
import org.robolectric.shadows.ShadowActivity
|
||||||
|
@ -96,7 +96,7 @@ class VoiceSearchActivityTest {
|
||||||
controller.create(savedInstanceState)
|
controller.create(savedInstanceState)
|
||||||
controller.saveInstanceState(outState)
|
controller.saveInstanceState(outState)
|
||||||
|
|
||||||
assertEquals(previousIntent, outState.getParcelable(PREVIOUS_INTENT) as Intent)
|
assertEquals(previousIntent, outState.getParcelable<Intent>(PREVIOUS_INTENT))
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -3,5 +3,5 @@
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
object AndroidComponents {
|
object AndroidComponents {
|
||||||
const val VERSION = "50.0.20200708130551"
|
const val VERSION = "50.0.20200709130100"
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,9 +13,9 @@ import java.util.Locale
|
||||||
|
|
||||||
object Config {
|
object Config {
|
||||||
// Synchronized build configuration for all modules
|
// Synchronized build configuration for all modules
|
||||||
const val compileSdkVersion = 28
|
const val compileSdkVersion = 29
|
||||||
const val minSdkVersion = 21
|
const val minSdkVersion = 21
|
||||||
const val targetSdkVersion = 28
|
const val targetSdkVersion = 29
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
private fun generateDebugVersionName(): String {
|
private fun generateDebugVersionName(): String {
|
||||||
|
|
Loading…
Reference in New Issue