1
0
Fork 0

For #12345: replace Activity.reportFullyDrawnSafe with a-c impl.

master
Michael Comella 2020-07-22 10:48:11 -07:00 committed by Michael Comella
parent a07f8a5041
commit 923d841403
3 changed files with 5 additions and 18 deletions

View File

@ -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")
}
}

View File

@ -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"
/** /**

View File

@ -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) }
} }
} }