For #10784 - Fixes memory leak in BrowserAnimator
parent
f0c6bc0226
commit
1dc0ad39f4
|
@ -117,7 +117,7 @@ import java.lang.ref.WeakReference
|
|||
@ExperimentalCoroutinesApi
|
||||
@Suppress("TooManyFunctions", "LargeClass")
|
||||
abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, SessionManager.Observer {
|
||||
protected lateinit var browserFragmentStore: BrowserFragmentStore
|
||||
private lateinit var browserFragmentStore: BrowserFragmentStore
|
||||
private lateinit var browserAnimator: BrowserAnimator
|
||||
|
||||
private var _browserInteractor: BrowserToolbarViewInteractor? = null
|
||||
|
@ -195,7 +195,7 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
|
|||
fragment = WeakReference(this),
|
||||
engineView = WeakReference(engineView),
|
||||
swipeRefresh = WeakReference(swipeRefresh),
|
||||
viewLifecycleScope = viewLifecycleOwner.lifecycleScope,
|
||||
viewLifecycleScope = WeakReference(viewLifecycleOwner.lifecycleScope),
|
||||
arguments = requireArguments()
|
||||
).apply {
|
||||
beginAnimateInIfNecessary()
|
||||
|
@ -514,7 +514,7 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
|
|||
context.settings().setSitePermissionSettingListener(viewLifecycleOwner) {
|
||||
// If the user connects to WIFI while on the BrowserFragment, this will update the
|
||||
// SitePermissionsRules (specifically autoplay) accordingly
|
||||
this.context?.let { assignSitePermissionsRules(it) }
|
||||
assignSitePermissionsRules(context)
|
||||
}
|
||||
assignSitePermissionsRules(context)
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ class BrowserAnimator(
|
|||
private val fragment: WeakReference<Fragment>,
|
||||
private val engineView: WeakReference<EngineView>,
|
||||
private val swipeRefresh: WeakReference<View>,
|
||||
private val viewLifecycleScope: LifecycleCoroutineScope,
|
||||
private val viewLifecycleScope: WeakReference<LifecycleCoroutineScope>,
|
||||
private val arguments: Bundle
|
||||
) {
|
||||
|
||||
|
@ -83,7 +83,7 @@ class BrowserAnimator(
|
|||
fun beginAnimateInIfNecessary() {
|
||||
val shouldAnimate = arguments.getBoolean(SHOULD_ANIMATE_FLAG, false)
|
||||
if (shouldAnimate) {
|
||||
viewLifecycleScope.launch(Dispatchers.Main) {
|
||||
viewLifecycleScope.get()?.launch(Dispatchers.Main) {
|
||||
delay(ANIMATION_DELAY)
|
||||
captureEngineViewAndDrawStatically {
|
||||
unwrappedSwipeRefresh?.alpha = 0f
|
||||
|
@ -101,7 +101,7 @@ class BrowserAnimator(
|
|||
* Triggers the *zoom out* browser animation to run.
|
||||
*/
|
||||
fun beginAnimateOut() {
|
||||
viewLifecycleScope.launch(Dispatchers.Main) {
|
||||
viewLifecycleScope.get()?.launch(Dispatchers.Main) {
|
||||
captureEngineViewAndDrawStatically {
|
||||
unwrappedEngineView?.asView()?.visibility = View.GONE
|
||||
browserZoomInValueAnimator.reverse()
|
||||
|
@ -115,7 +115,7 @@ class BrowserAnimator(
|
|||
*/
|
||||
fun captureEngineViewAndDrawStatically(onComplete: () -> Unit) {
|
||||
unwrappedEngineView?.asView()?.context.let {
|
||||
viewLifecycleScope.launch {
|
||||
viewLifecycleScope.get()?.launch {
|
||||
// isAdded check is necessary because of a bug in viewLifecycleOwner. See AC#3828
|
||||
if (!fragment.isAdded()) {
|
||||
return@launch
|
||||
|
|
Loading…
Reference in New Issue