|
|
|
@ -16,6 +16,7 @@ import androidx.annotation.VisibleForTesting
|
|
|
|
|
import androidx.annotation.VisibleForTesting.PROTECTED
|
|
|
|
|
import androidx.appcompat.app.ActionBar
|
|
|
|
|
import androidx.appcompat.widget.Toolbar
|
|
|
|
|
import androidx.core.view.children
|
|
|
|
|
import androidx.lifecycle.lifecycleScope
|
|
|
|
|
import androidx.navigation.NavDestination
|
|
|
|
|
import androidx.navigation.NavDirections
|
|
|
|
@ -23,6 +24,7 @@ import androidx.navigation.fragment.NavHostFragment
|
|
|
|
|
import androidx.navigation.ui.AppBarConfiguration
|
|
|
|
|
import androidx.navigation.ui.NavigationUI
|
|
|
|
|
import kotlinx.android.synthetic.main.activity_home.navigationToolbarStub
|
|
|
|
|
import kotlinx.android.synthetic.main.navigation_toolbar.navigationToolbar
|
|
|
|
|
import kotlinx.coroutines.CoroutineScope
|
|
|
|
|
import kotlinx.coroutines.launch
|
|
|
|
|
import mozilla.components.browser.search.SearchEngine
|
|
|
|
@ -68,6 +70,8 @@ import org.mozilla.fenix.settings.logins.SavedLoginsFragmentDirections
|
|
|
|
|
import org.mozilla.fenix.theme.DefaultThemeManager
|
|
|
|
|
import org.mozilla.fenix.theme.ThemeManager
|
|
|
|
|
import org.mozilla.fenix.utils.BrowsersCache
|
|
|
|
|
import java.util.Timer
|
|
|
|
|
import kotlin.concurrent.schedule
|
|
|
|
|
|
|
|
|
|
@SuppressWarnings("TooManyFunctions", "LargeClass")
|
|
|
|
|
open class HomeActivity : LocaleAwareAppCompatActivity() {
|
|
|
|
@ -225,6 +229,11 @@ open class HomeActivity : LocaleAwareAppCompatActivity() {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// Temporary disable back button in action bar to prevent multiple navigation on fast consecutive clicks.
|
|
|
|
|
// See #8460
|
|
|
|
|
navigationToolbar.setChildrenClickable(false, 0)
|
|
|
|
|
navigationToolbar.setChildrenClickable(true, THROTTLE_TIME_MS)
|
|
|
|
|
|
|
|
|
|
super.onBackPressed()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -406,6 +415,14 @@ open class HomeActivity : LocaleAwareAppCompatActivity() {
|
|
|
|
|
navHost.navController.navigate(action)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun Toolbar.setChildrenClickable(boolean: Boolean, delayTime: Long) {
|
|
|
|
|
Timer().schedule(delayTime) {
|
|
|
|
|
this@setChildrenClickable.children.forEach {
|
|
|
|
|
it.isClickable = boolean
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
companion object {
|
|
|
|
|
const val OPEN_TO_BROWSER = "open_to_browser"
|
|
|
|
|
const val OPEN_TO_BROWSER_AND_LOAD = "open_to_browser_and_load"
|
|
|
|
@ -413,5 +430,6 @@ open class HomeActivity : LocaleAwareAppCompatActivity() {
|
|
|
|
|
const val PRIVATE_BROWSING_MODE = "private_browsing_mode"
|
|
|
|
|
const val EXTRA_DELETE_PRIVATE_TABS = "notification_delete_and_open"
|
|
|
|
|
const val EXTRA_OPENED_FROM_NOTIFICATION = "notification_open"
|
|
|
|
|
const val THROTTLE_TIME_MS = 500L
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|