From 10495657c5ea95f3eb2bfbb575b64972fdd5e632 Mon Sep 17 00:00:00 2001 From: Jeff Boek Date: Tue, 5 Feb 2019 15:37:46 -0800 Subject: [PATCH] For #311 - Uses Navigation component for opening the browser --- .../java/org/mozilla/fenix/HomeActivity.kt | 12 ------------ .../mozilla/fenix/browser/BrowserFragment.kt | 11 +++-------- .../fenix/customtabs/CustomTabActivity.kt | 19 ++++++++++++++++++- app/src/main/res/navigation/nav_graph.xml | 4 ++++ 4 files changed, 25 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt index 328b9f0a6..18efb63ed 100644 --- a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt +++ b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt @@ -10,24 +10,12 @@ import android.util.AttributeSet import android.view.View import androidx.appcompat.app.AppCompatActivity import mozilla.components.concept.engine.EngineView -import mozilla.components.feature.intent.IntentProcessor -import mozilla.components.support.utils.SafeIntent -import org.mozilla.fenix.browser.BrowserFragment import org.mozilla.fenix.ext.components open class HomeActivity : AppCompatActivity() { - private var sessionId: String? = null - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_home) - - if (savedInstanceState == null) { - sessionId = SafeIntent(intent).getStringExtra(IntentProcessor.ACTIVE_SESSION_ID) - supportFragmentManager.beginTransaction() - .replace(R.id.container, BrowserFragment.create(sessionId)) - .commit() - } } override fun onCreateView( diff --git a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt index 94eae4346..8c35126d2 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt @@ -139,7 +139,6 @@ class BrowserFragment : Fragment(), BackHandler { requireComponents.toolbar.menuBuilder ) { requireActivity().finish() } - lifecycle.addObservers( contextMenuFeature, downloadsFeature, @@ -164,9 +163,11 @@ class BrowserFragment : Fragment(), BackHandler { lifecycle.removeObserver(sessionFeature) } + @SuppressWarnings("ReturnCount") override fun onBackPressed(): Boolean { if (findInPageIntegration.onBackPressed()) return true if (sessionFeature.handleBackPressed()) return true + if (customTabsToolbarFeature.onBackPressed()) return true // We'll want to improve this when we add multitasking requireComponents.core.sessionManager.remove() @@ -190,15 +191,9 @@ class BrowserFragment : Fragment(), BackHandler { } companion object { - private const val SESSION_ID = "session_id" + const val SESSION_ID = "session_id" private const val REQUEST_CODE_DOWNLOAD_PERMISSIONS = 1 private const val REQUEST_CODE_PROMPT_PERMISSIONS = 2 private const val TOOLBAR_HEIGHT = 56f - - fun create(sessionId: String? = null): BrowserFragment = BrowserFragment().apply { - arguments = Bundle().apply { - putString(SESSION_ID, sessionId) - } - } } } diff --git a/app/src/main/java/org/mozilla/fenix/customtabs/CustomTabActivity.kt b/app/src/main/java/org/mozilla/fenix/customtabs/CustomTabActivity.kt index d42a1c4f2..72e03204d 100644 --- a/app/src/main/java/org/mozilla/fenix/customtabs/CustomTabActivity.kt +++ b/app/src/main/java/org/mozilla/fenix/customtabs/CustomTabActivity.kt @@ -4,6 +4,23 @@ package org.mozilla.fenix.customtabs +import android.os.Bundle +import androidx.navigation.fragment.NavHostFragment +import mozilla.components.feature.intent.IntentProcessor +import mozilla.components.support.utils.SafeIntent import org.mozilla.fenix.HomeActivity +import org.mozilla.fenix.R +import org.mozilla.fenix.browser.BrowserFragment -class CustomTabActivity : HomeActivity() +class CustomTabActivity : HomeActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + val sessionId = SafeIntent(intent).getStringExtra(IntentProcessor.ACTIVE_SESSION_ID) + val host = supportFragmentManager.findFragmentById(R.id.container) as NavHostFragment + + host.navController.navigate(R.id.action_global_browser, Bundle().apply { + putString(BrowserFragment.SESSION_ID, sessionId) + }) + } +} diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index f2a8a4144..5b7cbeb4a 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -5,6 +5,10 @@ android:id="@+id/nav_graph" app:startDestination="@id/homeFragment"> + +