From 100d5372ee46c00c89886555f20740fd87d03b24 Mon Sep 17 00:00:00 2001 From: Gabriel Luong Date: Sun, 17 Oct 2021 02:01:11 -0400 Subject: [PATCH] [fenix] For https://github.com/mozilla-mobile/fenix/issues/22250 - Convert Recent Bookmarks to Jetpack Compose --- .../RecentBookmarksItemAdapter.kt | 44 ----- .../view/RecentBookmarkItemViewHolder.kt | 38 ---- .../recentbookmarks/view/RecentBookmarks.kt | 182 ++++++++++++++++++ .../view/RecentBookmarksHeaderViewHolder.kt | 43 +++++ .../view/RecentBookmarksViewHolder.kt | 63 +++--- .../sessioncontrol/SessionControlAdapter.kt | 47 ++--- .../home/sessioncontrol/SessionControlView.kt | 3 +- .../res/layout/component_recent_bookmarks.xml | 26 --- .../main/res/layout/recent_bookmark_item.xml | 49 ----- .../res/layout/recent_bookmarks_header.xml | 6 +- app/src/main/res/values/dimens.xml | 12 -- app/src/main/res/values/styles.xml | 23 --- .../view/RecentBookmarkItemViewHolderTest.kt | 90 --------- .../RecentBookmarksHeaderViewHolderTest.kt | 40 ++++ .../view/RecentBookmarksViewHolderTest.kt | 52 ----- .../sessioncontrol/SessionControlViewTest.kt | 7 +- 16 files changed, 310 insertions(+), 415 deletions(-) delete mode 100644 app/src/main/java/org/mozilla/fenix/home/recentbookmarks/RecentBookmarksItemAdapter.kt delete mode 100644 app/src/main/java/org/mozilla/fenix/home/recentbookmarks/view/RecentBookmarkItemViewHolder.kt create mode 100644 app/src/main/java/org/mozilla/fenix/home/recentbookmarks/view/RecentBookmarks.kt create mode 100644 app/src/main/java/org/mozilla/fenix/home/recentbookmarks/view/RecentBookmarksHeaderViewHolder.kt delete mode 100644 app/src/main/res/layout/component_recent_bookmarks.xml delete mode 100644 app/src/main/res/layout/recent_bookmark_item.xml delete mode 100644 app/src/test/java/org/mozilla/fenix/home/recentbookmarks/view/RecentBookmarkItemViewHolderTest.kt create mode 100644 app/src/test/java/org/mozilla/fenix/home/recentbookmarks/view/RecentBookmarksHeaderViewHolderTest.kt delete mode 100644 app/src/test/java/org/mozilla/fenix/home/recentbookmarks/view/RecentBookmarksViewHolderTest.kt diff --git a/app/src/main/java/org/mozilla/fenix/home/recentbookmarks/RecentBookmarksItemAdapter.kt b/app/src/main/java/org/mozilla/fenix/home/recentbookmarks/RecentBookmarksItemAdapter.kt deleted file mode 100644 index 1571f71270..0000000000 --- a/app/src/main/java/org/mozilla/fenix/home/recentbookmarks/RecentBookmarksItemAdapter.kt +++ /dev/null @@ -1,44 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -package org.mozilla.fenix.home.recentbookmarks - -import android.view.LayoutInflater -import android.view.ViewGroup -import androidx.recyclerview.widget.DiffUtil -import androidx.recyclerview.widget.ListAdapter -import mozilla.components.concept.storage.BookmarkNode -import org.mozilla.fenix.home.recentbookmarks.interactor.RecentBookmarksInteractor -import org.mozilla.fenix.home.recentbookmarks.view.RecentBookmarkItemViewHolder - -/** - * Adapter for binding individual bookmark items for the homescreen. - * - * @param interactor The [RecentBookmarksInteractor] to be passed into the view. - */ -class RecentBookmarksItemAdapter( - private val interactor: RecentBookmarksInteractor -) : ListAdapter(RecentBookmarkItemDiffCallback) { - - override fun onCreateViewHolder( - parent: ViewGroup, - viewType: Int - ): RecentBookmarkItemViewHolder { - val view = LayoutInflater.from(parent.context) - .inflate(RecentBookmarkItemViewHolder.LAYOUT_ID, parent, false) - return RecentBookmarkItemViewHolder(view, interactor) - } - - override fun onBindViewHolder(holder: RecentBookmarkItemViewHolder, position: Int) { - holder.bind(getItem(position)) - } - - internal object RecentBookmarkItemDiffCallback : DiffUtil.ItemCallback() { - override fun areItemsTheSame(oldItem: BookmarkNode, newItem: BookmarkNode) = - oldItem.guid == newItem.guid - - override fun areContentsTheSame(oldItem: BookmarkNode, newItem: BookmarkNode) = - oldItem == newItem - } -} diff --git a/app/src/main/java/org/mozilla/fenix/home/recentbookmarks/view/RecentBookmarkItemViewHolder.kt b/app/src/main/java/org/mozilla/fenix/home/recentbookmarks/view/RecentBookmarkItemViewHolder.kt deleted file mode 100644 index 3d5a67cf77..0000000000 --- a/app/src/main/java/org/mozilla/fenix/home/recentbookmarks/view/RecentBookmarkItemViewHolder.kt +++ /dev/null @@ -1,38 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -package org.mozilla.fenix.home.recentbookmarks.view - -import android.view.View -import mozilla.components.concept.storage.BookmarkNode -import org.mozilla.fenix.R -import org.mozilla.fenix.databinding.RecentBookmarkItemBinding -import org.mozilla.fenix.ext.components -import org.mozilla.fenix.ext.loadIntoView -import org.mozilla.fenix.home.recentbookmarks.interactor.RecentBookmarksInteractor -import org.mozilla.fenix.utils.view.ViewHolder - -class RecentBookmarkItemViewHolder( - private val view: View, - private val interactor: RecentBookmarksInteractor -) : ViewHolder(view) { - - fun bind(bookmark: BookmarkNode) { - val binding = RecentBookmarkItemBinding.bind(view) - - binding.bookmarkTitle.text = bookmark.title ?: bookmark.url - - binding.bookmarkItem.setOnClickListener { - interactor.onRecentBookmarkClicked(bookmark) - } - - bookmark.url?.let { - view.context.components.core.icons.loadIntoView(binding.faviconImage, it) - } - } - - companion object { - const val LAYOUT_ID = R.layout.recent_bookmark_item - } -} diff --git a/app/src/main/java/org/mozilla/fenix/home/recentbookmarks/view/RecentBookmarks.kt b/app/src/main/java/org/mozilla/fenix/home/recentbookmarks/view/RecentBookmarks.kt new file mode 100644 index 0000000000..777de3c5a8 --- /dev/null +++ b/app/src/main/java/org/mozilla/fenix/home/recentbookmarks/view/RecentBookmarks.kt @@ -0,0 +1,182 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package org.mozilla.fenix.home.recentbookmarks.view + +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.Card +import androidx.compose.material.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import mozilla.components.browser.icons.compose.Loader +import mozilla.components.browser.icons.compose.Placeholder +import mozilla.components.browser.icons.compose.WithIcon +import mozilla.components.concept.storage.BookmarkNode +import mozilla.components.concept.storage.BookmarkNodeType +import mozilla.components.ui.colors.PhotonColors +import org.mozilla.fenix.components.components +import org.mozilla.fenix.theme.FirefoxTheme + +/** + * A list of recent bookmarks. + * + * @param bookmarks List of [BookmarkNode]s to display. + * @param onRecentBookmarkClick Invoked when the user clicks on a recent bookmark. + */ +@Composable +fun RecentBookmarks( + bookmarks: List, + onRecentBookmarkClick: (BookmarkNode) -> Unit = {} +) { + LazyRow( + contentPadding = PaddingValues(horizontal = 16.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp) + ) { + items(bookmarks) { bookmark -> + RecentBookmarkItem( + bookmark = bookmark, + onRecentBookmarkClick = onRecentBookmarkClick + ) + } + } +} + +/** + * A recent bookmark item. + * + * @param bookmark The [BookmarkNode] to display. + * @param onRecentBookmarkClick Invoked when the user clicks on the recent bookmark item. + */ +@Composable +private fun RecentBookmarkItem( + bookmark: BookmarkNode, + onRecentBookmarkClick: (BookmarkNode) -> Unit = {} +) { + Column( + modifier = Modifier + .width(156.dp) + .clickable { onRecentBookmarkClick(bookmark) } + ) { + Card( + modifier = Modifier + .fillMaxWidth() + .height(96.dp), + elevation = 6.dp + ) { + if (bookmark.url != null) { + components.core.icons.Loader(bookmark.url!!) { + Placeholder { + Box( + modifier = Modifier.background( + color = when (isSystemInDarkTheme()) { + true -> PhotonColors.DarkGrey30 + false -> PhotonColors.LightGrey30 + } + ) + ) + } + + WithIcon { icon -> + Box( + modifier = Modifier.size(36.dp), + contentAlignment = Alignment.Center + ) { + Image( + painter = icon.painter, + contentDescription = null, + modifier = Modifier + .size(36.dp) + .clip(RoundedCornerShape(8.dp)), + contentScale = ContentScale.Fit + ) + } + } + } + } + } + + Spacer(modifier = Modifier.height(8.dp)) + + Text( + text = bookmark.title ?: bookmark.url ?: "", + color = FirefoxTheme.colors.textPrimary, + fontSize = 12.sp, + overflow = TextOverflow.Ellipsis, + maxLines = 1 + ) + } +} + +@Composable +@Preview +private fun RecentBookmarksPreview() { + FirefoxTheme { + RecentBookmarks( + bookmarks = listOf( + BookmarkNode( + type = BookmarkNodeType.ITEM, + guid = "1", + parentGuid = null, + position = null, + title = "Other Bookmark Title", + url = "https://www.example.com", + dateAdded = 0, + children = null + ), + BookmarkNode( + type = BookmarkNodeType.ITEM, + guid = "2", + parentGuid = null, + position = null, + title = "Other Bookmark Title", + url = "https://www.example.com", + dateAdded = 0, + children = null + ), + BookmarkNode( + type = BookmarkNodeType.ITEM, + guid = "3", + parentGuid = null, + position = null, + title = "Other Bookmark Title", + url = "https://www.example.com", + dateAdded = 0, + children = null + ), + BookmarkNode( + type = BookmarkNodeType.ITEM, + guid = "4", + parentGuid = null, + position = null, + title = "Other Bookmark Title", + url = "https://www.example.com", + dateAdded = 0, + children = null + ) + ) + ) + } +} diff --git a/app/src/main/java/org/mozilla/fenix/home/recentbookmarks/view/RecentBookmarksHeaderViewHolder.kt b/app/src/main/java/org/mozilla/fenix/home/recentbookmarks/view/RecentBookmarksHeaderViewHolder.kt new file mode 100644 index 0000000000..5c12125453 --- /dev/null +++ b/app/src/main/java/org/mozilla/fenix/home/recentbookmarks/view/RecentBookmarksHeaderViewHolder.kt @@ -0,0 +1,43 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package org.mozilla.fenix.home.recentbookmarks.view + +import android.view.View +import androidx.navigation.findNavController +import org.mozilla.fenix.R +import org.mozilla.fenix.databinding.RecentBookmarksHeaderBinding +import org.mozilla.fenix.home.recentbookmarks.interactor.RecentBookmarksInteractor +import org.mozilla.fenix.utils.view.ViewHolder + +/** + * View holder for the recent bookmarks header and "Show all" button. + * + * @param view The container [View] for this view holder. + * @param interactor [RecentBookmarksInteractor] which will have delegated to all user interactions. + */ +class RecentBookmarksHeaderViewHolder( + view: View, + private val interactor: RecentBookmarksInteractor +) : ViewHolder(view) { + + init { + val binding = RecentBookmarksHeaderBinding.bind(view) + binding.showAllBookmarksButton.setOnClickListener { + dismissSearchDialogIfDisplayed() + interactor.onShowAllBookmarksClicked() + } + } + + private fun dismissSearchDialogIfDisplayed() { + val navController = itemView.findNavController() + if (navController.currentDestination?.id == R.id.searchDialogFragment) { + navController.navigateUp() + } + } + + companion object { + const val LAYOUT_ID = R.layout.recent_bookmarks_header + } +} diff --git a/app/src/main/java/org/mozilla/fenix/home/recentbookmarks/view/RecentBookmarksViewHolder.kt b/app/src/main/java/org/mozilla/fenix/home/recentbookmarks/view/RecentBookmarksViewHolder.kt index e423472245..70dd7ccd6f 100644 --- a/app/src/main/java/org/mozilla/fenix/home/recentbookmarks/view/RecentBookmarksViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/home/recentbookmarks/view/RecentBookmarksViewHolder.kt @@ -5,59 +5,42 @@ package org.mozilla.fenix.home.recentbookmarks.view import android.view.View -import androidx.navigation.findNavController -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.LinearLayoutManager.HORIZONTAL -import mozilla.components.concept.storage.BookmarkNode -import org.mozilla.fenix.R +import androidx.compose.ui.platform.ComposeView +import androidx.compose.ui.platform.ViewCompositionStrategy +import mozilla.components.lib.state.ext.observeAsComposableState import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.components.metrics.MetricController -import org.mozilla.fenix.databinding.ComponentRecentBookmarksBinding -import org.mozilla.fenix.home.recentbookmarks.RecentBookmarksItemAdapter +import org.mozilla.fenix.home.HomeFragmentStore import org.mozilla.fenix.home.recentbookmarks.interactor.RecentBookmarksInteractor +import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.utils.view.ViewHolder class RecentBookmarksViewHolder( - view: View, + val composeView: ComposeView, + private val store: HomeFragmentStore, val interactor: RecentBookmarksInteractor, val metrics: MetricController -) : ViewHolder(view) { - - private val recentBookmarksAdapter = RecentBookmarksItemAdapter(interactor) +) : ViewHolder(composeView) { init { - val recentBookmarksBinding = ComponentRecentBookmarksBinding.bind(view) - val recentBookmarksHeaderBinding = recentBookmarksBinding.recentBookmarksHeader - - val linearLayoutManager = LinearLayoutManager(view.context, HORIZONTAL, false) - - recentBookmarksBinding.recentBookmarksList.apply { - adapter = recentBookmarksAdapter - layoutManager = linearLayoutManager - } - - recentBookmarksHeaderBinding.showAllBookmarksButton.setOnClickListener { - dismissSearchDialogIfDisplayed() - interactor.onShowAllBookmarksClicked() - } - } - - fun bind(bookmarks: List) { - recentBookmarksAdapter.submitList(bookmarks) - - if (bookmarks.isNotEmpty()) { - metrics.track(Event.RecentBookmarksShown) - } - } - - private fun dismissSearchDialogIfDisplayed() { - val navController = itemView.findNavController() - if (navController.currentDestination?.id == R.id.searchDialogFragment) { - navController.navigateUp() + metrics.track(Event.RecentBookmarksShown) + + composeView.setViewCompositionStrategy( + ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed + ) + composeView.setContent { + val recentBookmarks = store.observeAsComposableState { state -> state.recentBookmarks } + + FirefoxTheme { + RecentBookmarks( + bookmarks = recentBookmarks.value ?: emptyList(), + onRecentBookmarkClick = interactor::onRecentBookmarkClicked + ) + } } } companion object { - const val LAYOUT_ID = R.layout.component_recent_bookmarks + val LAYOUT_ID = View.generateViewId() } } diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt index 52df6b596f..68d9278dfb 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt @@ -13,7 +13,6 @@ import androidx.lifecycle.LifecycleOwner import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView -import mozilla.components.concept.storage.BookmarkNode import mozilla.components.feature.tab.collections.TabCollection import mozilla.components.feature.top.sites.TopSite import mozilla.components.feature.top.sites.TopSite.Type.FRECENT @@ -25,6 +24,8 @@ import org.mozilla.fenix.historymetadata.view.HistoryMetadataHeaderViewHolder import org.mozilla.fenix.home.HomeFragmentStore import org.mozilla.fenix.home.TopPlaceholderViewHolder import org.mozilla.fenix.home.OnboardingState +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 @@ -44,7 +45,6 @@ import org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding.OnboardingSe import org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding.OnboardingThemePickerViewHolder import org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding.OnboardingToolbarPositionPickerViewHolder import org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding.OnboardingTrackingProtectionViewHolder -import org.mozilla.fenix.home.pocket.PocketStoriesViewHolder import org.mozilla.fenix.home.tips.ButtonTipViewHolder import org.mozilla.fenix.home.topsites.TopSitePagerViewHolder import mozilla.components.feature.tab.collections.Tab as ComponentTab @@ -167,30 +167,8 @@ sealed class AdapterItem(@LayoutRes val viewType: Int) { object HistoryMetadataHeader : AdapterItem(HistoryMetadataHeaderViewHolder.LAYOUT_ID) object HistoryMetadataGroup : AdapterItem(HistoryMetadataGroupViewHolder.LAYOUT_ID) - data class RecentBookmarks(val recentBookmarks: List) : - AdapterItem(RecentBookmarksViewHolder.LAYOUT_ID) { - override fun sameAs(other: AdapterItem): Boolean { - val newBookmarks = (other as? RecentBookmarks) ?: return false - if (newBookmarks.recentBookmarks.size != this.recentBookmarks.size) { - return false - } - - return recentBookmarks.zip(newBookmarks.recentBookmarks).all { (new, old) -> - new.guid == old.guid - } - } - - override fun contentsSameAs(other: AdapterItem): Boolean { - val newBookmarks = (other as? RecentBookmarks) ?: return false - - val newBookmarksSequence = newBookmarks.recentBookmarks.asSequence() - val oldBookmarksList = this.recentBookmarks.asSequence() - - return newBookmarksSequence.zip(oldBookmarksList).all { (new, old) -> - new == old - } - } - } + object RecentBookmarksHeader : AdapterItem(RecentBookmarksHeaderViewHolder.LAYOUT_ID) + object RecentBookmarks : AdapterItem(RecentBookmarksViewHolder.LAYOUT_ID) object PocketStoriesItem : AdapterItem(PocketStoriesViewHolder.LAYOUT_ID) @@ -242,6 +220,12 @@ class SessionControlAdapter( store = store, interactor = interactor ) + RecentBookmarksViewHolder.LAYOUT_ID -> return RecentBookmarksViewHolder( + composeView = ComposeView(parent.context), + store = store, + interactor = interactor, + metrics = components.analytics.metrics + ) RecentTabViewHolder.LAYOUT_ID -> return RecentTabViewHolder( composeView = ComposeView(parent.context), store = store, @@ -297,9 +281,7 @@ class SessionControlAdapter( ) ExperimentDefaultBrowserCardViewHolder.LAYOUT_ID -> ExperimentDefaultBrowserCardViewHolder(view, interactor) RecentTabsHeaderViewHolder.LAYOUT_ID -> RecentTabsHeaderViewHolder(view, interactor) - RecentBookmarksViewHolder.LAYOUT_ID -> { - RecentBookmarksViewHolder(view, interactor, components.analytics.metrics) - } + RecentBookmarksHeaderViewHolder.LAYOUT_ID -> RecentBookmarksHeaderViewHolder(view, interactor) HistoryMetadataHeaderViewHolder.LAYOUT_ID -> HistoryMetadataHeaderViewHolder( view, interactor @@ -312,6 +294,7 @@ class SessionControlAdapter( when (holder) { is CustomizeHomeButtonViewHolder, is HistoryMetadataGroupViewHolder, + is RecentBookmarksViewHolder, is RecentTabViewHolder, is PocketStoriesViewHolder -> { // no op @@ -374,12 +357,8 @@ class SessionControlAdapter( is OnboardingAutomaticSignInViewHolder -> holder.bind( (item as AdapterItem.OnboardingAutomaticSignIn).state.withAccount ) - is RecentBookmarksViewHolder -> { - holder.bind( - (item as AdapterItem.RecentBookmarks).recentBookmarks - ) - } is HistoryMetadataGroupViewHolder, + is RecentBookmarksViewHolder, is RecentTabViewHolder, is PocketStoriesViewHolder -> { // no-op. This ViewHolder receives the HomeStore as argument and will observe that diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlView.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlView.kt index 74b57baa34..f58da37f96 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlView.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlView.kt @@ -66,7 +66,8 @@ internal fun normalModeAdapterItems( if (recentBookmarks.isNotEmpty()) { shouldShowCustomizeHome = true - items.add(AdapterItem.RecentBookmarks(recentBookmarks)) + items.add(AdapterItem.RecentBookmarksHeader) + items.add(AdapterItem.RecentBookmarks) } if (historyMetadata.isNotEmpty()) { diff --git a/app/src/main/res/layout/component_recent_bookmarks.xml b/app/src/main/res/layout/component_recent_bookmarks.xml deleted file mode 100644 index c0830ab744..0000000000 --- a/app/src/main/res/layout/component_recent_bookmarks.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - diff --git a/app/src/main/res/layout/recent_bookmark_item.xml b/app/src/main/res/layout/recent_bookmark_item.xml deleted file mode 100644 index 48d46366b4..0000000000 --- a/app/src/main/res/layout/recent_bookmark_item.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/recent_bookmarks_header.xml b/app/src/main/res/layout/recent_bookmarks_header.xml index 0c97c2285f..b2f4c123e3 100644 --- a/app/src/main/res/layout/recent_bookmarks_header.xml +++ b/app/src/main/res/layout/recent_bookmarks_header.xml @@ -1,15 +1,15 @@ - - + android:layout_marginHorizontal="@dimen/home_item_horizontal_margin" + android:layout_marginTop="40dp" + android:layout_marginBottom="16dp"> 5dp 16dp - - 40dp - 164dp - 156dp - 16dp - 8dp - 6dp - 96dp - 0dp - 8dp - 4dp - 48dp diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index b17bcaa6fb..32a57fbd78 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -659,29 +659,6 @@ @dimen/top_sites_favicon_corner_size - - - - - -