For #24006 - Return a null change payload if the new top sites list is larger than the old

upstream-sync
Gabriel Luong 2 years ago committed by mergify[bot]
parent e643591338
commit a6b5ab6726

@ -21,10 +21,10 @@ import org.mozilla.fenix.components.tips.Tip
import org.mozilla.fenix.home.BottomSpacerViewHolder
import org.mozilla.fenix.home.HomeFragmentStore
import org.mozilla.fenix.home.TopPlaceholderViewHolder
import org.mozilla.fenix.home.pocket.PocketStoriesViewHolder
import org.mozilla.fenix.home.recentbookmarks.view.RecentBookmarksHeaderViewHolder
import org.mozilla.fenix.home.pocket.PocketCategoriesViewHolder
import org.mozilla.fenix.home.pocket.PocketRecommendationsHeaderViewHolder
import org.mozilla.fenix.home.pocket.PocketStoriesViewHolder
import org.mozilla.fenix.home.recentbookmarks.view.RecentBookmarksHeaderViewHolder
import org.mozilla.fenix.home.recentbookmarks.view.RecentBookmarksViewHolder
import org.mozilla.fenix.home.recenttabs.view.RecentTabViewHolder
import org.mozilla.fenix.home.recenttabs.view.RecentTabsHeaderViewHolder
@ -84,11 +84,13 @@ sealed class AdapterItem(@LayoutRes val viewType: Int) {
*
* See https://github.com/mozilla-mobile/fenix/pull/20189#issuecomment-877124730
*/
@Suppress("ComplexCondition")
override fun getChangePayload(newItem: AdapterItem): Any? {
val newTopSites = (newItem as? TopSitePager)
val oldTopSites = (this as? TopSitePager)
if (newTopSites == null || oldTopSites == null ||
newTopSites.topSites.size > oldTopSites.topSites.size ||
(newTopSites.topSites.size > TopSitePagerViewHolder.TOP_SITES_PER_PAGE)
!= (oldTopSites.topSites.size > TopSitePagerViewHolder.TOP_SITES_PER_PAGE)
) {

@ -49,6 +49,18 @@ class SessionControlAdapterTest {
assertNull(result)
}
@Test
fun `GIVEN topSitePager with 3 topSites WHEN getChangePayload with 5 items THEN return null`() {
val newItem = TopSitePager(mockk(relaxed = true))
val topSitePager = TopSitePager(mockk(relaxed = true))
every { topSitePager.topSites.size } returns 3
every { newItem.topSites.size } returns 5
val result = topSitePager.getChangePayload(newItem)
assertNull(result)
}
@Test
fun `GIVEN two topSites WHEN getChangePayload called with one changed item THEN return TopSitePagerPayload with changes`() {
val topSite0 = TopSite.Frecent(-1, "topSite0", "", 0)

Loading…
Cancel
Save