For #12345: replace Activity.reportFullyDrawnSafe with a-c impl.
parent
a07f8a5041
commit
923d841403
|
@ -7,8 +7,6 @@ package org.mozilla.fenix.ext
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
import mozilla.components.support.base.log.Log
|
|
||||||
import org.mozilla.fenix.perf.Performance
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Attempts to call immersive mode using the View to hide the status bar and navigation buttons.
|
* Attempts to call immersive mode using the View to hide the status bar and navigation buttons.
|
||||||
|
@ -24,17 +22,3 @@ fun Activity.enterToImmersiveMode() {
|
||||||
or View.SYSTEM_UI_FLAG_FULLSCREEN
|
or View.SYSTEM_UI_FLAG_FULLSCREEN
|
||||||
or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY)
|
or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Calls [Activity.reportFullyDrawn] while also preventing crashes under some circumstances.
|
|
||||||
*/
|
|
||||||
fun Activity.reportFullyDrawnSafe() {
|
|
||||||
try {
|
|
||||||
reportFullyDrawn()
|
|
||||||
} catch (e: SecurityException) {
|
|
||||||
// This exception is throw on some Samsung devices. We were unable to identify the root
|
|
||||||
// cause but suspect it's related to Samsung security features. See
|
|
||||||
// https://github.com/mozilla-mobile/fenix/issues/12345#issuecomment-655058864 for details.
|
|
||||||
Log.log(Log.Priority.ERROR, Performance.TAG, e, "Unable to call reportFullyDrawn")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.IntentFilter
|
import android.content.IntentFilter
|
||||||
import android.os.BatteryManager
|
import android.os.BatteryManager
|
||||||
|
import mozilla.components.support.base.log.logger.Logger
|
||||||
import org.mozilla.fenix.ext.components
|
import org.mozilla.fenix.ext.components
|
||||||
import org.mozilla.fenix.onboarding.FenixOnboarding
|
import org.mozilla.fenix.onboarding.FenixOnboarding
|
||||||
import android.provider.Settings as AndroidSettings
|
import android.provider.Settings as AndroidSettings
|
||||||
|
@ -17,6 +18,8 @@ import android.provider.Settings as AndroidSettings
|
||||||
*/
|
*/
|
||||||
object Performance {
|
object Performance {
|
||||||
const val TAG = "FenixPerf"
|
const val TAG = "FenixPerf"
|
||||||
|
val logger = Logger(TAG)
|
||||||
|
|
||||||
private const val EXTRA_IS_PERFORMANCE_TEST = "performancetest"
|
private const val EXTRA_IS_PERFORMANCE_TEST = "performancetest"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -7,9 +7,9 @@ package org.mozilla.fenix.perf
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.core.view.doOnPreDraw
|
import androidx.core.view.doOnPreDraw
|
||||||
|
import mozilla.components.support.ktx.android.view.reportFullyDrawnSafe
|
||||||
import org.mozilla.fenix.HomeActivity
|
import org.mozilla.fenix.HomeActivity
|
||||||
import org.mozilla.fenix.R
|
import org.mozilla.fenix.R
|
||||||
import org.mozilla.fenix.ext.reportFullyDrawnSafe
|
|
||||||
import org.mozilla.fenix.home.sessioncontrol.viewholders.topsites.TopSiteItemViewHolder
|
import org.mozilla.fenix.home.sessioncontrol.viewholders.topsites.TopSiteItemViewHolder
|
||||||
import org.mozilla.fenix.perf.StartupTimelineStateMachine.StartupDestination.APP_LINK
|
import org.mozilla.fenix.perf.StartupTimelineStateMachine.StartupDestination.APP_LINK
|
||||||
import org.mozilla.fenix.perf.StartupTimelineStateMachine.StartupDestination.HOMESCREEN
|
import org.mozilla.fenix.perf.StartupTimelineStateMachine.StartupDestination.HOMESCREEN
|
||||||
|
@ -65,6 +65,6 @@ class StartupReportFullyDrawn {
|
||||||
// - the difference in timing is minimal (< 7ms on Pixel 2)
|
// - the difference in timing is minimal (< 7ms on Pixel 2)
|
||||||
// - if we compare against another app using a preDrawListener, as we are with Fennec, it
|
// - if we compare against another app using a preDrawListener, as we are with Fennec, it
|
||||||
// should be comparable
|
// should be comparable
|
||||||
view.doOnPreDraw { activity.reportFullyDrawnSafe() }
|
view.doOnPreDraw { activity.reportFullyDrawnSafe(Performance.logger) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue