From 05f831381f2856cb1807e7ff5b983da75d9ba7e5 Mon Sep 17 00:00:00 2001 From: Arturo Mejia Date: Thu, 16 Apr 2020 17:30:36 -0400 Subject: [PATCH] a --- .../addons/migration/SupportedAddonsChecker.kt | 6 ++++-- .../migration/SupportedAddonsWorkerTest.kt | 18 +++++++++++++++--- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/components/feature/addons/src/main/java/mozilla/components/feature/addons/migration/SupportedAddonsChecker.kt b/components/feature/addons/src/main/java/mozilla/components/feature/addons/migration/SupportedAddonsChecker.kt index 95c2ef3ea6d..c9b09d1707c 100644 --- a/components/feature/addons/src/main/java/mozilla/components/feature/addons/migration/SupportedAddonsChecker.kt +++ b/components/feature/addons/src/main/java/mozilla/components/feature/addons/migration/SupportedAddonsChecker.kt @@ -158,8 +158,10 @@ internal class SupportedAddonsWorker( } withContext(Dispatchers.Main) { - newSupportedAddons.map { - addonManager.enableAddon(it, source = EnableSource.APP_SUPPORT) + newSupportedAddons.forEach { + addonManager.enableAddon(it, source = EnableSource.APP_SUPPORT, onError = { error -> + GlobalAddonDependencyProvider.onCrash?.invoke(error) + }) } } diff --git a/components/feature/addons/src/test/java/mozilla/components/feature/addons/migration/SupportedAddonsWorkerTest.kt b/components/feature/addons/src/test/java/mozilla/components/feature/addons/migration/SupportedAddonsWorkerTest.kt index d704a90144a..ef5652a05e9 100644 --- a/components/feature/addons/src/test/java/mozilla/components/feature/addons/migration/SupportedAddonsWorkerTest.kt +++ b/components/feature/addons/src/test/java/mozilla/components/feature/addons/migration/SupportedAddonsWorkerTest.kt @@ -23,12 +23,16 @@ import mozilla.components.feature.addons.ui.translatedName import mozilla.components.support.base.ids.SharedIdsHelper import mozilla.components.support.ktx.android.content.appName import mozilla.components.support.test.mock +import mozilla.components.support.test.eq +import mozilla.components.support.test.any +import mozilla.components.support.test.argumentCaptor import mozilla.components.support.test.robolectric.testContext import mozilla.components.support.test.rule.MainCoroutineRule import mozilla.components.support.test.whenever import org.junit.After import org.junit.Assert.assertEquals import org.junit.Assert.assertTrue +import org.junit.Assert.assertNotNull import org.junit.Assert.assertFalse import org.junit.Before import org.junit.Rule @@ -36,6 +40,7 @@ import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mockito.verify import java.io.IOException +import java.lang.Exception @RunWith(AndroidJUnit4::class) class SupportedAddonsWorkerTest { @@ -58,7 +63,10 @@ class SupportedAddonsWorkerTest { fun `doWork - will return Result_success and create a notification when a new supported add-on is found`() { val addonManager = mock() val worker = TestListenableWorkerBuilder(testContext).build() - + var throwable: Throwable? = null + val onCrash = { caught: Throwable -> + throwable = caught + } val unsupportedAddon = mock { whenever(translatableName).thenReturn(mapOf(Addon.DEFAULT_LOCALE to "one")) whenever(isSupported()).thenReturn(true) @@ -66,7 +74,8 @@ class SupportedAddonsWorkerTest { whenever(defaultLocale).thenReturn(Addon.DEFAULT_LOCALE) } - GlobalAddonDependencyProvider.initialize(addonManager, mock()) + GlobalAddonDependencyProvider.initialize(addonManager, mock(), onCrash) + val onErrorCaptor = argumentCaptor<((Throwable) -> Unit)>() runBlocking { whenever(addonManager.getAddons()).thenReturn(listOf(unsupportedAddon)) @@ -76,7 +85,10 @@ class SupportedAddonsWorkerTest { val notificationId = SharedIdsHelper.getIdForTag(testContext, NOTIFICATION_TAG) assertTrue(isNotificationVisible(notificationId)) - verify(addonManager).enableAddon(unsupportedAddon, source = EnableSource.APP_SUPPORT) + verify(addonManager).enableAddon(eq(unsupportedAddon), source = eq(EnableSource.APP_SUPPORT), onSuccess = any(), onError = onErrorCaptor.capture()) + + onErrorCaptor.value.invoke(Exception()) + assertNotNull(throwable!!) } }