1
0
Fork 0

Update Kotlin dependency (#10806)

master
Tiger Oakes 2020-07-15 18:02:58 -07:00 committed by GitHub
parent 4153c11ea8
commit d0e9f1f165
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 37 additions and 54 deletions

View File

@ -13,7 +13,6 @@ import androidx.appcompat.app.AppCompatDelegate
import androidx.core.content.getSystemService import androidx.core.content.getSystemService
import kotlinx.coroutines.Deferred import kotlinx.coroutines.Deferred
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.async import kotlinx.coroutines.async
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ -67,7 +66,6 @@ open class FenixApplication : LocaleAwareApplication() {
var visibilityLifecycleCallback: VisibilityLifecycleCallback? = null var visibilityLifecycleCallback: VisibilityLifecycleCallback? = null
private set private set
@ExperimentalCoroutinesApi
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()
@ -116,7 +114,6 @@ open class FenixApplication : LocaleAwareApplication() {
Log.addSink(AndroidLogSink()) Log.addSink(AndroidLogSink())
} }
@ExperimentalCoroutinesApi
@CallSuper @CallSuper
open fun setupInMainProcessOnly() { open fun setupInMainProcessOnly() {
run { run {

View File

@ -29,6 +29,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
import kotlinx.android.synthetic.main.activity_home.* import kotlinx.android.synthetic.main.activity_home.*
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import mozilla.components.browser.search.SearchEngine import mozilla.components.browser.search.SearchEngine
import mozilla.components.browser.session.Session import mozilla.components.browser.session.Session
@ -104,6 +105,7 @@ import org.mozilla.fenix.utils.RunWhenReadyQueue
* - home screen * - home screen
* - browser screen * - browser screen
*/ */
@OptIn(ExperimentalCoroutinesApi::class)
@SuppressWarnings("TooManyFunctions", "LargeClass") @SuppressWarnings("TooManyFunctions", "LargeClass")
open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity { open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity {

View File

@ -9,15 +9,14 @@ import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.extensions.LayoutContainer import kotlinx.android.extensions.LayoutContainer
import kotlinx.coroutines.ExperimentalCoroutinesApi
import mozilla.components.feature.tab.collections.TabCollection import mozilla.components.feature.tab.collections.TabCollection
import mozilla.components.feature.top.sites.TopSite import mozilla.components.feature.top.sites.TopSite
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.components.tips.Tip
import org.mozilla.fenix.home.HomeFragmentState import org.mozilla.fenix.home.HomeFragmentState
import org.mozilla.fenix.home.HomeScreenViewModel import org.mozilla.fenix.home.HomeScreenViewModel
import org.mozilla.fenix.home.Mode import org.mozilla.fenix.home.Mode
import org.mozilla.fenix.home.OnboardingState import org.mozilla.fenix.home.OnboardingState
import org.mozilla.fenix.components.tips.Tip
// This method got a little complex with the addition of the tab tray feature flag // This method got a little complex with the addition of the tab tray feature flag
// When we remove the tabs from the home screen this will get much simpler again. // When we remove the tabs from the home screen this will get much simpler again.
@ -110,7 +109,6 @@ private fun collectionTabItems(collection: TabCollection) = collection.tabs.mapI
AdapterItem.TabInCollectionItem(collection, tab, index == collection.tabs.lastIndex) AdapterItem.TabInCollectionItem(collection, tab, index == collection.tabs.lastIndex)
} }
@ExperimentalCoroutinesApi
class SessionControlView( class SessionControlView(
override val containerView: View?, override val containerView: View?,
interactor: SessionControlInteractor, interactor: SessionControlInteractor,

View File

@ -2,8 +2,9 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this * License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/. */ file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.fenix package org.mozilla.fenix.migration
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.collect
import mozilla.components.lib.state.ext.flowScoped import mozilla.components.lib.state.ext.flowScoped
import mozilla.components.support.base.log.logger.Logger import mozilla.components.support.base.log.logger.Logger
@ -16,6 +17,8 @@ class MigrationTelemetryListener(
private val metrics: MetricController, private val metrics: MetricController,
private val store: MigrationStore private val store: MigrationStore
) { ) {
@OptIn(ExperimentalCoroutinesApi::class)
fun start() { fun start() {
// Observe for migration completed. // Observe for migration completed.
store.flowScoped { flow -> store.flowScoped { flow ->

View File

@ -5,6 +5,7 @@
package org.mozilla.fenix.search.telemetry package org.mozilla.fenix.search.telemetry
import androidx.annotation.VisibleForTesting import androidx.annotation.VisibleForTesting
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
@ -85,6 +86,7 @@ abstract class BaseSearchTelemetry {
internal fun getProviderForUrl(url: String): SearchProviderModel? = internal fun getProviderForUrl(url: String): SearchProviderModel? =
providerList.find { provider -> provider.regexp.containsMatchIn(url) } providerList.find { provider -> provider.regexp.containsMatchIn(url) }
@OptIn(ExperimentalCoroutinesApi::class)
internal fun installWebExtension( internal fun installWebExtension(
engine: Engine, engine: Engine,
store: BrowserStore, store: BrowserStore,

View File

@ -19,6 +19,7 @@ import kotlinx.android.synthetic.main.component_tabstray.view.*
import kotlinx.android.synthetic.main.component_tabstray_fab.view.* import kotlinx.android.synthetic.main.component_tabstray_fab.view.*
import kotlinx.android.synthetic.main.fragment_tab_tray_dialog.* import kotlinx.android.synthetic.main.fragment_tab_tray_dialog.*
import kotlinx.android.synthetic.main.fragment_tab_tray_dialog.view.* import kotlinx.android.synthetic.main.fragment_tab_tray_dialog.view.*
import kotlinx.coroutines.ExperimentalCoroutinesApi
import mozilla.components.browser.session.Session import mozilla.components.browser.session.Session
import mozilla.components.browser.session.SessionManager import mozilla.components.browser.session.SessionManager
import mozilla.components.browser.state.selector.normalTabs import mozilla.components.browser.state.selector.normalTabs
@ -110,6 +111,7 @@ class TabTrayDialogFragment : AppCompatDialogFragment() {
} }
} }
@OptIn(ExperimentalCoroutinesApi::class)
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
val isPrivate = (activity as HomeActivity).browsingModeManager.mode.isPrivate val isPrivate = (activity as HomeActivity).browsingModeManager.mode.isPrivate

View File

@ -8,6 +8,7 @@ import android.content.Context
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import mozilla.components.support.migration.FennecMigrator import mozilla.components.support.migration.FennecMigrator
import org.mozilla.fenix.session.PerformanceActivityLifecycleCallbacks import org.mozilla.fenix.session.PerformanceActivityLifecycleCallbacks
import org.mozilla.fenix.migration.MigrationTelemetryListener
/** /**
* An application class which knows how to migrate Fennec data. * An application class which knows how to migrate Fennec data.

View File

@ -4,6 +4,7 @@
package org.mozilla.fenix package org.mozilla.fenix
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.collect
import mozilla.components.concept.push.PushProcessor import mozilla.components.concept.push.PushProcessor
import mozilla.components.lib.state.ext.flowScoped import mozilla.components.lib.state.ext.flowScoped
@ -18,6 +19,8 @@ class MigrationPushRenewer(
private val service: PushProcessor?, private val service: PushProcessor?,
private val store: MigrationStore private val store: MigrationStore
) { ) {
@OptIn(ExperimentalCoroutinesApi::class)
fun start() { fun start() {
// Observe for migration completed. // Observe for migration completed.
store.flowScoped { flow -> store.flowScoped { flow ->

View File

@ -69,7 +69,7 @@ import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
import org.mozilla.fenix.home.Tab import org.mozilla.fenix.home.Tab
import org.mozilla.fenix.settings.deletebrowsingdata.deleteAndQuit import org.mozilla.fenix.settings.deletebrowsingdata.deleteAndQuit
@ExperimentalCoroutinesApi @OptIn(ExperimentalCoroutinesApi::class)
@RunWith(FenixRobolectricTestRunner::class) @RunWith(FenixRobolectricTestRunner::class)
class DefaultBrowserToolbarControllerTest { class DefaultBrowserToolbarControllerTest {

View File

@ -9,18 +9,16 @@ import io.mockk.every
import io.mockk.mockk import io.mockk.mockk
import io.mockk.mockkStatic import io.mockk.mockkStatic
import io.mockk.verify import io.mockk.verify
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.MainScope import kotlinx.coroutines.MainScope
import kotlinx.coroutines.newSingleThreadContext import kotlinx.coroutines.test.TestCoroutineDispatcher
import kotlinx.coroutines.test.resetMain
import kotlinx.coroutines.test.setMain
import mozilla.components.browser.session.SessionManager import mozilla.components.browser.session.SessionManager
import mozilla.components.concept.engine.Engine import mozilla.components.concept.engine.Engine
import mozilla.components.feature.tab.collections.TabCollection import mozilla.components.feature.tab.collections.TabCollection
import mozilla.components.feature.tabs.TabsUseCases import mozilla.components.feature.tabs.TabsUseCases
import org.junit.After import mozilla.components.support.test.rule.MainCoroutineRule
import org.junit.Before import org.junit.Before
import org.junit.Rule
import org.junit.Test import org.junit.Test
import org.mozilla.fenix.BrowserDirection import org.mozilla.fenix.BrowserDirection
import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.HomeActivity
@ -35,10 +33,12 @@ import org.mozilla.fenix.home.sessioncontrol.DefaultSessionControlController
import org.mozilla.fenix.settings.SupportUtils import org.mozilla.fenix.settings.SupportUtils
import mozilla.components.feature.tab.collections.Tab as ComponentTab import mozilla.components.feature.tab.collections.Tab as ComponentTab
@ExperimentalCoroutinesApi @OptIn(ExperimentalCoroutinesApi::class)
class DefaultSessionControlControllerTest { class DefaultSessionControlControllerTest {
private val mainThreadSurrogate = newSingleThreadContext("UI thread") @get:Rule
val coroutinesTestRule = MainCoroutineRule(TestCoroutineDispatcher())
private val activity: HomeActivity = mockk(relaxed = true) private val activity: HomeActivity = mockk(relaxed = true)
private val fragmentStore: HomeFragmentStore = mockk(relaxed = true) private val fragmentStore: HomeFragmentStore = mockk(relaxed = true)
private val navController: NavController = mockk(relaxed = true) private val navController: NavController = mockk(relaxed = true)
@ -62,7 +62,6 @@ class DefaultSessionControlControllerTest {
@Before @Before
fun setup() { fun setup() {
Dispatchers.setMain(mainThreadSurrogate)
mockkStatic("org.mozilla.fenix.ext.ContextKt") mockkStatic("org.mozilla.fenix.ext.ContextKt")
every { activity.components.core.engine } returns engine every { activity.components.core.engine } returns engine
every { activity.components.core.sessionManager } returns sessionManager every { activity.components.core.sessionManager } returns sessionManager
@ -91,12 +90,6 @@ class DefaultSessionControlControllerTest {
) )
} }
@After
fun tearDown() {
Dispatchers.resetMain() // reset main dispatcher to the original Main dispatcher
mainThreadSurrogate.close()
}
@Test @Test
fun handleCollectionAddTabTapped() { fun handleCollectionAddTabTapped() {
val collection: TabCollection = mockk(relaxed = true) val collection: TabCollection = mockk(relaxed = true)

View File

@ -10,39 +10,30 @@ import io.mockk.every
import io.mockk.just import io.mockk.just
import io.mockk.mockk import io.mockk.mockk
import io.mockk.verify import io.mockk.verify
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.newSingleThreadContext import kotlinx.coroutines.test.TestCoroutineDispatcher
import kotlinx.coroutines.test.resetMain
import kotlinx.coroutines.test.runBlockingTest import kotlinx.coroutines.test.runBlockingTest
import kotlinx.coroutines.test.setMain
import mozilla.components.concept.engine.Engine import mozilla.components.concept.engine.Engine
import org.junit.After import mozilla.components.support.test.rule.MainCoroutineRule
import org.junit.Before import org.junit.Before
import org.junit.Rule
import org.junit.Test import org.junit.Test
import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.components
@ExperimentalCoroutinesApi @OptIn(ExperimentalCoroutinesApi::class)
class DefaultDeleteBrowsingDataControllerTest { class DefaultDeleteBrowsingDataControllerTest {
private val mainThreadSurrogate = newSingleThreadContext("UI thread") @get:Rule
val coroutinesTestRule = MainCoroutineRule(TestCoroutineDispatcher())
private val context: Context = mockk(relaxed = true) private val context: Context = mockk(relaxed = true)
private lateinit var controller: DefaultDeleteBrowsingDataController private lateinit var controller: DefaultDeleteBrowsingDataController
@Before @Before
fun setup() { fun setup() {
Dispatchers.setMain(mainThreadSurrogate)
every { context.components.core.engine.clearData(any()) } just Runs every { context.components.core.engine.clearData(any()) } just Runs
} }
@After
fun tearDown() {
Dispatchers.resetMain() // reset main dispatcher to the original Main dispatcher
mainThreadSurrogate.close()
}
@Test @Test
fun deleteTabs() = runBlockingTest { fun deleteTabs() = runBlockingTest {
controller = DefaultDeleteBrowsingDataController(context, coroutineContext) controller = DefaultDeleteBrowsingDataController(context, coroutineContext)

View File

@ -6,24 +6,21 @@
package org.mozilla.fenix.settings.deletebrowsingdata package org.mozilla.fenix.settings.deletebrowsingdata
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
import io.mockk.every import io.mockk.every
import io.mockk.mockk import io.mockk.mockk
import io.mockk.verify import io.mockk.verify
import io.mockk.verifyOrder import io.mockk.verifyOrder
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.newSingleThreadContext import kotlinx.coroutines.test.TestCoroutineDispatcher
import kotlinx.coroutines.test.resetMain
import kotlinx.coroutines.test.runBlockingTest import kotlinx.coroutines.test.runBlockingTest
import kotlinx.coroutines.test.setMain
import mozilla.components.browser.storage.sync.PlacesHistoryStorage import mozilla.components.browser.storage.sync.PlacesHistoryStorage
import mozilla.components.concept.engine.Engine import mozilla.components.concept.engine.Engine
import mozilla.components.feature.tabs.TabsUseCases import mozilla.components.feature.tabs.TabsUseCases
import mozilla.components.support.test.robolectric.testContext import mozilla.components.support.test.robolectric.testContext
import org.junit.After import mozilla.components.support.test.rule.MainCoroutineRule
import org.junit.Before import org.junit.Before
import org.junit.Ignore import org.junit.Ignore
import org.junit.Rule
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.HomeActivity
@ -31,13 +28,15 @@ import org.mozilla.fenix.components.FenixSnackbar
import org.mozilla.fenix.components.PermissionStorage import org.mozilla.fenix.components.PermissionStorage
import org.mozilla.fenix.ext.clearAndCommit import org.mozilla.fenix.ext.clearAndCommit
import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.components
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
import org.mozilla.fenix.utils.Settings import org.mozilla.fenix.utils.Settings
@ExperimentalCoroutinesApi @OptIn(ExperimentalCoroutinesApi::class)
@RunWith(FenixRobolectricTestRunner::class) @RunWith(FenixRobolectricTestRunner::class)
class DeleteAndQuitTest { class DeleteAndQuitTest {
private val mainThreadSurrogate = newSingleThreadContext("UI thread") @get:Rule
val coroutinesTestRule = MainCoroutineRule(TestCoroutineDispatcher())
private var activity: HomeActivity = mockk(relaxed = true) private var activity: HomeActivity = mockk(relaxed = true)
lateinit var settings: Settings lateinit var settings: Settings
@ -54,8 +53,6 @@ class DeleteAndQuitTest {
clear() clear()
} }
Dispatchers.setMain(mainThreadSurrogate)
every { activity.components.core.historyStorage } returns historyStorage every { activity.components.core.historyStorage } returns historyStorage
every { activity.components.core.permissionStorage } returns permissionStorage every { activity.components.core.permissionStorage } returns permissionStorage
every { activity.components.useCases.tabsUseCases } returns tabUseCases every { activity.components.useCases.tabsUseCases } returns tabUseCases
@ -63,12 +60,6 @@ class DeleteAndQuitTest {
every { activity.components.core.engine } returns engine every { activity.components.core.engine } returns engine
} }
@After
fun tearDown() {
Dispatchers.resetMain() // reset main dispatcher to the original Main dispatcher
mainThreadSurrogate.close()
}
private fun Settings.clear() { private fun Settings.clear() {
preferences.clearAndCommit() preferences.clearAndCommit()
} }

View File

@ -3,7 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
object Versions { object Versions {
const val kotlin = "1.3.30" const val kotlin = "1.3.72"
const val coroutines = "1.3.3" const val coroutines = "1.3.3"
const val android_gradle_plugin = "3.5.0" const val android_gradle_plugin = "3.5.0"
const val sentry = "1.7.10" const val sentry = "1.7.10"