Copione merged onto master
continuous-integration/drone/push Build is failing
Details
continuous-integration/drone/push Build is failing
Details
commit
5517aeb98a
|
@ -9,11 +9,11 @@
|
|||
<a href="generic3.html">Link 3</a>
|
||||
<p>
|
||||
<a href="../resources/rabbit.jpg">
|
||||
<img src="../resources/rabbit.jpg" title="test_link_image">
|
||||
<img src="../resources/rabbit.jpg" alt="test_link_image">
|
||||
</a>
|
||||
</p>
|
||||
<p>
|
||||
<img src="../resources/rabbit.jpg" title="test_no_link_image">
|
||||
<img src="../resources/rabbit.jpg" alt="test_no_link_image">
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -13,11 +13,8 @@ import mozilla.components.service.fxa.ServerConfig
|
|||
*/
|
||||
|
||||
object FxaServer {
|
||||
const val CLIENT_ID = "a2270f727f45f648"
|
||||
const val REDIRECT_URL = "https://accounts.stage.mozaws.net/oauth/success/$CLIENT_ID"
|
||||
|
||||
@Suppress("UNUSED_PARAMETER")
|
||||
fun redirectUrl(context: Context) = REDIRECT_URL
|
||||
private const val CLIENT_ID = "a2270f727f45f648"
|
||||
const val REDIRECT_URL = "urn:ietf:wg:oauth:2.0:oob:oauth-redirect-webchannel"
|
||||
|
||||
@Suppress("UNUSED_PARAMETER")
|
||||
fun config(context: Context): ServerConfig {
|
||||
|
|
|
@ -7,7 +7,5 @@ object Constants {
|
|||
const val GOOGLE_APPS_PHOTOS = "com.google.android.apps.photos"
|
||||
}
|
||||
|
||||
object LongClickDuration {
|
||||
const val LONG_CLICK_DURATION: Long = 5000
|
||||
}
|
||||
const val LONG_CLICK_DURATION: Long = 5000
|
||||
}
|
||||
|
|
|
@ -63,10 +63,12 @@ class SyncIntegrationTest {
|
|||
signInFxSync()
|
||||
tapReturnToPreviousApp()
|
||||
// Let's wait until homescreen is shown to go to three dot menu
|
||||
mDevice.waitNotNull(Until.findObjects(By.text("Open tabs")), TestAssetHelper.waitingTime)
|
||||
TestAssetHelper.waitingTime
|
||||
mDevice.waitNotNull(Until.findObjects(By.res("org.mozilla.fenix.debug:id/counter_root")))
|
||||
homeScreen {
|
||||
}.openThreeDotMenu {
|
||||
}.openHistory { }
|
||||
}.openHistory {
|
||||
}
|
||||
historyAfterSyncIsShown()
|
||||
}
|
||||
|
||||
|
@ -221,8 +223,10 @@ class SyncIntegrationTest {
|
|||
mDevice.waitNotNull(Until.findObjects(By.text("Save")), TestAssetHelper.waitingTime)
|
||||
mDevice.waitNotNull(Until.findObjects(By.text("Settings")), TestAssetHelper.waitingTime)
|
||||
|
||||
// Wait until the Settings shows the account synced
|
||||
/* Wait until the Settings shows the account synced */
|
||||
mDevice.waitNotNull(Until.findObjects(By.text("Account")), TestAssetHelper.waitingTime)
|
||||
mDevice.waitNotNull(Until.findObjects(By.res("org.mozilla.fenix.debug:id/email")), TestAssetHelper.waitingTime)
|
||||
TestAssetHelper.waitingTime
|
||||
// Go to Homescreen
|
||||
mDevice.pressBack()
|
||||
}
|
||||
|
|
|
@ -53,7 +53,6 @@ class ContextMenusTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
@Ignore("Disabling because of intermittent failures https://github.com/mozilla-mobile/fenix/issues/8663")
|
||||
fun verifyContextOpenLinkNewTab() {
|
||||
val pageLinks =
|
||||
TestAssetHelper.getGenericAsset(mockWebServer, 4)
|
||||
|
@ -75,7 +74,6 @@ class ContextMenusTest {
|
|||
}
|
||||
}
|
||||
|
||||
@Ignore("Intermittent failure - https://github.com/mozilla-mobile/fenix/issues/10586")
|
||||
@Test
|
||||
fun verifyContextOpenLinkPrivateTab() {
|
||||
val pageLinks =
|
||||
|
@ -98,7 +96,6 @@ class ContextMenusTest {
|
|||
}
|
||||
}
|
||||
|
||||
@Ignore("Intermittent failure - https://github.com/mozilla-mobile/fenix/issues/8832")
|
||||
@Test
|
||||
fun verifyContextCopyLink() {
|
||||
val pageLinks =
|
||||
|
@ -119,7 +116,6 @@ class ContextMenusTest {
|
|||
}
|
||||
}
|
||||
|
||||
@Ignore("Intermittent failure - https://github.com/mozilla-mobile/fenix/issues/10586")
|
||||
@Test
|
||||
fun verifyContextShareLink() {
|
||||
val pageLinks =
|
||||
|
@ -136,7 +132,6 @@ class ContextMenusTest {
|
|||
}
|
||||
}
|
||||
|
||||
@Ignore("Temp disable intermittent failure - https://github.com/mozilla-mobile/fenix/issues/7687")
|
||||
@Test
|
||||
fun verifyContextOpenImageNewTab() {
|
||||
val pageLinks =
|
||||
|
@ -156,8 +151,8 @@ class ContextMenusTest {
|
|||
}
|
||||
}
|
||||
|
||||
@Ignore("Temp disable intermittent failure - https://github.com/mozilla-mobile/fenix/issues/7687")
|
||||
@Test
|
||||
@Ignore("Disabled – Google Keyboard Clipboard overlay blocks the address bar: https://github.com/mozilla-mobile/fenix/issues/10586")
|
||||
fun verifyContextCopyImageLocation() {
|
||||
val pageLinks =
|
||||
TestAssetHelper.getGenericAsset(mockWebServer, 4)
|
||||
|
@ -177,7 +172,6 @@ class ContextMenusTest {
|
|||
}
|
||||
}
|
||||
|
||||
@Ignore("Temp disable intermittent failure - https://github.com/mozilla-mobile/fenix/issues/7666")
|
||||
@Test
|
||||
fun verifyContextSaveImage() {
|
||||
val pageLinks =
|
||||
|
@ -202,7 +196,6 @@ class ContextMenusTest {
|
|||
}
|
||||
}
|
||||
|
||||
@Ignore("Temp disable intermittent failure - https://github.com/mozilla-mobile/fenix/issues/7693")
|
||||
@Test
|
||||
fun verifyContextMixedVariations() {
|
||||
val pageLinks =
|
||||
|
@ -217,12 +210,12 @@ class ContextMenusTest {
|
|||
// verifyPageContent(pageLinks.content)
|
||||
longClickMatchingText("Link 1")
|
||||
verifyLinkContextMenuItems(genericURL.url)
|
||||
mDevice.pressBack()
|
||||
dismissContentContextMenu(genericURL.url)
|
||||
longClickMatchingText("test_link_image")
|
||||
verifyLinkImageContextMenuItems(imageResource.url)
|
||||
mDevice.pressBack()
|
||||
dismissContentContextMenu(imageResource.url)
|
||||
longClickMatchingText("test_no_link_image")
|
||||
verifyNoLinkImageContextMenuItems("test_no_link_image")
|
||||
verifyNoLinkImageContextMenuItems(imageResource.url)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -123,7 +123,6 @@ class SettingsBasicsTest {
|
|||
}
|
||||
}
|
||||
|
||||
@Ignore("Currently failing on firebase: https://github.com/mozilla-mobile/fenix/issues/8747")
|
||||
@Test
|
||||
fun toggleShowVisitedSitesAndBookmarks() {
|
||||
// Bookmarks a few websites, toggles the history and bookmarks setting to off, then verifies if the visited and bookmarked websites do not show in the suggestions.
|
||||
|
|
|
@ -16,9 +16,11 @@ import androidx.test.espresso.assertion.ViewAssertions.matches
|
|||
import androidx.test.espresso.intent.Intents
|
||||
import androidx.test.espresso.intent.matcher.BundleMatchers
|
||||
import androidx.test.espresso.intent.matcher.IntentMatchers
|
||||
import androidx.test.espresso.matcher.RootMatchers.isDialog
|
||||
import androidx.test.espresso.matcher.ViewMatchers
|
||||
import androidx.test.espresso.matcher.ViewMatchers.isCompletelyDisplayed
|
||||
import androidx.test.espresso.matcher.ViewMatchers.Visibility
|
||||
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
|
||||
import androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility
|
||||
import androidx.test.espresso.matcher.ViewMatchers.withId
|
||||
import androidx.test.espresso.matcher.ViewMatchers.withText
|
||||
|
@ -34,7 +36,7 @@ import org.hamcrest.CoreMatchers.containsString
|
|||
import org.junit.Assert.assertTrue
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.Constants.LongClickDuration
|
||||
import org.mozilla.fenix.helpers.Constants.LONG_CLICK_DURATION
|
||||
import org.mozilla.fenix.helpers.TestAssetHelper
|
||||
import org.mozilla.fenix.helpers.TestAssetHelper.waitingTime
|
||||
import org.mozilla.fenix.helpers.TestAssetHelper.waitingTimeShort
|
||||
|
@ -165,9 +167,9 @@ class BrowserRobot {
|
|||
verifyMenuButton()
|
||||
}
|
||||
|
||||
fun verifyNoLinkImageContextMenuItems(containsTitle: String) {
|
||||
fun verifyNoLinkImageContextMenuItems(containsURL: Uri) {
|
||||
val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
||||
mDevice.waitNotNull(Until.findObject(By.textContains(containsTitle)))
|
||||
mDevice.waitNotNull(Until.findObject(By.textContains(containsURL.toString())))
|
||||
mDevice.waitNotNull(
|
||||
Until.findObject(text("Open image in new tab")),
|
||||
waitingTime
|
||||
|
@ -178,6 +180,13 @@ class BrowserRobot {
|
|||
)
|
||||
}
|
||||
|
||||
fun dismissContentContextMenu(containsURL: Uri) {
|
||||
onView(withText(containsURL.toString()))
|
||||
.inRoot(isDialog())
|
||||
.check(matches(isDisplayed()))
|
||||
.perform(ViewActions.pressBack())
|
||||
}
|
||||
|
||||
fun clickEnhancedTrackingProtectionPanel() = enhancedTrackingProtectionPanel().click()
|
||||
|
||||
fun clickContextOpenLinkInNewTab() {
|
||||
|
@ -291,7 +300,7 @@ class BrowserRobot {
|
|||
mDevice.waitNotNull(Until.findObject(text(expectedText)), waitingTime)
|
||||
|
||||
val element = mDevice.findObject(text(expectedText))
|
||||
element.click(LongClickDuration.LONG_CLICK_DURATION)
|
||||
element.click(LONG_CLICK_DURATION)
|
||||
}
|
||||
|
||||
fun snackBarButtonClick(expectedText: String) {
|
||||
|
|
|
@ -123,7 +123,7 @@ private fun clickDownloadButton() =
|
|||
onView(withText("Download")).inRoot(isDialog()).check(matches(isDisplayed()))
|
||||
|
||||
private fun clickOpenButton() =
|
||||
onView(withId(R.id.download_dialog_action_button)).inRoot(isDialog()).check(
|
||||
onView(withId(R.id.download_dialog_action_button)).check(
|
||||
matches(isDisplayed())
|
||||
)
|
||||
|
||||
|
|
|
@ -116,6 +116,7 @@ private fun assertCurrentTimestamp() {
|
|||
}
|
||||
|
||||
private fun assertWhatIsNewInFirefoxPreview() {
|
||||
|
||||
if (!onView(withText("What’s new in Firefox Preview")).isVisibleForUser()) {
|
||||
onView(withId(R.id.about_layout)).perform(ViewActions.swipeUp())
|
||||
}
|
||||
|
@ -124,11 +125,13 @@ private fun assertWhatIsNewInFirefoxPreview() {
|
|||
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||
.perform(click())
|
||||
|
||||
// Commenting out since the Text to verify in the web site seems to be different now
|
||||
/*
|
||||
TestHelper.verifyUrl(
|
||||
SupportUtils.SumoTopic.WHATS_NEW.topicStr,
|
||||
"org.mozilla.fenix.debug:id/mozac_browser_toolbar_url_view",
|
||||
R.id.mozac_browser_toolbar_url_view
|
||||
)
|
||||
SupportUtils.SumoTopic.WHATS_NEW.topicStr,
|
||||
"org.mozilla.fenix.debug:id/mozac_browser_toolbar_url_view",
|
||||
R.id.mozac_browser_toolbar_url_view
|
||||
)*/
|
||||
|
||||
Espresso.pressBack()
|
||||
}
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -10,7 +10,6 @@ import mozilla.components.concept.storage.LoginsStorage
|
|||
import mozilla.components.lib.crash.handler.CrashHandlerService
|
||||
import mozilla.components.service.sync.logins.GeckoLoginStorageDelegate
|
||||
import org.mozilla.fenix.Config
|
||||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.utils.Settings
|
||||
import org.mozilla.geckoview.GeckoRuntime
|
||||
import org.mozilla.geckoview.GeckoRuntimeSettings
|
||||
|
@ -56,11 +55,7 @@ object GeckoProvider {
|
|||
}
|
||||
|
||||
val geckoRuntime = GeckoRuntime.create(context, runtimeSettings)
|
||||
// As a quick fix for #8967 we are conflating "should autofill" with "should save logins"
|
||||
val loginStorageDelegate = GeckoLoginStorageDelegate(
|
||||
storage,
|
||||
{ context.settings().shouldPromptToSaveLogins }
|
||||
)
|
||||
val loginStorageDelegate = GeckoLoginStorageDelegate(storage)
|
||||
geckoRuntime.loginStorageDelegate = GeckoLoginDelegateWrapper(loginStorageDelegate)
|
||||
|
||||
return geckoRuntime
|
||||
|
|
|
@ -55,7 +55,7 @@ object GeckoProvider {
|
|||
}
|
||||
|
||||
val geckoRuntime = GeckoRuntime.create(context, runtimeSettings)
|
||||
val loginStorageDelegate = GeckoLoginStorageDelegate(storage, { true })
|
||||
val loginStorageDelegate = GeckoLoginStorageDelegate(storage)
|
||||
geckoRuntime.loginStorageDelegate = GeckoLoginDelegateWrapper(loginStorageDelegate)
|
||||
|
||||
return geckoRuntime
|
||||
|
|
|
@ -466,8 +466,9 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
|
|||
|
||||
sessionFeature.set(
|
||||
feature = SessionFeature(
|
||||
sessionManager,
|
||||
SessionUseCases(sessionManager),
|
||||
requireComponents.core.store,
|
||||
requireComponents.useCases.sessionUseCases.goBack,
|
||||
requireComponents.useCases.engineSessionUseCases,
|
||||
view.engineView,
|
||||
customTabSessionId
|
||||
),
|
||||
|
@ -517,7 +518,7 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
|
|||
|
||||
fullScreenFeature.set(
|
||||
feature = FullScreenFeature(
|
||||
sessionManager,
|
||||
requireComponents.core.store,
|
||||
SessionUseCases(sessionManager),
|
||||
customTabSessionId,
|
||||
::viewportFitChange,
|
||||
|
@ -563,7 +564,7 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
|
|||
view.swipeRefresh.setColorSchemeColors(primaryTextColor)
|
||||
swipeRefreshFeature.set(
|
||||
feature = SwipeRefreshFeature(
|
||||
sessionManager,
|
||||
requireComponents.core.store,
|
||||
context.components.useCases.sessionUseCases.reload,
|
||||
view.swipeRefresh,
|
||||
customTabSessionId
|
||||
|
|
|
@ -51,8 +51,7 @@ class Components(private val context: Context) {
|
|||
core.sessionManager,
|
||||
core.store,
|
||||
search.searchEngineManager,
|
||||
core.webAppShortcutManager,
|
||||
core.thumbnailStorage
|
||||
core.webAppShortcutManager
|
||||
)
|
||||
}
|
||||
val intentProcessors by lazy {
|
||||
|
|
|
@ -7,8 +7,8 @@ package org.mozilla.fenix.components
|
|||
import android.content.Context
|
||||
import mozilla.components.browser.search.SearchEngineManager
|
||||
import mozilla.components.browser.session.SessionManager
|
||||
import mozilla.components.browser.session.usecases.EngineSessionUseCases
|
||||
import mozilla.components.browser.state.store.BrowserStore
|
||||
import mozilla.components.browser.thumbnails.storage.ThumbnailStorage
|
||||
import mozilla.components.concept.engine.Engine
|
||||
import mozilla.components.feature.app.links.AppLinksUseCases
|
||||
import mozilla.components.feature.contextmenu.ContextMenuUseCases
|
||||
|
@ -32,8 +32,7 @@ class UseCases(
|
|||
private val sessionManager: SessionManager,
|
||||
private val store: BrowserStore,
|
||||
private val searchEngineManager: SearchEngineManager,
|
||||
private val shortcutManager: WebAppShortcutManager,
|
||||
private val thumbnailStorage: ThumbnailStorage
|
||||
private val shortcutManager: WebAppShortcutManager
|
||||
) {
|
||||
/**
|
||||
* Use cases that provide engine interactions for a given browser session.
|
||||
|
@ -53,7 +52,7 @@ class UseCases(
|
|||
/**
|
||||
* Use cases that provide settings management.
|
||||
*/
|
||||
val settingsUseCases by lazy { SettingsUseCases(engine, sessionManager) }
|
||||
val settingsUseCases by lazy { SettingsUseCases(engine, store) }
|
||||
|
||||
val appLinksUseCases by lazy { AppLinksUseCases(context.applicationContext) }
|
||||
|
||||
|
@ -64,4 +63,6 @@ class UseCases(
|
|||
val downloadUseCases by lazy { DownloadsUseCases(store) }
|
||||
|
||||
val contextMenuUseCases by lazy { ContextMenuUseCases(sessionManager, store) }
|
||||
|
||||
val engineSessionUseCases by lazy { EngineSessionUseCases(sessionManager) }
|
||||
}
|
||||
|
|
|
@ -69,7 +69,7 @@ class DefaultSearchController(
|
|||
private fun openSearchOrUrl(url: String) {
|
||||
activity.openToBrowserAndLoad(
|
||||
searchTermOrURL = url,
|
||||
newTab = store.state.session == null,
|
||||
newTab = store.state.tabId == null,
|
||||
from = BrowserDirection.FromSearch,
|
||||
engine = store.state.searchEngineSource.searchEngine
|
||||
)
|
||||
|
@ -103,8 +103,8 @@ class DefaultSearchController(
|
|||
override fun handleTextChanged(text: String) {
|
||||
val settings = activity.settings()
|
||||
// Display the search shortcuts on each entry of the search fragment (see #5308)
|
||||
val textMatchesCurrentUrl = store.state.session?.url ?: "" == text
|
||||
val textMatchesCurrentSearch = store.state.session?.searchTerms ?: "" == text
|
||||
val textMatchesCurrentUrl = store.state.url == text
|
||||
val textMatchesCurrentSearch = store.state.searchTerms == text
|
||||
|
||||
store.dispatch(SearchFragmentAction.UpdateQuery(text))
|
||||
store.dispatch(
|
||||
|
@ -126,7 +126,7 @@ class DefaultSearchController(
|
|||
override fun handleUrlTapped(url: String) {
|
||||
activity.openToBrowserAndLoad(
|
||||
searchTermOrURL = url,
|
||||
newTab = store.state.session == null,
|
||||
newTab = store.state.tabId == null,
|
||||
from = BrowserDirection.FromSearch
|
||||
)
|
||||
|
||||
|
@ -138,7 +138,7 @@ class DefaultSearchController(
|
|||
|
||||
activity.openToBrowserAndLoad(
|
||||
searchTermOrURL = searchTerms,
|
||||
newTab = store.state.session == null,
|
||||
newTab = store.state.tabId == null,
|
||||
from = BrowserDirection.FromSearch,
|
||||
engine = store.state.searchEngineSource.searchEngine,
|
||||
forceSearch = true
|
||||
|
|
|
@ -30,6 +30,7 @@ import kotlinx.android.synthetic.main.fragment_search.*
|
|||
import kotlinx.android.synthetic.main.fragment_search.view.*
|
||||
import kotlinx.android.synthetic.main.search_suggestions_onboarding.view.*
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import mozilla.components.browser.state.selector.findTab
|
||||
import mozilla.components.browser.toolbar.BrowserToolbar
|
||||
import mozilla.components.concept.storage.HistoryStorage
|
||||
import mozilla.components.feature.qr.QrFeature
|
||||
|
@ -86,11 +87,12 @@ class SearchFragment : Fragment(), UserInteractionHandler {
|
|||
): View? {
|
||||
val activity = activity as HomeActivity
|
||||
val args by navArgs<SearchFragmentArgs>()
|
||||
val session = args.sessionId
|
||||
?.let(requireComponents.core.sessionManager::findSessionById)
|
||||
|
||||
val tabId = args.sessionId
|
||||
val tab = tabId?.let { requireComponents.core.store.state.findTab(it) }
|
||||
|
||||
val view = inflater.inflate(R.layout.fragment_search, container, false)
|
||||
val url = session?.url.orEmpty()
|
||||
val url = tab?.content?.url.orEmpty()
|
||||
val currentSearchEngine = SearchEngineSource.Default(
|
||||
requireComponents.search.provider.getDefaultEngine(requireContext())
|
||||
)
|
||||
|
@ -103,6 +105,8 @@ class SearchFragment : Fragment(), UserInteractionHandler {
|
|||
SearchFragmentStore(
|
||||
SearchFragmentState(
|
||||
query = url,
|
||||
url = url,
|
||||
searchTerms = tab?.content?.searchTerms.orEmpty(),
|
||||
searchEngineSource = currentSearchEngine,
|
||||
defaultEngineSource = currentSearchEngine,
|
||||
showSearchSuggestions = shouldShowSearchSuggestions(isPrivate),
|
||||
|
@ -111,7 +115,7 @@ class SearchFragment : Fragment(), UserInteractionHandler {
|
|||
showClipboardSuggestions = requireContext().settings().shouldShowClipboardSuggestions,
|
||||
showHistorySuggestions = requireContext().settings().shouldShowHistorySuggestions,
|
||||
showBookmarkSuggestions = requireContext().settings().shouldShowBookmarkSuggestions,
|
||||
session = session,
|
||||
tabId = tabId,
|
||||
pastedText = args.pastedText,
|
||||
searchAccessPoint = args.searchAccessPoint
|
||||
)
|
||||
|
@ -234,7 +238,7 @@ class SearchFragment : Fragment(), UserInteractionHandler {
|
|||
(activity as HomeActivity)
|
||||
.openToBrowserAndLoad(
|
||||
searchTermOrURL = result,
|
||||
newTab = searchStore.state.session == null,
|
||||
newTab = searchStore.state.tabId == null,
|
||||
from = BrowserDirection.FromSearch
|
||||
)
|
||||
dialog.dismiss()
|
||||
|
@ -265,7 +269,7 @@ class SearchFragment : Fragment(), UserInteractionHandler {
|
|||
searchTermOrURL = SupportUtils.getGenericSumoURLForTopic(
|
||||
SupportUtils.SumoTopic.SEARCH_SUGGESTION
|
||||
),
|
||||
newTab = searchStore.state.session == null,
|
||||
newTab = searchStore.state.tabId == null,
|
||||
from = BrowserDirection.FromSearch
|
||||
)
|
||||
}
|
||||
|
@ -298,7 +302,7 @@ class SearchFragment : Fragment(), UserInteractionHandler {
|
|||
(activity as HomeActivity)
|
||||
.openToBrowserAndLoad(
|
||||
searchTermOrURL = requireContext().components.clipboardHandler.url ?: "",
|
||||
newTab = searchStore.state.session == null,
|
||||
newTab = searchStore.state.tabId == null,
|
||||
from = BrowserDirection.FromSearch
|
||||
)
|
||||
}
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
package org.mozilla.fenix.search
|
||||
|
||||
import mozilla.components.browser.search.SearchEngine
|
||||
import mozilla.components.browser.session.Session
|
||||
import mozilla.components.lib.state.Action
|
||||
import mozilla.components.lib.state.State
|
||||
import mozilla.components.lib.state.Store
|
||||
|
@ -34,6 +33,9 @@ sealed class SearchEngineSource {
|
|||
/**
|
||||
* The state for the Search Screen
|
||||
* @property query The current search query string
|
||||
* @property url The current URL of the tab (if this fragment is shown for an already existing tab)
|
||||
* @property searchTerms The search terms used to search previously in this tab (if this fragment is shown
|
||||
* for an already existing tab)
|
||||
* @property searchEngineSource The current selected search engine with the context of how it was selected
|
||||
* @property defaultEngineSource The current default search engine source
|
||||
* @property showSearchSuggestions Whether or not to show search suggestions from the search engine in the AwesomeBar
|
||||
|
@ -42,11 +44,12 @@ sealed class SearchEngineSource {
|
|||
* @property showClipboardSuggestions Whether or not to show clipboard suggestion in the AwesomeBar
|
||||
* @property showHistorySuggestions Whether or not to show history suggestions in the AwesomeBar
|
||||
* @property showBookmarkSuggestions Whether or not to show the bookmark suggestion in the AwesomeBar
|
||||
* @property session The current session if available
|
||||
* @property pastedText The text pasted from the long press toolbar menu
|
||||
*/
|
||||
data class SearchFragmentState(
|
||||
val query: String,
|
||||
val url: String,
|
||||
val searchTerms: String,
|
||||
val searchEngineSource: SearchEngineSource,
|
||||
val defaultEngineSource: SearchEngineSource.Default,
|
||||
val showSearchSuggestions: Boolean,
|
||||
|
@ -55,7 +58,7 @@ data class SearchFragmentState(
|
|||
val showClipboardSuggestions: Boolean,
|
||||
val showHistorySuggestions: Boolean,
|
||||
val showBookmarkSuggestions: Boolean,
|
||||
val session: Session?,
|
||||
val tabId: String?,
|
||||
val pastedText: String? = null,
|
||||
val searchAccessPoint: Event.PerformedSearch.SearchAccessPoint?
|
||||
) : State
|
||||
|
|
|
@ -198,7 +198,7 @@ class AwesomeBarView(
|
|||
updateSuggestionProvidersVisibility(state)
|
||||
|
||||
// Do not make suggestions based on user's current URL unless it's a search shortcut
|
||||
if (state.query == state.session?.url && !state.showSearchShortcuts) {
|
||||
if (state.query == state.url && !state.showSearchShortcuts) {
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
@ -125,7 +125,7 @@ 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.session?.searchTerms.orEmpty())
|
||||
view.setSearchTerms(searchState.searchTerms)
|
||||
}
|
||||
|
||||
// We must trigger an onTextChanged so when search terms are set when transitioning to `editMode`
|
||||
|
|
|
@ -30,7 +30,6 @@ import mozilla.components.concept.sync.AuthType
|
|||
import mozilla.components.concept.sync.OAuthAccount
|
||||
import mozilla.components.service.fxa.SyncEngine
|
||||
import mozilla.components.service.fxa.manager.SyncEnginesStorage
|
||||
import org.mozilla.fenix.Config
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.components.metrics.Event
|
||||
import org.mozilla.fenix.ext.components
|
||||
|
@ -111,9 +110,6 @@ class SavedLoginsAuthFragment : PreferenceFragmentCompat(), AccountObserver {
|
|||
}
|
||||
|
||||
requirePreference<SwitchPreference>(R.string.pref_key_autofill_logins).apply {
|
||||
// The ability to toggle autofill on the engine is only available in Nightly currently
|
||||
// See https://github.com/mozilla-mobile/fenix/issues/11320
|
||||
isVisible = Config.channel.isNightlyOrDebug
|
||||
isChecked = context.settings().shouldAutofillLogins
|
||||
onPreferenceChangeListener = object : SharedPreferenceUpdater() {
|
||||
override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean {
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
android:title="@string/preferences_passwords_save_logins" />
|
||||
<SwitchPreference
|
||||
app:iconSpaceReserved="false"
|
||||
app:isPreferenceVisible="false"
|
||||
android:defaultValue="true"
|
||||
android:key="@string/pref_key_autofill_logins"
|
||||
android:title="@string/preferences_passwords_autofill" />
|
||||
|
|
|
@ -22,8 +22,7 @@ class TestComponents(private val context: Context) : Components(context) {
|
|||
core.sessionManager,
|
||||
core.store,
|
||||
search.searchEngineManager,
|
||||
core.webAppShortcutManager,
|
||||
core.thumbnailStorage
|
||||
core.webAppShortcutManager
|
||||
)
|
||||
}
|
||||
override val intentProcessors by lazy { mockk<IntentProcessors>(relaxed = true) }
|
||||
|
|
|
@ -15,7 +15,6 @@ import mozilla.components.browser.search.SearchEngine
|
|||
import mozilla.components.browser.session.Session
|
||||
import mozilla.components.browser.session.SessionManager
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Assert.assertFalse
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
|
@ -43,7 +42,6 @@ class DefaultSearchControllerTest {
|
|||
private val store: SearchFragmentStore = mockk(relaxed = true)
|
||||
private val navController: NavController = mockk(relaxed = true)
|
||||
private val defaultSearchEngine: SearchEngine? = mockk(relaxed = true)
|
||||
private val session: Session? = mockk(relaxed = true)
|
||||
private val searchEngine: SearchEngine = mockk(relaxed = true)
|
||||
private val metrics: MetricController = mockk(relaxed = true)
|
||||
private val sessionManager: SessionManager = mockk(relaxed = true)
|
||||
|
@ -55,7 +53,7 @@ class DefaultSearchControllerTest {
|
|||
@Before
|
||||
fun setUp() {
|
||||
every { activity.searchEngineManager.defaultSearchEngine } returns defaultSearchEngine
|
||||
every { store.state.session } returns session
|
||||
every { store.state.tabId } returns "test-tab-id"
|
||||
every { store.state.searchEngineSource.searchEngine } returns searchEngine
|
||||
every { activity.metrics } returns metrics
|
||||
every { activity.components.core.sessionManager } returns sessionManager
|
||||
|
@ -79,7 +77,7 @@ class DefaultSearchControllerTest {
|
|||
verify {
|
||||
activity.openToBrowserAndLoad(
|
||||
searchTermOrURL = url,
|
||||
newTab = session == null,
|
||||
newTab = false,
|
||||
from = BrowserDirection.FromSearch,
|
||||
engine = searchEngine
|
||||
)
|
||||
|
@ -105,7 +103,7 @@ class DefaultSearchControllerTest {
|
|||
verify {
|
||||
activity.openToBrowserAndLoad(
|
||||
searchTermOrURL = SupportUtils.getMozillaPageUrl(SupportUtils.MozillaPage.MANIFESTO),
|
||||
newTab = session == null,
|
||||
newTab = false,
|
||||
from = BrowserDirection.FromSearch,
|
||||
engine = searchEngine
|
||||
)
|
||||
|
@ -163,14 +161,12 @@ class DefaultSearchControllerTest {
|
|||
@Test
|
||||
fun `show search shortcuts when setting enabled AND query equals url`() {
|
||||
val text = "mozilla.org"
|
||||
every { session?.url } returns "mozilla.org"
|
||||
every { store.state.url } returns "mozilla.org"
|
||||
testContext.settings().preferences
|
||||
.edit()
|
||||
.putBoolean(testContext.getString(R.string.pref_key_show_search_shortcuts), true)
|
||||
.apply()
|
||||
|
||||
assertEquals(text, session?.url)
|
||||
|
||||
controller.handleTextChanged(text)
|
||||
|
||||
verify { store.dispatch(SearchFragmentAction.ShowSearchShortcutEnginePicker(true)) }
|
||||
|
@ -226,7 +222,7 @@ class DefaultSearchControllerTest {
|
|||
verify {
|
||||
activity.openToBrowserAndLoad(
|
||||
searchTermOrURL = url,
|
||||
newTab = session == null,
|
||||
newTab = false,
|
||||
from = BrowserDirection.FromSearch
|
||||
)
|
||||
}
|
||||
|
@ -242,7 +238,7 @@ class DefaultSearchControllerTest {
|
|||
verify {
|
||||
activity.openToBrowserAndLoad(
|
||||
searchTermOrURL = searchTerms,
|
||||
newTab = session == null,
|
||||
newTab = false,
|
||||
from = BrowserDirection.FromSearch,
|
||||
engine = searchEngine,
|
||||
forceSearch = true
|
||||
|
|
|
@ -48,6 +48,9 @@ class SearchFragmentStoreTest {
|
|||
}
|
||||
|
||||
private fun emptyDefaultState(): SearchFragmentState = SearchFragmentState(
|
||||
tabId = null,
|
||||
url = "",
|
||||
searchTerms = "",
|
||||
query = "",
|
||||
searchEngineSource = mockk(),
|
||||
defaultEngineSource = mockk(),
|
||||
|
@ -57,7 +60,6 @@ class SearchFragmentStoreTest {
|
|||
showClipboardSuggestions = false,
|
||||
showHistorySuggestions = false,
|
||||
showBookmarkSuggestions = false,
|
||||
session = null,
|
||||
searchAccessPoint = Event.PerformedSearch.SearchAccessPoint.NONE
|
||||
)
|
||||
}
|
||||
|
|
|
@ -3,5 +3,5 @@
|
|||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
object AndroidComponents {
|
||||
const val VERSION = "49.0.20200701130905"
|
||||
const val VERSION = "49.0.20200702190156"
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue