Skip to content

Commit e3a9132

Browse files
authored
Add ServiceWorkerLifecycleObserver to BrowserActivity lifecycle instead of Application (duckduckgo#2131)
Task/Issue URL: https://app.asana.com/0/488551667048375/1202712032214375/f ### Description Another attempt to fix the crashes / anrs related to ServiceWorkerClient. Instead of setting the ServiceWorkerClient on application onStart() which might be too early in the process, we are delaying it to BrowserActivity's onCreate just before any webview is rendered. ### Steps to test this PR - [x] Smoke test app - [x] Load website with videos - [x] Go to `http://privacy-test-pages.glitch.me/privacy-protections/request-blocking/` and make sure the service worker request is blocked (colour is not green)
1 parent 3d473b8 commit e3a9132

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

app/src/main/java/com/duckduckgo/app/browser/BrowserActivity.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import com.duckduckgo.app.browser.databinding.IncludeOmnibarToolbarMockupBinding
3838
import com.duckduckgo.app.browser.rating.ui.AppEnjoymentDialogFragment
3939
import com.duckduckgo.app.browser.rating.ui.GiveFeedbackDialogFragment
4040
import com.duckduckgo.app.browser.rating.ui.RateAppDialogFragment
41+
import com.duckduckgo.app.browser.serviceworker.ServiceWorkerLifecycleObserver
4142
import com.duckduckgo.app.browser.shortcut.ShortcutBuilder
4243
import com.duckduckgo.app.cta.ui.CtaViewModel
4344
import com.duckduckgo.app.di.AppCoroutineScope
@@ -107,6 +108,9 @@ open class BrowserActivity : DuckDuckGoActivity(), CoroutineScope by MainScope()
107108
@Inject
108109
lateinit var userEventsStore: UserEventsStore
109110

111+
@Inject
112+
lateinit var serviceWorkerLifecycleObserver: ServiceWorkerLifecycleObserver
113+
110114
@Inject
111115
@AppCoroutineScope
112116
lateinit var appCoroutineScope: CoroutineScope
@@ -141,6 +145,7 @@ open class BrowserActivity : DuckDuckGoActivity(), CoroutineScope by MainScope()
141145
instanceStateBundles = CombinedInstanceState(originalInstanceState = savedInstanceState, newInstanceState = newInstanceState)
142146

143147
super.onCreate(savedInstanceState = newInstanceState, daggerInject = false)
148+
lifecycle.addObserver(serviceWorkerLifecycleObserver)
144149
toolbarMockupBinding = IncludeOmnibarToolbarMockupBinding.bind(binding.root)
145150
setContentView(binding.root)
146151
viewModel.viewState.observe(this) {

app/src/main/java/com/duckduckgo/app/browser/serviceworker/ServiceWorkerLifecycleObserver.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,15 @@ import androidx.webkit.WebViewFeature
2323
import androidx.webkit.WebViewFeature.SERVICE_WORKER_BASIC_USAGE
2424
import com.duckduckgo.app.browser.RequestInterceptor
2525
import com.duckduckgo.app.global.exception.UncaughtExceptionRepository
26-
import com.duckduckgo.di.scopes.AppScope
2726
import timber.log.Timber
2827
import javax.inject.Inject
29-
import dagger.SingleInstanceIn
3028

31-
@SingleInstanceIn(AppScope::class)
3229
class ServiceWorkerLifecycleObserver @Inject constructor(
3330
private val requestInterceptor: RequestInterceptor,
3431
private val uncaughtExceptionRepository: UncaughtExceptionRepository,
3532
) : DefaultLifecycleObserver {
36-
override fun onStart(owner: LifecycleOwner) {
37-
super.onStart(owner)
33+
override fun onCreate(owner: LifecycleOwner) {
34+
super.onCreate(owner)
3835

3936
if (WebViewFeature.isFeatureSupported(SERVICE_WORKER_BASIC_USAGE)) {
4037
try {

0 commit comments

Comments
 (0)