diff --git a/app/src/androidTest/java/com/duckduckgo/app/statistics/VariantManagerTest.kt b/app/src/androidTest/java/com/duckduckgo/app/statistics/VariantManagerTest.kt index dfd7efdac9a6..f21e13bea35a 100644 --- a/app/src/androidTest/java/com/duckduckgo/app/statistics/VariantManagerTest.kt +++ b/app/src/androidTest/java/com/duckduckgo/app/statistics/VariantManagerTest.kt @@ -43,23 +43,6 @@ class VariantManagerTest { assertEquals(0, variant.features.size) } - // Bottom Bar Navigation Experiment - - @Test - fun bottomBarNavigationControlVariantIsActiveAndHasNoFeatures() { - val variant = variants.first { it.key == "mb" } - assertEqualsDouble(1.0, variant.weight) - assertEquals(0, variant.features.size) - } - - @Test - fun bottomBarNavigationVariantIsActiveAndHasBottomBarNavigationFeature() { - val variant = variants.first { it.key == "mk" } - assertEqualsDouble(1.0, variant.weight) - assertEquals(1, variant.features.size) - assertTrue(variant.hasFeature(BottomBarNavigation)) - } - @Test fun verifyNoDuplicateVariantNames() { val existingNames = mutableSetOf() diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0a891e013a8e..615cb594fc4f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -234,10 +234,6 @@ android:name="com.duckduckgo.app.tabs.ui.TabSwitcherActivity" android:label="@string/tabActivityTitle" /> - - ) { context?.let { tabsButton?.count = tabs.count() tabsButton?.hasUnread = tabs.firstOrNull { !it.viewed } != null - - bottomBarTabsItem.count = tabs.count() - bottomBarTabsItem.hasUnread = tabs.firstOrNull { !it.viewed } != null } } fun incrementTabs() { - if (isBottomNavigationFeatureEnabled()) { - bottomBarTabsItem.increment { - addTabsObserver() - } - } else { - tabsButton?.increment { - addTabsObserver() - } + tabsButton?.increment { + addTabsObserver() } } } @@ -1578,29 +1421,14 @@ class BrowserTabFragment : Fragment(), FindListener, CoroutineScope, DaxDialogLi if (shouldUpdateOmnibarTextInput(viewState, viewState.omnibarText)) { omnibarTextInput.setText(viewState.omnibarText) appBarLayout.setExpanded(true, true) - decorator.updateBottomBarVisibility(true, true) if (viewState.shouldMoveCaretToEnd) { omnibarTextInput.setSelection(viewState.omnibarText.length) } - } else { - decorator.updateBottomBarVisibility(!viewState.isEditing) } lastSeenBrowserViewState?.let { renderToolbarMenus(it) } - - if (ctaContainer.isVisible) { - if (isBottomNavigationFeatureEnabled()) { - lastSeenOmnibarViewState?.let { - if (it.isEditing) { - ctaContainer.setPadding(0, 0, 0, 0) - } else { - ctaContainer.setPadding(0, 0, 0, 46.toPx()) - } - } ?: ctaContainer.setPadding(0, 0, 0, 46.toPx()) - } - } } } @@ -1732,7 +1560,7 @@ class BrowserTabFragment : Fragment(), FindListener, CoroutineScope, DaxDialogLi searchIcon?.isVisible = true } - decorator.decorateToolbar(viewState) + decorator.updateToolbarActionsVisibility(viewState) } fun renderFindInPageState(viewState: FindInPageViewState) { @@ -1859,22 +1687,6 @@ class BrowserTabFragment : Fragment(), FindListener, CoroutineScope, DaxDialogLi ctaContainer.ctaDismissButton.setOnClickListener { viewModel.onUserDismissedCta() } - - if (isBottomNavigationFeatureEnabled()) { - lastSeenOmnibarViewState?.let { - if (it.isEditing) { - ctaContainer.setPadding(0, 0, 0, 0) - } else { - ctaContainer.setPadding(0, 0, 0, 46.toPx()) - } - } ?: ctaContainer.setPadding(0, 0, 0, 46.toPx()) - - ConstraintSet().also { - it.clone(newTabLayout) - it.connect(ddgLogo.id, ConstraintSet.BOTTOM, ctaContainer.id, ConstraintSet.TOP, 0) - it.applyTo(newTabLayout) - } - } } fun hideFindInPage() { diff --git a/app/src/main/java/com/duckduckgo/app/browser/ui/BottomNavigationBar.kt b/app/src/main/java/com/duckduckgo/app/browser/ui/BottomNavigationBar.kt deleted file mode 100644 index 944d2f4b2380..000000000000 --- a/app/src/main/java/com/duckduckgo/app/browser/ui/BottomNavigationBar.kt +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (c) 2020 DuckDuckGo - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.duckduckgo.app.browser.ui - -import android.animation.ValueAnimator -import android.content.Context -import android.content.res.TypedArray -import android.util.AttributeSet -import android.view.View -import android.view.animation.DecelerateInterpolator -import android.widget.LinearLayout -import com.duckduckgo.app.browser.R - -class BottomNavigationBar : LinearLayout { - - constructor(context: Context) : super(context) { - init(context, null) - } - - constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { - init(context, attrs) - } - - constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super( - context, - attrs, - defStyleAttr - ) { - init(context, attrs) - } - - private fun init(context: Context, attrs: AttributeSet?) { - - val ta: TypedArray = context.obtainStyledAttributes(attrs, R.styleable.BottomNavigationBar) - val resourceId = ta.getResourceId(R.styleable.BottomNavigationBar_layoutResource, R.layout.layout_browser_bottom_navigation_bar) - - ta.recycle() - - View.inflate(context, resourceId, this) - } - - fun onItemClicked(view: View, onClick: () -> Unit) { - view.setOnClickListener { - onClick() - } - } - - fun animateBarVisibility(isVisible: Boolean) { - val offsetAnimator = ValueAnimator().apply { - interpolator = DecelerateInterpolator() - duration = 150L - } - - offsetAnimator.addUpdateListener { - translationY = it.animatedValue as Float - } - - val targetTranslation = if (isVisible) 0f else height.toFloat() - offsetAnimator.setFloatValues(translationY, targetTranslation) - offsetAnimator.start() - } -} diff --git a/app/src/main/java/com/duckduckgo/app/browser/ui/BottomNavigationBehavior.kt b/app/src/main/java/com/duckduckgo/app/browser/ui/BottomNavigationBehavior.kt deleted file mode 100644 index a6192da9924c..000000000000 --- a/app/src/main/java/com/duckduckgo/app/browser/ui/BottomNavigationBehavior.kt +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright (c) 2020 DuckDuckGo - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.duckduckgo.app.browser.ui - -import android.animation.ValueAnimator -import android.content.Context -import android.util.AttributeSet -import android.view.Gravity -import android.view.View -import android.view.animation.DecelerateInterpolator -import androidx.coordinatorlayout.widget.CoordinatorLayout -import androidx.core.view.ViewCompat -import com.google.android.material.snackbar.Snackbar - -class BottomNavigationBehavior(context: Context, attrs: AttributeSet) : - CoordinatorLayout.Behavior(context, attrs) { - - @ViewCompat.NestedScrollType - private var lastStartedType: Int = 0 - - private var offsetAnimator: ValueAnimator? = null - - private var isSnappingEnabled = true - - override fun layoutDependsOn(parent: CoordinatorLayout, child: V, dependency: View): Boolean { - if (dependency is Snackbar.SnackbarLayout) { - updateSnackbar(child, dependency) - } - - return super.layoutDependsOn(parent, child, dependency) - } - - override fun onStartNestedScroll( - coordinatorLayout: CoordinatorLayout, - child: V, - directTargetChild: View, - target: View, - axes: Int, - type: Int - ): Boolean { - if (axes != ViewCompat.SCROLL_AXIS_VERTICAL) - return false - - lastStartedType = type - - offsetAnimator?.cancel() - - return true - } - - override fun onNestedPreScroll(coordinatorLayout: CoordinatorLayout, child: V, target: View, dx: Int, dy: Int, consumed: IntArray, type: Int) { - super.onNestedPreScroll(coordinatorLayout, child, target, dx, dy, consumed, type) - child.translationY = kotlin.math.max(0f, kotlin.math.min(child.height.toFloat(), child.translationY + dy)) - } - - override fun onStopNestedScroll(coordinatorLayout: CoordinatorLayout, child: V, target: View, type: Int) { - if (!isSnappingEnabled) - return - - if (lastStartedType == ViewCompat.TYPE_TOUCH || type == ViewCompat.TYPE_NON_TOUCH) { - // find nearest seam - val currTranslation = child.translationY - val childHalfHeight = child.height * 0.5f - - // translate down - if (currTranslation >= childHalfHeight) { - animateBarVisibility(child, isVisible = false) - } - // translate up - else { - animateBarVisibility(child, isVisible = true) - } - } - } - - private fun animateBarVisibility(child: View, isVisible: Boolean) { - if (offsetAnimator == null) { - offsetAnimator = ValueAnimator().apply { - interpolator = DecelerateInterpolator() - duration = 150L - } - - offsetAnimator?.addUpdateListener { - child.translationY = it.animatedValue as Float - } - } else { - offsetAnimator?.cancel() - } - - val targetTranslation = if (isVisible) 0f else child.height.toFloat() - offsetAnimator?.setFloatValues(child.translationY, targetTranslation) - offsetAnimator?.start() - } - - private fun updateSnackbar(child: View, snackbarLayout: Snackbar.SnackbarLayout) { - if (snackbarLayout.layoutParams is CoordinatorLayout.LayoutParams) { - val params = snackbarLayout.layoutParams as CoordinatorLayout.LayoutParams - - params.anchorId = child.id - params.anchorGravity = Gravity.TOP - params.gravity = Gravity.TOP - snackbarLayout.layoutParams = params - } - } -} diff --git a/app/src/main/java/com/duckduckgo/app/di/AndroidBindingModule.kt b/app/src/main/java/com/duckduckgo/app/di/AndroidBindingModule.kt index 1ba4fbff7d64..2ab2a5da3efa 100644 --- a/app/src/main/java/com/duckduckgo/app/di/AndroidBindingModule.kt +++ b/app/src/main/java/com/duckduckgo/app/di/AndroidBindingModule.kt @@ -45,7 +45,6 @@ import com.duckduckgo.app.settings.SettingsActivity import com.duckduckgo.app.survey.ui.SurveyActivity import com.duckduckgo.app.systemsearch.SystemSearchActivity import com.duckduckgo.app.tabs.ui.TabSwitcherActivity -import com.duckduckgo.app.tabs.ui.TabSwitcherBottomBarFeatureActivity import com.duckduckgo.app.widget.ui.AddWidgetInstructionsActivity import dagger.Module import dagger.android.ContributesAndroidInjector @@ -75,10 +74,6 @@ abstract class AndroidBindingModule { @ContributesAndroidInjector abstract fun tabsActivity(): TabSwitcherActivity - @ActivityScoped - @ContributesAndroidInjector - abstract fun tabsExperimentActivity(): TabSwitcherBottomBarFeatureActivity - @ActivityScoped @ContributesAndroidInjector abstract fun privacyDashboardActivity(): PrivacyDashboardActivity diff --git a/app/src/main/java/com/duckduckgo/app/statistics/VariantManager.kt b/app/src/main/java/com/duckduckgo/app/statistics/VariantManager.kt index 427123d7cf3a..fb076fbbcd0f 100644 --- a/app/src/main/java/com/duckduckgo/app/statistics/VariantManager.kt +++ b/app/src/main/java/com/duckduckgo/app/statistics/VariantManager.kt @@ -19,7 +19,6 @@ package com.duckduckgo.app.statistics import androidx.annotation.WorkerThread import com.duckduckgo.app.statistics.VariantManager.Companion.DEFAULT_VARIANT import com.duckduckgo.app.statistics.VariantManager.Companion.referrerVariant -import com.duckduckgo.app.statistics.VariantManager.VariantFeature.BottomBarNavigation import com.duckduckgo.app.statistics.store.StatisticsDataStore import timber.log.Timber import java.util.* @@ -28,9 +27,7 @@ import java.util.* interface VariantManager { // variant-dependant features listed here - sealed class VariantFeature { - object BottomBarNavigation : VariantFeature() - } + sealed class VariantFeature companion object { @@ -43,19 +40,7 @@ interface VariantManager { // SERP variants. "sc" may also be used as a shared control for mobile experiments in // the future if we can filter by app version Variant(key = "sc", weight = 0.0, features = emptyList(), filterBy = { noFilter() }), - Variant(key = "se", weight = 0.0, features = emptyList(), filterBy = { noFilter() }), - - // Bottom Bar Navigation Experiment - Variant( - key = "mb", - weight = 1.0, - features = emptyList(), - filterBy = { noFilter() }), - Variant( - key = "mk", - weight = 1.0, - features = listOf(BottomBarNavigation), - filterBy = { noFilter() }) + Variant(key = "se", weight = 0.0, features = emptyList(), filterBy = { noFilter() }) // All groups in an experiment (control and variants) MUST use the same filters ) diff --git a/app/src/main/java/com/duckduckgo/app/statistics/pixels/Pixel.kt b/app/src/main/java/com/duckduckgo/app/statistics/pixels/Pixel.kt index 4be178a2d6ff..df914befcfbb 100644 --- a/app/src/main/java/com/duckduckgo/app/statistics/pixels/Pixel.kt +++ b/app/src/main/java/com/duckduckgo/app/statistics/pixels/Pixel.kt @@ -169,12 +169,11 @@ interface Pixel { CHANGE_APP_ICON_OPENED("m_ic"), - MENU_ACTION_POPUP_OPENED("m_nav_pm_o_%s"), - MENU_ACTION_FIRE_PRESSED("m_nav_f_p_%s"), - MENU_ACTION_REFRESH_PRESSED("m_nav_r_p_%s"), - MENU_ACTION_NEW_TAB_PRESSED("m_nav_nt_p_%s"), - MENU_ACTION_BOOKMARKS_PRESSED("m_nav_b_p_%s"), - MENU_ACTION_SEARCH_PRESSED("m_nav_s_p_%s"), + MENU_ACTION_POPUP_OPENED("m_nav_pm_o"), + MENU_ACTION_FIRE_PRESSED("m_nav_f_p"), + MENU_ACTION_REFRESH_PRESSED("m_nav_r_p"), + MENU_ACTION_NEW_TAB_PRESSED("m_nav_nt_p"), + MENU_ACTION_BOOKMARKS_PRESSED("m_nav_b_p"), COOKIE_DATABASE_NOT_FOUND("m_cdb_nf"), COOKIE_DATABASE_OPEN_ERROR("m_cdb_oe"), diff --git a/app/src/main/java/com/duckduckgo/app/tabs/ui/TabSwitcherBottomBarFeatureActivity.kt b/app/src/main/java/com/duckduckgo/app/tabs/ui/TabSwitcherBottomBarFeatureActivity.kt deleted file mode 100644 index 1ff2a5e3141c..000000000000 --- a/app/src/main/java/com/duckduckgo/app/tabs/ui/TabSwitcherBottomBarFeatureActivity.kt +++ /dev/null @@ -1,245 +0,0 @@ -/* - * Copyright (c) 2020 DuckDuckGo - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.duckduckgo.app.tabs.ui - -import android.content.Context -import android.content.Intent -import android.graphics.Color -import android.os.Bundle -import android.view.Menu -import android.view.MenuItem -import androidx.lifecycle.Observer -import androidx.recyclerview.widget.GridLayoutManager -import androidx.recyclerview.widget.ItemTouchHelper -import com.duckduckgo.app.browser.R -import com.duckduckgo.app.browser.tabpreview.WebViewPreviewPersister -import com.duckduckgo.app.global.DuckDuckGoActivity -import com.duckduckgo.app.global.view.ClearPersonalDataAction -import com.duckduckgo.app.global.view.FireDialog -import com.duckduckgo.app.settings.SettingsActivity -import com.duckduckgo.app.statistics.VariantManager -import com.duckduckgo.app.statistics.pixels.Pixel -import com.duckduckgo.app.tabs.model.TabEntity -import com.duckduckgo.app.tabs.ui.TabSwitcherViewModel.Command -import com.duckduckgo.app.tabs.ui.TabSwitcherViewModel.Command.Close -import com.duckduckgo.app.tabs.ui.TabSwitcherViewModel.Command.DisplayMessage -import kotlinx.android.synthetic.main.activity_tab_switcher_bottom_bar_feature.tabsRecycler -import kotlinx.android.synthetic.main.fragment_browser_tab.bottomNavigationBar -import kotlinx.android.synthetic.main.layout_tabs_bottom_navigation_bar.* -import kotlinx.android.synthetic.main.popup_window_browser_menu.view.settingsPopupMenuItem -import kotlinx.android.synthetic.main.popup_window_tabs_menu.view.closeAllTabs -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.SupervisorJob -import kotlinx.coroutines.launch -import org.jetbrains.anko.longToast -import javax.inject.Inject -import kotlin.coroutines.CoroutineContext - -class TabSwitcherBottomBarFeatureActivity : DuckDuckGoActivity(), TabSwitcherListener, CoroutineScope { - - override val coroutineContext: CoroutineContext - get() = SupervisorJob() + Dispatchers.Main - - @Inject - lateinit var clearPersonalDataAction: ClearPersonalDataAction - - @Inject - lateinit var variantManager: VariantManager - - @Inject - lateinit var gridViewColumnCalculator: GridViewColumnCalculator - - @Inject - lateinit var webViewPreviewPersister: WebViewPreviewPersister - - @Inject - lateinit var pixel: Pixel - - private val viewModel: TabSwitcherViewModel by bindViewModel() - - private val tabsAdapter: TabSwitcherAdapter by lazy { TabSwitcherAdapter(this, webViewPreviewPersister) } - - // we need to scroll to show selected tab, but only if it is the first time loading the tabs. - private var firstTimeLoadingTabsList = true - - private var selectedTabId: String? = null - - private lateinit var popupMenu: TabsPopupMenu - - private lateinit var tabGridItemDecorator: TabGridItemDecorator - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - window.statusBarColor = Color.TRANSPARENT - - setContentView(R.layout.activity_tab_switcher_bottom_bar_feature) - extractIntentExtras() - configureRecycler() - configureObservers() - configureBottomBar() - createPopUpMenu() - - } - - private fun extractIntentExtras() { - selectedTabId = intent.getStringExtra(EXTRA_KEY_SELECTED_TAB) - } - - private fun configureRecycler() { - val numberColumns = gridViewColumnCalculator.calculateNumberOfColumns(TAB_GRID_COLUMN_WIDTH_DP, TAB_GRID_MAX_COLUMN_COUNT) - val layoutManager = GridLayoutManager(this, numberColumns) - tabsRecycler.layoutManager = layoutManager - tabsRecycler.adapter = tabsAdapter - - val swipeListener = ItemTouchHelper(SwipeToCloseTabListener(tabsAdapter, numberColumns, object : SwipeToCloseTabListener.OnTabSwipedListener { - override fun onSwiped(tab: TabEntity) { - onTabDeleted(tab) - } - })) - swipeListener.attachToRecyclerView(tabsRecycler) - - tabGridItemDecorator = TabGridItemDecorator(this, selectedTabId) - tabsRecycler.addItemDecoration(tabGridItemDecorator) - } - - private fun configureObservers() { - viewModel.tabs.observe(this, Observer> { - render(it) - }) - viewModel.command.observe(this, Observer { - processCommand(it) - }) - } - - private fun render(tabs: List) { - tabsAdapter.updateData(tabs) - - if (firstTimeLoadingTabsList) { - firstTimeLoadingTabsList = false - - scrollToShowCurrentTab() - } - } - - private fun scrollToShowCurrentTab() { - val index = tabsAdapter.adapterPositionForTab(selectedTabId) - tabsRecycler.scrollToPosition(index) - } - - private fun processCommand(command: Command?) { - when (command) { - is DisplayMessage -> applicationContext?.longToast(command.messageId) - is Close -> finishAfterTransition() - } - } - - private fun configureBottomBar() { - bottomNavigationBar.apply { - onItemClicked(bottomBarNewTabItem) { onNewTabRequested() } - onItemClicked(bottomBarFireItem) { onFire() } - onItemClicked(bottomBarOverflowItem) { popupMenu.show(rootView, bottomNavigationBar) } - } - } - - private fun createPopUpMenu() { - popupMenu = TabsPopupMenu(layoutInflater) - val view = popupMenu.contentView - popupMenu.apply { - onMenuItemClicked(view.closeAllTabs) { closeAllTabs() } - onMenuItemClicked(view.settingsPopupMenuItem) { showSettings() } - } - } - - override fun onCreateOptionsMenu(menu: Menu?): Boolean { - menuInflater.inflate(R.menu.menu_tab_switcher_activity, menu) - return true - } - - override fun onOptionsItemSelected(item: MenuItem): Boolean { - when (item.itemId) { - R.id.fire -> onFire() - R.id.newTab, R.id.newTabOverflow -> onNewTabRequested() - R.id.closeAllTabs -> closeAllTabs() - R.id.settings -> showSettings() - } - return super.onOptionsItemSelected(item) - } - - private fun onFire() { - pixel.fire(Pixel.PixelName.FORGET_ALL_PRESSED_TABSWITCHING) - val dialog = FireDialog(context = this, clearPersonalDataAction = clearPersonalDataAction) - dialog.clearComplete = { viewModel.onClearComplete() } - dialog.show() - } - - override fun onNewTabRequested() { - clearObserversEarlyToStopViewUpdates() - launch { viewModel.onNewTabRequested() } - } - - override fun onTabSelected(tab: TabEntity) { - selectedTabId = tab.tabId - updateTabGridItemDecorator(tab) - launch { viewModel.onTabSelected(tab) } - } - - private fun updateTabGridItemDecorator(tab: TabEntity) { - tabGridItemDecorator.selectedTabId = tab.tabId - tabsRecycler.invalidateItemDecorations() - } - - override fun onTabDeleted(tab: TabEntity) { - launch { viewModel.onTabDeleted(tab) } - } - - private fun closeAllTabs() { - launch { - viewModel.tabs.value?.forEach { - viewModel.onTabDeleted(it) - } - } - } - - private fun showSettings() { - startActivity(SettingsActivity.intent(this)) - } - - override fun finish() { - clearObserversEarlyToStopViewUpdates() - super.finish() - overridePendingTransition(R.anim.slide_from_bottom, R.anim.tab_anim_fade_out) - } - - private fun clearObserversEarlyToStopViewUpdates() { - viewModel.tabs.removeObservers(this) - } - - companion object { - fun intent(context: Context, selectedTabId: String? = null): Intent { - val intent = Intent(context, TabSwitcherBottomBarFeatureActivity::class.java) - intent.putExtra(EXTRA_KEY_SELECTED_TAB, selectedTabId) - return intent - } - - const val EXTRA_KEY_SELECTED_TAB = "selected" - - private const val TAB_GRID_COLUMN_WIDTH_DP = 180 - private const val TAB_GRID_MAX_COLUMN_COUNT = 4 - } -} diff --git a/app/src/main/res/drawable/bottom_navigation_bar_bg.xml b/app/src/main/res/drawable/bottom_navigation_bar_bg.xml deleted file mode 100644 index 79bff523c7a4..000000000000 --- a/app/src/main/res/drawable/bottom_navigation_bar_bg.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_tab_switcher_bottom_bar_feature.xml b/app/src/main/res/layout/activity_tab_switcher_bottom_bar_feature.xml deleted file mode 100644 index e6e198c10774..000000000000 --- a/app/src/main/res/layout/activity_tab_switcher_bottom_bar_feature.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - diff --git a/app/src/main/res/layout/fragment_browser_tab.xml b/app/src/main/res/layout/fragment_browser_tab.xml index 50767e75aeed..bc9965e3dd01 100644 --- a/app/src/main/res/layout/fragment_browser_tab.xml +++ b/app/src/main/res/layout/fragment_browser_tab.xml @@ -23,18 +23,6 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/layout_tabs_bottom_navigation_bar.xml b/app/src/main/res/layout/layout_tabs_bottom_navigation_bar.xml deleted file mode 100644 index 0836958417d1..000000000000 --- a/app/src/main/res/layout/layout_tabs_bottom_navigation_bar.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/popup_window_browser_bottom_tab_menu.xml b/app/src/main/res/layout/popup_window_browser_bottom_tab_menu.xml deleted file mode 100644 index a62062ebee55..000000000000 --- a/app/src/main/res/layout/popup_window_browser_bottom_tab_menu.xml +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index af0e95853018..a96851ddc505 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -70,8 +70,4 @@ - - - - diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 80b525be6dca..a17b74e8c2ac 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -36,6 +36,4 @@ 4dp 75dp - 48dp - \ No newline at end of file