mirror of
https://github.com/fork-maintainers/iceraven-browser
synced 2024-11-11 13:11:01 +00:00
For #15413: Use proper url when bookmarking a page.
This commit is contained in:
parent
e36e61b2c3
commit
9748c65c71
@ -321,7 +321,11 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler,
|
|||||||
browserAnimator = browserAnimator,
|
browserAnimator = browserAnimator,
|
||||||
customTabSession = customTabSessionId?.let { sessionManager.findSessionById(it) },
|
customTabSession = customTabSessionId?.let { sessionManager.findSessionById(it) },
|
||||||
openInFenixIntent = openInFenixIntent,
|
openInFenixIntent = openInFenixIntent,
|
||||||
bookmarkTapped = { viewLifecycleOwner.lifecycleScope.launch { bookmarkTapped(it) } },
|
bookmarkTapped = { url: String, title: String ->
|
||||||
|
viewLifecycleOwner.lifecycleScope.launch {
|
||||||
|
bookmarkTapped(url, title)
|
||||||
|
}
|
||||||
|
},
|
||||||
scope = viewLifecycleOwner.lifecycleScope,
|
scope = viewLifecycleOwner.lifecycleScope,
|
||||||
tabCollectionStorage = requireComponents.core.tabCollectionStorage,
|
tabCollectionStorage = requireComponents.core.tabCollectionStorage,
|
||||||
topSitesStorage = requireComponents.core.topSitesStorage,
|
topSitesStorage = requireComponents.core.topSitesStorage,
|
||||||
@ -1052,10 +1056,10 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun bookmarkTapped(session: Session) = withContext(IO) {
|
private suspend fun bookmarkTapped(sessionUrl: String, sessionTitle: String) = withContext(IO) {
|
||||||
val bookmarksStorage = requireComponents.core.bookmarksStorage
|
val bookmarksStorage = requireComponents.core.bookmarksStorage
|
||||||
val existing =
|
val existing =
|
||||||
bookmarksStorage.getBookmarksWithUrl(session.url).firstOrNull { it.url == session.url }
|
bookmarksStorage.getBookmarksWithUrl(sessionUrl).firstOrNull { it.url == sessionUrl }
|
||||||
if (existing != null) {
|
if (existing != null) {
|
||||||
// Bookmark exists, go to edit fragment
|
// Bookmark exists, go to edit fragment
|
||||||
withContext(Main) {
|
withContext(Main) {
|
||||||
@ -1068,8 +1072,8 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler,
|
|||||||
// Save bookmark, then go to edit fragment
|
// Save bookmark, then go to edit fragment
|
||||||
val guid = bookmarksStorage.addItem(
|
val guid = bookmarksStorage.addItem(
|
||||||
BookmarkRoot.Mobile.id,
|
BookmarkRoot.Mobile.id,
|
||||||
url = session.url,
|
url = sessionUrl,
|
||||||
title = session.title,
|
title = sessionTitle,
|
||||||
position = null
|
position = null
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@ class DefaultBrowserToolbarMenuController(
|
|||||||
private val swipeRefresh: SwipeRefreshLayout,
|
private val swipeRefresh: SwipeRefreshLayout,
|
||||||
private val customTabSession: Session?,
|
private val customTabSession: Session?,
|
||||||
private val openInFenixIntent: Intent,
|
private val openInFenixIntent: Intent,
|
||||||
private val bookmarkTapped: (Session) -> Unit,
|
private val bookmarkTapped: (String, String) -> Unit,
|
||||||
private val scope: CoroutineScope,
|
private val scope: CoroutineScope,
|
||||||
private val tabCollectionStorage: TabCollectionStorage,
|
private val tabCollectionStorage: TabCollectionStorage,
|
||||||
private val topSitesStorage: DefaultTopSitesStorage,
|
private val topSitesStorage: DefaultTopSitesStorage,
|
||||||
@ -273,7 +273,7 @@ class DefaultBrowserToolbarMenuController(
|
|||||||
}
|
}
|
||||||
ToolbarMenu.Item.Bookmark -> {
|
ToolbarMenu.Item.Bookmark -> {
|
||||||
sessionManager.selectedSession?.let {
|
sessionManager.selectedSession?.let {
|
||||||
bookmarkTapped(it)
|
getProperUrl(it)?.let { url -> bookmarkTapped(url, it.title) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ToolbarMenu.Item.Bookmarks -> browserAnimator.captureEngineViewAndDrawStatically {
|
ToolbarMenu.Item.Bookmarks -> browserAnimator.captureEngineViewAndDrawStatically {
|
||||||
|
@ -73,7 +73,7 @@ class DefaultBrowserToolbarMenuControllerTest {
|
|||||||
@RelaxedMockK private lateinit var activity: HomeActivity
|
@RelaxedMockK private lateinit var activity: HomeActivity
|
||||||
@RelaxedMockK private lateinit var navController: NavController
|
@RelaxedMockK private lateinit var navController: NavController
|
||||||
@RelaxedMockK private lateinit var findInPageLauncher: () -> Unit
|
@RelaxedMockK private lateinit var findInPageLauncher: () -> Unit
|
||||||
@RelaxedMockK private lateinit var bookmarkTapped: (Session) -> Unit
|
@RelaxedMockK private lateinit var bookmarkTapped: (String, String) -> Unit
|
||||||
@RelaxedMockK private lateinit var sessionManager: SessionManager
|
@RelaxedMockK private lateinit var sessionManager: SessionManager
|
||||||
@RelaxedMockK private lateinit var currentSession: Session
|
@RelaxedMockK private lateinit var currentSession: Session
|
||||||
@RelaxedMockK private lateinit var openInFenixIntent: Intent
|
@RelaxedMockK private lateinit var openInFenixIntent: Intent
|
||||||
@ -224,14 +224,48 @@ class DefaultBrowserToolbarMenuControllerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun handleToolbarBookmarkPress() = runBlockingTest {
|
fun handleToolbarBookmarkPressWithReaderModeInactive() = runBlockingTest {
|
||||||
val item = ToolbarMenu.Item.Bookmark
|
val item = ToolbarMenu.Item.Bookmark
|
||||||
|
val title = "Mozilla"
|
||||||
|
val readerUrl = "moz-extension://1234"
|
||||||
|
val readerTab = createTab(
|
||||||
|
url = readerUrl,
|
||||||
|
readerState = ReaderState(active = false, activeUrl = "https://1234.org"),
|
||||||
|
title = title
|
||||||
|
)
|
||||||
|
browserStore =
|
||||||
|
BrowserStore(BrowserState(tabs = listOf(readerTab), selectedTabId = readerTab.id))
|
||||||
|
every { currentSession.id } returns readerTab.id
|
||||||
|
every { currentSession.title } returns title
|
||||||
|
every { currentSession.url } returns "https://mozilla.org"
|
||||||
|
|
||||||
val controller = createController(scope = this)
|
val controller = createController(scope = this)
|
||||||
controller.handleToolbarItemInteraction(item)
|
controller.handleToolbarItemInteraction(item)
|
||||||
|
|
||||||
verify { metrics.track(Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.BOOKMARK)) }
|
verify { metrics.track(Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.BOOKMARK)) }
|
||||||
verify { bookmarkTapped(currentSession) }
|
verify { bookmarkTapped("https://mozilla.org", title) }
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun handleToolbarBookmarkPressWithReaderModeActive() = runBlockingTest {
|
||||||
|
val item = ToolbarMenu.Item.Bookmark
|
||||||
|
val title = "Mozilla"
|
||||||
|
val readerUrl = "moz-extension://1234"
|
||||||
|
val readerTab = createTab(
|
||||||
|
url = readerUrl,
|
||||||
|
readerState = ReaderState(active = true, activeUrl = "https://mozilla.org"),
|
||||||
|
title = title
|
||||||
|
)
|
||||||
|
browserStore = BrowserStore(BrowserState(tabs = listOf(readerTab), selectedTabId = readerTab.id))
|
||||||
|
every { currentSession.id } returns readerTab.id
|
||||||
|
every { currentSession.title } returns title
|
||||||
|
every { currentSession.url } returns readerUrl
|
||||||
|
|
||||||
|
val controller = createController(scope = this)
|
||||||
|
controller.handleToolbarItemInteraction(item)
|
||||||
|
|
||||||
|
verify { metrics.track(Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.BOOKMARK)) }
|
||||||
|
verify { bookmarkTapped("https://mozilla.org", title) }
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Loading…
Reference in New Issue
Block a user