For #6313 - On first load, hides engineView until firstContentfulPaint

fennec/production
ekager 4 years ago committed by Emily Kager
parent 124b21d209
commit d66762910f

@ -40,12 +40,6 @@ import org.mozilla.fenix.helpers.click
import org.mozilla.fenix.helpers.ext.waitNotNull import org.mozilla.fenix.helpers.ext.waitNotNull
class BrowserRobot { class BrowserRobot {
fun verifyBrowserScreen() {
onView(ViewMatchers.withResourceName("browserLayout"))
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
}
fun verifyCurrentPrivateSession(context: Context) { fun verifyCurrentPrivateSession(context: Context) {
val session = context.components.core.sessionManager.selectedSession val session = context.components.core.sessionManager.selectedSession
assertTrue("Current session is private", session?.private!!) assertTrue("Current session is private", session?.private!!)
@ -79,6 +73,7 @@ class BrowserRobot {
*/ */
fun verifyPageContent(expectedText: String) { fun verifyPageContent(expectedText: String) {
val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
mDevice.waitNotNull(Until.findObject(By.res("org.mozilla.fenix.debug:id/engineView")), waitingTime)
mDevice.waitNotNull(Until.findObject(text(expectedText)), waitingTime) mDevice.waitNotNull(Until.findObject(text(expectedText)), waitingTime)
} }

@ -179,7 +179,8 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
engineView = WeakReference(engineView), engineView = WeakReference(engineView),
swipeRefresh = WeakReference(swipeRefresh), swipeRefresh = WeakReference(swipeRefresh),
viewLifecycleScope = viewLifecycleOwner.lifecycleScope, viewLifecycleScope = viewLifecycleOwner.lifecycleScope,
arguments = requireArguments() arguments = requireArguments(),
firstContentfulHappened = ::didFirstContentfulHappen
).apply { ).apply {
beginAnimateInIfNecessary() 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 * Dereference these views when the fragment view is destroyed to prevent memory leaks
*/ */

@ -33,7 +33,8 @@ class BrowserAnimator(
private val engineView: WeakReference<EngineView>, private val engineView: WeakReference<EngineView>,
private val swipeRefresh: WeakReference<View>, private val swipeRefresh: WeakReference<View>,
private val viewLifecycleScope: LifecycleCoroutineScope, private val viewLifecycleScope: LifecycleCoroutineScope,
private val arguments: Bundle private val arguments: Bundle,
private val firstContentfulHappened: () -> Boolean
) { ) {
private val unwrappedEngineView: EngineView? private val unwrappedEngineView: EngineView?
@ -52,22 +53,9 @@ class BrowserAnimator(
} }
doOnEnd { doOnEnd {
unwrappedEngineView?.asView()?.visibility = View.VISIBLE if (firstContentfulHappened()) {
unwrappedSwipeRefresh?.background = null unwrappedEngineView?.asView()?.visibility = View.VISIBLE
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
unwrappedSwipeRefresh?.background = null unwrappedSwipeRefresh?.background = null
arguments.putBoolean(SHOULD_ANIMATE_FLAG, false) arguments.putBoolean(SHOULD_ANIMATE_FLAG, false)
} }
@ -92,7 +80,9 @@ class BrowserAnimator(
} }
} else { } else {
unwrappedSwipeRefresh?.alpha = 1f unwrappedSwipeRefresh?.alpha = 1f
unwrappedEngineView?.asView()?.visibility = View.VISIBLE if (firstContentfulHappened()) {
unwrappedEngineView?.asView()?.visibility = View.VISIBLE
}
unwrappedSwipeRefresh?.background = null unwrappedSwipeRefresh?.background = null
} }
} }

Loading…
Cancel
Save