diff --git a/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt b/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt index 475052804..25be5f7b5 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt @@ -117,7 +117,7 @@ import java.lang.ref.WeakReference @ExperimentalCoroutinesApi @Suppress("TooManyFunctions", "LargeClass") abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, SessionManager.Observer { - protected lateinit var browserFragmentStore: BrowserFragmentStore + private lateinit var browserFragmentStore: BrowserFragmentStore private lateinit var browserAnimator: BrowserAnimator private var _browserInteractor: BrowserToolbarViewInteractor? = null @@ -195,7 +195,7 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session fragment = WeakReference(this), engineView = WeakReference(engineView), swipeRefresh = WeakReference(swipeRefresh), - viewLifecycleScope = viewLifecycleOwner.lifecycleScope, + viewLifecycleScope = WeakReference(viewLifecycleOwner.lifecycleScope), arguments = requireArguments() ).apply { beginAnimateInIfNecessary() @@ -514,7 +514,7 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session context.settings().setSitePermissionSettingListener(viewLifecycleOwner) { // If the user connects to WIFI while on the BrowserFragment, this will update the // SitePermissionsRules (specifically autoplay) accordingly - this.context?.let { assignSitePermissionsRules(it) } + assignSitePermissionsRules(context) } assignSitePermissionsRules(context) diff --git a/app/src/main/java/org/mozilla/fenix/browser/BrowserAnimator.kt b/app/src/main/java/org/mozilla/fenix/browser/BrowserAnimator.kt index a4fd68e2b..5bb2fc83f 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/BrowserAnimator.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/BrowserAnimator.kt @@ -32,7 +32,7 @@ class BrowserAnimator( private val fragment: WeakReference, private val engineView: WeakReference, private val swipeRefresh: WeakReference, - private val viewLifecycleScope: LifecycleCoroutineScope, + private val viewLifecycleScope: WeakReference, private val arguments: Bundle ) { @@ -83,7 +83,7 @@ class BrowserAnimator( fun beginAnimateInIfNecessary() { val shouldAnimate = arguments.getBoolean(SHOULD_ANIMATE_FLAG, false) if (shouldAnimate) { - viewLifecycleScope.launch(Dispatchers.Main) { + viewLifecycleScope.get()?.launch(Dispatchers.Main) { delay(ANIMATION_DELAY) captureEngineViewAndDrawStatically { unwrappedSwipeRefresh?.alpha = 0f @@ -101,7 +101,7 @@ class BrowserAnimator( * Triggers the *zoom out* browser animation to run. */ fun beginAnimateOut() { - viewLifecycleScope.launch(Dispatchers.Main) { + viewLifecycleScope.get()?.launch(Dispatchers.Main) { captureEngineViewAndDrawStatically { unwrappedEngineView?.asView()?.visibility = View.GONE browserZoomInValueAnimator.reverse() @@ -115,7 +115,7 @@ class BrowserAnimator( */ fun captureEngineViewAndDrawStatically(onComplete: () -> Unit) { unwrappedEngineView?.asView()?.context.let { - viewLifecycleScope.launch { + viewLifecycleScope.get()?.launch { // isAdded check is necessary because of a bug in viewLifecycleOwner. See AC#3828 if (!fragment.isAdded()) { return@launch