From 293d44696607a50450587d1d76bf0877ebf5534a Mon Sep 17 00:00:00 2001 From: Mozilla L10n Automation Bot Date: Fri, 7 Aug 2020 00:16:21 +0000 Subject: [PATCH 01/10] Import l10n. --- app/src/main/res/values-fi/strings.xml | 17 +++-------------- app/src/main/res/values-ko/strings.xml | 2 +- app/src/main/res/values-ro/strings.xml | 19 ++++--------------- app/src/main/res/values-tr/strings.xml | 2 +- app/src/main/res/values-uz/strings.xml | 7 +++++++ 5 files changed, 16 insertions(+), 31 deletions(-) diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index d206aa972..6eb679fae 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -171,8 +171,8 @@ Skannaa - - Hakukone + + Hakukone Hakukoneasetukset @@ -1471,9 +1471,7 @@ Kirjautumistieto tällä käyttäjänimellä on jo olemassa - - Yhdistä Firefox-tilillä. - + Yhdistä toinen laite. Tunnistaudu uudelleen. @@ -1494,13 +1492,4 @@ Selvä - - - Oikopolut - - Hae hakukoneella - - Tällä kertaa käytä hakuun: - - Näytä hakuoikopolut diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index f6124eb83..6250bd788 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -1264,7 +1264,7 @@ 붙여넣기 - 클립보드에 URL 복사됨 + URL이 클립보드에 복사됨 홈 화면에 추가 diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 98ecc9984..072e330ab 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -113,7 +113,7 @@ Bibliotecă - Versiune site pentru calculator + Versiune site de desktop Adaugă în ecranul de start @@ -167,8 +167,8 @@ Scanează - - Motor de căutare + + Motor de căutare Setări pentru motorul de căutare @@ -1451,9 +1451,7 @@ Există un set de date de autentificare cu acest nume de utilizator - - Conectare cu un cont Firefox. - + Conectează alt dispozitiv. Te rugăm să te autentifici din nou. @@ -1474,13 +1472,4 @@ Ok, am înțeles - - - Comenzi rapide - - Căutare cu - - De data aceasta, caută cu: - - Afișează comenzile rapide pentru căutări diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 3253c226f..d70877b7f 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -65,7 +65,7 @@ - Ana ekranınızdan gizli sekme açmak için bir kısayol ekleyin. + Ana ekranınızdan gizli sekme açmak için kısayol ekleyebilirsiniz. Kısayol ekle diff --git a/app/src/main/res/values-uz/strings.xml b/app/src/main/res/values-uz/strings.xml index cff6609cd..ddc06b1a9 100644 --- a/app/src/main/res/values-uz/strings.xml +++ b/app/src/main/res/values-uz/strings.xml @@ -746,6 +746,13 @@ Varaqlar yopildi + + Bekor qilish + + Toʻliq ekran rejimiga oʻtmoqda + + Manzildan nusxa olindi + Koʻchirish tugadi From c4d32bd75ccc3cb440603b6814ae88efb491e913 Mon Sep 17 00:00:00 2001 From: Jeff Boek Date: Thu, 6 Aug 2020 15:49:01 -0700 Subject: [PATCH 02/10] For #13325 - Positions toolbar according to user preference --- .../searchdialog/SearchDialogFragment.kt | 22 +++++++++++++++++++ .../res/layout/fragment_search_dialog.xml | 4 +++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/mozilla/fenix/searchdialog/SearchDialogFragment.kt b/app/src/main/java/org/mozilla/fenix/searchdialog/SearchDialogFragment.kt index dad829902..241e51e03 100644 --- a/app/src/main/java/org/mozilla/fenix/searchdialog/SearchDialogFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/searchdialog/SearchDialogFragment.kt @@ -9,8 +9,13 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.appcompat.app.AppCompatDialogFragment +import androidx.constraintlayout.widget.ConstraintProperties.BOTTOM +import androidx.constraintlayout.widget.ConstraintProperties.PARENT_ID +import androidx.constraintlayout.widget.ConstraintProperties.TOP +import androidx.constraintlayout.widget.ConstraintSet import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs +import androidx.recyclerview.widget.LinearLayoutManager import kotlinx.android.synthetic.main.fragment_search.view.* import kotlinx.android.synthetic.main.fragment_search_dialog.* import kotlinx.coroutines.ExperimentalCoroutinesApi @@ -19,6 +24,7 @@ import mozilla.components.lib.state.ext.consumeFrom import mozilla.components.support.ktx.android.view.hideKeyboard import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.R +import org.mozilla.fenix.components.toolbar.ToolbarPosition import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.requireComponents import org.mozilla.fenix.ext.settings @@ -97,6 +103,22 @@ class SearchDialogFragment : AppCompatDialogFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + if (view.context.settings().toolbarPosition == ToolbarPosition.BOTTOM) { + ConstraintSet().apply { + clone(search_wrapper) + + clear(toolbar.id, TOP) + connect(toolbar.id, BOTTOM, PARENT_ID, BOTTOM) + + clear(scrollView.id, TOP) + clear(scrollView.id, BOTTOM) + connect(scrollView.id, TOP, PARENT_ID, TOP) + connect(scrollView.id, BOTTOM, toolbar.id, TOP) + + applyTo(search_wrapper) + } + } + consumeFrom(store) { awesomeBar?.visibility = if (it.query.isEmpty()) View.INVISIBLE else View.VISIBLE toolbarView.update(it) diff --git a/app/src/main/res/layout/fragment_search_dialog.xml b/app/src/main/res/layout/fragment_search_dialog.xml index faac704e3..83ad11ef1 100644 --- a/app/src/main/res/layout/fragment_search_dialog.xml +++ b/app/src/main/res/layout/fragment_search_dialog.xml @@ -2,7 +2,9 @@ - Date: Thu, 6 Aug 2020 16:51:58 -0700 Subject: [PATCH 03/10] For #13052 - When opening a new tab pre-open search --- app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt index 9f659f5ca..ad91e0330 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -383,8 +383,10 @@ class HomeFragment : Fragment() { } } + val args by navArgs() + if (view.context.settings().accessibilityServicesEnabled && - bundleArgs.getBoolean(FOCUS_ON_ADDRESS_BAR) + args.focusOnAddressBar ) { // We cannot put this in the fragment_home.xml file as it breaks tests view.toolbar_wrapper.isFocusableInTouchMode = true @@ -413,6 +415,10 @@ class HomeFragment : Fragment() { } updateTabCounter(requireComponents.core.store.state) + + if (args.focusOnAddressBar && requireContext().settings().useNewSearchExperience) { + navigateToSearch() + } } private fun removeAllTabsAndShowSnackbar(sessionCode: String) { From 682b0821000769645c84606857211f24fd671766 Mon Sep 17 00:00:00 2001 From: Jeff Boek Date: Thu, 6 Aug 2020 16:52:36 -0700 Subject: [PATCH 04/10] For #13052 - Bumps feature flag to Nightly builds as well --- app/src/main/java/org/mozilla/fenix/FeatureFlags.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/mozilla/fenix/FeatureFlags.kt b/app/src/main/java/org/mozilla/fenix/FeatureFlags.kt index 6ef25e4e2..c98f1b555 100644 --- a/app/src/main/java/org/mozilla/fenix/FeatureFlags.kt +++ b/app/src/main/java/org/mozilla/fenix/FeatureFlags.kt @@ -42,7 +42,7 @@ object FeatureFlags { /** * Enables the new search experience */ - val newSearchExperience = Config.channel.isDebug + val newSearchExperience = Config.channel.isNightlyOrDebug /** * Enables wait til first contentful paint From 06ba8a020062073281f19c846c6ec6135bc16b32 Mon Sep 17 00:00:00 2001 From: Jeff Boek Date: Thu, 6 Aug 2020 17:21:52 -0700 Subject: [PATCH 05/10] For #13053 - Handles common dismiss interactions --- .../searchdialog/SearchDialogFragment.kt | 33 +++++++++++++++---- .../res/layout/fragment_search_dialog.xml | 32 ++++++++---------- 2 files changed, 40 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/searchdialog/SearchDialogFragment.kt b/app/src/main/java/org/mozilla/fenix/searchdialog/SearchDialogFragment.kt index 241e51e03..41ca59eac 100644 --- a/app/src/main/java/org/mozilla/fenix/searchdialog/SearchDialogFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/searchdialog/SearchDialogFragment.kt @@ -4,6 +4,7 @@ package org.mozilla.fenix.searchdialog +import android.app.Dialog import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -15,12 +16,12 @@ import androidx.constraintlayout.widget.ConstraintProperties.TOP import androidx.constraintlayout.widget.ConstraintSet import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs -import androidx.recyclerview.widget.LinearLayoutManager import kotlinx.android.synthetic.main.fragment_search.view.* import kotlinx.android.synthetic.main.fragment_search_dialog.* import kotlinx.coroutines.ExperimentalCoroutinesApi import mozilla.components.browser.state.selector.findTab import mozilla.components.lib.state.ext.consumeFrom +import mozilla.components.support.base.feature.UserInteractionHandler import mozilla.components.support.ktx.android.view.hideKeyboard import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.R @@ -46,7 +47,7 @@ fun Settings.shouldShowSearchSuggestions(isPrivate: Boolean): Boolean { } } -class SearchDialogFragment : AppCompatDialogFragment() { +class SearchDialogFragment : AppCompatDialogFragment(), UserInteractionHandler { private lateinit var interactor: SearchDialogInteractor private lateinit var store: SearchDialogFragmentStore @@ -58,6 +59,14 @@ class SearchDialogFragment : AppCompatDialogFragment() { setStyle(STYLE_NO_TITLE, R.style.SearchDialogStyle) } + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + return object : Dialog(requireContext(), this.theme) { + override fun onBackPressed() { + this@SearchDialogFragment.onBackPressed() + } + } + } + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -110,15 +119,20 @@ class SearchDialogFragment : AppCompatDialogFragment() { clear(toolbar.id, TOP) connect(toolbar.id, BOTTOM, PARENT_ID, BOTTOM) - clear(scrollView.id, TOP) - clear(scrollView.id, BOTTOM) - connect(scrollView.id, TOP, PARENT_ID, TOP) - connect(scrollView.id, BOTTOM, toolbar.id, TOP) + clear(awesomeBar.id, TOP) + clear(awesomeBar.id, BOTTOM) + connect(awesomeBar.id, TOP, PARENT_ID, TOP) + connect(awesomeBar.id, BOTTOM, toolbar.id, TOP) applyTo(search_wrapper) } } + search_wrapper.setOnClickListener { + it.hideKeyboard() + dismissAllowingStateLoss() + } + consumeFrom(store) { awesomeBar?.visibility = if (it.query.isEmpty()) View.INVISIBLE else View.VISIBLE toolbarView.update(it) @@ -126,6 +140,13 @@ class SearchDialogFragment : AppCompatDialogFragment() { } } + override fun onBackPressed(): Boolean { + view?.hideKeyboard() + dismissAllowingStateLoss() + + return true + } + private fun setUpState(): SearchFragmentState { val activity = activity as HomeActivity val settings = activity.settings() diff --git a/app/src/main/res/layout/fragment_search_dialog.xml b/app/src/main/res/layout/fragment_search_dialog.xml index 83ad11ef1..4a2abe039 100644 --- a/app/src/main/res/layout/fragment_search_dialog.xml +++ b/app/src/main/res/layout/fragment_search_dialog.xml @@ -8,6 +8,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" + android:background="?attr/scrimBackground" xmlns:app="http://schemas.android.com/apk/res-auto"> - - - + mozac:awesomeBarChipBackgroundColor="@color/photonGreen50" + mozac:awesomeBarDescriptionTextColor="?secondaryText" + mozac:awesomeBarTitleTextColor="?primaryText" /> From dbc1001d0346b3fb5515d0b2ca6cecfa367b6114 Mon Sep 17 00:00:00 2001 From: MickeyMoz Date: Thu, 6 Aug 2020 14:09:14 +0000 Subject: [PATCH 06/10] Update Android Components version to 54.0.20200806130142. --- buildSrc/src/main/java/AndroidComponents.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/main/java/AndroidComponents.kt b/buildSrc/src/main/java/AndroidComponents.kt index 2c41963a7..17ed23af3 100644 --- a/buildSrc/src/main/java/AndroidComponents.kt +++ b/buildSrc/src/main/java/AndroidComponents.kt @@ -3,5 +3,5 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ object AndroidComponents { - const val VERSION = "53.0.20200804130112" + const val VERSION = "54.0.20200806130142" } From a1b7e61d36a323bc0ef93df6b7d40fac660cc3f4 Mon Sep 17 00:00:00 2001 From: Matthew Finkel Date: Thu, 6 Aug 2020 19:05:07 +0000 Subject: [PATCH 07/10] For #13361: Prevent Sentry usage behind isSentryEnabled --- app/src/main/java/org/mozilla/fenix/components/Core.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/mozilla/fenix/components/Core.kt b/app/src/main/java/org/mozilla/fenix/components/Core.kt index d6ecf2c16..8df2e3f56 100644 --- a/app/src/main/java/org/mozilla/fenix/components/Core.kt +++ b/app/src/main/java/org/mozilla/fenix/components/Core.kt @@ -272,7 +272,8 @@ class Core(private val context: Context) { private val passwordsEncryptionKey by lazy { getSecureAbove22Preferences().getString(PASSWORDS_KEY) ?: generateEncryptionKey(KEY_STRENGTH).also { - if (context.settings().passwordsEncryptionKeyGenerated) { + if (context.settings().passwordsEncryptionKeyGenerated && + isSentryEnabled()) { // We already had previously generated an encryption key, but we have lost it Sentry.capture("Passwords encryption key for passwords storage was lost and we generated a new one") } From acbce3dcc26a3ea6ec693ffacffc78f794ef0eb5 Mon Sep 17 00:00:00 2001 From: Tiger Oakes Date: Fri, 7 Aug 2020 15:39:06 -0700 Subject: [PATCH 08/10] Closes #13404: Update github checks URL (#13407) --- build.gradle | 6 +++--- .../mozilla/fenix/gradle/tasks/GithubDetailsTask.kt | 13 ++----------- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/build.gradle b/build.gradle index 9f00fff0f..a236dc191 100644 --- a/build.gradle +++ b/build.gradle @@ -190,13 +190,13 @@ tasks.register("listRepositories") { } tasks.register("githubTestDetails", GithubDetailsTask) { - text = "### [Unit Test Results](/reports/test/testGeckoNightlyDebugUnitTest/index.html)" + text = "### [Unit Test Results]({reportsUrl}/test/testDebugUnitTest/index.html)" } tasks.register("githubLintDetektDetails", GithubDetailsTask) { - text = "### [Detekt Results](/reports/detekt.html)" + text = "### [Detekt Results]({reportsUrl}/detekt.html)" } tasks.register("githubLintAndroidDetails", GithubDetailsTask) { - text = "### [Android Lint Results](/reports/lint-results-geckoNightlyDebug.html)" + text = "### [Android Lint Results]({reportsUrl}/lint-results-geckoNightlyDebug.html)" } diff --git a/buildSrc/src/main/java/org/mozilla/fenix/gradle/tasks/GithubDetailsTask.kt b/buildSrc/src/main/java/org/mozilla/fenix/gradle/tasks/GithubDetailsTask.kt index 33ca353f6..16dccbcce 100644 --- a/buildSrc/src/main/java/org/mozilla/fenix/gradle/tasks/GithubDetailsTask.kt +++ b/buildSrc/src/main/java/org/mozilla/fenix/gradle/tasks/GithubDetailsTask.kt @@ -26,20 +26,11 @@ open class GithubDetailsTask : DefaultTask() { private val detailsFile = File("/builds/worker/github/customCheckRunText.md") private val suffix = "\n\n_(404 if compilation failed)_" - /** - * Captures the link name and URL in a markdown link. - * i.e. "### [Hello](/world.html)" -> "/world.html" - */ - private val markdownLinkRegex = """\[(.*)]\((.*)\)""".toRegex() - @TaskAction fun writeFile() { val taskId = System.getenv("TASK_ID") - val url = "https://firefoxci.taskcluster-artifacts.net/$taskId/0/public" - val replaced = text.replace(markdownLinkRegex) { match -> - val (_, linkName, linkUrl) = match.groupValues - "[$linkName](${url + linkUrl})" - } + val reportsUrl = "https://firefoxci.taskcluster-artifacts.net/$taskId/0/public/reports" + val replaced = text.replace("{reportsUrl}", reportsUrl) project.mkdir("/builds/worker/github") detailsFile.writeText(replaced + suffix) From bee2ae6c8380bdad2ca88a4b91b1b45be6b850cd Mon Sep 17 00:00:00 2001 From: Kirill Rakhman Date: Thu, 6 Aug 2020 18:02:43 +0200 Subject: [PATCH 09/10] Closes #8043 Hook up AwesomeBarView.setOnEditSuggestionListener --- app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt b/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt index e9882c3dc..bae126a1e 100644 --- a/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt @@ -173,6 +173,8 @@ class SearchFragment : Fragment(), UserInteractionHandler { ) ) + awesomeBarView.view.setOnEditSuggestionListener(toolbarView.view::setSearchTerms) + val urlView = toolbarView.view .findViewById(R.id.mozac_browser_toolbar_edit_url_view) urlView?.importantForAccessibility = View.IMPORTANT_FOR_ACCESSIBILITY_NO From 9568bdaed83b00d73f3755c1919b60cfa89ba8ca Mon Sep 17 00:00:00 2001 From: Jonathan Almeida Date: Thu, 6 Aug 2020 13:51:48 -0400 Subject: [PATCH 10/10] Update Android Components and fix breaking tests --- .../fenix/search/toolbar/ToolbarView.kt | 9 ++++++++- .../fenix/search/toolbar/ToolbarViewTest.kt | 19 +++++++++++++++---- buildSrc/src/main/java/AndroidComponents.kt | 2 +- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/search/toolbar/ToolbarView.kt b/app/src/main/java/org/mozilla/fenix/search/toolbar/ToolbarView.kt index 09d4fa2c9..79f11acf1 100644 --- a/app/src/main/java/org/mozilla/fenix/search/toolbar/ToolbarView.kt +++ b/app/src/main/java/org/mozilla/fenix/search/toolbar/ToolbarView.kt @@ -126,7 +126,14 @@ class ToolbarView( /* Only set the search terms if pasted text is null so that the search term doesn't overwrite pastedText when view enters `editMode` */ if (searchState.pastedText.isNullOrEmpty()) { - view.setSearchTerms(searchState.searchTerms) + // If we're in edit mode, setting the search term will update the toolbar, + // so we make sure we have the correct term/query to show. + val termOrQuery = if (searchState.searchTerms.isNotEmpty()) { + searchState.searchTerms + } else { + searchState.query + } + view.setSearchTerms(termOrQuery) } // We must trigger an onTextChanged so when search terms are set when transitioning to `editMode` diff --git a/app/src/test/java/org/mozilla/fenix/search/toolbar/ToolbarViewTest.kt b/app/src/test/java/org/mozilla/fenix/search/toolbar/ToolbarViewTest.kt index 3f8c9c449..42aa2c781 100644 --- a/app/src/test/java/org/mozilla/fenix/search/toolbar/ToolbarViewTest.kt +++ b/app/src/test/java/org/mozilla/fenix/search/toolbar/ToolbarViewTest.kt @@ -106,15 +106,26 @@ class ToolbarViewTest { view.update(defaultState) view.update(defaultState) - verify(exactly = 1) { toolbar.url = any() } verify(exactly = 1) { toolbar.setSearchTerms(any()) } - verify(exactly = 1) { interactor.onTextChanged(any()) } - // editMode gets called when the view is initialized. So it is called twice in this test - verify(exactly = 2) { toolbar.editMode() } assertTrue(view.isInitialized) } + @Test + fun `search term updates the url`() { + val view = buildToolbarView(false) + + view.update(defaultState) + view.update(defaultState) + view.update(defaultState) + + // editMode gets called when the view is initialized. + verify(exactly = 2) { toolbar.editMode() } + // search term changes update the url and invoke the interactor. + verify(exactly = 2) { toolbar.url = any() } + verify(exactly = 2) { interactor.onTextChanged(any()) } + } + @Test fun `URL gets set to the states query`() { val toolbarView = buildToolbarView(false) diff --git a/buildSrc/src/main/java/AndroidComponents.kt b/buildSrc/src/main/java/AndroidComponents.kt index 17ed23af3..110302299 100644 --- a/buildSrc/src/main/java/AndroidComponents.kt +++ b/buildSrc/src/main/java/AndroidComponents.kt @@ -3,5 +3,5 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ object AndroidComponents { - const val VERSION = "54.0.20200806130142" + const val VERSION = "54.0.20200807130552" }