Loading components/feature/downloads/src/main/java/mozilla/components/feature/downloads/DownloadMiddleware.kt +7 −1 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ import android.app.DownloadManager import android.content.Context import android.content.Intent import androidx.annotation.VisibleForTesting import androidx.core.content.ContextCompat import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.InternalCoroutinesApi Loading Loading @@ -113,8 +114,13 @@ class DownloadMiddleware( if (download.status !in arrayOf(COMPLETED, CANCELLED)) { val intent = Intent(applicationContext, downloadServiceClass) intent.putExtra(DownloadManager.EXTRA_DOWNLOAD_ID, download.id) applicationContext.startService(intent) startForegroundService(intent) logger.debug("Sending download intent ${download.fileName}") } } @VisibleForTesting internal fun startForegroundService(intent: Intent) { ContextCompat.startForegroundService(applicationContext, intent) } } components/feature/downloads/src/test/java/mozilla/components/feature/downloads/DownloadMiddlewareTest.kt +4 −3 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ import org.junit.runner.RunWith import org.mockito.Mockito.verify import org.mockito.Mockito.times import org.mockito.Mockito.never import org.mockito.Mockito.spy @RunWith(AndroidJUnit4::class) class DownloadMiddlewareTest { Loading @@ -63,12 +64,12 @@ class DownloadMiddlewareTest { @Test fun `service is started when download is queued`() = runBlockingTest { val applicationContext: Context = mock() val downloadMiddleware = DownloadMiddleware( val downloadMiddleware = spy(DownloadMiddleware( applicationContext, AbstractFetchDownloadService::class.java, coroutineContext = dispatcher, downloadStorage = mock() ) )) val store = BrowserStore( initialState = BrowserState(), middleware = listOf(downloadMiddleware) Loading @@ -78,7 +79,7 @@ class DownloadMiddlewareTest { store.dispatch(DownloadAction.AddDownloadAction(download)).joinBlocking() val intentCaptor = argumentCaptor<Intent>() verify(applicationContext).startService(intentCaptor.capture()) verify(downloadMiddleware).startForegroundService(intentCaptor.capture()) assertEquals(download.id, intentCaptor.value.getStringExtra(EXTRA_DOWNLOAD_ID)) } Loading Loading
components/feature/downloads/src/main/java/mozilla/components/feature/downloads/DownloadMiddleware.kt +7 −1 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ import android.app.DownloadManager import android.content.Context import android.content.Intent import androidx.annotation.VisibleForTesting import androidx.core.content.ContextCompat import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.InternalCoroutinesApi Loading Loading @@ -113,8 +114,13 @@ class DownloadMiddleware( if (download.status !in arrayOf(COMPLETED, CANCELLED)) { val intent = Intent(applicationContext, downloadServiceClass) intent.putExtra(DownloadManager.EXTRA_DOWNLOAD_ID, download.id) applicationContext.startService(intent) startForegroundService(intent) logger.debug("Sending download intent ${download.fileName}") } } @VisibleForTesting internal fun startForegroundService(intent: Intent) { ContextCompat.startForegroundService(applicationContext, intent) } }
components/feature/downloads/src/test/java/mozilla/components/feature/downloads/DownloadMiddlewareTest.kt +4 −3 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ import org.junit.runner.RunWith import org.mockito.Mockito.verify import org.mockito.Mockito.times import org.mockito.Mockito.never import org.mockito.Mockito.spy @RunWith(AndroidJUnit4::class) class DownloadMiddlewareTest { Loading @@ -63,12 +64,12 @@ class DownloadMiddlewareTest { @Test fun `service is started when download is queued`() = runBlockingTest { val applicationContext: Context = mock() val downloadMiddleware = DownloadMiddleware( val downloadMiddleware = spy(DownloadMiddleware( applicationContext, AbstractFetchDownloadService::class.java, coroutineContext = dispatcher, downloadStorage = mock() ) )) val store = BrowserStore( initialState = BrowserState(), middleware = listOf(downloadMiddleware) Loading @@ -78,7 +79,7 @@ class DownloadMiddlewareTest { store.dispatch(DownloadAction.AddDownloadAction(download)).joinBlocking() val intentCaptor = argumentCaptor<Intent>() verify(applicationContext).startService(intentCaptor.capture()) verify(downloadMiddleware).startForegroundService(intentCaptor.capture()) assertEquals(download.id, intentCaptor.value.getStringExtra(EXTRA_DOWNLOAD_ID)) } Loading