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
|
||||
|
||||
android {
|
||||
compileSdkVersion 28
|
||||
compileSdkVersion Config.compileSdkVersion
|
||||
defaultConfig {
|
||||
applicationId "org.mozilla"
|
||||
minSdkVersion Config.minSdkVersion
|
||||
|
|
|
@ -9,7 +9,7 @@ import android.content.Context
|
|||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.preference.PreferenceManager
|
||||
import androidx.preference.PreferenceManager
|
||||
import androidx.test.espresso.Espresso.onView
|
||||
import androidx.test.espresso.ViewAction
|
||||
import androidx.test.espresso.action.CoordinatesProvider
|
||||
|
|
|
@ -6,35 +6,32 @@ package org.mozilla.fenix.syncintegration
|
|||
|
||||
import android.os.SystemClock.sleep
|
||||
import android.widget.EditText
|
||||
|
||||
import androidx.test.espresso.Espresso.onView
|
||||
import androidx.test.espresso.action.ViewActions.click
|
||||
import androidx.test.espresso.matcher.ViewMatchers.withId
|
||||
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.uiautomator.By
|
||||
import androidx.test.uiautomator.UiDevice
|
||||
import androidx.test.uiautomator.UiSelector
|
||||
import androidx.test.uiautomator.By
|
||||
import androidx.test.uiautomator.Until
|
||||
import okhttp3.mockwebserver.MockWebServer
|
||||
import org.hamcrest.Matchers.allOf
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.helpers.AndroidAssetDispatcher
|
||||
import org.mozilla.fenix.helpers.HomeActivityTestRule
|
||||
import org.mozilla.fenix.helpers.TestAssetHelper
|
||||
import org.mozilla.fenix.helpers.ext.toUri
|
||||
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.settingsSubMenuLoginsAndPassword
|
||||
import org.mozilla.fenix.ui.robots.navigationToolbar
|
||||
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")
|
||||
class SyncIntegrationTest {
|
||||
|
@ -185,7 +182,7 @@ class SyncIntegrationTest {
|
|||
.className(EditText::class.java))
|
||||
emailInput.waitForExists(TestAssetHelper.waitingTime)
|
||||
|
||||
val emailAddress = javaClass.classLoader.getResource("email.txt").readText()
|
||||
val emailAddress = javaClass.classLoader!!.getResource("email.txt").readText()
|
||||
emailInput.setText(emailAddress)
|
||||
}
|
||||
|
||||
|
@ -199,7 +196,7 @@ class SyncIntegrationTest {
|
|||
.instance(0)
|
||||
.className(EditText::class.java))
|
||||
|
||||
val passwordValue = javaClass.classLoader.getResource("password.txt").readText()
|
||||
val passwordValue = javaClass.classLoader!!.getResource("password.txt").readText()
|
||||
passwordInput.setText(passwordValue)
|
||||
}
|
||||
|
||||
|
|
|
@ -55,6 +55,7 @@ class DownloadTest {
|
|||
}
|
||||
}
|
||||
|
||||
@Suppress("Deprecation")
|
||||
@After
|
||||
fun tearDown() {
|
||||
mockWebServer.shutdown()
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
package org.mozilla.fenix.ui
|
||||
|
||||
import androidx.core.net.toUri
|
||||
import androidx.test.platform.app.InstrumentationRegistry
|
||||
import androidx.test.uiautomator.UiDevice
|
||||
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.action.ViewActions.clearText
|
||||
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.withText
|
||||
import androidx.test.uiautomator.By
|
||||
import androidx.test.uiautomator.By.text
|
||||
import androidx.test.uiautomator.By.textContains
|
||||
import androidx.test.uiautomator.UiScrollable
|
||||
import androidx.test.uiautomator.UiSelector
|
||||
import androidx.test.uiautomator.Until
|
||||
import org.hamcrest.CoreMatchers.allOf
|
||||
import org.hamcrest.CoreMatchers.anyOf
|
||||
import org.junit.Assert
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.helpers.TestAssetHelper.waitingTime
|
||||
import org.mozilla.fenix.helpers.click
|
||||
|
@ -26,6 +31,8 @@ import org.mozilla.fenix.helpers.ext.waitNotNull
|
|||
*/
|
||||
class AddToHomeScreenRobot {
|
||||
|
||||
fun verifyShortcutIcon() = assertShortcutIcon()
|
||||
|
||||
fun addShortcutName(title: String) {
|
||||
mDevice.waitNotNull(Until.findObject(By.text("Add to Home screen")), waitingTime)
|
||||
shortcutNameField()
|
||||
|
@ -33,6 +40,8 @@ class AddToHomeScreenRobot {
|
|||
.perform(typeText(title))
|
||||
}
|
||||
|
||||
fun verifyShortcutNameField(expectedText: String) = assertShortcutNameField(expectedText)
|
||||
|
||||
fun clickAddShortcutButton() = addButton().click()
|
||||
|
||||
fun clickAddAutomaticallyButton() {
|
||||
|
@ -77,7 +86,21 @@ fun addToHomeScreen(interact: AddToHomeScreenRobot.() -> Unit): AddToHomeScreenR
|
|||
|
||||
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 addAutomaticallyButton() =
|
||||
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()
|
||||
}
|
||||
|
||||
fun clickdeleteBookmarkButton() = deleteBookmarkButton().click()
|
||||
|
||||
fun addNewFolderName(name: String) {
|
||||
addFolderTitleField()
|
||||
.click()
|
||||
|
@ -188,6 +190,23 @@ class BookmarksRobot {
|
|||
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 {
|
||||
mDevice.waitNotNull(Until.findObject(res("org.mozilla.fenix.debug:id/overflow_menu")))
|
||||
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 deleteBookmarkButton() = onView(withId(R.id.delete_bookmark_button))
|
||||
|
||||
private fun threeDotMenu(bookmarkUrl: Uri) = onView(
|
||||
allOf(
|
||||
withId(R.id.overflow_menu),
|
||||
|
|
|
@ -157,6 +157,8 @@ class BrowserRobot {
|
|||
|
||||
fun verifyMenuButton() = assertMenuButton()
|
||||
|
||||
fun verifyBlueDot() = assertBlueDot()
|
||||
|
||||
fun verifyNavURLBarItems() {
|
||||
verifyEnhancedTrackingOptions()
|
||||
pressBack()
|
||||
|
@ -448,3 +450,10 @@ private fun mediaPlayerPlayButton() =
|
|||
.clazz("android.widget.Button")
|
||||
.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())!!
|
||||
|
||||
fun verifyFindInPageQuery() = assertFindInPageQuery()!!
|
||||
fun verifyFindInPageNextButton() = assertFindInPageNextButton()!!
|
||||
fun verifyFindInPagePrevButton() = assertFindInPagePrevButton()!!
|
||||
fun verifyFindInPageCloseButton() = assertFindInPageCloseButton()!!
|
||||
|
||||
fun verifyFindInPageSearchBarItems() {
|
||||
verifyFindInPageQuery()
|
||||
verifyFindInPageNextButton()
|
||||
verifyFindInPagePrevButton()
|
||||
verifyFindInPageCloseButton()
|
||||
}
|
||||
|
||||
fun enterFindInPageQuery(expectedText: String) {
|
||||
mDevice.waitNotNull(Until.findObject(By.res("org.mozilla.fenix.debug:id/find_in_page_query_text")), waitingTime)
|
||||
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 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()
|
||||
.check(matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||
|
||||
|
|
|
@ -90,6 +90,13 @@ class HistoryRobot {
|
|||
return Transition()
|
||||
}
|
||||
|
||||
fun goBackToBrowser(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition {
|
||||
closeButton().click()
|
||||
|
||||
BrowserRobot().interact()
|
||||
return BrowserRobot.Transition()
|
||||
}
|
||||
|
||||
fun openThreeDotMenu(interact: ThreeDotMenuHistoryItemRobot.() -> Unit):
|
||||
ThreeDotMenuHistoryItemRobot.Transition {
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
package org.mozilla.fenix.ui.robots
|
||||
|
||||
import android.net.Uri
|
||||
import android.widget.TextView
|
||||
import androidx.test.espresso.Espresso.onView
|
||||
import androidx.test.espresso.assertion.ViewAssertions.matches
|
||||
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.withChild
|
||||
import androidx.test.uiautomator.By
|
||||
import androidx.test.uiautomator.UiSelector
|
||||
import androidx.test.uiautomator.Until
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.helpers.TestAssetHelper.waitingTime
|
||||
import org.mozilla.fenix.helpers.click
|
||||
import org.mozilla.fenix.helpers.ext.waitNotNull
|
||||
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.
|
||||
|
@ -38,6 +41,8 @@ class LibrarySubMenusMultipleSelectionToolbarRobot {
|
|||
|
||||
fun verifyShareOverlay() = assertShareOverlay()
|
||||
|
||||
fun verifyShareAppsLayout() = assertShareAppsLayout()
|
||||
|
||||
fun verifyShareTabFavicon() = assertShareTabFavicon()
|
||||
|
||||
fun verifyShareTabTitle() = assertShareTabTitle()
|
||||
|
@ -71,6 +76,12 @@ class LibrarySubMenusMultipleSelectionToolbarRobot {
|
|||
}
|
||||
|
||||
class Transition {
|
||||
fun closeShareDialogReturnToPage(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition {
|
||||
|
||||
BrowserRobot().interact()
|
||||
return BrowserRobot.Transition()
|
||||
}
|
||||
|
||||
fun closeToolbarReturnToHistory(interact: HistoryRobot.() -> Unit): HistoryRobot.Transition {
|
||||
closeToolbarButton().click()
|
||||
|
||||
|
@ -158,6 +169,15 @@ private fun assertShareBookmarksButton() =
|
|||
private fun assertShareOverlay() =
|
||||
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() =
|
||||
onView(withId(R.id.share_tab_title)).check(matches(isDisplayed()))
|
||||
|
||||
|
|
|
@ -96,6 +96,13 @@ class SettingsRobot {
|
|||
return HomeScreenRobot.Transition()
|
||||
}
|
||||
|
||||
fun goBackToBrowser(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition {
|
||||
goBackButton().click()
|
||||
|
||||
BrowserRobot().interact()
|
||||
return BrowserRobot.Transition()
|
||||
}
|
||||
|
||||
fun openAboutFirefoxPreview(interact: SettingsSubMenuAboutRobot.() -> Unit):
|
||||
SettingsSubMenuAboutRobot.Transition {
|
||||
|
||||
|
|
|
@ -34,8 +34,8 @@ import java.text.SimpleDateFormat
|
|||
import java.time.LocalDateTime
|
||||
import java.time.format.DateTimeFormatterBuilder
|
||||
import java.time.temporal.ChronoField
|
||||
import java.util.Date
|
||||
import java.util.Calendar
|
||||
import java.util.Date
|
||||
|
||||
/**
|
||||
* 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) {
|
||||
val simpleDateFormat = SimpleDateFormat(DATE_PATTERN)
|
||||
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 {
|
||||
val textviewDate = getLocalDateTimeFromString(dateText)
|
||||
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 androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.test.espresso.Espresso.onView
|
||||
import androidx.test.espresso.Espresso.pressBack
|
||||
import androidx.test.espresso.UiController
|
||||
import androidx.test.espresso.ViewAction
|
||||
import androidx.test.espresso.action.ViewActions
|
||||
|
@ -44,8 +45,10 @@ import org.mozilla.fenix.share.ShareFragment
|
|||
*/
|
||||
class ThreeDotMenuMainRobot {
|
||||
fun verifySettingsButton() = assertSettingsButton()
|
||||
fun verifyAddOnsButton() = assertAddOnsButton()
|
||||
fun verifyHistoryButton() = assertHistoryButton()
|
||||
fun verifyBookmarksButton() = assertBookmarksButton()
|
||||
fun verifySyncedTabsButton() = assertSyncedTabsButton()
|
||||
fun verifyHelpButton() = assertHelpButton()
|
||||
fun verifyThreeDotMenuExists() = threeDotMenuRecyclerViewExists()
|
||||
fun verifyForwardButton() = assertForwardButton()
|
||||
|
@ -106,12 +109,40 @@ class ThreeDotMenuMainRobot {
|
|||
fun verifyShareALinkTitle() = assertShareALinkTitle()
|
||||
fun verifyWhatsNewButton() = assertWhatsNewButton()
|
||||
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 {
|
||||
|
||||
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 {
|
||||
onView(withId(R.id.mozac_browser_menu_recyclerView)).perform(ViewActions.swipeDown())
|
||||
onView(allOf(withResourceName("text"), withText(R.string.browser_menu_settings)))
|
||||
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
||||
.check(matches(isCompletelyDisplayed()))
|
||||
|
@ -121,7 +152,17 @@ class ThreeDotMenuMainRobot {
|
|||
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 {
|
||||
onView(withId(R.id.mozac_browser_menu_recyclerView)).perform(ViewActions.swipeDown())
|
||||
mDevice.waitNotNull(Until.findObject(By.text("Bookmarks")), waitingTime)
|
||||
bookmarksButton().click()
|
||||
|
||||
|
@ -130,6 +171,7 @@ class ThreeDotMenuMainRobot {
|
|||
}
|
||||
|
||||
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)
|
||||
historyButton().click()
|
||||
|
||||
|
@ -137,6 +179,23 @@ class ThreeDotMenuMainRobot {
|
|||
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 {
|
||||
mDevice.waitNotNull(Until.findObject(By.text("Help")), waitingTime)
|
||||
helpButton().click()
|
||||
|
@ -163,6 +222,13 @@ class ThreeDotMenuMainRobot {
|
|||
return BrowserRobot.Transition()
|
||||
}
|
||||
|
||||
fun goBackToBrowser(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition {
|
||||
mDevice.pressBack()
|
||||
|
||||
BrowserRobot().interact()
|
||||
return BrowserRobot.Transition()
|
||||
}
|
||||
|
||||
fun close(interact: HomeScreenRobot.() -> Unit): HomeScreenRobot.Transition {
|
||||
// Close three dot
|
||||
mDevice.pressBack()
|
||||
|
@ -196,6 +262,7 @@ class ThreeDotMenuMainRobot {
|
|||
}
|
||||
|
||||
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)
|
||||
findInPageButton().click()
|
||||
|
||||
|
@ -274,6 +341,13 @@ class ThreeDotMenuMainRobot {
|
|||
HomeScreenRobot().interact()
|
||||
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(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 assertHistoryButton() = historyButton()
|
||||
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
||||
|
@ -294,6 +373,10 @@ private fun bookmarksButton() = onView(allOf(withText(R.string.library_bookmarks
|
|||
private fun assertBookmarksButton() = bookmarksButton()
|
||||
.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 assertHelpButton() = helpButton()
|
||||
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
||||
|
@ -399,3 +482,36 @@ private fun assertAddToFirefoxHome() {
|
|||
)
|
||||
).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
|
||||
),
|
||||
sessionManager = requireComponents.core.sessionManager,
|
||||
sessionFeature = sessionFeature,
|
||||
findInPageLauncher = { findInPageIntegration.withFeature { it.launch() } },
|
||||
engineView = engineView,
|
||||
swipeRefresh = swipeRefresh,
|
||||
|
|
|
@ -221,21 +221,37 @@ class BrowserFragment : BaseBrowserFragment(), UserInteractionHandler {
|
|||
|
||||
private val collectionStorageObserver = object : TabCollectionStorage.Observer {
|
||||
override fun onCollectionCreated(title: String, sessions: List<Session>) {
|
||||
showTabSavedToCollectionSnackbar()
|
||||
showTabSavedToCollectionSnackbar(sessions.size, true)
|
||||
}
|
||||
|
||||
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 ->
|
||||
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(
|
||||
view = view,
|
||||
duration = Snackbar.LENGTH_SHORT,
|
||||
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()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,8 @@ import mozilla.components.browser.session.Session
|
|||
import mozilla.components.browser.session.SessionManager
|
||||
import mozilla.components.concept.engine.EngineView
|
||||
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 org.mozilla.fenix.HomeActivity
|
||||
import org.mozilla.fenix.NavGraphDirections
|
||||
|
@ -61,6 +63,7 @@ class DefaultBrowserToolbarController(
|
|||
private val activity: HomeActivity,
|
||||
private val navController: NavController,
|
||||
private val readerModeController: ReaderModeController,
|
||||
private val sessionFeature: ViewBoundFeatureWrapper<SessionFeature>,
|
||||
private val sessionManager: SessionManager,
|
||||
private val findInPageLauncher: () -> Unit,
|
||||
private val engineView: EngineView,
|
||||
|
@ -260,8 +263,10 @@ class DefaultBrowserToolbarController(
|
|||
}
|
||||
}
|
||||
ToolbarMenu.Item.OpenInFenix -> {
|
||||
// Release the session from this view so that it can immediately be rendered by a different view
|
||||
engineView.release()
|
||||
// Stop the SessionFeature from updating the EngineView and let it release the session
|
||||
// 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
|
||||
customTabSession!!.customTabConfig = null
|
||||
|
|
|
@ -6,9 +6,7 @@ package org.mozilla.fenix.library.bookmarks
|
|||
|
||||
import android.content.ClipData
|
||||
import android.content.ClipboardManager
|
||||
import android.content.Context
|
||||
import android.content.res.Resources
|
||||
import androidx.core.content.getSystemService
|
||||
import androidx.navigation.NavController
|
||||
import androidx.navigation.NavDirections
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
|
@ -51,8 +49,9 @@ interface BookmarkController {
|
|||
|
||||
@SuppressWarnings("TooManyFunctions")
|
||||
class DefaultBookmarkController(
|
||||
private val context: Context,
|
||||
private val activity: HomeActivity,
|
||||
private val navController: NavController,
|
||||
private val clipboardManager: ClipboardManager?,
|
||||
private val scope: CoroutineScope,
|
||||
private val store: BookmarkFragmentStore,
|
||||
private val sharedViewModel: BookmarksSharedViewModel,
|
||||
|
@ -63,8 +62,7 @@ class DefaultBookmarkController(
|
|||
private val invokePendingDeletion: () -> Unit
|
||||
) : BookmarkController {
|
||||
|
||||
private val activity: HomeActivity = context as HomeActivity
|
||||
private val resources: Resources = context.resources
|
||||
private val resources: Resources = activity.resources
|
||||
|
||||
override fun handleBookmarkChanged(item: BookmarkNode) {
|
||||
sharedViewModel.selectedFolder = item
|
||||
|
@ -115,7 +113,7 @@ class DefaultBookmarkController(
|
|||
|
||||
override fun handleCopyUrl(item: BookmarkNode) {
|
||||
val urlClipData = ClipData.newPlainText(item.url, item.url)
|
||||
context.getSystemService<ClipboardManager>()?.primaryClip = urlClipData
|
||||
clipboardManager?.setPrimaryClip(urlClipData)
|
||||
showSnackbar(resources.getString(R.string.url_copied))
|
||||
}
|
||||
|
||||
|
@ -143,14 +141,14 @@ class DefaultBookmarkController(
|
|||
scope.launch {
|
||||
store.dispatch(BookmarkFragmentAction.StartSync)
|
||||
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
|
||||
// check if the current node is valid and if it isn't we find the nearest valid ancestor
|
||||
// and open it
|
||||
val validAncestorGuid = store.state.guidBackstack.findLast { guid ->
|
||||
context.bookmarkStorage.getBookmark(guid) != null
|
||||
activity.bookmarkStorage.getBookmark(guid) != null
|
||||
} ?: BookmarkRoot.Mobile.id
|
||||
val node = context.bookmarkStorage.getBookmark(validAncestorGuid)!!
|
||||
val node = activity.bookmarkStorage.getBookmark(validAncestorGuid)!!
|
||||
handleBookmarkExpand(node)
|
||||
store.dispatch(BookmarkFragmentAction.FinishSync)
|
||||
}
|
||||
|
@ -160,12 +158,12 @@ class DefaultBookmarkController(
|
|||
invokePendingDeletion.invoke()
|
||||
scope.launch {
|
||||
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) {
|
||||
navController.popBackStack()
|
||||
} else {
|
||||
val parent = context.bookmarkStorage.getBookmark(parentGuid)!!
|
||||
val parent = activity.bookmarkStorage.getBookmark(parentGuid)!!
|
||||
handleBookmarkExpand(parent)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ import android.view.MenuItem
|
|||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.core.content.getSystemService
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
|
@ -37,6 +38,7 @@ import mozilla.components.concept.storage.BookmarkNode
|
|||
import mozilla.components.concept.storage.BookmarkNodeType
|
||||
import mozilla.components.lib.state.ext.consumeFrom
|
||||
import mozilla.components.support.base.feature.UserInteractionHandler
|
||||
import org.mozilla.fenix.HomeActivity
|
||||
import org.mozilla.fenix.NavHostActivity
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.components.FenixSnackbar
|
||||
|
@ -85,8 +87,9 @@ class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), UserInteractionHan
|
|||
|
||||
_bookmarkInteractor = BookmarkFragmentInteractor(
|
||||
bookmarksController = DefaultBookmarkController(
|
||||
context = requireContext(),
|
||||
activity = requireActivity() as HomeActivity,
|
||||
navController = findNavController(),
|
||||
clipboardManager = requireContext().getSystemService(),
|
||||
scope = viewLifecycleOwner.lifecycleScope,
|
||||
store = bookmarkStore,
|
||||
sharedViewModel = sharedViewModel,
|
||||
|
|
|
@ -81,7 +81,7 @@ class DefaultHistoryController(
|
|||
|
||||
override fun handleCopyUrl(item: HistoryItem) {
|
||||
val urlClipData = ClipData.newPlainText(item.url, item.url)
|
||||
clipboardManager.primaryClip = urlClipData
|
||||
clipboardManager.setPrimaryClip(urlClipData)
|
||||
with(snackbar) {
|
||||
setText(resources.getString(R.string.url_copied))
|
||||
show()
|
||||
|
|
|
@ -18,6 +18,7 @@ import androidx.appcompat.app.AlertDialog
|
|||
import androidx.biometric.BiometricManager
|
||||
import androidx.biometric.BiometricPrompt
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.content.getSystemService
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.preference.Preference
|
||||
|
@ -270,8 +271,9 @@ class SavedLoginsAuthFragment : PreferenceFragmentCompat(), AccountObserver {
|
|||
}
|
||||
}
|
||||
|
||||
@Suppress("Deprecation")
|
||||
private fun showPinVerification() {
|
||||
val manager = activity?.getSystemService(KEYGUARD_SERVICE) as KeyguardManager
|
||||
val manager = activity?.getSystemService<KeyguardManager>()!!
|
||||
val intent = manager.createConfirmDeviceCredentialIntent(
|
||||
getString(R.string.logins_biometric_prompt_message_pin),
|
||||
getString(R.string.logins_biometric_prompt_message)
|
||||
|
|
|
@ -7,6 +7,7 @@ package org.mozilla.fenix.utils
|
|||
import android.content.ClipData
|
||||
import android.content.ClipboardManager
|
||||
import android.content.Context
|
||||
import androidx.core.content.getSystemService
|
||||
import mozilla.components.support.utils.WebURLFinder
|
||||
|
||||
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
|
||||
*/
|
||||
class ClipboardHandler(context: Context) {
|
||||
private val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
|
||||
private val clipboard = context.getSystemService<ClipboardManager>()!!
|
||||
|
||||
var text: String?
|
||||
get() {
|
||||
|
@ -29,7 +30,7 @@ class ClipboardHandler(context: Context) {
|
|||
return null
|
||||
}
|
||||
set(value) {
|
||||
clipboard.primaryClip = ClipData.newPlainText("Text", value)
|
||||
clipboard.setPrimaryClip(ClipData.newPlainText("Text", value))
|
||||
}
|
||||
|
||||
val url: String?
|
||||
|
|
|
@ -6,7 +6,7 @@ package org.mozilla.fenix.whatsnew
|
|||
|
||||
import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
import android.preference.PreferenceManager
|
||||
import androidx.preference.PreferenceManager
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
// This file is a modified port from Focus Android
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
android:fontFamily="@font/metropolis_bold"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/tracking_protection_item_height"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginStart="72dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:paddingStart="0dp"
|
||||
android:paddingEnd="0dp"
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
android:id="@+id/trackingProtectionCategoryTitle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/library_item_icon_margin_horizontal"
|
||||
android:layout_marginStart="32dp"
|
||||
android:layout_marginTop="12dp"
|
||||
android:layout_marginEnd="@dimen/library_item_icon_margin_horizontal"
|
||||
android:clickable="false"
|
||||
|
@ -44,7 +44,7 @@
|
|||
android:id="@+id/trackingProtectionCategoryItemDescription"
|
||||
android:layout_width="0dp"
|
||||
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_marginBottom="18dp"
|
||||
android:clickable="false"
|
||||
|
|
|
@ -217,6 +217,10 @@
|
|||
<string name="preferences_private_browsing_options">Поверително разглеждане</string>
|
||||
<!-- Preference for opening links in a private tab-->
|
||||
<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 -->
|
||||
<string name="preferences_accessibility">Достъпност</string>
|
||||
<!-- Preference category for account information -->
|
||||
|
@ -233,6 +237,8 @@
|
|||
<string name="preferences_sign_in_description">Синхронизирайте отметки, пароли и други с вашия Firefox Account</string>
|
||||
<!-- Preference shown instead of account display name while account profile information isn't available yet. -->
|
||||
<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 -->
|
||||
<string name="preferences_language">Език</string>
|
||||
<!-- Preference for data choices -->
|
||||
|
@ -251,6 +257,8 @@
|
|||
<string name="preferences_show_search_suggestions">Показване на предложения</string>
|
||||
<!-- Preference title for switch preference to show voice search button -->
|
||||
<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 -->
|
||||
<string name="preferences_show_clipboard_suggestions">Показване на предложения от буфера</string>
|
||||
<!-- Preference title for switch preference to suggest browsing history when searching -->
|
||||
|
@ -285,6 +293,14 @@
|
|||
<string name="empty_device_name_error">Името не може да е празно.</string>
|
||||
<!-- Label indicating that sync is in progress -->
|
||||
<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.
|
||||
The first parameter is the application name, the second is the device manufacturer name
|
||||
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 -->
|
||||
<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 -->
|
||||
<string name="preferences_telemetry">Телеметрия</string>
|
||||
<!-- Preference switch for usage and technical data collection -->
|
||||
|
@ -335,9 +354,14 @@
|
|||
<!-- Preference switch for Mozilla location service -->
|
||||
<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 -->
|
||||
<!-- Header of the Turn on Sync preference view -->
|
||||
<string name="preferences_sync">Включване на Sync</string>
|
||||
<!-- Preference for pairing -->
|
||||
<string name="preferences_sync_pair">Сканирайте кода за сдвояване в настолен Firefox</string>
|
||||
<!-- Preference for account login -->
|
||||
<string name="preferences_sync_sign_in">Вход</string>
|
||||
<!-- Preference for reconnecting to FxA sync -->
|
||||
|
@ -349,6 +373,8 @@
|
|||
<!-- Instructions on how to access pairing -->
|
||||
<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 -->
|
||||
<string name="pair_cancel">Отказ</string>
|
||||
|
||||
|
@ -364,6 +390,104 @@
|
|||
<!-- Preference for using dark theme -->
|
||||
<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 -->
|
||||
<string name="create_collection_select_all">Избиране на всички</string>
|
||||
<!-- 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-->
|
||||
<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
|
||||
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>
|
||||
|
||||
<!-- 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 -->
|
||||
<string name="preference_enhanced_tracking_protection_explanation_title">Преглеждайте без да бъдете следени</string>
|
||||
|
||||
|
@ -388,11 +552,23 @@
|
|||
<!-- Text displayed that links to website about enhanced tracking protection -->
|
||||
<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 -->
|
||||
<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 -->
|
||||
<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 -->
|
||||
<string name="search_add_custom_engine_learn_more_label">Научете повече</string>
|
||||
<!-- Accessibility description for the 'Learn more' link -->
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
<!-- Private Browsing -->
|
||||
<!-- Title for private session option -->
|
||||
<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 -->
|
||||
<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>
|
||||
<!-- Preference for adding private browsing shortcut -->
|
||||
<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 -->
|
||||
<string name="preferences_override_fxa_server">Zaseban Firefox Account server</string>
|
||||
<!-- 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>
|
||||
<!-- 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>
|
||||
<!-- 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 -->
|
||||
<string name="preferences_language">Jezik</string>
|
||||
<!-- Preference for data choices -->
|
||||
|
@ -358,6 +363,8 @@
|
|||
<string name="preferences_sync_pair">Skenirajte kod za uparivanje u desktop Firefoxu</string>
|
||||
<!-- Preference for account login -->
|
||||
<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 -->
|
||||
<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>
|
||||
<!-- Shortcut action to open the home screen -->
|
||||
<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 -->
|
||||
<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 -->
|
||||
<string name="close_tab">Zatvori tab</string>
|
||||
<!-- 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>
|
||||
<!-- 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 -->
|
||||
<string name="tabs_menu_close_all_tabs">Zatvori sve tabove</string>
|
||||
<!-- Open tabs menu item to share all tabs -->
|
||||
<string name="tabs_menu_share_tabs">Podijeli tabove</string>
|
||||
<!-- Open tabs menu item to save tabs to collection -->
|
||||
<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 -->
|
||||
<string name="tab_share">Podijeli tab</string>
|
||||
<!-- Button in the current session menu. Deletes the session when pressed -->
|
||||
|
@ -804,8 +817,6 @@
|
|||
<!-- Title for the Delete browsing data on quit preference -->
|
||||
<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 -->
|
||||
<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>
|
||||
<!-- Placeholder text shown in the search bar before a user enters text -->
|
||||
<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 -->
|
||||
<string name="private_browsing_delete_session">Suprimir la session</string>
|
||||
|
@ -278,10 +276,22 @@
|
|||
<!-- Text for the menu button to remove a top site -->
|
||||
<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 -->
|
||||
<string name="history_clear_dialog">Escafar</string>
|
||||
<!-- Text for the button to delete a single history item -->
|
||||
<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 -->
|
||||
<string name="history_24_hours">Las darrièras 24 oras</string>
|
||||
<!-- 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 -->
|
||||
<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 -->
|
||||
<string name="bookmark_menu_copy_button">Copiar</string>
|
||||
<!-- Bookmark overflow menu share button -->
|
||||
|
@ -313,6 +325,9 @@
|
|||
<!-- Bookmark editing error missing or improper URL -->
|
||||
<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 -->
|
||||
<string name="phone_feature_go_to_settings">Anar als paramètres</string>
|
||||
<!-- Preference for altering the camera access for all websites -->
|
||||
|
@ -347,4 +362,69 @@
|
|||
<!-- Text for the warning message on the Add new device screen -->
|
||||
<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>
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
|
||||
<!-- Private mode shortcut "contextual feature recommendation" (CFR) -->
|
||||
<!-- 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 -->
|
||||
<string name="cfr_pos_button_text">Adicionar atalho</string>
|
||||
<!-- Text for the negative button -->
|
||||
|
@ -221,7 +221,7 @@
|
|||
<!-- Preference for private browsing options -->
|
||||
<string name="preferences_private_browsing_options">Navegação privativa</string>
|
||||
<!-- 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-->
|
||||
<string name="preferences_allow_screenshots_in_private_mode">Permitir capturas de tela na navegação privativa</string>
|
||||
<!-- Preference for adding private browsing shortcut -->
|
||||
|
@ -700,7 +700,7 @@
|
|||
<!-- 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>
|
||||
<!-- 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 -->
|
||||
<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 -->
|
||||
|
|
|
@ -1,6 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<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 -->
|
||||
<string name="search_hint">Paluruh atawa asupkeun alamat</string>
|
||||
|
||||
|
@ -49,8 +56,6 @@
|
|||
|
||||
<!-- Browser menu button that saves the current tab to a collection -->
|
||||
<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 -->
|
||||
<string name="browser_menu_share">Bagikeun</string>
|
||||
<!-- 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
|
||||
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>
|
||||
<!-- 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>
|
||||
<!-- Browser menu button to open the current page in an external app -->
|
||||
<string name="browser_menu_open_app_link">Buka di aplikasi</string>
|
||||
|
@ -105,18 +110,46 @@
|
|||
<!-- Text preview for larger sized widgets -->
|
||||
<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 -->
|
||||
<string name="preferences_default_search_engine">Mesin pamaluruh baku</string>
|
||||
<!-- Preference for settings related to Search -->
|
||||
<string name="preferences_search">Paluruh</string>
|
||||
<!-- Preference for settings related to Search address bar -->
|
||||
<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 -->
|
||||
<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 -->
|
||||
<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 -->
|
||||
<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 -->
|
||||
<string name="preferences_override_fxa_server">Serper Firefox Account biasa</string>
|
||||
<!-- Preference category for account information -->
|
||||
|
@ -146,12 +179,30 @@
|
|||
<!-- Preference for account settings -->
|
||||
<string name="preferences_account_settings">Setélan akun</string>
|
||||
|
||||
<!-- Preference for add_ons -->
|
||||
<string name="preferences_addons">Émbohan</string>
|
||||
|
||||
<!-- Account Preferences -->
|
||||
<!-- Preference for triggering sync -->
|
||||
<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 -->
|
||||
<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 -->
|
||||
<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>
|
||||
<!-- 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>
|
||||
<!-- 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 -->
|
||||
<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 -->
|
||||
<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 -->
|
||||
<string name="preference_enhanced_tracking_protection_explanation_learn_more">Lenyepan</string>
|
||||
<!-- 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 -->
|
||||
<string name="no_private_tabs_description">మీ అంతరంగిక ట్యాబులు ఇక్కడ కనిపిస్తాయి.</string>
|
||||
|
||||
<!-- Text for the negative button -->
|
||||
<string name="cfr_neg_button_text">ఫరవాలేదు వద్దు</string>
|
||||
|
||||
<!-- Text for the negative button -->
|
||||
<string name="search_widget_cfr_neg_button_text">ఇప్పుడు కాదు</string>
|
||||
|
||||
|
@ -29,14 +32,26 @@
|
|||
<string name="browser_tabs_button">తెరిచివున్న ట్యాబులు</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Navigate backward (browsing history) -->
|
||||
<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 -->
|
||||
<string name="browser_menu_help">సహాయం</string>
|
||||
<!-- Browser menu button that sends a to a the what's new article -->
|
||||
<string name="browser_menu_whats_new">కొత్తవి ఏమిటి</string>
|
||||
<!-- Browser menu button that opens the settings menu -->
|
||||
<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. -->
|
||||
<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 -->
|
||||
<string name="browser_menu_new_tab">కొత్త ట్యాబు</string>
|
||||
<!-- Browser menu button to configure reader mode appearance e.g. the used font type and size -->
|
||||
|
@ -133,6 +148,9 @@
|
|||
<!-- Title for experiments preferences -->
|
||||
<string name="preference_experiments">ప్రయోగాలు</string>
|
||||
|
||||
<!-- Preference for removing FxA account -->
|
||||
<string name="preferences_sync_remove_account">ఖాతాను తొలగించు</string>
|
||||
|
||||
<!-- Button to cancel pairing -->
|
||||
<string name="pair_cancel">రద్దుచేయి</string>
|
||||
|
||||
|
@ -173,6 +191,8 @@
|
|||
<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 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 -->
|
||||
|
@ -182,6 +202,8 @@
|
|||
<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>
|
||||
<!-- 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 -->
|
||||
<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 -->
|
||||
<string name="history_30_days">గత 30 రోజులు</string>
|
||||
<!-- 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 -->
|
||||
<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 -->
|
||||
<string name="bookmark_menu_delete_button">తొలగించు</string>
|
||||
<!--Bookmark overflow menu save button -->
|
||||
|
@ -227,14 +258,37 @@
|
|||
<!-- Site permissions preferences header -->
|
||||
<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 -->
|
||||
<string name="preference_phone_feature_location">స్థానం</string>
|
||||
<!-- Preference for showing a list of websites that the default configurations won't apply to them -->
|
||||
<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 header on home fragment -->
|
||||
<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 -->
|
||||
<string name="create_collection_close">మూసివేయి</string>
|
||||
|
||||
|
@ -243,18 +297,100 @@
|
|||
<!-- Snackbar action to view the collection the user just created or updated -->
|
||||
<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. -->
|
||||
<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 -->
|
||||
<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 -->
|
||||
<string name="tab_collection_dialog_positive">తొలగించు</string>
|
||||
<!-- Tab collection deletion prompt dialog option to cancel deleting the collection -->
|
||||
<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 -->
|
||||
<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 -->
|
||||
<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 -->
|
||||
|
@ -271,12 +407,18 @@
|
|||
<!-- Title for the cookies item in Delete browsing data -->
|
||||
<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 -->
|
||||
<string name="delete_browsing_data_prompt_cancel">రద్దుచేయి</string>
|
||||
|
||||
<!-- Text for the allow button for the data deletion dialog -->
|
||||
<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 -->
|
||||
<!-- Text for onboarding welcome message
|
||||
The first parameter is the name of the app (e.g. Firefox Preview) -->
|
||||
|
@ -287,9 +429,44 @@
|
|||
<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 -->
|
||||
<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 -->
|
||||
<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 -->
|
||||
<string name="sign_out_cancel">రద్దుచేయి</string>
|
||||
|
||||
|
|
|
@ -818,7 +818,7 @@
|
|||
<!-- 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>
|
||||
<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 -->
|
||||
|
@ -1400,7 +1400,7 @@
|
|||
<!-- Bookmark deletion confirmation -->
|
||||
<string name="bookmark_deletion_confirmation">Ви впевнені, що хочете видалити цю закладку?</string>
|
||||
<!-- 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
|
||||
the certificate authority that verified the ticket-->
|
||||
<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 -->
|
||||
<string name="tip_firefox_preview_moved_header">Firefox Nightly 已接手原 Firefox Preview 功能</string>
|
||||
<!-- text for firefox preview moving tip description -->
|
||||
<string name="tip_firefox_preview_moved_description">Firefox Nightly 每天都會更新,當中包含實驗中的新功能,然而這些新功能可能會較不穩定。\n\n
|
||||
|
||||
若想要有較穩定的使用體驗,請下載我們的 Beta 測試版。</string>
|
||||
<string name="tip_firefox_preview_moved_description">Firefox Nightly 每天都會更新,當中包含實驗中的新功能,然而這些新功能可能會較不穩定。\n\n若想要有較穩定的使用體驗,請下載我們的 Beta 測試版。</string>
|
||||
|
||||
<!-- 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>
|
||||
|
|
|
@ -33,9 +33,11 @@ import mozilla.components.browser.state.state.createTab
|
|||
import mozilla.components.browser.state.store.BrowserStore
|
||||
import mozilla.components.concept.engine.EngineView
|
||||
import mozilla.components.feature.search.SearchUseCases
|
||||
import mozilla.components.feature.session.SessionFeature
|
||||
import mozilla.components.feature.session.SessionUseCases
|
||||
import mozilla.components.feature.tab.collections.TabCollection
|
||||
import mozilla.components.feature.tabs.TabsUseCases
|
||||
import mozilla.components.support.base.feature.ViewBoundFeatureWrapper
|
||||
import mozilla.components.support.test.rule.MainCoroutineRule
|
||||
import org.junit.After
|
||||
import org.junit.Assert.assertEquals
|
||||
|
@ -93,6 +95,8 @@ class DefaultBrowserToolbarControllerTest {
|
|||
@RelaxedMockK private lateinit var tabCollectionStorage: TabCollectionStorage
|
||||
@RelaxedMockK private lateinit var topSiteStorage: TopSiteStorage
|
||||
@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(
|
||||
listOf(
|
||||
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.store } returns store
|
||||
every { sessionManager.selectedSession } returns currentSession
|
||||
every { sessionFeatureWrapper.get() } returns sessionFeature
|
||||
|
||||
val onComplete = slot<() -> Unit>()
|
||||
every { browserAnimator.captureEngineViewAndDrawStatically(capture(onComplete)) } answers { onComplete.captured.invoke() }
|
||||
|
@ -469,7 +474,7 @@ class DefaultBrowserToolbarControllerTest {
|
|||
|
||||
controller.handleToolbarItemInteraction(item)
|
||||
|
||||
verify { engineView.release() }
|
||||
verify { sessionFeature.release() }
|
||||
verify { currentSession.customTabConfig = null }
|
||||
verify { sessionManager.select(currentSession) }
|
||||
verify { activity.startActivity(openInFenixIntent) }
|
||||
|
@ -571,6 +576,7 @@ class DefaultBrowserToolbarControllerTest {
|
|||
bookmarkTapped = bookmarkTapped,
|
||||
readerModeController = readerModeController,
|
||||
sessionManager = sessionManager,
|
||||
sessionFeature = sessionFeatureWrapper,
|
||||
onTabCounterClicked = onTabCounterClicked,
|
||||
onCloseTab = onCloseTab
|
||||
).apply {
|
||||
|
|
|
@ -37,7 +37,7 @@ class DrawableTest {
|
|||
|
||||
override fun draw(canvas: Canvas) {}
|
||||
override fun setAlpha(alpha: Int) {}
|
||||
override fun setColorFilter(cf: ColorFilter) {}
|
||||
override fun setColorFilter(cf: ColorFilter?) {}
|
||||
override fun onBoundsChange(bounds: Rect) {
|
||||
boundsChanged = true
|
||||
super.onBoundsChange(bounds)
|
||||
|
|
|
@ -7,7 +7,6 @@ package org.mozilla.fenix.library.bookmarks
|
|||
import android.content.ClipData
|
||||
import android.content.ClipboardManager
|
||||
import android.content.Context
|
||||
import androidx.core.content.getSystemService
|
||||
import androidx.navigation.NavController
|
||||
import androidx.navigation.NavDestination
|
||||
import androidx.navigation.NavDirections
|
||||
|
@ -18,7 +17,6 @@ import io.mockk.coVerify
|
|||
import io.mockk.every
|
||||
import io.mockk.just
|
||||
import io.mockk.mockk
|
||||
import io.mockk.mockkStatic
|
||||
import io.mockk.runs
|
||||
import io.mockk.slot
|
||||
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.components
|
||||
|
||||
@SuppressWarnings("TooManyFunctions", "LargeClass")
|
||||
@Suppress("TooManyFunctions", "LargeClass")
|
||||
@ExperimentalCoroutinesApi
|
||||
class BookmarkControllerTest {
|
||||
|
||||
|
@ -51,6 +49,7 @@ class BookmarkControllerTest {
|
|||
private val bookmarkStore = spyk(BookmarkFragmentStore(BookmarkFragmentState(null)))
|
||||
private val context: Context = mockk(relaxed = true)
|
||||
private val scope = TestCoroutineScope()
|
||||
private val clipboardManager: ClipboardManager = mockk(relaxUnitFun = true)
|
||||
private val navController: NavController = mockk(relaxed = true)
|
||||
private val sharedViewModel: BookmarksSharedViewModel = mockk()
|
||||
private val loadBookmarkNode: suspend (String) -> BookmarkNode? = mockk(relaxed = true)
|
||||
|
@ -90,13 +89,6 @@ class BookmarkControllerTest {
|
|||
|
||||
@Before
|
||||
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 { navController.currentDestination } returns NavDestination("").apply {
|
||||
id = R.id.bookmarkFragment
|
||||
|
@ -105,8 +97,9 @@ class BookmarkControllerTest {
|
|||
every { sharedViewModel.selectedFolder = any() } just runs
|
||||
|
||||
controller = DefaultBookmarkController(
|
||||
context = homeActivity,
|
||||
activity = homeActivity,
|
||||
navController = navController,
|
||||
clipboardManager = clipboardManager,
|
||||
scope = scope,
|
||||
store = bookmarkStore,
|
||||
sharedViewModel = sharedViewModel,
|
||||
|
@ -247,10 +240,7 @@ class BookmarkControllerTest {
|
|||
|
||||
@Test
|
||||
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)
|
||||
every { any<Context>().getSystemService<ClipboardManager>() } returns clipboardManager
|
||||
every { ClipData.newPlainText(any(), any()) } returns mockk(relaxed = true)
|
||||
|
||||
controller.handleCopyUrl(item)
|
||||
|
||||
|
|
|
@ -178,7 +178,7 @@ class HistoryControllerTest {
|
|||
controller.handleCopyUrl(historyItem)
|
||||
|
||||
verify {
|
||||
clipboardManager.primaryClip = capture(clipdata)
|
||||
clipboardManager.setPrimaryClip(capture(clipdata))
|
||||
snackbar.show()
|
||||
}
|
||||
assertEquals(1, clipdata.captured.itemCount)
|
||||
|
|
|
@ -7,12 +7,12 @@ package org.mozilla.fenix.utils
|
|||
import android.content.ClipData
|
||||
import android.content.ClipboardManager
|
||||
import android.content.Context
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
|
||||
@RunWith(FenixRobolectricTestRunner::class)
|
||||
class ClipboardHandlerTest {
|
||||
|
@ -32,7 +32,7 @@ class ClipboardHandlerTest {
|
|||
fun getText() {
|
||||
assertEquals(null, clipboardHandler.text)
|
||||
|
||||
clipboard.primaryClip = ClipData.newPlainText("Text", clipboardText)
|
||||
clipboard.setPrimaryClip(ClipData.newPlainText("Text", clipboardText))
|
||||
assertEquals(clipboardText, clipboardHandler.text)
|
||||
}
|
||||
|
||||
|
@ -48,7 +48,7 @@ class ClipboardHandlerTest {
|
|||
fun getUrl() {
|
||||
assertEquals(null, clipboardHandler.url)
|
||||
|
||||
clipboard.primaryClip = ClipData.newPlainText("Text", clipboardUrl)
|
||||
clipboard.setPrimaryClip(ClipData.newPlainText("Text", clipboardUrl))
|
||||
assertEquals(clipboardUrl, clipboardHandler.url)
|
||||
}
|
||||
|
||||
|
@ -56,7 +56,7 @@ class ClipboardHandlerTest {
|
|||
fun getUrlfromTextUrlMIME() {
|
||||
assertEquals(null, clipboardHandler.url)
|
||||
|
||||
clipboard.primaryClip = ClipData.newHtmlText("Html", clipboardUrl, clipboardUrl)
|
||||
clipboard.setPrimaryClip(ClipData.newHtmlText("Html", clipboardUrl, clipboardUrl))
|
||||
assertEquals(clipboardUrl, clipboardHandler.url)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,11 +23,11 @@ import org.junit.Test
|
|||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.HomeActivity.Companion.OPEN_TO_BROWSER_AND_LOAD
|
||||
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.SPEECH_PROCESSING
|
||||
import org.mozilla.fenix.widget.VoiceSearchActivity.Companion.SPEECH_REQUEST_CODE
|
||||
import org.robolectric.Robolectric
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.robolectric.Shadows
|
||||
import org.robolectric.android.controller.ActivityController
|
||||
import org.robolectric.shadows.ShadowActivity
|
||||
|
@ -96,7 +96,7 @@ class VoiceSearchActivityTest {
|
|||
controller.create(savedInstanceState)
|
||||
controller.saveInstanceState(outState)
|
||||
|
||||
assertEquals(previousIntent, outState.getParcelable(PREVIOUS_INTENT) as Intent)
|
||||
assertEquals(previousIntent, outState.getParcelable<Intent>(PREVIOUS_INTENT))
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
@ -3,5 +3,5 @@
|
|||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
object AndroidComponents {
|
||||
const val VERSION = "50.0.20200708130551"
|
||||
const val VERSION = "50.0.20200709130100"
|
||||
}
|
||||
|
|
|
@ -13,9 +13,9 @@ import java.util.Locale
|
|||
|
||||
object Config {
|
||||
// Synchronized build configuration for all modules
|
||||
const val compileSdkVersion = 28
|
||||
const val compileSdkVersion = 29
|
||||
const val minSdkVersion = 21
|
||||
const val targetSdkVersion = 28
|
||||
const val targetSdkVersion = 29
|
||||
|
||||
@JvmStatic
|
||||
private fun generateDebugVersionName(): String {
|
||||
|
|
Loading…
Reference in New Issue