diff --git a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt index b25576bdac..5ecaa5adb6 100644 --- a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt +++ b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt @@ -51,6 +51,7 @@ import mozilla.components.concept.engine.EngineSession import mozilla.components.concept.engine.EngineView import mozilla.components.concept.storage.BookmarkNode import mozilla.components.concept.storage.BookmarkNodeType +import mozilla.components.concept.storage.HistoryMetadataKey import mozilla.components.feature.contextmenu.DefaultSelectionActionDelegate import mozilla.components.feature.privatemode.notification.PrivateNotificationFeature import mozilla.components.feature.search.BrowserStoreSearchAdapter @@ -728,10 +729,11 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity { engine: SearchEngine? = null, forceSearch: Boolean = false, flags: EngineSession.LoadUrlFlags = EngineSession.LoadUrlFlags.none(), - requestDesktopMode: Boolean = false + requestDesktopMode: Boolean = false, + historyMetadata: HistoryMetadataKey? = null ) { openToBrowser(from, customTabSessionId) - load(searchTermOrURL, newTab, engine, forceSearch, flags, requestDesktopMode) + load(searchTermOrURL, newTab, engine, forceSearch, flags, requestDesktopMode, historyMetadata) } fun openToBrowser(from: BrowserDirection, customTabSessionId: String? = null) { @@ -796,6 +798,8 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity { * Loads a URL or performs a search (depending on the value of [searchTermOrURL]). * * @param flags Flags that will be used when loading the URL (not applied to searches). + * @param historyMetadata The [HistoryMetadataKey] of the new tab in case this tab + * was opened from history. */ private fun load( searchTermOrURL: String, @@ -803,7 +807,8 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity { engine: SearchEngine?, forceSearch: Boolean, flags: EngineSession.LoadUrlFlags = EngineSession.LoadUrlFlags.none(), - requestDesktopMode: Boolean = false + requestDesktopMode: Boolean = false, + historyMetadata: HistoryMetadataKey? = null ) { val startTime = components.core.engine.profiler?.getProfilerTime() val mode = browsingModeManager.mode @@ -821,7 +826,8 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity { components.useCases.tabsUseCases.addTab( url = searchTermOrURL.toNormalizedUrl(), flags = flags, - private = private + private = private, + historyMetadata = historyMetadata ) } else { components.useCases.sessionUseCases.loadUrl( diff --git a/app/src/main/java/org/mozilla/fenix/components/history/PagedHistoryProvider.kt b/app/src/main/java/org/mozilla/fenix/components/history/PagedHistoryProvider.kt index 1d79580599..4da8d16e2a 100644 --- a/app/src/main/java/org/mozilla/fenix/components/history/PagedHistoryProvider.kt +++ b/app/src/main/java/org/mozilla/fenix/components/history/PagedHistoryProvider.kt @@ -67,7 +67,8 @@ class DefaultPagedHistoryProvider( ?: it.key.url.tryGetHostFromUrl(), url = it.key.url, visitedAt = it.createdAt, - totalViewTime = it.totalViewTime + totalViewTime = it.totalViewTime, + historyMetadataKey = it.key ) } ) diff --git a/app/src/main/java/org/mozilla/fenix/library/history/HistoryFragmentStore.kt b/app/src/main/java/org/mozilla/fenix/library/history/HistoryFragmentStore.kt index db82e640f2..8ad90a17a9 100644 --- a/app/src/main/java/org/mozilla/fenix/library/history/HistoryFragmentStore.kt +++ b/app/src/main/java/org/mozilla/fenix/library/history/HistoryFragmentStore.kt @@ -6,6 +6,7 @@ package org.mozilla.fenix.library.history import android.os.Parcelable import kotlinx.parcelize.Parcelize +import mozilla.components.concept.storage.HistoryMetadataKey import mozilla.components.lib.state.Action import mozilla.components.lib.state.State import mozilla.components.lib.state.Store @@ -44,6 +45,8 @@ sealed class History : Parcelable { * @property url URL of the history metadata item. * @property visitedAt Timestamp of when this history metadata item was visited. * @property totalViewTime Total time the user viewed the page associated with this record. + * @property historyMetadataKey The [HistoryMetadataKey] of the new tab in case this tab + * was opened from history. * @property selected Whether or not the history metadata item is selected. */ @Parcelize data class Metadata( @@ -52,6 +55,7 @@ sealed class History : Parcelable { val url: String, override val visitedAt: Long, val totalViewTime: Int, + val historyMetadataKey: HistoryMetadataKey, override val selected: Boolean = false ) : History() diff --git a/app/src/main/java/org/mozilla/fenix/library/historymetadata/controller/HistoryMetadataGroupController.kt b/app/src/main/java/org/mozilla/fenix/library/historymetadata/controller/HistoryMetadataGroupController.kt index fc37da602b..dd64d60367 100644 --- a/app/src/main/java/org/mozilla/fenix/library/historymetadata/controller/HistoryMetadataGroupController.kt +++ b/app/src/main/java/org/mozilla/fenix/library/historymetadata/controller/HistoryMetadataGroupController.kt @@ -68,7 +68,8 @@ class DefaultHistoryMetadataGroupController( activity.openToBrowserAndLoad( searchTermOrURL = item.url, newTab = true, - from = BrowserDirection.FromHistoryMetadataGroup + from = BrowserDirection.FromHistoryMetadataGroup, + historyMetadata = item.historyMetadataKey ) } diff --git a/app/src/test/java/org/mozilla/fenix/components/history/PagedHistoryProviderTest.kt b/app/src/test/java/org/mozilla/fenix/components/history/PagedHistoryProviderTest.kt index 1abcea3334..562821c7cc 100644 --- a/app/src/test/java/org/mozilla/fenix/components/history/PagedHistoryProviderTest.kt +++ b/app/src/test/java/org/mozilla/fenix/components/history/PagedHistoryProviderTest.kt @@ -52,8 +52,9 @@ class PagedHistoryProviderTest { visitTime = 1, visitType = VisitType.LINK ) + val historyMetadataKey1 = HistoryMetadataKey("http://www.mozilla.com", "mozilla", null) val historyEntry1 = HistoryMetadata( - key = HistoryMetadataKey("http://www.mozilla.com", "mozilla", null), + key = historyMetadataKey1, title = "mozilla", createdAt = 5, updatedAt = 5, @@ -61,8 +62,9 @@ class PagedHistoryProviderTest { documentType = DocumentType.Regular, previewImageUrl = null ) + val historyMetadataKey2 = HistoryMetadataKey("http://www.firefox.com", "mozilla", null) val historyEntry2 = HistoryMetadata( - key = HistoryMetadataKey("http://www.firefox.com", "mozilla", null), + key = historyMetadataKey2, title = "firefox", createdAt = 2, updatedAt = 2, @@ -106,14 +108,16 @@ class PagedHistoryProviderTest { title = historyEntry1.title!!, url = historyEntry1.key.url, visitedAt = historyEntry1.createdAt, - totalViewTime = historyEntry1.totalViewTime + totalViewTime = historyEntry1.totalViewTime, + historyMetadataKey = historyMetadataKey1 ), History.Metadata( id = historyEntry2.createdAt.toInt(), title = historyEntry2.title!!, url = historyEntry2.key.url, visitedAt = historyEntry2.createdAt, - totalViewTime = historyEntry2.totalViewTime + totalViewTime = historyEntry2.totalViewTime, + historyMetadataKey = historyMetadataKey2 ) ) ), diff --git a/app/src/test/java/org/mozilla/fenix/library/historymetadata/HistoryMetadataGroupFragmentStoreTest.kt b/app/src/test/java/org/mozilla/fenix/library/historymetadata/HistoryMetadataGroupFragmentStoreTest.kt index 0caabb377e..69a7751933 100644 --- a/app/src/test/java/org/mozilla/fenix/library/historymetadata/HistoryMetadataGroupFragmentStoreTest.kt +++ b/app/src/test/java/org/mozilla/fenix/library/historymetadata/HistoryMetadataGroupFragmentStoreTest.kt @@ -5,6 +5,7 @@ package org.mozilla.fenix.library.historymetadata import kotlinx.coroutines.runBlocking +import mozilla.components.concept.storage.HistoryMetadataKey import org.junit.Assert.assertEquals import org.junit.Assert.assertFalse import org.junit.Assert.assertTrue @@ -22,14 +23,16 @@ class HistoryMetadataGroupFragmentStoreTest { title = "Mozilla", url = "mozilla.org", visitedAt = 0, - totalViewTime = 0 + totalViewTime = 0, + historyMetadataKey = HistoryMetadataKey("http://www.mozilla.com", "mozilla", null) ) private val firefoxHistoryMetadataItem = History.Metadata( id = 0, title = "Firefox", url = "firefox.com", visitedAt = 0, - totalViewTime = 0 + totalViewTime = 0, + historyMetadataKey = HistoryMetadataKey("http://www.firefox.com", "mozilla", null) ) @Before diff --git a/app/src/test/java/org/mozilla/fenix/library/historymetadata/controller/HistoryMetadataGroupControllerTest.kt b/app/src/test/java/org/mozilla/fenix/library/historymetadata/controller/HistoryMetadataGroupControllerTest.kt index 8f8aef73eb..064722edf9 100644 --- a/app/src/test/java/org/mozilla/fenix/library/historymetadata/controller/HistoryMetadataGroupControllerTest.kt +++ b/app/src/test/java/org/mozilla/fenix/library/historymetadata/controller/HistoryMetadataGroupControllerTest.kt @@ -10,6 +10,7 @@ import io.mockk.verify import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.TestCoroutineDispatcher import mozilla.components.concept.engine.prompt.ShareData +import mozilla.components.concept.storage.HistoryMetadataKey import mozilla.components.support.test.rule.MainCoroutineRule import org.junit.Assert.assertFalse import org.junit.Assert.assertTrue @@ -44,14 +45,16 @@ class HistoryMetadataGroupControllerTest { title = "Mozilla", url = "mozilla.org", visitedAt = 0, - totalViewTime = 1 + totalViewTime = 1, + historyMetadataKey = HistoryMetadataKey("http://www.mozilla.com", "mozilla", null) ) private val firefoxHistoryMetadataItem = History.Metadata( id = 0, title = "Firefox", url = "firefox.com", visitedAt = 0, - totalViewTime = 1 + totalViewTime = 1, + historyMetadataKey = HistoryMetadataKey("http://www.firefox.com", "mozilla", null) ) private lateinit var controller: DefaultHistoryMetadataGroupController diff --git a/app/src/test/java/org/mozilla/fenix/library/historymetadata/view/HistoryMetadataGroupItemViewHolderTest.kt b/app/src/test/java/org/mozilla/fenix/library/historymetadata/view/HistoryMetadataGroupItemViewHolderTest.kt index 465117c5ba..c3d708a183 100644 --- a/app/src/test/java/org/mozilla/fenix/library/historymetadata/view/HistoryMetadataGroupItemViewHolderTest.kt +++ b/app/src/test/java/org/mozilla/fenix/library/historymetadata/view/HistoryMetadataGroupItemViewHolderTest.kt @@ -6,6 +6,7 @@ package org.mozilla.fenix.library.historymetadata.view import android.view.LayoutInflater import androidx.navigation.Navigation import io.mockk.mockk +import mozilla.components.concept.storage.HistoryMetadataKey import mozilla.components.support.test.robolectric.testContext import org.junit.Assert.assertEquals import org.junit.Before @@ -29,7 +30,8 @@ class HistoryMetadataGroupItemViewHolderTest { title = "Mozilla", url = "mozilla.org", visitedAt = 0, - totalViewTime = 0 + totalViewTime = 0, + historyMetadataKey = HistoryMetadataKey("http://www.mozilla.com", "mozilla", null) ) @Before diff --git a/buildSrc/src/main/java/AndroidComponents.kt b/buildSrc/src/main/java/AndroidComponents.kt index b2d9029e24..e1a01763a6 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 = "94.0.20210921143125" + const val VERSION = "94.0.20210921160503" }