From 368d2e5dfd6f3e0e7adf8232f49095b96793353d Mon Sep 17 00:00:00 2001 From: ekager Date: Mon, 4 May 2020 23:29:33 -0700 Subject: [PATCH] For #6313 - On first load, hides engineView until firstContentfulPaint --- .../fenix/browser/BaseBrowserFragment.kt | 12 ++++++++- .../mozilla/fenix/browser/BrowserAnimator.kt | 26 ++++++------------- 2 files changed, 19 insertions(+), 19 deletions(-) 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 8c5ac8dee9d2..028f65ba9bf9 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt @@ -179,7 +179,8 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session engineView = WeakReference(engineView), swipeRefresh = WeakReference(swipeRefresh), viewLifecycleScope = viewLifecycleOwner.lifecycleScope, - arguments = requireArguments() + arguments = requireArguments(), + firstContentful = ::didFirstContentfulHappen ).apply { beginAnimateInIfNecessary() } @@ -862,6 +863,15 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session } } + private fun didFirstContentfulHappen(): Boolean { + val store = context?.components?.core?.store + val tabState = store?.state?.tabs?.find { + it.id == (customTabSessionId + ?: context?.components?.core?.sessionManager?.selectedSession?.id) + } + return tabState?.content?.firstContentfulPaint == true + } + /* * Dereference these views when the fragment view is destroyed to prevent memory leaks */ 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 a4fd68e2b475..ceb0f2720d7f 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/BrowserAnimator.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/BrowserAnimator.kt @@ -33,7 +33,8 @@ class BrowserAnimator( private val engineView: WeakReference, private val swipeRefresh: WeakReference, private val viewLifecycleScope: LifecycleCoroutineScope, - private val arguments: Bundle + private val arguments: Bundle, + private val firstContentfulHappened: () -> Boolean ) { private val unwrappedEngineView: EngineView? @@ -52,22 +53,9 @@ class BrowserAnimator( } doOnEnd { - unwrappedEngineView?.asView()?.visibility = View.VISIBLE - unwrappedSwipeRefresh?.background = null - arguments.putBoolean(SHOULD_ANIMATE_FLAG, false) - } - - interpolator = DecelerateInterpolator() - duration = ANIMATION_DURATION - } - - private val browserFadeInValueAnimator = ValueAnimator.ofFloat(0f, END_ANIMATOR_VALUE).apply { - addUpdateListener { - unwrappedSwipeRefresh?.alpha = it.animatedFraction - } - - doOnEnd { - unwrappedEngineView?.asView()?.visibility = View.VISIBLE + if (firstContentfulHappened()) { + unwrappedEngineView?.asView()?.visibility = View.VISIBLE + } unwrappedSwipeRefresh?.background = null arguments.putBoolean(SHOULD_ANIMATE_FLAG, false) } @@ -92,7 +80,9 @@ class BrowserAnimator( } } else { unwrappedSwipeRefresh?.alpha = 1f - unwrappedEngineView?.asView()?.visibility = View.VISIBLE + if (firstContentfulHappened()) { + unwrappedEngineView?.asView()?.visibility = View.VISIBLE + } unwrappedSwipeRefresh?.background = null } }