Copione merged onto master
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
commit
20de2044c1
|
@ -0,0 +1,59 @@
|
|||
/* 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
|
||||
|
||||
import androidx.test.platform.app.InstrumentationRegistry
|
||||
import androidx.test.uiautomator.UiDevice
|
||||
import okhttp3.mockwebserver.MockWebServer
|
||||
import org.junit.Rule
|
||||
import org.junit.Before
|
||||
import org.junit.After
|
||||
import org.junit.Test
|
||||
import org.mozilla.fenix.helpers.AndroidAssetDispatcher
|
||||
import org.mozilla.fenix.helpers.HomeActivityIntentTestRule
|
||||
import org.mozilla.fenix.ui.robots.homeScreen
|
||||
|
||||
/**
|
||||
* Tests for verifying the advanced section in Settings
|
||||
*
|
||||
*/
|
||||
|
||||
class SettingsAdvancedTest {
|
||||
/* ktlint-disable no-blank-line-before-rbrace */ // This imposes unreadable grouping.
|
||||
|
||||
private val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
||||
private lateinit var mockWebServer: MockWebServer
|
||||
|
||||
@get:Rule
|
||||
val activityIntentTestRule = HomeActivityIntentTestRule()
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
mockWebServer = MockWebServer().apply {
|
||||
setDispatcher(AndroidAssetDispatcher())
|
||||
start()
|
||||
}
|
||||
}
|
||||
|
||||
@After
|
||||
fun tearDown() {
|
||||
mockWebServer.shutdown()
|
||||
}
|
||||
|
||||
@Test
|
||||
// Walks through settings menu and sub-menus to ensure all items are present
|
||||
fun settingsAboutItemsTest() {
|
||||
// ADVANCED
|
||||
homeScreen {
|
||||
}.openThreeDotMenu {
|
||||
}.openSettings {
|
||||
// ADVANCED
|
||||
verifyAdvancedHeading()
|
||||
verifyAddons()
|
||||
verifyRemoteDebug()
|
||||
verifyLeakCanaryButton()
|
||||
}
|
||||
}
|
||||
}
|
|
@ -49,7 +49,6 @@ class SettingsDeveloperToolsTest {
|
|||
homeScreen {
|
||||
}.openThreeDotMenu {
|
||||
}.openSettings {
|
||||
verifyDeveloperToolsHeading()
|
||||
verifyRemoteDebug()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -111,7 +111,6 @@ class SettingsPrivacyTest {
|
|||
verifyDeleteBrowsingDataButton()
|
||||
verifyDeleteBrowsingDataOnQuitButton()
|
||||
verifyDataCollectionButton()
|
||||
verifyLeakCanaryButton()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -64,9 +64,9 @@ class SettingsRobot {
|
|||
fun verifyLeakCanaryButton() = assertLeakCanaryButton()
|
||||
fun verifySettingsView() = assertSettingsView()
|
||||
|
||||
// DEVELOPER TOOLS SECTION
|
||||
fun verifyDeveloperToolsHeading() = assertDeveloperToolsHeading()
|
||||
|
||||
// ADVANCED SECTION
|
||||
fun verifyAdvancedHeading() = assertAdvancedHeading()
|
||||
fun verifyAddons() = assertAddons()
|
||||
fun verifyRemoteDebug() = assertRemoteDebug()
|
||||
|
||||
// ABOUT SECTION
|
||||
|
@ -174,7 +174,7 @@ private fun assertSettingsView() {
|
|||
// verify that we are in the correct library view
|
||||
assertGeneralHeading()
|
||||
assertPrivacyHeading()
|
||||
assertDeveloperToolsHeading()
|
||||
assertAdvancedHeading()
|
||||
assertAboutHeading()
|
||||
}
|
||||
|
||||
|
@ -255,13 +255,22 @@ private fun assertDeleteBrowsingDataOnQuitButton() {
|
|||
private fun assertDataCollectionButton() = onView(withText("Data collection"))
|
||||
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
||||
|
||||
private fun assertLeakCanaryButton() = onView(withText("LeakCanary"))
|
||||
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
||||
private fun assertLeakCanaryButton() {
|
||||
scrollToElementByText("LeakCanary")
|
||||
onView(withText("LeakCanary"))
|
||||
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
||||
}
|
||||
|
||||
// DEVELOPER TOOLS SECTION
|
||||
private fun assertDeveloperToolsHeading() {
|
||||
scrollToElementByText("Developer tools")
|
||||
onView(withText("Developer tools"))
|
||||
// ADVANCED SECTION
|
||||
private fun assertAdvancedHeading() {
|
||||
scrollToElementByText("Advanced")
|
||||
onView(withText("Advanced"))
|
||||
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
||||
}
|
||||
|
||||
private fun assertAddons() {
|
||||
scrollToElementByText("Add-ons")
|
||||
onView(withText("Add-ons"))
|
||||
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
||||
}
|
||||
|
||||
|
|
|
@ -86,6 +86,7 @@ import org.mozilla.fenix.ext.sessionsOfType
|
|||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.settings.SupportUtils
|
||||
import org.mozilla.fenix.theme.ThemeManager
|
||||
import org.mozilla.fenix.wifi.SitePermissionsWifiIntegration
|
||||
import java.lang.ref.WeakReference
|
||||
|
||||
/**
|
||||
|
@ -119,6 +120,7 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
|
|||
private val fullScreenFeature = ViewBoundFeatureWrapper<FullScreenFeature>()
|
||||
private val swipeRefreshFeature = ViewBoundFeatureWrapper<SwipeRefreshFeature>()
|
||||
private val webchannelIntegration = ViewBoundFeatureWrapper<FxaWebChannelFeature>()
|
||||
private val sitePermissionWifiIntegration = ViewBoundFeatureWrapper<SitePermissionsWifiIntegration>()
|
||||
|
||||
var customTabSessionId: String? = null
|
||||
|
||||
|
@ -392,6 +394,15 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
|
|||
view = view
|
||||
)
|
||||
|
||||
sitePermissionWifiIntegration.set(
|
||||
feature = SitePermissionsWifiIntegration(
|
||||
settings = context.settings(),
|
||||
wifiConnectionMonitor = context.components.wifiConnectionMonitor
|
||||
),
|
||||
owner = this,
|
||||
view = view
|
||||
)
|
||||
|
||||
context.settings().setSitePermissionSettingListener(viewLifecycleOwner) {
|
||||
// If the user connects to WIFI while on the BrowserFragment, this will update the
|
||||
// SitePermissionsRules (specifically autoplay) accordingly
|
||||
|
@ -536,6 +547,7 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
|
|||
override fun onStart() {
|
||||
super.onStart()
|
||||
requireComponents.core.sessionManager.register(this, this, autoPause = true)
|
||||
sitePermissionWifiIntegration.get()?.maybeAddWifiConnectedListener()
|
||||
}
|
||||
|
||||
@CallSuper
|
||||
|
|
|
@ -19,11 +19,9 @@ import mozilla.components.lib.publicsuffixlist.PublicSuffixList
|
|||
import mozilla.components.support.migration.state.MigrationStore
|
||||
import org.mozilla.fenix.BuildConfig
|
||||
import org.mozilla.fenix.HomeActivity
|
||||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.test.Mockable
|
||||
import org.mozilla.fenix.utils.ClipboardHandler
|
||||
import org.mozilla.fenix.wifi.WifiConnectionMonitor
|
||||
import org.mozilla.fenix.wifi.WifiIntegration
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
private const val DAY_IN_MINUTES = 24 * 60L
|
||||
|
@ -110,12 +108,5 @@ class Components(private val context: Context) {
|
|||
val migrationStore by lazy { MigrationStore() }
|
||||
val performance by lazy { PerformanceComponent() }
|
||||
val push by lazy { Push(context, analytics.crashReporter) }
|
||||
val wifiIntegration by lazy {
|
||||
WifiIntegration(
|
||||
settings = context.settings(),
|
||||
wifiConnectionMonitor = WifiConnectionMonitor(
|
||||
context as Application
|
||||
)
|
||||
)
|
||||
}
|
||||
val wifiConnectionMonitor by lazy { WifiConnectionMonitor(context as Application) }
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ import android.content.Context
|
|||
import mozilla.components.service.fxa.ServerConfig
|
||||
import mozilla.components.service.fxa.ServerConfig.Server
|
||||
import org.mozilla.fenix.FeatureFlags
|
||||
import org.mozilla.fenix.ext.settings
|
||||
|
||||
/**
|
||||
* Utility to configure Firefox Account servers.
|
||||
|
@ -24,6 +25,11 @@ object FxaServer {
|
|||
}
|
||||
|
||||
fun config(context: Context): ServerConfig {
|
||||
return ServerConfig(Server.RELEASE, CLIENT_ID, redirectUrl(context))
|
||||
val serverOverride = context.settings().overrideFxAServer
|
||||
val tokenServerOverride = context.settings().overrideSyncTokenServer.ifEmpty { null }
|
||||
if (serverOverride.isEmpty()) {
|
||||
return ServerConfig(Server.RELEASE, CLIENT_ID, redirectUrl(context), tokenServerOverride)
|
||||
}
|
||||
return ServerConfig(serverOverride, CLIENT_ID, redirectUrl(context), tokenServerOverride)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,12 +22,12 @@ import org.mozilla.fenix.home.OnboardingState
|
|||
import org.mozilla.fenix.home.Tab
|
||||
import org.mozilla.fenix.home.sessioncontrol.viewholders.CollectionHeaderViewHolder
|
||||
import org.mozilla.fenix.home.sessioncontrol.viewholders.CollectionViewHolder
|
||||
import org.mozilla.fenix.home.sessioncontrol.viewholders.TabInCollectionViewHolder
|
||||
import org.mozilla.fenix.home.sessioncontrol.viewholders.NoContentMessageViewHolder
|
||||
import org.mozilla.fenix.home.sessioncontrol.viewholders.NoContentMessageWithActionViewHolder
|
||||
import org.mozilla.fenix.home.sessioncontrol.viewholders.PrivateBrowsingDescriptionViewHolder
|
||||
import org.mozilla.fenix.home.sessioncontrol.viewholders.SaveTabGroupViewHolder
|
||||
import org.mozilla.fenix.home.sessioncontrol.viewholders.TabHeaderViewHolder
|
||||
import org.mozilla.fenix.home.sessioncontrol.viewholders.TabInCollectionViewHolder
|
||||
import org.mozilla.fenix.home.sessioncontrol.viewholders.TabViewHolder
|
||||
import org.mozilla.fenix.home.sessioncontrol.viewholders.TopSiteViewHolder
|
||||
import org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding.OnboardingAutomaticSignInViewHolder
|
||||
|
@ -172,7 +172,7 @@ class SessionControlAdapter(
|
|||
NoContentMessageWithActionViewHolder.LAYOUT_ID -> NoContentMessageWithActionViewHolder(view)
|
||||
CollectionHeaderViewHolder.LAYOUT_ID -> CollectionHeaderViewHolder(view)
|
||||
CollectionViewHolder.LAYOUT_ID -> CollectionViewHolder(view, interactor)
|
||||
TabInCollectionViewHolder.LAYOUT_ID -> TabInCollectionViewHolder(view, interactor)
|
||||
TabInCollectionViewHolder.LAYOUT_ID -> TabInCollectionViewHolder(view, interactor, differentLastItem = true)
|
||||
OnboardingHeaderViewHolder.LAYOUT_ID -> OnboardingHeaderViewHolder(view)
|
||||
OnboardingSectionHeaderViewHolder.LAYOUT_ID -> OnboardingSectionHeaderViewHolder(view)
|
||||
OnboardingAutomaticSignInViewHolder.LAYOUT_ID -> OnboardingAutomaticSignInViewHolder(view)
|
||||
|
|
|
@ -50,7 +50,7 @@ class SwipeToDeleteCallback(
|
|||
icon?.setTint(recyclerView.context.getColorFromAttr(R.attr.destructive))
|
||||
|
||||
val backgroundDrawable = when {
|
||||
viewHolder is TabInCollectionViewHolder && viewHolder.isLastTab -> {
|
||||
viewHolder is TabInCollectionViewHolder && viewHolder.isLastItem -> {
|
||||
R.drawable.tab_in_collection_last_swipe_background
|
||||
}
|
||||
viewHolder is TabInCollectionViewHolder -> {
|
||||
|
|
|
@ -17,7 +17,6 @@ import mozilla.components.browser.menu.BrowserMenuBuilder
|
|||
import mozilla.components.browser.menu.item.SimpleBrowserMenuItem
|
||||
import mozilla.components.feature.tab.collections.TabCollection
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.components.description
|
||||
import org.mozilla.fenix.ext.getIconColor
|
||||
import org.mozilla.fenix.ext.increaseTapArea
|
||||
import org.mozilla.fenix.home.sessioncontrol.CollectionInteractor
|
||||
|
@ -77,17 +76,18 @@ class CollectionViewHolder(
|
|||
|
||||
private fun updateCollectionUI() {
|
||||
view.collection_title.text = collection.title
|
||||
view.collection_description.text = collection.description(view.context)
|
||||
val layoutParams = view.layoutParams as ViewGroup.MarginLayoutParams
|
||||
|
||||
view.isActivated = expanded
|
||||
if (expanded) {
|
||||
layoutParams.bottomMargin = 0
|
||||
collection_title.setPadding(0, 0, 0, EXPANDED_PADDING)
|
||||
view.collection_description.visibility = View.GONE
|
||||
view.collection_share_button.visibility = View.VISIBLE
|
||||
view.collection_overflow_button.visibility = View.VISIBLE
|
||||
} else {
|
||||
layoutParams.bottomMargin = COLLAPSED_MARGIN
|
||||
view.collection_description.visibility = View.VISIBLE
|
||||
view.collection_share_button.visibility = View.GONE
|
||||
view.collection_overflow_button.visibility = View.GONE
|
||||
}
|
||||
|
||||
view.collection_icon.colorFilter = createBlendModeColorFilterCompat(
|
||||
|
|
|
@ -10,7 +10,10 @@ import android.view.ViewOutlineProvider
|
|||
import androidx.appcompat.content.res.AppCompatResources
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import kotlinx.android.extensions.LayoutContainer
|
||||
import kotlinx.android.synthetic.main.tab_in_collection.*
|
||||
import kotlinx.android.synthetic.main.list_element.list_element_title
|
||||
import kotlinx.android.synthetic.main.list_element.list_item_action_button
|
||||
import kotlinx.android.synthetic.main.list_element.list_item_favicon
|
||||
import kotlinx.android.synthetic.main.list_element.list_item_url
|
||||
import mozilla.components.feature.tab.collections.TabCollection
|
||||
import mozilla.components.support.ktx.android.content.getColorFromAttr
|
||||
import mozilla.components.support.ktx.android.util.dpToFloat
|
||||
|
@ -25,6 +28,7 @@ import mozilla.components.feature.tab.collections.Tab as ComponentTab
|
|||
class TabInCollectionViewHolder(
|
||||
val view: View,
|
||||
val interactor: CollectionInteractor,
|
||||
private val differentLastItem: Boolean = false,
|
||||
override val containerView: View? = view
|
||||
) : RecyclerView.ViewHolder(view), LayoutContainer {
|
||||
|
||||
|
@ -32,11 +36,11 @@ class TabInCollectionViewHolder(
|
|||
private set
|
||||
lateinit var tab: ComponentTab
|
||||
private set
|
||||
var isLastTab = false
|
||||
var isLastItem = false
|
||||
|
||||
init {
|
||||
collection_tab_icon.clipToOutline = true
|
||||
collection_tab_icon.outlineProvider = object : ViewOutlineProvider() {
|
||||
list_item_favicon.clipToOutline = true
|
||||
list_item_favicon.outlineProvider = object : ViewOutlineProvider() {
|
||||
override fun getOutline(view: View, outline: Outline?) {
|
||||
outline?.setRoundRect(
|
||||
0,
|
||||
|
@ -52,8 +56,8 @@ class TabInCollectionViewHolder(
|
|||
interactor.onCollectionOpenTabClicked(tab)
|
||||
}
|
||||
|
||||
collection_tab_close_button.increaseTapArea(buttonIncreaseDps)
|
||||
collection_tab_close_button.setOnClickListener {
|
||||
list_item_action_button.increaseTapArea(buttonIncreaseDps)
|
||||
list_item_action_button.setOnClickListener {
|
||||
interactor.onCollectionRemoveTab(collection, tab)
|
||||
}
|
||||
}
|
||||
|
@ -61,28 +65,26 @@ class TabInCollectionViewHolder(
|
|||
fun bindSession(collection: TabCollection, tab: ComponentTab, isLastTab: Boolean) {
|
||||
this.collection = collection
|
||||
this.tab = tab
|
||||
this.isLastTab = isLastTab
|
||||
this.isLastItem = isLastTab
|
||||
updateTabUI()
|
||||
}
|
||||
|
||||
private fun updateTabUI() {
|
||||
collection_tab_hostname.text = tab.url.toShortUrl(view.context.components.publicSuffixList)
|
||||
list_item_url.text = tab.url.toShortUrl(view.context.components.publicSuffixList)
|
||||
|
||||
collection_tab_title.text = tab.title
|
||||
collection_tab_icon.context.components.core.icons.loadIntoView(collection_tab_icon, tab.url)
|
||||
list_element_title.text = tab.title
|
||||
list_item_favicon.context.components.core.icons.loadIntoView(list_item_favicon, tab.url)
|
||||
|
||||
// If I'm the last one...
|
||||
if (isLastTab) {
|
||||
// If last item and we want to change UI for it
|
||||
if (isLastItem && differentLastItem) {
|
||||
view.background = AppCompatResources.getDrawable(view.context, R.drawable.rounded_bottom_corners)
|
||||
divider_line.visibility = View.GONE
|
||||
} else {
|
||||
view.setBackgroundColor(view.context.getColorFromAttr(R.attr.above))
|
||||
divider_line.visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val buttonIncreaseDps = 12
|
||||
const val LAYOUT_ID = R.layout.tab_in_collection
|
||||
const val LAYOUT_ID = R.layout.list_element
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@ import kotlinx.android.synthetic.main.search_suggestions_onboarding.view.*
|
|||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import mozilla.components.concept.storage.HistoryStorage
|
||||
import mozilla.components.feature.qr.QrFeature
|
||||
import mozilla.components.feature.qr.QrFragment
|
||||
import mozilla.components.lib.state.ext.consumeFrom
|
||||
import mozilla.components.support.base.feature.UserInteractionHandler
|
||||
import mozilla.components.support.base.feature.ViewBoundFeatureWrapper
|
||||
|
@ -278,6 +279,31 @@ class SearchFragment : Fragment(), UserInteractionHandler {
|
|||
|
||||
permissionDidUpdate = false
|
||||
hideToolbar()
|
||||
|
||||
if (!isQrFragmentVisible()) {
|
||||
refocusUrlView()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Refocus URL editText. Needed after the user brings back the app
|
||||
* into the foreground.
|
||||
* See https://github.com/mozilla-mobile/fenix/issues/6290
|
||||
**/
|
||||
private fun refocusUrlView() {
|
||||
val urlView = toolbarView.view
|
||||
.findViewById<InlineAutocompleteEditText>(R.id.mozac_browser_toolbar_edit_url_view)
|
||||
if (!urlView.hasFocus()) {
|
||||
urlView.requestFocus()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check to see if QrFragment exists & is visible.
|
||||
* */
|
||||
private fun isQrFragmentVisible(): Boolean {
|
||||
val foundQrFragment = parentFragmentManager.fragments.firstOrNull { it is QrFragment }
|
||||
return foundQrFragment != null && foundQrFragment.isVisible
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
|
|
|
@ -10,6 +10,8 @@ import android.content.Intent
|
|||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import androidx.appcompat.content.res.AppCompatResources
|
||||
import android.os.Handler
|
||||
import android.widget.Toast
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.navigation.NavDirections
|
||||
import androidx.navigation.findNavController
|
||||
|
@ -45,6 +47,7 @@ import org.mozilla.fenix.ext.settings
|
|||
import org.mozilla.fenix.ext.showToolbar
|
||||
import org.mozilla.fenix.settings.account.AccountAuthErrorPreference
|
||||
import org.mozilla.fenix.settings.account.AccountPreference
|
||||
import kotlin.system.exitProcess
|
||||
|
||||
@Suppress("LargeClass", "TooManyFunctions")
|
||||
class SettingsFragment : PreferenceFragmentCompat() {
|
||||
|
@ -300,6 +303,29 @@ class SettingsFragment : PreferenceFragmentCompat() {
|
|||
requireComponents.core.engine.settings.remoteDebuggingEnabled = newValue
|
||||
true
|
||||
}
|
||||
|
||||
val preferenceFxAOverride =
|
||||
findPreference<Preference>(getPreferenceKey(R.string.pref_key_override_fxa_server))
|
||||
val preferenceSyncOverride =
|
||||
findPreference<Preference>(getPreferenceKey(R.string.pref_key_override_sync_tokenserver))
|
||||
|
||||
val syncFxAOverrideUpdater = object : StringSharedPreferenceUpdater() {
|
||||
override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean {
|
||||
return super.onPreferenceChange(preference, newValue).also {
|
||||
updateFxASyncOverrideMenu()
|
||||
Toast.makeText(
|
||||
context,
|
||||
getString(R.string.toast_override_fxa_sync_server_done),
|
||||
Toast.LENGTH_LONG
|
||||
).show()
|
||||
Handler().postDelayed({
|
||||
exitProcess(0)
|
||||
}, FXA_SYNC_OVERRIDE_EXIT_DELAY)
|
||||
}
|
||||
}
|
||||
}
|
||||
preferenceFxAOverride?.onPreferenceChangeListener = syncFxAOverrideUpdater
|
||||
preferenceSyncOverride?.onPreferenceChangeListener = syncFxAOverrideUpdater
|
||||
}
|
||||
|
||||
private fun navigateFromSettings(directions: NavDirections) {
|
||||
|
@ -343,6 +369,8 @@ class SettingsFragment : PreferenceFragmentCompat() {
|
|||
val accountManager = requireComponents.backgroundServices.accountManager
|
||||
val account = accountManager.authenticatedAccount()
|
||||
|
||||
updateFxASyncOverrideMenu()
|
||||
|
||||
// Signed-in, no problems.
|
||||
if (account != null && !accountManager.accountNeedsReauth()) {
|
||||
preferenceSignIn?.isVisible = false
|
||||
|
@ -388,7 +416,31 @@ class SettingsFragment : PreferenceFragmentCompat() {
|
|||
}
|
||||
}
|
||||
|
||||
private fun updateFxASyncOverrideMenu() {
|
||||
val preferenceFxAOverride =
|
||||
findPreference<Preference>(getPreferenceKey(R.string.pref_key_override_fxa_server))
|
||||
val preferenceSyncOverride =
|
||||
findPreference<Preference>(getPreferenceKey(R.string.pref_key_override_sync_tokenserver))
|
||||
val settings = requireContext().settings()
|
||||
val show = settings.overrideFxAServer.isNotEmpty() ||
|
||||
settings.overrideSyncTokenServer.isNotEmpty() ||
|
||||
settings.showSecretDebugMenuThisSession
|
||||
// Only enable changes to these prefs when the user isn't connected to an account.
|
||||
val enabled = requireComponents.backgroundServices.accountManager.authenticatedAccount() == null
|
||||
preferenceFxAOverride?.apply {
|
||||
isVisible = show
|
||||
isEnabled = enabled
|
||||
summary = settings.overrideFxAServer.ifEmpty { null }
|
||||
}
|
||||
preferenceSyncOverride?.apply {
|
||||
isVisible = show
|
||||
isEnabled = enabled
|
||||
summary = settings.overrideSyncTokenServer.ifEmpty { null }
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val SCROLL_INDICATOR_DELAY = 10L
|
||||
private const val FXA_SYNC_OVERRIDE_EXIT_DELAY = 2000L
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@ import android.os.Bundle
|
|||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.Toast
|
||||
import androidx.core.content.pm.PackageInfoCompat
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.recyclerview.widget.DividerItemDecoration
|
||||
|
@ -20,6 +21,7 @@ import org.mozilla.fenix.BuildConfig
|
|||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.components.metrics.Event
|
||||
import org.mozilla.fenix.ext.requireComponents
|
||||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.lib.Do
|
||||
import org.mozilla.fenix.settings.SupportUtils
|
||||
import org.mozilla.fenix.settings.about.AboutItemType.LICENSING_INFO
|
||||
|
@ -36,6 +38,8 @@ import org.mozilla.geckoview.BuildConfig as GeckoViewBuildConfig
|
|||
class AboutFragment : Fragment(), AboutPageListener {
|
||||
private lateinit var appName: String
|
||||
private val aboutPageAdapter: AboutPageAdapter = AboutPageAdapter(this)
|
||||
private var secretDebugMenuClicks = 0
|
||||
private var lastDebugMenuToast: Toast? = null
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
|
@ -49,6 +53,11 @@ class AboutFragment : Fragment(), AboutPageListener {
|
|||
return rootView
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
secretDebugMenuClicks = 0
|
||||
}
|
||||
|
||||
@ExperimentalCoroutinesApi
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
@ -63,8 +72,36 @@ class AboutFragment : Fragment(), AboutPageListener {
|
|||
)
|
||||
}
|
||||
|
||||
// 5 taps on the logo activate the "secret" debug menu.
|
||||
wordmark.setOnClickListener {
|
||||
// Because the user will mostly likely tap the logo in rapid succession,
|
||||
// we ensure only 1 toast is shown at any given time.
|
||||
lastDebugMenuToast?.let { toast -> toast.cancel() }
|
||||
secretDebugMenuClicks += 1
|
||||
when (secretDebugMenuClicks) {
|
||||
in 2 until SECRET_DEBUG_MENU_CLICKS -> {
|
||||
val clicksLeft = SECRET_DEBUG_MENU_CLICKS - secretDebugMenuClicks
|
||||
val toast = Toast.makeText(
|
||||
context,
|
||||
getString(R.string.about_debug_menu_toast_progress, clicksLeft),
|
||||
Toast.LENGTH_SHORT
|
||||
)
|
||||
toast.show()
|
||||
lastDebugMenuToast = toast
|
||||
}
|
||||
SECRET_DEBUG_MENU_CLICKS -> {
|
||||
Toast.makeText(
|
||||
context,
|
||||
getString(R.string.about_debug_menu_toast_done),
|
||||
Toast.LENGTH_LONG
|
||||
).show()
|
||||
requireContext().settings().showSecretDebugMenuThisSession = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
populateAboutHeader()
|
||||
aboutPageAdapter.updateData(populateAboutList())
|
||||
aboutPageAdapter.submitList(populateAboutList())
|
||||
}
|
||||
|
||||
private fun populateAboutHeader() {
|
||||
|
@ -183,5 +220,7 @@ class AboutFragment : Fragment(), AboutPageListener {
|
|||
|
||||
companion object {
|
||||
private const val ABOUT_LICENSE_URL = "about:license"
|
||||
// Number of clicks on the app logo to enable the "secret" debug menu.
|
||||
private const val SECRET_DEBUG_MENU_CLICKS = 5
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,33 +6,33 @@ package org.mozilla.fenix.settings.about
|
|||
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import androidx.annotation.VisibleForTesting
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.recyclerview.widget.DiffUtil
|
||||
import androidx.recyclerview.widget.ListAdapter
|
||||
import org.mozilla.fenix.settings.about.viewholders.AboutItemViewHolder
|
||||
|
||||
class AboutPageAdapter(private val listener: AboutPageListener) : RecyclerView.Adapter<AboutItemViewHolder>() {
|
||||
|
||||
@VisibleForTesting
|
||||
var aboutList: List<AboutPageItem>? = null
|
||||
|
||||
fun updateData(items: List<AboutPageItem>) {
|
||||
this.aboutList = items
|
||||
notifyDataSetChanged()
|
||||
}
|
||||
class AboutPageAdapter(private val listener: AboutPageListener) :
|
||||
ListAdapter<AboutPageItem, AboutItemViewHolder>(DiffCallback) {
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AboutItemViewHolder {
|
||||
val view = LayoutInflater.from(parent.context)
|
||||
.inflate(AboutItemViewHolder.LAYOUT_ID, parent, false)
|
||||
|
||||
return AboutItemViewHolder(view, listener)
|
||||
}
|
||||
|
||||
override fun getItemCount(): Int = aboutList?.size ?: 0
|
||||
|
||||
override fun onBindViewHolder(holder: AboutItemViewHolder, position: Int) {
|
||||
(aboutList?.get(position) as AboutPageItem.Item).also {
|
||||
holder.bind(it)
|
||||
}
|
||||
holder.bind(getItem(position) as AboutPageItem.Item)
|
||||
}
|
||||
|
||||
private object DiffCallback : DiffUtil.ItemCallback<AboutPageItem>() {
|
||||
|
||||
override fun areItemsTheSame(oldItem: AboutPageItem, newItem: AboutPageItem) =
|
||||
oldItem === newItem
|
||||
|
||||
override fun areContentsTheSame(oldItem: AboutPageItem, newItem: AboutPageItem) =
|
||||
when (oldItem) {
|
||||
is AboutPageItem.Item ->
|
||||
newItem is AboutPageItem.Item && oldItem.title == newItem.title
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -65,6 +65,7 @@ class SavedLoginsFragment : Fragment() {
|
|||
savedLoginsStore = StoreProvider.get(this) {
|
||||
SavedLoginsFragmentStore(
|
||||
SavedLoginsFragmentState(
|
||||
isLoading = true,
|
||||
items = listOf(),
|
||||
filteredItems = listOf()
|
||||
)
|
||||
|
|
|
@ -48,6 +48,7 @@ sealed class SavedLoginsFragmentAction : Action {
|
|||
* @property items Filtered (or not) list of logins to display
|
||||
*/
|
||||
data class SavedLoginsFragmentState(
|
||||
val isLoading: Boolean = false,
|
||||
val items: List<SavedLoginsItem>,
|
||||
val filteredItems: List<SavedLoginsItem>
|
||||
) : State
|
||||
|
@ -61,14 +62,19 @@ private fun savedLoginsStateReducer(
|
|||
): SavedLoginsFragmentState {
|
||||
return when (action) {
|
||||
is SavedLoginsFragmentAction.UpdateLogins -> state.copy(
|
||||
isLoading = false,
|
||||
items = action.list,
|
||||
filteredItems = action.list
|
||||
)
|
||||
is SavedLoginsFragmentAction.FilterLogins -> {
|
||||
if (action.newText.isNullOrBlank()) {
|
||||
state.copy(filteredItems = state.items)
|
||||
state.copy(
|
||||
isLoading = false,
|
||||
filteredItems = state.items)
|
||||
} else {
|
||||
state.copy(filteredItems = state.items.filter { it.url.contains(action.newText) })
|
||||
state.copy(
|
||||
isLoading = false,
|
||||
filteredItems = state.items.filter { it.url.contains(action.newText) })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,6 +14,7 @@ import androidx.core.view.isVisible
|
|||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import kotlinx.android.extensions.LayoutContainer
|
||||
import kotlinx.android.synthetic.main.component_saved_logins.view.*
|
||||
import kotlinx.android.synthetic.main.component_saved_logins.view.progress_bar
|
||||
import org.mozilla.fenix.R
|
||||
|
||||
/**
|
||||
|
@ -69,8 +70,13 @@ class SavedLoginsView(
|
|||
}
|
||||
|
||||
fun update(state: SavedLoginsFragmentState) {
|
||||
view.saved_logins_list.isVisible = state.items.isNotEmpty()
|
||||
view.saved_passwords_empty_view.isVisible = state.items.isEmpty()
|
||||
if (state.isLoading) {
|
||||
view.progress_bar.isVisible = true
|
||||
} else {
|
||||
view.progress_bar.isVisible = false
|
||||
view.saved_logins_list.isVisible = state.items.isNotEmpty()
|
||||
view.saved_passwords_empty_view.isVisible = state.items.isEmpty()
|
||||
}
|
||||
loginsAdapter.submitList(state.filteredItems)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
|
||||
package org.mozilla.fenix.settings.sitepermissions
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.graphics.Color
|
||||
import android.net.Uri
|
||||
|
@ -30,7 +29,6 @@ import mozilla.components.feature.sitepermissions.SitePermissionsRules.Action.AL
|
|||
import mozilla.components.feature.sitepermissions.SitePermissionsRules.Action.ASK_TO_ALLOW
|
||||
import mozilla.components.feature.sitepermissions.SitePermissionsRules.Action.BLOCKED
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.ext.showToolbar
|
||||
import org.mozilla.fenix.settings.PhoneFeature
|
||||
|
@ -122,7 +120,7 @@ class SitePermissionsManagePhoneFeatureFragment : Fragment() {
|
|||
// TODO replace with AUTOPLAY_ALLOW_ON_WIFI when
|
||||
// https://bugzilla.mozilla.org/show_bug.cgi?id=1621825 is fixed. This GV bug
|
||||
// makes ALLOW_ALL behave as ALLOW_ON_WIFI
|
||||
saveActionInSettings(it.context, AUTOPLAY_ALLOW_ALL)
|
||||
saveActionInSettings(AUTOPLAY_ALLOW_ALL)
|
||||
}
|
||||
// TODO replace with AUTOPLAY_ALLOW_ON_WIFI when
|
||||
// https://bugzilla.mozilla.org/show_bug.cgi?id=1621825 is fixed. This GV bug
|
||||
|
@ -144,7 +142,7 @@ class SitePermissionsManagePhoneFeatureFragment : Fragment() {
|
|||
visibility = View.VISIBLE
|
||||
text = getString(R.string.preference_option_autoplay_block_audio2)
|
||||
setOnClickListener {
|
||||
saveActionInSettings(it.context, AUTOPLAY_BLOCK_AUDIBLE)
|
||||
saveActionInSettings(AUTOPLAY_BLOCK_AUDIBLE)
|
||||
}
|
||||
restoreState(AUTOPLAY_BLOCK_AUDIBLE)
|
||||
} else {
|
||||
|
@ -162,7 +160,7 @@ class SitePermissionsManagePhoneFeatureFragment : Fragment() {
|
|||
getString(R.string.phone_feature_recommended)
|
||||
)
|
||||
setOnClickListener {
|
||||
saveActionInSettings(it.context, AUTOPLAY_BLOCK_ALL)
|
||||
saveActionInSettings(AUTOPLAY_BLOCK_ALL)
|
||||
}
|
||||
restoreState(AUTOPLAY_BLOCK_ALL)
|
||||
} else {
|
||||
|
@ -195,19 +193,18 @@ class SitePermissionsManagePhoneFeatureFragment : Fragment() {
|
|||
* See [Settings.setAutoplayUserSetting] kdoc for an explanation of why this cannot follow the
|
||||
* same code path as other permissions.
|
||||
*/
|
||||
private fun saveActionInSettings(context: Context, autoplaySetting: Int) {
|
||||
private fun saveActionInSettings(autoplaySetting: Int) {
|
||||
settings.setAutoplayUserSetting(autoplaySetting)
|
||||
val (audible, inaudible) = when (autoplaySetting) {
|
||||
AUTOPLAY_ALLOW_ALL -> ALLOWED to ALLOWED
|
||||
AUTOPLAY_ALLOW_ALL,
|
||||
AUTOPLAY_ALLOW_ON_WIFI -> {
|
||||
context.components.wifiIntegration.addWifiConnectedListener()
|
||||
settings.setAutoplayUserSetting(AUTOPLAY_ALLOW_ON_WIFI)
|
||||
return
|
||||
}
|
||||
AUTOPLAY_BLOCK_AUDIBLE -> BLOCKED to ALLOWED
|
||||
AUTOPLAY_BLOCK_ALL -> BLOCKED to BLOCKED
|
||||
else -> return
|
||||
}
|
||||
context.components.wifiIntegration.removeWifiConnectedListener()
|
||||
settings.setSitePermissionsPhoneFeatureAction(AUTOPLAY_AUDIBLE, audible)
|
||||
settings.setSitePermissionsPhoneFeatureAction(AUTOPLAY_INAUDIBLE, inaudible)
|
||||
}
|
||||
|
|
|
@ -187,6 +187,8 @@ class Settings private constructor(
|
|||
(trackingProtectionOnboardingCount < trackingProtectionOnboardingMaximumCount &&
|
||||
!trackingProtectionOnboardingShownThisSession)
|
||||
|
||||
var showSecretDebugMenuThisSession = false
|
||||
|
||||
val shouldShowSecurityPinWarningSync: Boolean
|
||||
get() = loginsSecureWarningSyncCount < showLoginsSecureWarningSyncMaxCount
|
||||
|
||||
|
@ -597,4 +599,14 @@ class Settings private constructor(
|
|||
appContext.getPreferenceKey(R.string.pref_key_open_links_in_external_app),
|
||||
default = false
|
||||
)
|
||||
|
||||
var overrideFxAServer by stringPreference(
|
||||
appContext.getPreferenceKey(R.string.pref_key_override_fxa_server),
|
||||
default = ""
|
||||
)
|
||||
|
||||
var overrideSyncTokenServer by stringPreference(
|
||||
appContext.getPreferenceKey(R.string.pref_key_override_sync_tokenserver),
|
||||
default = ""
|
||||
)
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
package org.mozilla.fenix.wifi
|
||||
|
||||
import mozilla.components.feature.sitepermissions.SitePermissionsRules
|
||||
import mozilla.components.support.base.feature.LifecycleAwareFeature
|
||||
import org.mozilla.fenix.settings.PhoneFeature
|
||||
import org.mozilla.fenix.settings.sitepermissions.AUTOPLAY_ALLOW_ON_WIFI
|
||||
import org.mozilla.fenix.settings.sitepermissions.AUTOPLAY_BLOCK_ALL
|
||||
|
@ -14,7 +15,10 @@ import org.mozilla.fenix.utils.Settings
|
|||
* Handles implementation details of only setting up a WIFI connectivity listener if the current
|
||||
* user settings require it.
|
||||
*/
|
||||
class WifiIntegration(private val settings: Settings, private val wifiConnectionMonitor: WifiConnectionMonitor) {
|
||||
class SitePermissionsWifiIntegration(
|
||||
private val settings: Settings,
|
||||
private val wifiConnectionMonitor: WifiConnectionMonitor
|
||||
) : LifecycleAwareFeature {
|
||||
|
||||
/**
|
||||
* Adds listener for autplay setting [AUTOPLAY_ALLOW_ON_WIFI]. Sets all autoplay to allowed when
|
||||
|
@ -51,7 +55,7 @@ class WifiIntegration(private val settings: Settings, private val wifiConnection
|
|||
// only works while WIFI is active, so we are not using AUTOPLAY_ALLOW_ON_WIFI (or this class).
|
||||
// Once that is fixed, [start] and [maybeAddWifiConnectedListener] will need to be called on
|
||||
// activity startup.
|
||||
fun start() { wifiConnectionMonitor.start() }
|
||||
override fun start() { wifiConnectionMonitor.start() }
|
||||
|
||||
fun stop() { wifiConnectionMonitor.stop() }
|
||||
override fun stop() { wifiConnectionMonitor.stop() }
|
||||
}
|
|
@ -1,14 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/item_collection"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="48dp"
|
||||
android:layout_marginTop="12dp"
|
||||
android:background="@drawable/collection_home_list_row_background"
|
||||
android:clickable="true"
|
||||
|
@ -22,25 +20,26 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginTop="12dp"
|
||||
android:importantForAccessibility="no"
|
||||
app:srcCompat="@drawable/ic_tab_collection"
|
||||
android:tint="@null"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:srcCompat="@drawable/ic_tab_collection" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/collection_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="12dp"
|
||||
android:layout_marginStart="24dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:ellipsize="end"
|
||||
android:gravity="start"
|
||||
android:maxLines="1"
|
||||
android:minLines="1"
|
||||
android:textAppearance="@style/Header16TextStyle"
|
||||
android:textAppearance="@style/Header14TextStyle"
|
||||
app:layout_constrainedWidth="true"
|
||||
app:layout_constraintEnd_toStartOf="@id/chevron"
|
||||
app:layout_constraintHorizontal_bias="0.0"
|
||||
|
@ -61,32 +60,18 @@
|
|||
app:layout_constraintStart_toEndOf="@+id/collection_title"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/collection_description"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="2"
|
||||
android:minLines="2"
|
||||
android:textAppearance="@style/SubtitleTextStyle"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/collection_share_button"
|
||||
app:layout_constraintStart_toStartOf="@id/collection_title"
|
||||
app:layout_constraintTop_toBottomOf="@id/collection_title"
|
||||
tools:text="@tools:sample/lorem/random" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/collection_share_button"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:background="?android:attr/selectableItemBackgroundBorderless"
|
||||
android:contentDescription="@string/share_button_content_description"
|
||||
app:srcCompat="@drawable/ic_hollow_share"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="@id/collection_icon"
|
||||
app:layout_constraintEnd_toStartOf="@id/collection_overflow_button"
|
||||
app:layout_constraintTop_toTopOf="@id/collection_icon" />
|
||||
app:layout_constraintTop_toTopOf="@id/collection_icon"
|
||||
app:srcCompat="@drawable/ic_hollow_share"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/collection_overflow_button"
|
||||
|
@ -94,10 +79,12 @@
|
|||
android:layout_height="48dp"
|
||||
android:background="?android:attr/selectableItemBackgroundBorderless"
|
||||
android:contentDescription="@string/collection_menu_button_content_description"
|
||||
app:srcCompat="@drawable/ic_menu"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="@id/collection_icon"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@id/collection_icon" />
|
||||
app:layout_constraintTop_toTopOf="@id/collection_icon"
|
||||
app:srcCompat="@drawable/ic_menu"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<View
|
||||
android:id="@+id/selected_border"
|
||||
|
|
|
@ -8,6 +8,17 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/progress_bar"
|
||||
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
|
||||
android:indeterminate="true"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="8dp"
|
||||
android:translationY="-3dp"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/saved_passwords_empty_view"
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
@ -109,7 +109,6 @@
|
|||
android:id="@+id/divider_line"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1.5dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:background="?neutralFaded"
|
||||
app:layout_constraintEnd_toEndOf="@id/fill_link_from_clipboard"
|
||||
app:layout_constraintStart_toStartOf="@id/fill_link_from_clipboard"
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/tab_in_collection_item"
|
||||
android:id="@+id/list_item"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="56dp"
|
||||
android:background="?above"
|
||||
android:clickable="true"
|
||||
android:clipToPadding="false"
|
||||
|
@ -16,49 +16,52 @@
|
|||
android:foreground="?android:attr/selectableItemBackground">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/collection_tab_icon"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginTop="23dp"
|
||||
android:layout_marginBottom="24dp"
|
||||
android:id="@+id/list_item_favicon"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:background="@drawable/rounded_grey_corners_transparent_center"
|
||||
android:padding="8dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:importantForAccessibility="no"
|
||||
app:srcCompat="@drawable/ic_tab_collection"
|
||||
android:tint="@null"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="parent"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/collection_tab_hostname"
|
||||
android:id="@+id/list_element_title"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="14dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginTop="9dp"
|
||||
android:layout_marginEnd="74dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:minLines="1"
|
||||
android:textAppearance="@style/Header12TextStyle"
|
||||
app:layout_constraintEnd_toStartOf="@id/collection_tab_close_button"
|
||||
app:layout_constraintStart_toEndOf="@id/collection_tab_icon"
|
||||
android:singleLine="true"
|
||||
android:textAppearance="@style/Body14TextStyle"
|
||||
app:layout_constraintEnd_toStartOf="@id/list_item_action_button"
|
||||
app:layout_constraintStart_toEndOf="@id/list_item_favicon"
|
||||
app:layout_constraintBottom_toTopOf="@id/list_item_url"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/collection_tab_title"
|
||||
android:id="@+id/list_item_url"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="12dp"
|
||||
android:textColor="?secondaryText"
|
||||
android:textSize="10sp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="2"
|
||||
android:minLines="2"
|
||||
android:textAppearance="@style/Body14TextStyle"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="@id/collection_tab_hostname"
|
||||
app:layout_constraintStart_toStartOf="@id/collection_tab_hostname"
|
||||
app:layout_constraintTop_toBottomOf="@id/collection_tab_hostname" />
|
||||
app:layout_constraintEnd_toEndOf="@id/list_element_title"
|
||||
app:layout_constraintStart_toStartOf="@id/list_element_title"
|
||||
app:layout_constraintTop_toBottomOf="@id/list_element_title" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/collection_tab_close_button"
|
||||
android:id="@+id/list_item_action_button"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:alpha="0.8"
|
||||
|
@ -66,14 +69,7 @@
|
|||
android:contentDescription="@string/close_tab"
|
||||
app:srcCompat="@drawable/ic_close"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<View
|
||||
android:id="@+id/divider_line"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="?neutralFaded"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
@ -1069,6 +1069,9 @@
|
|||
<string name="etp_panel_off">Der Schutz für diese Website ist deaktiviert</string>
|
||||
<!-- Header for exceptions list for which sites enhanced tracking protection is always off -->
|
||||
<string name="enhanced_tracking_protection_exceptions">Verbesserter Schutz vor Aktivitätenverfolgung ist für diese Websites deaktiviert</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Navigate
|
||||
back from ETP details (Ex: Tracking content) -->
|
||||
<string name="etp_back_button_content_description">Rückwärts navigieren</string>
|
||||
<!-- About page Your rights link text -->
|
||||
<string name="about_your_rights">Ihre Rechte</string>
|
||||
<!-- About page link text to open open source licenses screen -->
|
||||
|
|
|
@ -1038,6 +1038,9 @@
|
|||
<string name="etp_panel_off">Šćit jo znjemóžnjony za toś to sedło</string>
|
||||
<!-- Header for exceptions list for which sites enhanced tracking protection is always off -->
|
||||
<string name="enhanced_tracking_protection_exceptions">Pólěpšony slědowański šćit jo znjemóžnjony za toś te sedła</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Navigate
|
||||
back from ETP details (Ex: Tracking content) -->
|
||||
<string name="etp_back_button_content_description">Slědk nawigěrowaś</string>
|
||||
<!-- About page Your rights link text -->
|
||||
<string name="about_your_rights">Waše pšawa</string>
|
||||
<!-- About page link text to open open source licenses screen -->
|
||||
|
|
|
@ -107,7 +107,7 @@
|
|||
<!-- Browser menu button to put the the current page in reader mode -->
|
||||
<string name="browser_menu_read">Reader view</string>
|
||||
<!-- Browser menu button to open the current page in an external app -->
|
||||
<string name="browser_menu_open_app_link">Open in app</string>
|
||||
<string name="browser_menu_open_app_link">Open in App</string>
|
||||
<!-- Browser menu button to configure reader mode appearance e.g. the used font type and size -->
|
||||
<string name="browser_menu_read_appearance">Appearance</string>
|
||||
|
||||
|
@ -1028,6 +1028,9 @@
|
|||
<string name="etp_panel_off">Protections are OFF for this site</string>
|
||||
<!-- Header for exceptions list for which sites enhanced tracking protection is always off -->
|
||||
<string name="enhanced_tracking_protection_exceptions">Enhanced Tracking Protection is off for these websites</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Navigate
|
||||
back from ETP details (Ex: Tracking content) -->
|
||||
<string name="etp_back_button_content_description">Navigate back</string>
|
||||
<!-- About page Your rights link text -->
|
||||
<string name="about_your_rights">Your rights</string>
|
||||
<!-- About page link text to open open source licenses screen -->
|
||||
|
|
|
@ -106,7 +106,7 @@
|
|||
<!-- Browser menu button to put the the current page in reader mode -->
|
||||
<string name="browser_menu_read">Reader view</string>
|
||||
<!-- Browser menu button to open the current page in an external app -->
|
||||
<string name="browser_menu_open_app_link">Open in app</string>
|
||||
<string name="browser_menu_open_app_link">Open in App</string>
|
||||
<!-- Browser menu button to configure reader mode appearance e.g. the used font type and size -->
|
||||
<string name="browser_menu_read_appearance">Appearance</string>
|
||||
|
||||
|
|
|
@ -1057,6 +1057,9 @@
|
|||
<string name="etp_panel_off">Las protecciones están OFF para este sitio</string>
|
||||
<!-- Header for exceptions list for which sites enhanced tracking protection is always off -->
|
||||
<string name="enhanced_tracking_protection_exceptions">La protección contra rastreo aumentada está deshabilitada para estos sitios</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Navigate
|
||||
back from ETP details (Ex: Tracking content) -->
|
||||
<string name="etp_back_button_content_description">Ir hacia atrás</string>
|
||||
<!-- About page Your rights link text -->
|
||||
<string name="about_your_rights">Tus derechos</string>
|
||||
<!-- About page link text to open open source licenses screen -->
|
||||
|
|
|
@ -0,0 +1,143 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!-- App name for private browsing mode, only the "Private" portion should be localized. -->
|
||||
<string name="app_name_private_2">Firefox Preview privado</string>
|
||||
<!-- App name for private browsing mode, only the "Private" portion should be localized. -->
|
||||
<string name="app_name_private_3">Firefox Preview (privado)</string>
|
||||
<!-- Home Fragment -->
|
||||
<!-- Content description (not visible, for screen readers etc.): "Three dot" menu button. -->
|
||||
<string name="content_description_menu">Más opciones</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): "Private Browsing" menu button. -->
|
||||
<string name="content_description_private_browsing_button">Habilitar navegación privada</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): "Private Browsing" menu button. -->
|
||||
<string name="content_description_disable_private_browsing_button">Deshabilitar navegación privada</string>
|
||||
<!-- Placeholder text shown in the search bar before a user enters text -->
|
||||
<string name="search_hint">Buscar o ingresar dirección</string>
|
||||
<!-- No Open Tabs Message Header -->
|
||||
<string name="no_open_tabs_header_2">No hay pestañas abiertas</string>
|
||||
<!-- No Open Tabs Message Description -->
|
||||
<string name="no_open_tabs_description">Las pestañas abiertas aparecerán aquí.</string>
|
||||
|
||||
<!-- Private Browsing -->
|
||||
<!-- Title for private session option -->
|
||||
<string name="private_browsing_title">Estás en una sesión privada</string>
|
||||
<!-- Explanation for private browsing displayed to users on home view when they first enable private mode
|
||||
The first parameter is the name of the app defined in app_name (for example: Fenix) -->
|
||||
<string name="private_browsing_placeholder_description">%1$s limpia tu historial de búsqueda y navegación cuando cierras la aplicación o todas las pestañas privadas. Aunque no te hace anónimo para los sitios web o proveedores de servicios de Internet,
|
||||
te ayuda a mantener en privado lo que haces en línea frente a cualquier otra persona que use este dispositivo.</string>
|
||||
<string name="private_browsing_common_myths">Mitos comunes sobre la navegación privada</string>
|
||||
<!-- Delete session button to erase your history in a private session -->
|
||||
<string name="private_browsing_delete_session">Eliminar sesión</string>
|
||||
|
||||
<!-- Private mode shortcut "contextual feature recommender" (CFR) -->
|
||||
<!-- Text for the main message -->
|
||||
<string name="cfr_message">Agregar un acceso directo para abrir pestañas privadas desde su pantalla de inicio.</string>
|
||||
<!-- Text for the positive button -->
|
||||
<string name="cfr_pos_button_text">Agregar acceso directo</string>
|
||||
<!-- Text for the negative button -->
|
||||
<string name="cfr_neg_button_text">No, gracias</string>
|
||||
|
||||
<!-- Home screen icons - Long press shortcuts -->
|
||||
<!-- Shortcut action to open new tab -->
|
||||
<string name="home_screen_shortcut_open_new_tab_2">Nueva pestaña</string>
|
||||
<!-- Shortcut action to open new private tab -->
|
||||
<string name="home_screen_shortcut_open_new_private_tab_2">Nueva pestaña privada</string>
|
||||
|
||||
<!-- Browser Fragment -->
|
||||
<!-- Content description (not visible, for screen readers etc.): Navigate to open tabs -->
|
||||
<string name="browser_tabs_button">Abrir pestañas</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Navigate backward (browsing history) -->
|
||||
<string name="browser_menu_back">Atrás</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Navigate forward (browsing history) -->
|
||||
<string name="browser_menu_forward">Avanzar</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Refresh current website -->
|
||||
<string name="browser_menu_refresh">Actualizar</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Stop loading current website -->
|
||||
<string name="browser_menu_stop">Detener</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Bookmark the current page -->
|
||||
<string name="browser_menu_bookmark">Marcador</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Un-bookmark the current page -->
|
||||
<string name="browser_menu_edit_bookmark">Editar marcador</string>
|
||||
<!-- Browser menu button that opens the addon manager -->
|
||||
<string name="browser_menu_add_ons">Complementos</string>
|
||||
<!-- Text displayed when there are no add-ons to be shown -->
|
||||
<string name="no_add_ons">No hay complementos aquí</string>
|
||||
<!-- Browser menu button that sends a user to help articles -->
|
||||
<string name="browser_menu_help">Ayuda</string>
|
||||
<!-- Browser menu button that sends a to a the what's new article -->
|
||||
<string name="browser_menu_whats_new">Novedades</string>
|
||||
<!-- Browser menu button that opens the settings menu -->
|
||||
<string name="browser_menu_settings">Ajustes</string>
|
||||
<!-- Browser menu button that opens a user's library -->
|
||||
<string name="browser_menu_library">Biblioteca</string>
|
||||
<!-- Browser menu toggle that requests a desktop site -->
|
||||
<string name="browser_menu_desktop_site">Sitio de escritorio</string>
|
||||
|
||||
<!-- Browser menu toggle that adds a shortcut to the site on the device home screen. -->
|
||||
<string name="browser_menu_add_to_homescreen">Agregar a pantalla de inicio</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">Instalar</string>
|
||||
<!-- Browser menu button that opens the find in page menu -->
|
||||
<string name="browser_menu_find_in_page">Encontrar en página</string>
|
||||
<!-- Browser menu button that creates a private tab -->
|
||||
<string name="browser_menu_private_tab">Pestaña privada</string>
|
||||
<!-- Browser menu button that creates a new tab -->
|
||||
<string name="browser_menu_new_tab">Nueva pestaña</string>
|
||||
<!-- Browser menu button that saves the current tab to a collection -->
|
||||
<string name="browser_menu_save_to_collection_2">Guardar en colección</string>
|
||||
<!-- Browser menu button that opens a dialog to report issues with the current site -->
|
||||
<string name="browser_menu_report_issue">Reportar problema con el sitio</string>
|
||||
<!-- Browser menu button that open a share menu to share the current site -->
|
||||
<string name="browser_menu_share">Compartir</string>
|
||||
<!-- Share menu title, displayed when a user is sharing their current site -->
|
||||
<string name="menu_share_with">Compartir con…</string>
|
||||
<!-- Browser menu button shown in custom tabs that opens the current tab in Fenix
|
||||
The first parameter is the name of the app defined in app_name (for example: Fenix) -->
|
||||
<string name="browser_menu_open_in_fenix">Abrir en %1$s</string>
|
||||
<!-- 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_by">PATROCINADO POR %1$s</string>
|
||||
<!-- 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">Patrocinado por %1$s</string>
|
||||
<!-- Browser menu button to put the the current page in reader mode -->
|
||||
<string name="browser_menu_read">Vista de lectura</string>
|
||||
<!-- Browser menu button to open the current page in an external app -->
|
||||
<string name="browser_menu_open_app_link">Abrir en la aplicación</string>
|
||||
|
||||
<!-- Browser menu button to configure reader mode appearance e.g. the used font type and size -->
|
||||
<string name="browser_menu_read_appearance">Apariencia</string>
|
||||
|
||||
<!-- Locale Settings Fragment -->
|
||||
<!-- Content description for tick mark on selected language -->
|
||||
<string name="a11y_selected_locale_content_description">Seleccionar idioma</string>
|
||||
<!-- Content description for search icon -->
|
||||
<string name="a11y_search_icon_content_description">Buscar</string>
|
||||
<!-- Text for default locale item -->
|
||||
<string name="default_locale_text">Usar el idioma del dispositivo</string>
|
||||
<!-- Placeholder text shown in the search bar before a user enters text -->
|
||||
<string name="locale_search_hint">Buscar idioma</string>
|
||||
|
||||
<!-- Search Fragment -->
|
||||
<!-- Button in the search view that lets a user search by scanning a QR code -->
|
||||
<string name="search_scan_button">Escanear</string>
|
||||
<!-- Button in the search view that lets a user search by using a shortcut -->
|
||||
<string name="search_shortcuts_button">Atajos</string>
|
||||
<!-- Button in the search view when shortcuts are displayed that takes a user to the search engine settings -->
|
||||
<string name="search_shortcuts_engine_settings">Configuración del buscador</string>
|
||||
<!-- DEPRECATED: Header displayed when selecting a shortcut search engine -->
|
||||
<string name="search_shortcuts_search_with">Buscar con</string>
|
||||
<!-- Header displayed when selecting a shortcut search engine -->
|
||||
<string name="search_shortcuts_search_with_2">Esta vez, buscar con:</string>
|
||||
<!-- Button in the search view that lets a user navigate to the site in their clipboard -->
|
||||
<string name="awesomebar_clipboard_title">Pegar enlace del portapapeles</string>
|
||||
<!-- Button in the search suggestions onboarding that allows search suggestions in private sessions -->
|
||||
<string name="search_suggestions_onboarding_allow_button">Permitir</string>
|
||||
<!-- Button in the search suggestions onboarding that does not allow search suggestions in private sessions -->
|
||||
<string name="search_suggestions_onboarding_do_not_allow_button">No compartir</string>
|
||||
<!-- Search suggestion onboarding hint title text -->
|
||||
<string name="search_suggestions_onboarding_title">¿Permitir sugerencias de búsqueda en sesiones privadas?</string>
|
||||
<!-- Search suggestion onboarding hint description text, first parameter is the name of the app defined in app_name (for example: Fenix)-->
|
||||
<string name="search_suggestions_onboarding_text">%s compartirá todo lo que escribas en la barra de direcciones con tu buscador predeterminado.</string>
|
||||
|
||||
</resources>
|
|
@ -1052,6 +1052,9 @@
|
|||
<string name="etp_panel_off">Suojaukset ovat POIS PÄÄLTÄ tällä sivustolla</string>
|
||||
<!-- Header for exceptions list for which sites enhanced tracking protection is always off -->
|
||||
<string name="enhanced_tracking_protection_exceptions">Tehostettu seurannan suojaus ei ole käytössä näillä sivustoilla</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Navigate
|
||||
back from ETP details (Ex: Tracking content) -->
|
||||
<string name="etp_back_button_content_description">Siirry taaksepäin</string>
|
||||
<!-- About page Your rights link text -->
|
||||
<string name="about_your_rights">Oikeutesi</string>
|
||||
<!-- About page link text to open open source licenses screen -->
|
||||
|
|
|
@ -1071,6 +1071,9 @@
|
|||
<string name="etp_panel_off">Les protections sont désactivées pour ce site</string>
|
||||
<!-- Header for exceptions list for which sites enhanced tracking protection is always off -->
|
||||
<string name="enhanced_tracking_protection_exceptions">La protection renforcée contre le pistage est désactivée pour ces sites web</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Navigate
|
||||
back from ETP details (Ex: Tracking content) -->
|
||||
<string name="etp_back_button_content_description">Précédent</string>
|
||||
<!-- About page Your rights link text -->
|
||||
<string name="about_your_rights">Vos droits</string>
|
||||
<!-- About page link text to open open source licenses screen -->
|
||||
|
|
|
@ -1057,6 +1057,9 @@
|
|||
<string name="etp_panel_off">Umi ñemo’ã ojepe’áma ko tendápe g̃uarã</string>
|
||||
<!-- Header for exceptions list for which sites enhanced tracking protection is always off -->
|
||||
<string name="enhanced_tracking_protection_exceptions">Ñemo’ã tapykuehogua oñemboguéma ko’ã tendápe g̃uarã</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Navigate
|
||||
back from ETP details (Ex: Tracking content) -->
|
||||
<string name="etp_back_button_content_description">Eikundaha tapykuévo</string>
|
||||
<!-- About page Your rights link text -->
|
||||
<string name="about_your_rights">Nde derécho</string>
|
||||
<!-- About page link text to open open source licenses screen -->
|
||||
|
|
|
@ -71,7 +71,7 @@
|
|||
<!-- Browser menu button that opens a user's library -->
|
||||
<string name="browser_menu_library">Biblioteka</string>
|
||||
<!-- Browser menu toggle that requests a desktop site -->
|
||||
<string name="browser_menu_desktop_site">Web-stanica za desktop</string>
|
||||
<string name="browser_menu_desktop_site">Klasični prikaz</string>
|
||||
<!-- Browser menu toggle that adds a shortcut to the site on the device home screen. -->
|
||||
<string name="browser_menu_add_to_homescreen">Dodaj na početni ekran</string>
|
||||
<!-- Browser menu toggle that installs a Progressive Web App shortcut to the site on the device home screen. -->
|
||||
|
@ -337,7 +337,7 @@
|
|||
<!-- Header of the Turn on Sync preference view -->
|
||||
<string name="preferences_sync">Uključi sinkronizaciju</string>
|
||||
<!-- Preference for pairing -->
|
||||
<string name="preferences_sync_pair">Skeniraj kod za uparivanje u desktop Firefoxu</string>
|
||||
<string name="preferences_sync_pair">Skeniraj kôd za uparivanje u Firefoxu za računalo</string>
|
||||
<!-- Preference for account login -->
|
||||
<string name="preferences_sync_sign_in">Prijavi se</string>
|
||||
<!-- Preference for reconnecting to FxA sync -->
|
||||
|
@ -381,7 +381,7 @@
|
|||
<!-- Option in library to open Bookmarks page -->
|
||||
<string name="library_bookmarks">Zabilješke</string>
|
||||
<!-- Option in library to open Desktop Bookmarks root page -->
|
||||
<string name="library_desktop_bookmarks_root">Desktop zabilješke</string>
|
||||
<string name="library_desktop_bookmarks_root">Zabilješke računala</string>
|
||||
<!-- Option in library to open Desktop Bookmarks "menu" page -->
|
||||
<string name="library_desktop_bookmarks_menu">Izbornik za zabilješke</string>
|
||||
<!-- Option in library to open Desktop Bookmarks "toolbar" page -->
|
||||
|
|
|
@ -1039,6 +1039,9 @@
|
|||
<string name="etp_panel_off">Škit je znjemóžnjeny za tute sydło</string>
|
||||
<!-- Header for exceptions list for which sites enhanced tracking protection is always off -->
|
||||
<string name="enhanced_tracking_protection_exceptions">Polěpšeny slědowanski škit je znjemóžnjeny za tute sydła</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Navigate
|
||||
back from ETP details (Ex: Tracking content) -->
|
||||
<string name="etp_back_button_content_description">Wróćo nawigować</string>
|
||||
<!-- About page Your rights link text -->
|
||||
<string name="about_your_rights">Waše prawa</string>
|
||||
<!-- About page link text to open open source licenses screen -->
|
||||
|
|
|
@ -948,6 +948,9 @@
|
|||
<string name="etp_panel_off">ההגנות כבויות עבור אתר זה</string>
|
||||
<!-- Header for exceptions list for which sites enhanced tracking protection is always off -->
|
||||
<string name="enhanced_tracking_protection_exceptions">הגנת מעקב מתקדמת כבויה עבור האתרים האלו</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>
|
||||
<!-- About page Your rights link text -->
|
||||
<string name="about_your_rights">הזכויות שלך</string>
|
||||
<!-- About page link text to open open source licenses screen -->
|
||||
|
|
|
@ -1082,6 +1082,9 @@
|
|||
<string name="etp_panel_off">이 사이트에서 보호 꺼짐</string>
|
||||
<!-- Header for exceptions list for which sites enhanced tracking protection is always off -->
|
||||
<string name="enhanced_tracking_protection_exceptions">이 웹 사이트에 대해 향상된 추적 방지 기능이 꺼져 있습니다</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>
|
||||
<!-- About page Your rights link text -->
|
||||
<string name="about_your_rights">사용자 권리</string>
|
||||
<!-- About page link text to open open source licenses screen -->
|
||||
|
|
|
@ -21,6 +21,10 @@
|
|||
<!-- Private Browsing -->
|
||||
<!-- Title for private session option -->
|
||||
<string name="private_browsing_title">आपण खाजगी सत्रात आहात</string>
|
||||
<!-- Explanation for private browsing displayed to users on home view when they first enable private mode
|
||||
The first parameter is the name of the app defined in app_name (for example: Fenix) -->
|
||||
<string name="private_browsing_placeholder_description">आपण अप किंवा सर्व खाजगी टॅब बंद केल्यावर आपला शोध किंवा ब्राऊझिंग इतिहास %1$s मिटवते. यामुळे आपण वापरणाऱ्या साईट किंवा इंटरनेट सेवा देणार्यांपासून आपण होत नाही,
|
||||
पण आपण ऑनलाईन काय करता हे आपले डिव्हाईस वापरणाऱ्या इतरांपासून खाजगी ठेवण्यास सोपे होते.</string>
|
||||
<string name="private_browsing_common_myths">खाजगी ब्राउझिंग बद्दल सामान्य समजुती</string>
|
||||
<!-- Delete session button to erase your history in a private session -->
|
||||
<string name="private_browsing_delete_session">सत्र हटवा</string>
|
||||
|
@ -56,7 +60,7 @@
|
|||
<!-- Content description (not visible, for screen readers etc.): Un-bookmark the current page -->
|
||||
<string name="browser_menu_edit_bookmark">वाचनखूण संपादीत करा</string>
|
||||
<!-- Browser menu button that opens the addon manager -->
|
||||
<string name="browser_menu_addon_manager">अॅड-ऑन व्यवस्थापक</string>
|
||||
<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 -->
|
||||
|
@ -66,7 +70,7 @@
|
|||
<!-- 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_your_library">आपले ग्रंथालय</string>
|
||||
<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. -->
|
||||
|
@ -80,7 +84,7 @@
|
|||
<!-- Browser menu button that creates a new tab -->
|
||||
<string name="browser_menu_new_tab">नवीन टॅब</string>
|
||||
<!-- Browser menu button that saves the current tab to a collection -->
|
||||
<string name="browser_menu_save_to_collection">संग्रहात जतन करा</string>
|
||||
<string name="browser_menu_save_to_collection_2">संग्रहात जतन करा</string>
|
||||
<!-- Browser menu button that opens a dialog to report issues with the current site -->
|
||||
<string name="browser_menu_report_issue">साईटची त्रुटी कळवा</string>
|
||||
<!-- Browser menu button that open a share menu to share the current site -->
|
||||
|
@ -134,6 +138,8 @@
|
|||
<string name="search_suggestions_onboarding_do_not_allow_button">परवानगी देऊ नका</string>
|
||||
<!-- Search suggestion onboarding hint title text -->
|
||||
<string name="search_suggestions_onboarding_title">खाजगी सत्रांमध्ये शोध प्रस्तावांना परवानगी द्यायची का?</string>
|
||||
<!-- Search suggestion onboarding hint description text, first parameter is the name of the app defined in app_name (for example: Fenix)-->
|
||||
<string name="search_suggestions_onboarding_text">पत्ता पट्टी मध्ये आपण जे काही टाईप कराल ते सर्व %s आपल्या पूर्वनिर्धारित शोध इंजिन सह शेअर करेल.</string>
|
||||
<!-- Search suggestion onboarding hint Learn more link text -->
|
||||
<string name="search_suggestions_onboarding_learn_more_link">अधिक जाणून घ्या</string>
|
||||
|
||||
|
@ -187,6 +193,8 @@
|
|||
<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 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 -->
|
||||
|
@ -199,6 +207,8 @@
|
|||
<string name="preferences_theme">रंगयोजना</string>
|
||||
<!-- Preference for settings related to visual options -->
|
||||
<string name="preferences_customize">स्वेच्छेनुरूप करा</string>
|
||||
<!-- Preference description for banner about signing in -->
|
||||
<string name="preferences_sign_in_description">आपल्या Firefox खात्यासह बुकमार्क, इतिहास आणि बरेच काही सिंक करा</string>
|
||||
<!-- Preference shown instead of account display name while account profile information isn't available yet. -->
|
||||
<string name="preferences_account_default_name">Firefox खाते</string>
|
||||
<!-- Preference text for account title when there was an error syncing FxA -->
|
||||
|
@ -214,6 +224,16 @@
|
|||
<!-- Preference category for developer tools -->
|
||||
<string name="developer_tools_category">विकासकांची साधने</string>
|
||||
|
||||
<!-- Preference for developers -->
|
||||
<string name="preferences_remote_debugging">USB द्वारे दूरस्थ डीबगिंग</string>
|
||||
<!-- Preference title for switch preference to show search shortcuts -->
|
||||
<string name="preferences_show_search_shortcuts">शोध शॉर्टकट दर्शवा</string>
|
||||
<!-- Preference title for switch preference to show search suggestions -->
|
||||
<string name="preferences_show_search_suggestions">शोध सूचना दाखवा</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 -->
|
||||
<string name="preferences_search_browsing_history">ब्राउझिंग इतिहास शोधा</string>
|
||||
<!-- Preference title for switch preference to suggest bookmarks when searching -->
|
||||
|
@ -228,6 +248,8 @@
|
|||
<!-- Account Preferences -->
|
||||
<!-- Preference for triggering sync -->
|
||||
<string name="preferences_sync_now">आत्ता सिंक करा</string>
|
||||
<!-- Preference category for sync -->
|
||||
<string name="preferences_sync_category">काय सिंक करायचे ते निवडा</string>
|
||||
<!-- Preference for syncing history -->
|
||||
<string name="preferences_sync_history">इतिहास</string>
|
||||
<!-- Preference for syncing bookmarks -->
|
||||
|
@ -239,45 +261,87 @@
|
|||
<!-- Preference displays and allows changing current FxA device name -->
|
||||
<string name="preferences_sync_device_name">डिव्हाईसचे नाव</string>
|
||||
|
||||
<!-- Text shown when user enters empty device name -->
|
||||
<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. -->
|
||||
<string name="default_device_name">%s %s %s वर</string>
|
||||
|
||||
<!-- Send Tab -->
|
||||
<!-- Name of the "receive tabs" notification channel. Displayed in the "App notifications" system settings for the app -->
|
||||
<string name="fxa_received_tab_channel_name">प्राप्त टॅब</string>
|
||||
<!-- Description of the "receive tabs" notification channel. Displayed in the "App notifications" system settings for the app -->
|
||||
<string name="fxa_received_tab_channel_description">इतर Firefox डिव्हाइसमधून प्राप्त केलेल्या टॅबच्या सूचना.</string>
|
||||
<!-- The body for these is the URL of the tab received -->
|
||||
<string name="fxa_tab_received_notification_name">टॅब प्राप्त झाला</string>
|
||||
<!-- When multiple tabs have been received -->
|
||||
<string name="fxa_tabs_received_notification_name">टॅब प्राप्त झाले</string>
|
||||
|
||||
<!-- %s is the device name -->
|
||||
<string name="fxa_tab_received_from_notification_name">%s कडून टॅब</string>
|
||||
|
||||
<!-- Advanced Preferences -->
|
||||
<!-- Preference for tracking protection settings -->
|
||||
<string name="preferences_tracking_protection_settings">ट्रॅकिंग संरक्षण</string>
|
||||
<!-- Preference switch for tracking protection -->
|
||||
<string name="preferences_tracking_protection">ट्रॅकिंग संरक्षण</string>
|
||||
<!-- Preference switch description for tracking protection -->
|
||||
<string name="preferences_tracking_protection_description">ऑनलाइन ट्रॅक करणारी मजकूर आणि स्क्रिप्ट अवरोधित करा</string>
|
||||
<!-- Preference for tracking protection exceptions -->
|
||||
<string name="preferences_tracking_protection_exceptions">अपवाद</string>
|
||||
<!-- Preference description for tracking protection exceptions -->
|
||||
<string name="preferences_tracking_protection_exceptions_description">या साइटसाठी ट्रॅकिंग संरक्षण बंद आहे</string>
|
||||
<!-- Button in Exceptions Preference to turn on tracking protection for all sites (remove all exceptions) -->
|
||||
<string name="preferences_tracking_protection_exceptions_turn_on_for_all">सर्व साईट साठी चालू करा</string>
|
||||
<!-- Text displayed when there are no exceptions -->
|
||||
<string name="exceptions_empty_message_description">अपवाद आपल्याला निवडलेल्या साइटसाठी ट्रॅकिंग संरक्षण अक्षम करू देतात.</string>
|
||||
<!-- 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 -->
|
||||
<string name="preference_usage_data">वापर आणि तांत्रिक माहिती</string>
|
||||
<!-- Preference description for usage and technical data collection -->
|
||||
<string name="preferences_usage_data_description">आम्ही %1$s उत्तमोत्तम बनवण्यासाठी ब्राऊझरची कार्यक्षमता, वापर, हार्डवेअर आणि सानुकूलन माहिती Mozilla सोबत शेअर करते</string>
|
||||
<!-- Preference switch for marketing data collection -->
|
||||
<string name="preferences_marketing_data">विपणनाची माहिती</string>
|
||||
<!-- Preference description for marketing data collection, parameter is the app name (e.g. Firefox) -->
|
||||
<string name="preferences_marketing_data_description">आपण %1$s मधील कोणती वैशिष्ठ्ये वापरता याची माहिती आमचे मोबाईल मार्केटर Leanplum यांच्यासोबत शेअर करते.</string>
|
||||
<!-- Title for experiments preferences -->
|
||||
<string name="preference_experiments">प्रयोग</string>
|
||||
<!-- Summary for experiments preferences -->
|
||||
<string name="preference_experiments_summary">Mozilla ला प्रायोगिक वैशिष्ट्ये स्थापित करण्यासाठी आणि माहिती गोळा करण्यासाठी अनुमती देते</string>
|
||||
<!-- Preference switch for crash reporter -->
|
||||
<string name="preferences_crash_reporter">क्रॅश अहवाल देणारा</string>
|
||||
<!-- 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">सिंक चालू करा</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 -->
|
||||
<string name="preferences_sync_sign_in_to_reconnect">पुन्हा जोडण्यासाठी साइन इन करा</string>
|
||||
<!-- Preference for removing FxA account -->
|
||||
<string name="preferences_sync_remove_account">खाते काढून टाका</string>
|
||||
|
||||
|
@ -300,6 +364,8 @@
|
|||
<string name="preference_light_theme">फिकट</string>
|
||||
<!-- 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>
|
||||
|
||||
|
@ -308,10 +374,18 @@
|
|||
<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 Reading List -->
|
||||
|
@ -320,6 +394,10 @@
|
|||
<string name="library_search">शोधा</string>
|
||||
<!-- Library Page Title -->
|
||||
<string name="library_title">लायब्ररी</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>
|
||||
|
||||
|
@ -341,12 +419,20 @@
|
|||
<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_collection">संग्रहात जतन करा</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>
|
||||
<!-- Button to save the current set of tabs into a collection -->
|
||||
|
@ -390,6 +476,8 @@
|
|||
<!-- Crashes -->
|
||||
<!-- Title text displayed on the tab crash page. This first parameter is the name of the application (For example: Fenix) -->
|
||||
<string name="tab_crash_title_2">क्षमस्व. %1$s ते पृष्ठ लोड करू शकत नाही.</string>
|
||||
<!-- Description text displayed on the tab crash page -->
|
||||
<string name="tab_crash_description">आपण खाली हा टॅब पुनर्संचयित किंवा बंद करण्याचा प्रयत्न करू शकता.</string>
|
||||
<!-- Send crash report checkbox text on the tab crash page -->
|
||||
<string name="tab_crash_send_report">Mozilla ला क्रॅश अहवाल पाठवा</string>
|
||||
<!-- Close tab button text on the tab crash page -->
|
||||
|
@ -400,12 +488,20 @@
|
|||
<!-- Content Description for session item menu button -->
|
||||
<string name="content_description_session_menu">सत्र पर्याय</string>
|
||||
|
||||
<!-- Content Description for session item share button -->
|
||||
<string name="content_description_session_share">सत्र शेअर करा</string>
|
||||
|
||||
<!-- Bookmarks -->
|
||||
<!-- Content description for bookmarks library menu -->
|
||||
<string name="bookmark_menu_content_description">वाचनखूणा मेनू</string>
|
||||
<!-- Screen title for editing bookmarks -->
|
||||
<string name="bookmark_edit">वाचनखूण संपादीत करा</string>
|
||||
<!-- Screen title for selecting a bookmarks folder -->
|
||||
<string name="bookmark_select_folder">फोल्डर निवडा</string>
|
||||
<!-- Screen title for adding a bookmarks folder -->
|
||||
<string name="bookmark_add_folder">फोल्डर जोडा</string>
|
||||
<!-- deprecated: Snackbar title shown after a bookmark has been created. -->
|
||||
<string name="bookmark_created_snackbar">वाचनखुण बनवली.</string>
|
||||
<!-- Snackbar title shown after a bookmark has been created. -->
|
||||
<string name="bookmark_saved_snackbar">वाचनखुण जतन केली!</string>
|
||||
<!-- Snackbar edit button shown after a bookmark has been created. -->
|
||||
|
@ -433,6 +529,8 @@
|
|||
<string name="edit_bookmark_fragment_title">वाचनखूण संपादीत करा</string>
|
||||
<!-- Bookmark folder editing screen title -->
|
||||
<string name="edit_bookmark_folder_fragment_title">फोल्डर संपादित करा</string>
|
||||
<!-- Bookmark sign in button message -->
|
||||
<string name="bookmark_sign_in_button">सिंक केलेल्या वाचनखुणा पाहण्यासाठी साइन इन करा</string>
|
||||
<!-- Bookmark URL editing field label -->
|
||||
<string name="bookmark_url_label">URL</string>
|
||||
<!-- Bookmark FOLDER editing field label -->
|
||||
|
@ -464,6 +562,10 @@
|
|||
<string name="permissions_header">परवानग्या</string>
|
||||
<!-- Button label that take the user to the Android App setting -->
|
||||
<string name="phone_feature_go_to_settings">सेटिंग मध्ये जा</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>
|
||||
<!-- Label that indicates that this option it the recommended one -->
|
||||
<string name="phone_feature_recommended">शिफारसीय</string>
|
||||
<!-- button that allows editing site permissions settings -->
|
||||
|
@ -499,18 +601,8 @@
|
|||
<!-- Summary of tracking protection preference if tracking protection is set to off -->
|
||||
<string name="tracking_protection_off">बंद</string>
|
||||
|
||||
<!-- DEPRECATED: Label that indicates video and audio autoplay is blocked -->
|
||||
<string name="preference_option_autoplay_blocked">व्हिडिओ आणि ऑडिओ अवरोधित</string>
|
||||
<!-- DEPRECATED: Label that indicates video and audio autoplay is allowed -->
|
||||
<string name="preference_option_autoplay_allowed">व्हिडिओ आणि ऑडिओला परवानगी आहे</string>
|
||||
<!-- Label that indicates that all video and audio autoplay is allowed -->
|
||||
<string name="preference_option_autoplay_allowed2">ऑडिओ आणि व्हिडिओला परवानगी द्या</string>
|
||||
<!-- Label that indicates that video and audio autoplay is only allowed over WIFI -->
|
||||
<string name="preference_option_autoplay_allowed_wifi_only">केवळ Wi-Fi वर ऑडिओ आणि व्हिडिओला अनुमती द्या</string>
|
||||
<!-- Label that indicates that video autoplay is allowed, but audio autoplay is blocked -->
|
||||
<string name="preference_option_autoplay_block_audio">ऑडिओ अवरोधित करा</string>
|
||||
<!-- Label that indicates that all video and audio autoplay is blocked -->
|
||||
<string name="preference_option_autoplay_blocked2">व्हिडिओ आणि ऑडिओ अवरोधित करा</string>
|
||||
<!-- Summary of delete browsing data on quit preference if it is set to on -->
|
||||
<string name="delete_browsing_data_quit_on">सुरू</string>
|
||||
<!-- Summary of delete browsing data on quit preference if it is set to off -->
|
||||
|
@ -606,6 +698,8 @@
|
|||
|
||||
<!-- Text shown in snackbar when user closes all private tabs -->
|
||||
<string name="snackbar_private_tabs_closed">खाजगी टॅब बंद केले</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 option to delete the collection -->
|
||||
<string name="tab_collection_dialog_positive">हटवा</string>
|
||||
<!-- Tab collection deletion prompt dialog option to cancel deleting the collection -->
|
||||
|
@ -705,4 +799,162 @@
|
|||
<!-- text for the theme picker onboarding card header -->
|
||||
<string name="onboarding_theme_picker_header">आपली थीम निवडा</string>
|
||||
|
||||
</resources>
|
||||
<!-- text for the theme picker onboarding card description -->
|
||||
<string name="onboarding_theme_picker_description1">गडद रंगसंगती वापरून थोडी बॅटरी आणि तुमची दृष्टी वाचवा.</string>
|
||||
<!-- Automatic theme setting (will follow device setting) -->
|
||||
<string name="onboarding_theme_automatic_title">स्वयंचलित</string>
|
||||
<!-- Theme setting for dark mode -->
|
||||
<string name="onboarding_theme_dark_title">गडद रंगसंगती</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 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>
|
||||
|
||||
<!-- Instructions on how to access pairing -->
|
||||
<string name="sign_in_instructions"><![CDATA[आपल्या संगणकावर Firefox उघडा आणि <b>https://firefox.com/pair</b> वर जा]]></string>
|
||||
<!-- Text shown for sign in pairing when ready -->
|
||||
<string name="sign_in_ready_for_scan">स्कॅन करण्यास सज्ज</string>
|
||||
<!-- Text shown for settings option for sign with email -->
|
||||
<string name="sign_in_with_email">त्याऐवजी ईमेल वापरा</string>
|
||||
<!-- Option to continue signing out of account shown in confirmation dialog to sign out of account -->
|
||||
<string name="sign_out_disconnect">जोडणी तोडा</string>
|
||||
<!-- Option to cancel signing out shown in confirmation dialog to sign out of account -->
|
||||
<string name="sign_out_cancel">रद्द करा</string>
|
||||
|
||||
<!-- Enhanced Tracking Protection -->
|
||||
<!-- Link displayed in enhanced tracking protection panel to access tracking protection settings -->
|
||||
<string name="etp_settings">संरक्षण सेटिंग</string>
|
||||
<!-- Preference title for enhanced tracking protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection">वर्धित ट्रॅकिंग संरक्षण</string>
|
||||
<!-- Title for the description of enhanced tracking protection -->
|
||||
<string name="preference_enhanced_tracking_protection_explanation_title">पाठलाग करून न घेता ब्राउझ करा</string>
|
||||
<!-- Text displayed that links to website about enhanced tracking protection -->
|
||||
<string name="preference_enhanced_tracking_protection_explanation_learn_more">अधिक जाणा</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard_option">प्रमाणित</string>
|
||||
<!-- Preference for enhanced tracking protection for the standard protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_standard">प्रमाणित (सुचवलेले)</string>
|
||||
<!-- Preference for enhanced tracking protection for the strict protection settings -->
|
||||
<string name="preference_enhanced_tracking_protection_strict">काटेकोर</string>
|
||||
<!-- Header for categories that are being blocked by current Enhanced Tracking Protection settings -->
|
||||
<!-- Preference for enhanced tracking protection for the custom protection settings for cookies-->
|
||||
<string name="preference_enhanced_tracking_protection_custom_cookies">कुकीज</string>
|
||||
<!-- Option for enhanced tracking protection for the custom protection settings for cookies-->
|
||||
<string name="preference_enhanced_tracking_protection_custom_cookies_2">भेट न दिलेल्या संकेतस्थळांवरील कुकीज</string>
|
||||
<!-- Option for enhanced tracking protection for the custom protection settings for tracking content-->
|
||||
<string name="preference_enhanced_tracking_protection_custom_tracking_content_1">सर्व टॅब मध्ये</string>
|
||||
<!-- Option for enhanced tracking protection for the custom protection settings for tracking content-->
|
||||
<string name="preference_enhanced_tracking_protection_custom_tracking_content_2">फक्त गोपनीय टॅब मध्ये</string>
|
||||
<string name="enhanced_tracking_protection_blocked">अवरोधित</string>
|
||||
<!-- Header for categories that are being not being blocked by current Enhanced Tracking Protection settings -->
|
||||
<string name="enhanced_tracking_protection_allowed">अनुमती दिलेले</string>
|
||||
<!-- Enhanced Tracking Protection message that protection is currently on for this site -->
|
||||
<string name="etp_panel_on">या संकेतस्थळासाठी संरक्षण चालू आहे</string>
|
||||
<!-- About page Your rights link text -->
|
||||
<string name="about_your_rights">आपले हक्क</string>
|
||||
<!-- About page link text to open what's new link -->
|
||||
<string name="about_whats_new">%s मध्ये नवीन काय आहे</string>
|
||||
|
||||
<!-- About page link text to open support link -->
|
||||
<string name="about_support">मदत</string>
|
||||
<!-- About page link text to open privacy notice link -->
|
||||
<string name="about_privacy_notice">गोपनीयता सूचना</string>
|
||||
<!-- About page link text to open know your rights link -->
|
||||
<string name="about_know_your_rights">आपले हक्क जाणा</string>
|
||||
<!-- About page link text to open licensing information link -->
|
||||
<string name="about_licensing_information">अनुज्ञप्तीची माहिती</string>
|
||||
|
||||
<!-- Browser long press popup menu -->
|
||||
<!-- Copy the current url -->
|
||||
<string name="browser_toolbar_long_press_popup_copy">प्रत बनवा</string>
|
||||
<!-- Paste & go the text in the clipboard. '&' is replaced with the ampersand symbol: & -->
|
||||
<string name="browser_toolbar_long_press_popup_paste_and_go">चिकटवा व जा</string>
|
||||
<!-- Paste the text in the clipboard -->
|
||||
<string name="browser_toolbar_long_press_popup_paste">चिकटवा</string>
|
||||
|
||||
<!-- Title text for the Add To Homescreen dialog -->
|
||||
<string name="add_to_homescreen_title">मुख्य पटलावर जोडा</string>
|
||||
<!-- Cancel button text for the Add to Homescreen dialog -->
|
||||
<string name="add_to_homescreen_cancel">रद्द करा</string>
|
||||
<!-- Add button text for the Add to Homescreen dialog -->
|
||||
<string name="add_to_homescreen_add">जोडा</string>
|
||||
|
||||
<!-- Preference option for asking to save passwords in Fenix -->
|
||||
<string name="preferences_passwords_save_logins_ask_to_save">जतन करण्याबद्दल विचारा</string>
|
||||
<!-- Preference option for never saving passwords in Fenix -->
|
||||
<string name="preferences_passwords_save_logins_never_save">कधीही जतन करू नका</string>
|
||||
<!-- Preference for autofilling saved logins in Fenix -->
|
||||
<string name="preferences_passwords_autofill">स्वयंचलितपणे भरा</string>
|
||||
<!-- Syncing saved logins in Fenix is on -->
|
||||
<string name="preferences_passwords_sync_logins_on">सुरू</string>
|
||||
<!-- Syncing saved logins in Fenix is off -->
|
||||
<string name="preferences_passwords_sync_logins_off">बंद करा</string>
|
||||
<!-- Syncing saved logins in Fenix needs reconnect to sync -->
|
||||
<string name="preferences_passwords_sync_logins_reconnect">पुनर्जोडणी करा</string>
|
||||
<!-- Preference to access list of login exceptions that we never save logins for -->
|
||||
<string name="preferences_passwords_exceptions">अपवाद</string>
|
||||
<!-- Option to sort logins list A-Z, alphabetically -->
|
||||
<string name="preferences_passwords_saved_logins_alphabetically">वर्णक्रमानुसार</string>
|
||||
<!-- Option to sort logins list by most recently used -->
|
||||
<string name="preferences_passwords_saved_logins_recently_used">अलीकडे वापरलेले</string>
|
||||
<!-- The header for the site that a login is for -->
|
||||
<string name="preferences_passwords_saved_logins_site">संकेतस्थळ</string>
|
||||
<!-- The header for the username for a login -->
|
||||
<string name="preferences_passwords_saved_logins_username">वापरकर्तानाव</string>
|
||||
<!-- The header for the password for a login -->
|
||||
<string name="preferences_passwords_saved_logins_password">पासवर्ड</string>
|
||||
<!-- Message displayed in security prompt to reenter a secret pin to access saved logins -->
|
||||
<string name="preferences_passwords_saved_logins_enter_pin">पिन पुन्हा प्रविष्ट करा</string>
|
||||
|
||||
<!-- Message displayed when a connection is insecure and we detect the user is entering a password -->
|
||||
<string name="logins_insecure_connection_warning">ही जोडणी सुरक्षित नाही. येथे प्रविष्ट केलेल्या लॉगिनचा गैरवापर होऊ शकतो.</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>
|
||||
<!-- Positive confirmation that Fenix should save the new or updated login -->
|
||||
<string name="logins_doorhanger_save_confirmation">जतन करा</string>
|
||||
<!-- Negative confirmation that Fenix should not save the new or updated login -->
|
||||
<string name="logins_doorhanger_save_dont_save">जतन करू नका</string>
|
||||
<!-- Negative button to ignore warning dialog if users have no device authentication set up -->
|
||||
<string name="logins_warning_dialog_later">नंतर</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 menu button to edit a search engine -->
|
||||
<string name="search_engine_edit">संपादित करा</string>
|
||||
<!-- Text for the menu button to delete a search engine -->
|
||||
<string name="search_engine_delete">काढून टाका</string>
|
||||
|
||||
<!-- Text for the button to create a custom search engine on the Add search engine screen -->
|
||||
<string name="search_add_custom_engine_label_other">इतर</string>
|
||||
<!-- Placeholder text shown in the Search Engine Name TextField before a user enters text -->
|
||||
<string name="search_add_custom_engine_name_hint">नाव</string>
|
||||
<!-- Text for the button to learn more about adding a custom search engine -->
|
||||
<string name="search_add_custom_engine_learn_more_label">अधिक जाणा</string>
|
||||
|
||||
<!-- Text on the disabled button while in progress. Placeholder replaced with app name -->
|
||||
<string name="migration_updating_app_button_text">%s अद्ययावत करत आहोत…</string>
|
||||
<!-- Text on the enabled button. Placeholder replaced with app name-->
|
||||
<string name="migration_update_app_button">%s सुरु करा</string>
|
||||
<!-- Accessibility description text for a completed migration item -->
|
||||
<string name="migration_icon_description">स्थित्यंतर पूर्ण</string>
|
||||
<!--Text on list of migrated items (e.g. Settings, History, etc.)-->
|
||||
<string name="migration_text_passwords">पासवर्ड</string>
|
||||
|
||||
<!-- Heading for the instructions to allow a permission -->
|
||||
<string name="phone_feature_blocked_intro">अनुमती देण्यासाठी:</string>
|
||||
|
||||
<!-- Label that indicates a site is using a secure connection -->
|
||||
<string name="quick_settings_sheet_secure_connection">सुरक्षित जोडणी</string>
|
||||
<!-- Label that indicates a site is using a insecure connection -->
|
||||
<string name="quick_settings_sheet_insecure_connection">असुरक्षित जोडणी</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>
|
||||
<!-- Login overflow menu delete button -->
|
||||
<string name="login_menu_delete_button">काढून टाका</string>
|
||||
<!-- Positive action of a dialog asking to delete -->
|
||||
<string name="dialog_delete_positive">काढून टाका</string>
|
||||
</resources>
|
||||
|
|
|
@ -67,7 +67,7 @@
|
|||
<!-- Content description (not visible, for screen readers etc.): Un-bookmark the current page -->
|
||||
<string name="browser_menu_edit_bookmark">ਬੁੱਕਮਾਰਕ ਸੋਧੋ</string>
|
||||
<!-- Browser menu button that opens the addon manager -->
|
||||
<string name="browser_menu_addon_manager">ਐਡ-ਆਨ ਮੈਨੇਜਰ</string>
|
||||
<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 -->
|
||||
|
@ -77,7 +77,7 @@
|
|||
<!-- 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_your_library">ਤੁਹਾਡੀ ਲਾਇਬਰੇਰੀ</string>
|
||||
<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. -->
|
||||
|
@ -90,9 +90,9 @@
|
|||
<string name="browser_menu_private_tab">ਪ੍ਰਾਈਵੇਟ ਟੈਬ</string>
|
||||
<!-- Browser menu button that creates a new tab -->
|
||||
<string name="browser_menu_new_tab">ਨਵੀਂ ਟੈਬ</string>
|
||||
<!-- Browser menu button that saves the current tab to a collection -->
|
||||
<string name="browser_menu_save_to_collection">ਭੰਡਾਰ ‘ਚ ਸੰਭਾਲੋ</string>
|
||||
|
||||
<!-- Browser menu button that saves the current tab to a collection -->
|
||||
<string name="browser_menu_save_to_collection_2">ਭੰਡਾਰ ‘ਚ ਸੰਭਾਲੋ</string>
|
||||
<!-- Browser menu button that opens a dialog to report issues with the current site -->
|
||||
<string name="browser_menu_report_issue">ਸਾਈਟ ਮਸਲੇ ਬਾਰੇ ਰਿਪੋਰਟ ਕਰੋ</string>
|
||||
<!-- Browser menu button that open a share menu to share the current site -->
|
||||
|
@ -613,19 +613,12 @@
|
|||
<!-- Summary of tracking protection preference if tracking protection is set to off -->
|
||||
<string name="tracking_protection_off">ਬੰਦ</string>
|
||||
|
||||
<!-- DEPRECATED: Label that indicates video and audio autoplay is blocked -->
|
||||
<string name="preference_option_autoplay_blocked">ਵਿਡੀਓ ਤੇ ਆਡੀਓ ‘ਤੇ ਪਾਬੰਦੀ ਲਾਈ</string>
|
||||
<!-- DEPRECATED: Label that indicates video and audio autoplay is allowed -->
|
||||
<string name="preference_option_autoplay_allowed">ਵਿਡੀਓ ਅਤੇ ਆਡੀਓ ਦੀ ਇਜਾਜ਼ਤ ਹੈ</string>
|
||||
|
||||
<!-- Label that indicates that all video and audio autoplay is allowed -->
|
||||
<string name="preference_option_autoplay_allowed2">ਆਡੀਓ ਅਤੇ ਵੀਡਿਓ ਦੀ ਇਜਾਜ਼ਤ ਦਿਓ</string>
|
||||
<!-- Label that indicates that video and audio autoplay is only allowed over WIFI -->
|
||||
<string name="preference_option_autoplay_allowed_wifi_only">ਸਿਰਫ਼ Wi-Fi ਉੱਤੇ ਆਡੀਓ ਤੇ ਵੀਡਿਡ ਦੀ ਇਜਾਜ਼ਤ ਦਿਓ</string>
|
||||
<!-- Label that indicates that video autoplay is allowed, but audio autoplay is blocked -->
|
||||
<string name="preference_option_autoplay_block_audio">ਆਡੀਓ ਤੇ ਪਾਬੰਦੀ ਲਾਓ</string>
|
||||
<string name="preference_option_autoplay_block_audio2">ਸਿਰਫ਼ ਆਡੀਓ ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਓ</string>
|
||||
<!-- Label that indicates that all video and audio autoplay is blocked -->
|
||||
<string name="preference_option_autoplay_blocked2">ਵੀਡਿਓ ਅਤੇ ਆਡੀਓ ਤੇ ਪਾਬੰਦੀ ਲਾਓ</string>
|
||||
<string name="preference_option_autoplay_blocked3">ਆਡੀਓ ਅਤੇ ਵੀਡਿਓ ਤੇ ਪਾਬੰਦੀ ਲਾਓ</string>
|
||||
<!-- Summary of delete browsing data on quit preference if it is set to on -->
|
||||
<string name="delete_browsing_data_quit_on">ਚਾਲੂ</string>
|
||||
<!-- Summary of delete browsing data on quit preference if it is set to off -->
|
||||
|
@ -1054,6 +1047,9 @@
|
|||
<string name="etp_panel_off">ਇਸ ਸਾਈਟ ਲਈ ਸੁਰੱਖਿਆ ਬੰਦ ਹੈ</string>
|
||||
<!-- Header for exceptions list for which sites enhanced tracking protection is always off -->
|
||||
<string name="enhanced_tracking_protection_exceptions">ਇਹਨਾਂ ਵੈੱਬਸਾਈਟਾਂ ਲਈ ਵਧੇਰੇ ਟਰੈਕਿੰਗ ਸੁਰੱਖਿਆ ਬੰਦ ਹੈ</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>
|
||||
<!-- About page Your rights link text -->
|
||||
<string name="about_your_rights">ਤੁਹਾਡੇ ਹੱਕ</string>
|
||||
<!-- About page link text to open open source licenses screen -->
|
||||
|
|
|
@ -1039,6 +1039,9 @@
|
|||
<string name="etp_panel_off">As proteções estão DESATIVADAS neste site</string>
|
||||
<!-- Header for exceptions list for which sites enhanced tracking protection is always off -->
|
||||
<string name="enhanced_tracking_protection_exceptions">A proteção aprimorada contra rastreamento está desativada nesses sites</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Navigate
|
||||
back from ETP details (Ex: Tracking content) -->
|
||||
<string name="etp_back_button_content_description">Voltar à página anterior</string>
|
||||
<!-- About page Your rights link text -->
|
||||
<string name="about_your_rights">Seus direitos</string>
|
||||
<!-- About page link text to open open source licenses screen -->
|
||||
|
|
|
@ -1054,6 +1054,9 @@
|
|||
<string name="etp_panel_off">Skydd är AV för den här webbplatsen</string>
|
||||
<!-- Header for exceptions list for which sites enhanced tracking protection is always off -->
|
||||
<string name="enhanced_tracking_protection_exceptions">Förbättrat spårningsskydd är avstängt för dessa webbplatser</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Navigate
|
||||
back from ETP details (Ex: Tracking content) -->
|
||||
<string name="etp_back_button_content_description">Navigera bakåt</string>
|
||||
<!-- About page Your rights link text -->
|
||||
<string name="about_your_rights">Dina rättigheter</string>
|
||||
<!-- About page link text to open open source licenses screen -->
|
||||
|
|
|
@ -1032,6 +1032,9 @@
|
|||
<string name="etp_panel_off">Bu sitede korumalar KAPALI</string>
|
||||
<!-- Header for exceptions list for which sites enhanced tracking protection is always off -->
|
||||
<string name="enhanced_tracking_protection_exceptions">Aşağıdaki sitelerde gelişmiş izlenme koruması kapatıldı</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): Navigate
|
||||
back from ETP details (Ex: Tracking content) -->
|
||||
<string name="etp_back_button_content_description">Geri git</string>
|
||||
<!-- About page Your rights link text -->
|
||||
<string name="about_your_rights">Haklarınız</string>
|
||||
<!-- About page link text to open open source licenses screen -->
|
||||
|
|
|
@ -1052,6 +1052,9 @@
|
|||
<string name="etp_panel_off">Захист на цьому сайті вимкнено</string>
|
||||
<!-- Header for exceptions list for which sites enhanced tracking protection is always off -->
|
||||
<string name="enhanced_tracking_protection_exceptions">Розширений захист від стеження вимкнено для цих вебсайтів</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>
|
||||
<!-- About page Your rights link text -->
|
||||
<string name="about_your_rights">Ваші права</string>
|
||||
<!-- About page link text to open open source licenses screen -->
|
||||
|
|
|
@ -1074,6 +1074,9 @@
|
|||
<string name="etp_panel_off">对此网站已关闭保护</string>
|
||||
<!-- Header for exceptions list for which sites enhanced tracking protection is always off -->
|
||||
<string name="enhanced_tracking_protection_exceptions">对下列网站已关闭增强型跟踪保护</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>
|
||||
<!-- About page Your rights link text -->
|
||||
<string name="about_your_rights">您的权利</string>
|
||||
<!-- About page link text to open open source licenses screen -->
|
||||
|
|
|
@ -1068,6 +1068,9 @@
|
|||
<string name="etp_panel_off">已關閉此網站的追蹤保護</string>
|
||||
<!-- Header for exceptions list for which sites enhanced tracking protection is always off -->
|
||||
<string name="enhanced_tracking_protection_exceptions">針對下列網站關閉加強型追蹤保護</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>
|
||||
<!-- About page Your rights link text -->
|
||||
<string name="about_your_rights">您的權利</string>
|
||||
<!-- About page link text to open open source licenses screen -->
|
||||
|
|
|
@ -38,6 +38,8 @@
|
|||
<string name="pref_key_account" translatable="false">pref_key_account</string>
|
||||
<string name="pref_key_sign_in" translatable="false">pref_key_sign_in</string>
|
||||
<string name="pref_key_account_auth_error" translatable="false">pref_key_account_auth_error</string>
|
||||
<string name="pref_key_override_fxa_server" translatable="false">pref_key_override_fxa_server</string>
|
||||
<string name="pref_key_override_sync_tokenserver" translatable="false">pref_key_override_sync_tokenserver</string>
|
||||
<string name="pref_key_private_mode" translatable="false">pref_key_private_mode</string>
|
||||
<string name="pref_key_customize" translatable="false">pref_key_customize</string>
|
||||
<string name="pref_key_toolbar" translatable="false">pref_key_toolbar</string>
|
||||
|
|
|
@ -202,6 +202,12 @@
|
|||
<string name="preferences_add_private_browsing_shortcut">Add private browsing shortcut</string>
|
||||
<!-- Preference for accessibility -->
|
||||
<string name="preferences_accessibility">Accessibility</string>
|
||||
<!-- Preference to override the Firefox Account server -->
|
||||
<string name="preferences_override_fxa_server">Custom Firefox Account server</string>
|
||||
<!-- Preference to override the Sync token server -->
|
||||
<string name="preferences_override_sync_tokenserver">Custom Sync server</string>
|
||||
<!-- Toast shown after updating the FxA/Sync server override preferences -->
|
||||
<string name="toast_override_fxa_sync_server_done">Firefox Account/Sync server modified. Quitting the application to apply changes…</string>
|
||||
<!-- Preference category for account information -->
|
||||
<string name="preferences_category_account">Account</string>
|
||||
<!-- Preference shown on banner to sign into account -->
|
||||
|
@ -1062,6 +1068,10 @@
|
|||
<string name="about_licensing_information">Licensing information</string>
|
||||
<!-- About page link text to open a screen with libraries that are used -->
|
||||
<string name="about_other_open_source_libraries">Libraries that we use</string>
|
||||
<!-- Toast shown to the user when they are activating the secret dev menu
|
||||
The first parameter is number of long clicks left to enable the menu -->
|
||||
<string name="about_debug_menu_toast_progress">Debug menu: %1$d click(s) left to enable</string>
|
||||
<string name="about_debug_menu_toast_done">Debug menu enabled</string>
|
||||
|
||||
<!-- Content description of the tab counter toolbar button when one tab is open -->
|
||||
<string name="tab_counter_content_description_one_tab">1 tab</string>
|
||||
|
|
|
@ -29,6 +29,20 @@
|
|||
android:key="@string/pref_key_account_auth_error"/>
|
||||
</androidx.preference.PreferenceCategory>
|
||||
|
||||
<androidx.preference.EditTextPreference
|
||||
android:key="@string/pref_key_override_fxa_server"
|
||||
android:title="@string/preferences_override_fxa_server"
|
||||
android:inputType="textUri"
|
||||
app:iconSpaceReserved="false"
|
||||
app:isPreferenceVisible="false"/>
|
||||
|
||||
<androidx.preference.EditTextPreference
|
||||
android:key="@string/pref_key_override_sync_tokenserver"
|
||||
android:title="@string/preferences_override_sync_tokenserver"
|
||||
android:inputType="textUri"
|
||||
app:iconSpaceReserved="false"
|
||||
app:isPreferenceVisible="false"/>
|
||||
|
||||
<androidx.preference.PreferenceCategory
|
||||
android:title="@string/preferences_category_general"
|
||||
app:iconSpaceReserved="false">
|
||||
|
@ -103,13 +117,6 @@
|
|||
android:key="@string/pref_key_open_links_in_external_app"
|
||||
android:title="@string/preferences_open_links_in_apps" />
|
||||
|
||||
<androidx.preference.SwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:icon="@drawable/ic_info"
|
||||
android:key="@string/pref_key_leakcanary"
|
||||
android:title="@string/preference_leakcanary"
|
||||
app:isPreferenceVisible="@bool/IS_DEBUG" />
|
||||
|
||||
</androidx.preference.PreferenceCategory>
|
||||
|
||||
<PreferenceCategory
|
||||
|
@ -120,11 +127,14 @@
|
|||
android:icon="@drawable/mozac_ic_extensions_black"
|
||||
android:key="@string/pref_key_addons"
|
||||
android:title="@string/preferences_addons" />
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory
|
||||
android:title="@string/developer_tools_category"
|
||||
app:iconSpaceReserved="false">
|
||||
<androidx.preference.SwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:icon="@drawable/ic_info"
|
||||
android:key="@string/pref_key_leakcanary"
|
||||
android:title="@string/preference_leakcanary"
|
||||
app:isPreferenceVisible="@bool/IS_DEBUG" />
|
||||
|
||||
<androidx.preference.SwitchPreference
|
||||
android:icon="@drawable/ic_energy"
|
||||
android:key="@string/pref_key_remote_debugging"
|
||||
|
|
|
@ -38,20 +38,6 @@ class AboutPageAdapterTest {
|
|||
)
|
||||
private val listener: AboutPageListener = mockk(relaxed = true)
|
||||
|
||||
@Test
|
||||
fun `updateData should set the new data and call notifyDataSetChanged()`() {
|
||||
val adapter = spyk(AboutPageAdapter(listener), recordPrivateCalls = true)
|
||||
every { adapter.notifyDataSetChanged() } just Runs
|
||||
|
||||
adapter.updateData(aboutList)
|
||||
|
||||
// Wasn't able to test in verify block the 'adapter.aboutList' setter from the updateData method
|
||||
assertThat(adapter.aboutList).isEqualTo(aboutList)
|
||||
verify {
|
||||
adapter.notifyDataSetChanged()
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `getItemCount on a default instantiated Adapter should return 0`() {
|
||||
val adapter = AboutPageAdapter(listener)
|
||||
|
@ -63,7 +49,7 @@ class AboutPageAdapterTest {
|
|||
fun `getItemCount after updateData() call should return the correct list size`() {
|
||||
val adapter = AboutPageAdapter(listener)
|
||||
|
||||
adapter.updateData(aboutList)
|
||||
adapter.submitList(aboutList)
|
||||
|
||||
assertThat(adapter.itemCount).isEqualTo(2)
|
||||
}
|
||||
|
@ -93,9 +79,9 @@ class AboutPageAdapterTest {
|
|||
} returns viewHolder
|
||||
every { viewHolder.bind(any()) } just Runs
|
||||
|
||||
adapter.updateData(aboutList)
|
||||
adapter.submitList(aboutList)
|
||||
adapter.bindViewHolder(viewHolder, 1)
|
||||
|
||||
verify { viewHolder.bind(adapter.aboutList?.get(1) as AboutPageItem.Item) }
|
||||
verify { viewHolder.bind(aboutList[1] as AboutPageItem.Item) }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -79,7 +79,7 @@ elif [[ "${device_type}" == "x86-start-test" ]]; then
|
|||
elif [[ "${device_type}" == "arm-start-test" ]]; then
|
||||
flank_template="${PATH_TEST}/flank-armeabi-v7a-start-test.yml"
|
||||
else
|
||||
echo "NOT FOUND"
|
||||
echo "FAILURE: flank config file not found!"
|
||||
exitcode=1
|
||||
fi
|
||||
|
||||
|
@ -95,7 +95,7 @@ function failure_check() {
|
|||
echo
|
||||
echo
|
||||
if [[ $exitcode -ne 0 ]]; then
|
||||
echo "ERROR: UI test run failed, please check above URL"
|
||||
echo "FAILURE: UI test run failed, please check above URL"
|
||||
else
|
||||
echo "All UI test(s) have passed!"
|
||||
fi
|
||||
|
|
Loading…
Reference in New Issue