For #6313 - On first load, hides engineView until firstContentfulPaint
parent
124b21d209
commit
d66762910f
|
@ -40,12 +40,6 @@ import org.mozilla.fenix.helpers.click
|
|||
import org.mozilla.fenix.helpers.ext.waitNotNull
|
||||
|
||||
class BrowserRobot {
|
||||
|
||||
fun verifyBrowserScreen() {
|
||||
onView(ViewMatchers.withResourceName("browserLayout"))
|
||||
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||
}
|
||||
|
||||
fun verifyCurrentPrivateSession(context: Context) {
|
||||
val session = context.components.core.sessionManager.selectedSession
|
||||
assertTrue("Current session is private", session?.private!!)
|
||||
|
@ -79,6 +73,7 @@ class BrowserRobot {
|
|||
*/
|
||||
fun verifyPageContent(expectedText: String) {
|
||||
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)
|
||||
}
|
||||
|
||||
|
|
|
@ -179,7 +179,8 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
|
|||
engineView = WeakReference(engineView),
|
||||
swipeRefresh = WeakReference(swipeRefresh),
|
||||
viewLifecycleScope = viewLifecycleOwner.lifecycleScope,
|
||||
arguments = requireArguments()
|
||||
arguments = requireArguments(),
|
||||
firstContentfulHappened = ::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
|
||||
*/
|
||||
|
|
|
@ -33,7 +33,8 @@ class BrowserAnimator(
|
|||
private val engineView: WeakReference<EngineView>,
|
||||
private val swipeRefresh: WeakReference<View>,
|
||||
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
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue