Skip to content
Snippets Groups Projects
Verified Commit b3fb8e6a authored by Mikolai Gütschow's avatar Mikolai Gütschow
Browse files

single source of truth for Dagger dependencies in test and main configurations

parent 1624981c
No related branches found
No related tags found
1 merge request!236Single source of truth for Dagger dependencies in test and main configurations
Pipeline #12104 passed
Showing with 218 additions and 365 deletions
......@@ -24,20 +24,19 @@ import org.briarproject.bramble.BrambleCoreModule
import org.briarproject.briar.BriarCoreEagerSingletons
import org.briarproject.briar.BriarCoreModule
import org.briarproject.briar.desktop.ui.BriarUi
import java.security.SecureRandom
import javax.inject.Singleton
// corresponding Briar Android class in
// briar/briar-android/src/main/java/org/briarproject/briar/android/AndroidComponent.java
@Component(
modules = [
BrambleCoreModule::class,
BriarCoreModule::class,
DesktopModule::class
DesktopModule::class,
]
)
@Singleton
internal interface BriarDesktopApp : BrambleCoreEagerSingletons, BriarCoreEagerSingletons {
fun getBriarUi(): BriarUi
fun getSecureRandom(): SecureRandom
}
/*
* Briar Desktop
* Copyright (C) 2021-2022 The Briar Project
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.briarproject.briar.desktop
import dagger.Module
import dagger.Provides
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.asExecutor
import kotlinx.coroutines.swing.Swing
import org.briarproject.bramble.account.AccountModule
import org.briarproject.bramble.api.db.DatabaseConfig
import org.briarproject.bramble.api.event.EventExecutor
import org.briarproject.bramble.api.plugin.PluginConfig
import org.briarproject.bramble.api.plugin.TorConstants.DEFAULT_CONTROL_PORT
import org.briarproject.bramble.api.plugin.TorConstants.DEFAULT_SOCKS_PORT
import org.briarproject.bramble.api.plugin.TorControlPort
import org.briarproject.bramble.api.plugin.TorDirectory
import org.briarproject.bramble.api.plugin.TorSocksPort
import org.briarproject.bramble.api.plugin.TransportId
import org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory
import org.briarproject.bramble.api.plugin.simplex.SimplexPluginFactory
import org.briarproject.bramble.battery.DefaultBatteryManagerModule
import org.briarproject.bramble.network.JavaNetworkModule
import org.briarproject.bramble.plugin.tcp.LanTcpPluginFactory
import org.briarproject.bramble.plugin.tor.CircumventionModule
import org.briarproject.bramble.plugin.tor.UnixTorPluginFactory
import org.briarproject.bramble.socks.SocksModule
import org.briarproject.bramble.system.ClockModule
import org.briarproject.bramble.system.DefaultTaskSchedulerModule
import org.briarproject.bramble.system.DefaultWakefulIoExecutorModule
import org.briarproject.bramble.system.DesktopSecureRandomModule
import org.briarproject.bramble.system.JavaSystemModule
import org.briarproject.bramble.util.OsUtils.isLinux
import org.briarproject.bramble.util.OsUtils.isMac
import org.briarproject.briar.attachment.AttachmentModule
import org.briarproject.briar.desktop.attachment.media.ImageCompressor
import org.briarproject.briar.desktop.attachment.media.ImageCompressorImpl
import org.briarproject.briar.desktop.notification.SoundNotificationProvider
import org.briarproject.briar.desktop.notification.StubNotificationProvider
import org.briarproject.briar.desktop.notification.VisualNotificationProvider
import org.briarproject.briar.desktop.notification.linux.LibnotifyNotificationProvider
import org.briarproject.briar.desktop.settings.Configuration
import org.briarproject.briar.desktop.settings.ConfigurationImpl
import org.briarproject.briar.desktop.settings.EncryptedSettings
import org.briarproject.briar.desktop.settings.EncryptedSettingsImpl
import org.briarproject.briar.desktop.settings.EncryptedSettingsReadOnly
import org.briarproject.briar.desktop.settings.UnencryptedSettings
import org.briarproject.briar.desktop.settings.UnencryptedSettingsImpl
import org.briarproject.briar.desktop.settings.UnencryptedSettingsReadOnly
import org.briarproject.briar.desktop.threading.BriarExecutors
import org.briarproject.briar.desktop.threading.BriarExecutorsImpl
import org.briarproject.briar.desktop.threading.UiExecutor
import org.briarproject.briar.desktop.ui.BriarUi
import org.briarproject.briar.desktop.ui.BriarUiImpl
import org.briarproject.briar.desktop.ui.MessageCounter
import org.briarproject.briar.desktop.ui.MessageCounterImpl
import org.briarproject.briar.desktop.viewmodel.ViewModelModule
import org.briarproject.briar.identity.IdentityModule
import java.io.File
import java.nio.file.Path
import java.util.Collections.emptyList
import java.util.concurrent.Executor
import javax.inject.Singleton
// corresponding Briar Android class in
// briar/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java
@Module(
includes = [
AccountModule::class,
IdentityModule::class,
CircumventionModule::class,
ClockModule::class,
DefaultBatteryManagerModule::class,
DefaultTaskSchedulerModule::class,
DefaultWakefulIoExecutorModule::class,
DesktopSecureRandomModule::class,
JavaNetworkModule::class,
JavaSystemModule::class,
SocksModule::class,
ViewModelModule::class,
AttachmentModule::class,
]
)
internal class DesktopCoreModule(
private val appDir: Path,
private val socksPort: Int = DEFAULT_SOCKS_PORT,
private val controlPort: Int = DEFAULT_CONTROL_PORT,
) {
@Provides
@Singleton
internal fun provideBriarUi(briarUi: BriarUiImpl): BriarUi = briarUi
@Provides
@Singleton
internal fun provideDatabaseConfig(): DatabaseConfig {
val dbDir = appDir.resolve("db")
val keyDir = appDir.resolve("key")
return DesktopDatabaseConfig(dbDir, keyDir)
}
@Provides
@Singleton
fun provideUnencryptedSettings(settings: UnencryptedSettingsImpl): UnencryptedSettings = settings
@Provides
@Singleton
// provide [UnencryptedSettings] singleton itself as provided above to use same object
fun provideUnencryptedSettingsReadOnly(settings: UnencryptedSettings): UnencryptedSettingsReadOnly = settings
@Provides
@Singleton
fun provideEncryptedSettings(settings: EncryptedSettingsImpl): EncryptedSettings = settings
@Provides
@Singleton
// provide [EncryptedSettings] singleton itself as provided above to use same object
fun provideEncryptedSettingsReadOnly(settings: EncryptedSettings): EncryptedSettingsReadOnly = settings
@Provides
@Singleton
@EventExecutor
fun provideEventExecutor(): Executor = provideUiExecutor()
@Provides
@Singleton
@UiExecutor
fun provideUiExecutor(): Executor = Dispatchers.Swing.asExecutor()
@Provides
@Singleton
fun provideBriarExecutors(briarExecutors: BriarExecutorsImpl): BriarExecutors = briarExecutors
@Provides
@TorDirectory
internal fun provideTorDirectory(): File =
appDir.resolve("tor").toFile()
@Provides
@Singleton
@TorSocksPort
internal fun provideTorSocksPort() = socksPort
@Provides
@Singleton
@TorControlPort
internal fun provideTorControlPort() = controlPort
@Provides
internal fun providePluginConfig(tor: UnixTorPluginFactory, lan: LanTcpPluginFactory): PluginConfig {
val duplex: List<DuplexPluginFactory> =
if (isLinux() || isMac()) listOf(tor, lan) else listOf(lan)
return object : PluginConfig {
override fun getDuplexFactories(): Collection<DuplexPluginFactory> = duplex
override fun getSimplexFactories(): Collection<SimplexPluginFactory> = emptyList()
override fun shouldPoll(): Boolean = true
override fun getTransportPreferences(): Map<TransportId, List<TransportId>> = emptyMap()
}
}
@Provides
@Singleton
fun provideConfiguration(configuration: ConfigurationImpl): Configuration = configuration
@Provides
@Singleton
internal fun provideImageCompressor(imageCompressor: ImageCompressorImpl): ImageCompressor = imageCompressor
@Provides
@Singleton
internal fun provideVisualNotificationProvider(): VisualNotificationProvider =
if (isLinux()) LibnotifyNotificationProvider else StubNotificationProvider
@Provides
@Singleton
internal fun provideSoundNotificationProvider() = SoundNotificationProvider
@Provides
@Singleton
internal fun provideMessageCounter(messageCounter: MessageCounterImpl): MessageCounter = messageCounter
}
......@@ -20,160 +20,15 @@ package org.briarproject.briar.desktop
import dagger.Module
import dagger.Provides
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.asExecutor
import kotlinx.coroutines.swing.Swing
import org.briarproject.bramble.account.AccountModule
import org.briarproject.bramble.api.FeatureFlags
import org.briarproject.bramble.api.db.DatabaseConfig
import org.briarproject.bramble.api.event.EventExecutor
import org.briarproject.bramble.api.plugin.PluginConfig
import org.briarproject.bramble.api.plugin.TorConstants.DEFAULT_CONTROL_PORT
import org.briarproject.bramble.api.plugin.TorConstants.DEFAULT_SOCKS_PORT
import org.briarproject.bramble.api.plugin.TorControlPort
import org.briarproject.bramble.api.plugin.TorDirectory
import org.briarproject.bramble.api.plugin.TorSocksPort
import org.briarproject.bramble.api.plugin.TransportId
import org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory
import org.briarproject.bramble.api.plugin.simplex.SimplexPluginFactory
import org.briarproject.bramble.battery.DefaultBatteryManagerModule
import org.briarproject.bramble.network.JavaNetworkModule
import org.briarproject.bramble.plugin.tcp.LanTcpPluginFactory
import org.briarproject.bramble.plugin.tor.CircumventionModule
import org.briarproject.bramble.plugin.tor.UnixTorPluginFactory
import org.briarproject.bramble.socks.SocksModule
import org.briarproject.bramble.system.ClockModule
import org.briarproject.bramble.system.DefaultTaskSchedulerModule
import org.briarproject.bramble.system.DefaultWakefulIoExecutorModule
import org.briarproject.bramble.system.DesktopSecureRandomModule
import org.briarproject.bramble.system.JavaSystemModule
import org.briarproject.bramble.util.OsUtils.isLinux
import org.briarproject.bramble.util.OsUtils.isMac
import org.briarproject.briar.attachment.AttachmentModule
import org.briarproject.briar.desktop.attachment.media.ImageCompressor
import org.briarproject.briar.desktop.attachment.media.ImageCompressorImpl
import org.briarproject.briar.desktop.notification.SoundNotificationProvider
import org.briarproject.briar.desktop.notification.StubNotificationProvider
import org.briarproject.briar.desktop.notification.VisualNotificationProvider
import org.briarproject.briar.desktop.notification.linux.LibnotifyNotificationProvider
import org.briarproject.briar.desktop.settings.Configuration
import org.briarproject.briar.desktop.settings.ConfigurationImpl
import org.briarproject.briar.desktop.settings.EncryptedSettings
import org.briarproject.briar.desktop.settings.EncryptedSettingsImpl
import org.briarproject.briar.desktop.settings.EncryptedSettingsReadOnly
import org.briarproject.briar.desktop.settings.UnencryptedSettings
import org.briarproject.briar.desktop.settings.UnencryptedSettingsImpl
import org.briarproject.briar.desktop.settings.UnencryptedSettingsReadOnly
import org.briarproject.briar.desktop.threading.BriarExecutors
import org.briarproject.briar.desktop.threading.BriarExecutorsImpl
import org.briarproject.briar.desktop.threading.UiExecutor
import org.briarproject.briar.desktop.ui.BriarUi
import org.briarproject.briar.desktop.ui.BriarUiImpl
import org.briarproject.briar.desktop.ui.MessageCounter
import org.briarproject.briar.desktop.ui.MessageCounterImpl
import org.briarproject.briar.desktop.viewmodel.ViewModelModule
import org.briarproject.briar.identity.IdentityModule
import java.io.File
import java.nio.file.Path
import java.util.Collections.emptyList
import java.util.concurrent.Executor
import javax.inject.Singleton
@Module(
includes = [
AccountModule::class,
IdentityModule::class,
CircumventionModule::class,
ClockModule::class,
DefaultBatteryManagerModule::class,
DefaultTaskSchedulerModule::class,
DefaultWakefulIoExecutorModule::class,
DesktopSecureRandomModule::class,
JavaNetworkModule::class,
JavaSystemModule::class,
SocksModule::class,
ViewModelModule::class,
AttachmentModule::class,
DesktopCoreModule::class,
]
)
internal class DesktopModule(
private val appDir: Path,
private val socksPort: Int = DEFAULT_SOCKS_PORT,
private val controlPort: Int = DEFAULT_CONTROL_PORT
) {
@Provides
@Singleton
internal fun provideBriarService(briarService: BriarUiImpl): BriarUi = briarService
@Provides
@Singleton
internal fun provideDatabaseConfig(): DatabaseConfig {
val dbDir = appDir.resolve("db")
val keyDir = appDir.resolve("key")
return DesktopDatabaseConfig(dbDir, keyDir)
}
@Provides
@Singleton
fun provideUnencryptedSettings(settings: UnencryptedSettingsImpl): UnencryptedSettings = settings
@Provides
@Singleton
// provide [UnencryptedSettings] singleton itself as provided above to use same object
fun provideUnencryptedSettingsReadOnly(settings: UnencryptedSettings): UnencryptedSettingsReadOnly = settings
@Provides
@Singleton
fun provideEncryptedSettings(settings: EncryptedSettingsImpl): EncryptedSettings = settings
@Provides
@Singleton
// provide [EncryptedSettings] singleton itself as provided above to use same object
fun provideEncryptedSettingsReadOnly(settings: EncryptedSettings): EncryptedSettingsReadOnly = settings
@Provides
@Singleton
@EventExecutor
fun provideEventExecutor(): Executor = provideUiExecutor()
@Provides
@Singleton
@UiExecutor
fun provideUiExecutor(): Executor = Dispatchers.Swing.asExecutor()
@Provides
@Singleton
fun provideBriarExecutors(briarExecutors: BriarExecutorsImpl): BriarExecutors = briarExecutors
@Provides
@TorDirectory
internal fun provideTorDirectory(): File {
return appDir.resolve("tor").toFile()
}
@Provides
@Singleton
@TorSocksPort
internal fun provideTorSocksPort() = socksPort
@Provides
@Singleton
@TorControlPort
internal fun provideTorControlPort() = controlPort
@Provides
internal fun providePluginConfig(tor: UnixTorPluginFactory, lan: LanTcpPluginFactory): PluginConfig {
val duplex: List<DuplexPluginFactory> =
if (isLinux() || isMac()) listOf(tor, lan) else listOf(lan)
return object : PluginConfig {
override fun getDuplexFactories(): Collection<DuplexPluginFactory> = duplex
override fun getSimplexFactories(): Collection<SimplexPluginFactory> = emptyList()
override fun shouldPoll(): Boolean = true
override fun getTransportPreferences(): Map<TransportId, List<TransportId>> = emptyMap()
}
}
internal class DesktopModule {
@Provides
internal fun provideFeatureFlags(desktopFeatureFlags: DesktopFeatureFlags) = object : FeatureFlags {
override fun shouldEnableImageAttachments() = true
......@@ -193,27 +48,4 @@ internal class DesktopModule(
override fun shouldEnableBlogs() = false
override fun shouldEnableTransportSettings() = false
}
@Provides
@Singleton
fun provideConfiguration(configuration: ConfigurationImpl): Configuration = configuration
@Provides
@Singleton
internal fun provideImageCompressor(imageCompressor: ImageCompressorImpl): ImageCompressor {
return imageCompressor
}
@Provides
@Singleton
internal fun provideVisualNotificationProvider(): VisualNotificationProvider =
if (isLinux()) LibnotifyNotificationProvider else StubNotificationProvider
@Provides
@Singleton
internal fun provideSoundNotificationProvider() = SoundNotificationProvider
@Provides
@Singleton
internal fun provideMessageCounter(messageCounter: MessageCounterImpl): MessageCounter = messageCounter
}
......@@ -111,8 +111,8 @@ private class Main : CliktCommand(
val dataDir = getDataDir()
val app =
DaggerBriarDesktopApp.builder().desktopModule(
DesktopModule(dataDir, socksPort, controlPort)
DaggerBriarDesktopApp.builder().desktopCoreModule(
DesktopCoreModule(dataDir, socksPort, controlPort)
).build()
// We need to load the eager singletons directly after making the
// dependency graphs
......
......@@ -35,7 +35,6 @@ import org.briarproject.briar.api.introduction.IntroductionManager
import org.briarproject.briar.api.test.TestDataCreator
import org.briarproject.briar.desktop.testdata.DeterministicTestDataCreator
import org.briarproject.briar.desktop.ui.BriarUi
import java.security.SecureRandom
import java.util.concurrent.Executor
import javax.inject.Singleton
......@@ -43,7 +42,7 @@ import javax.inject.Singleton
modules = [
BrambleCoreModule::class,
BriarCoreModule::class,
DesktopTestModule::class
DesktopTestModule::class,
]
)
@Singleton
......@@ -59,8 +58,6 @@ internal interface BriarDesktopTestApp : BrambleCoreEagerSingletons, BriarCoreEa
fun getContactManager(): ContactManager
fun getSecureRandom(): SecureRandom
fun getLifecycleManager(): LifecycleManager
fun getShutdownManager(): ShutdownManager
......
......@@ -20,166 +20,19 @@ package org.briarproject.briar.desktop
import dagger.Module
import dagger.Provides
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.asExecutor
import kotlinx.coroutines.swing.Swing
import org.briarproject.bramble.account.AccountModule
import org.briarproject.bramble.api.FeatureFlags
import org.briarproject.bramble.api.db.DatabaseConfig
import org.briarproject.bramble.api.event.EventExecutor
import org.briarproject.bramble.api.plugin.PluginConfig
import org.briarproject.bramble.api.plugin.TorConstants.DEFAULT_CONTROL_PORT
import org.briarproject.bramble.api.plugin.TorConstants.DEFAULT_SOCKS_PORT
import org.briarproject.bramble.api.plugin.TorControlPort
import org.briarproject.bramble.api.plugin.TorDirectory
import org.briarproject.bramble.api.plugin.TorSocksPort
import org.briarproject.bramble.api.plugin.TransportId
import org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory
import org.briarproject.bramble.api.plugin.simplex.SimplexPluginFactory
import org.briarproject.bramble.battery.DefaultBatteryManagerModule
import org.briarproject.bramble.network.JavaNetworkModule
import org.briarproject.bramble.plugin.tcp.LanTcpPluginFactory
import org.briarproject.bramble.plugin.tor.CircumventionModule
import org.briarproject.bramble.plugin.tor.UnixTorPluginFactory
import org.briarproject.bramble.socks.SocksModule
import org.briarproject.bramble.system.ClockModule
import org.briarproject.bramble.system.DefaultTaskSchedulerModule
import org.briarproject.bramble.system.DefaultWakefulIoExecutorModule
import org.briarproject.bramble.system.DesktopSecureRandomModule
import org.briarproject.bramble.system.JavaSystemModule
import org.briarproject.bramble.util.OsUtils.isLinux
import org.briarproject.bramble.util.OsUtils.isMac
import org.briarproject.briar.api.test.TestAvatarCreator
import org.briarproject.briar.attachment.AttachmentModule
import org.briarproject.briar.desktop.attachment.media.ImageCompressor
import org.briarproject.briar.desktop.attachment.media.ImageCompressorImpl
import org.briarproject.briar.desktop.notification.SoundNotificationProvider
import org.briarproject.briar.desktop.notification.StubNotificationProvider
import org.briarproject.briar.desktop.notification.VisualNotificationProvider
import org.briarproject.briar.desktop.notification.linux.LibnotifyNotificationProvider
import org.briarproject.briar.desktop.settings.Configuration
import org.briarproject.briar.desktop.settings.ConfigurationImpl
import org.briarproject.briar.desktop.settings.EncryptedSettings
import org.briarproject.briar.desktop.settings.EncryptedSettingsImpl
import org.briarproject.briar.desktop.settings.EncryptedSettingsReadOnly
import org.briarproject.briar.desktop.settings.UnencryptedSettings
import org.briarproject.briar.desktop.settings.UnencryptedSettingsImpl
import org.briarproject.briar.desktop.settings.UnencryptedSettingsReadOnly
import org.briarproject.briar.desktop.testdata.DeterministicTestDataCreator
import org.briarproject.briar.desktop.testdata.DeterministicTestDataCreatorImpl
import org.briarproject.briar.desktop.testdata.TestAvatarCreatorImpl
import org.briarproject.briar.desktop.threading.BriarExecutors
import org.briarproject.briar.desktop.threading.BriarExecutorsImpl
import org.briarproject.briar.desktop.threading.UiExecutor
import org.briarproject.briar.desktop.ui.BriarUi
import org.briarproject.briar.desktop.ui.BriarUiImpl
import org.briarproject.briar.desktop.ui.MessageCounter
import org.briarproject.briar.desktop.ui.MessageCounterImpl
import org.briarproject.briar.desktop.viewmodel.ViewModelModule
import org.briarproject.briar.identity.IdentityModule
import org.briarproject.briar.test.TestModule
import java.io.File
import java.nio.file.Path
import java.util.Collections.emptyList
import java.util.concurrent.Executor
import javax.inject.Singleton
@Module(
includes = [
AccountModule::class,
IdentityModule::class,
CircumventionModule::class,
ClockModule::class,
DefaultBatteryManagerModule::class,
DefaultTaskSchedulerModule::class,
DefaultWakefulIoExecutorModule::class,
DesktopSecureRandomModule::class,
JavaNetworkModule::class,
JavaSystemModule::class,
SocksModule::class,
TestModule::class,
ViewModelModule::class,
AttachmentModule::class,
DesktopCoreModule::class,
]
)
internal class DesktopTestModule(
private val appDir: Path,
private val socksPort: Int = DEFAULT_SOCKS_PORT,
private val controlPort: Int = DEFAULT_CONTROL_PORT
) {
@Provides
@Singleton
internal fun provideBriarService(briarService: BriarUiImpl): BriarUi = briarService
@Provides
@Singleton
internal fun provideDatabaseConfig(): DatabaseConfig {
val dbDir = appDir.resolve("db")
val keyDir = appDir.resolve("key")
return DesktopDatabaseConfig(dbDir, keyDir)
}
@Provides
@Singleton
// provide [UnencryptedSettings] singleton itself as provided above to use same object
fun provideUnencryptedSettingsReadOnly(settings: UnencryptedSettings): UnencryptedSettingsReadOnly = settings
@Provides
@Singleton
fun provideUnencryptedSettings(settings: UnencryptedSettingsImpl): UnencryptedSettings = settings
@Provides
@Singleton
fun provideEncryptedSettings(settings: EncryptedSettingsImpl): EncryptedSettings = settings
@Provides
@Singleton
// provide [EncryptedSettings] singleton itself as provided above to use same object
fun provideEncryptedSettingsReadOnly(settings: EncryptedSettings): EncryptedSettingsReadOnly = settings
@Provides
@Singleton
@EventExecutor
fun provideEventExecutor(): Executor = provideUiExecutor()
@Provides
@Singleton
@UiExecutor
fun provideUiExecutor(): Executor = Dispatchers.Swing.asExecutor()
@Provides
@Singleton
fun provideBriarExecutors(briarExecutors: BriarExecutorsImpl): BriarExecutors = briarExecutors
@Provides
@TorDirectory
internal fun provideTorDirectory(): File {
return appDir.resolve("tor").toFile()
}
@Provides
@Singleton
@TorSocksPort
internal fun provideTorSocksPort() = socksPort
@Provides
@Singleton
@TorControlPort
internal fun provideTorControlPort() = controlPort
@Provides
internal fun providePluginConfig(tor: UnixTorPluginFactory, lan: LanTcpPluginFactory): PluginConfig {
val duplex: List<DuplexPluginFactory> =
if (isLinux() || isMac()) listOf(tor, lan) else listOf(lan)
return object : PluginConfig {
override fun getDuplexFactories(): Collection<DuplexPluginFactory> = duplex
override fun getSimplexFactories(): Collection<SimplexPluginFactory> = emptyList()
override fun shouldPoll(): Boolean = true
override fun getTransportPreferences(): Map<TransportId, List<TransportId>> = emptyMap()
}
}
internal class DesktopTestModule {
@Provides
internal fun provideFeatureFlags(desktopFeatureFlags: DesktopFeatureFlags) = object : FeatureFlags {
override fun shouldEnableImageAttachments() = true
......@@ -195,43 +48,18 @@ internal class DesktopTestModule(
@Singleton
internal fun provideDesktopFeatureFlags() = object : DesktopFeatureFlags {
override fun shouldEnablePrivateGroups() = false
override fun shouldEnableForums() = false
override fun shouldEnableForums() = true
override fun shouldEnableBlogs() = false
override fun shouldEnableTransportSettings() = false
}
@Provides
@Singleton
fun provideConfiguration(configuration: ConfigurationImpl): Configuration = configuration
@Provides
@Singleton
internal fun provideImageCompressor(imageCompressor: ImageCompressorImpl): ImageCompressor {
return imageCompressor
}
internal fun provideTestAvatarCreator(testAvatarCreator: TestAvatarCreatorImpl): TestAvatarCreator =
testAvatarCreator
@Provides
@Singleton
internal fun provideVisualNotificationProvider(): VisualNotificationProvider =
if (isLinux()) LibnotifyNotificationProvider else StubNotificationProvider
@Provides
@Singleton
internal fun provideSoundNotificationProvider() = SoundNotificationProvider
@Provides
@Singleton
internal fun provideMessageCounter(messageCounter: MessageCounterImpl): MessageCounter = messageCounter
@Provides
@Singleton
internal fun provideTestAvatarCreator(testAvatarCreator: TestAvatarCreatorImpl): TestAvatarCreator {
return testAvatarCreator
}
@Provides
@Singleton
internal fun provideDeterministicTestDataCreator(testDataCreator: DeterministicTestDataCreatorImpl): DeterministicTestDataCreator {
return testDataCreator
}
internal fun provideDeterministicTestDataCreator(testDataCreator: DeterministicTestDataCreatorImpl): DeterministicTestDataCreator =
testDataCreator
}
......@@ -36,7 +36,7 @@ import java.util.logging.Level.ALL
internal class RunWithMultipleTemporaryAccounts(
private val names: List<String>,
val customization: List<BriarDesktopTestApp>.() -> Unit
val customization: List<BriarDesktopTestApp>.() -> Unit,
) {
companion object {
......@@ -80,8 +80,8 @@ internal class RunWithMultipleTemporaryAccounts(
LOG.i { "Using data directory '$dataDir'" }
val app =
DaggerBriarDesktopTestApp.builder().desktopTestModule(
DesktopTestModule(dataDir, socksPort, controlPort)
DaggerBriarDesktopTestApp.builder().desktopCoreModule(
DesktopCoreModule(dataDir, socksPort, controlPort)
).build()
app.getShutdownManager().addShutdownHook {
......
......@@ -37,7 +37,7 @@ internal class RunWithTemporaryAccount(
val createAccount: Boolean = true,
val login: Boolean = true,
val makeDirUnwritable: Boolean = false,
val customization: suspend BriarDesktopTestApp.() -> Unit = {}
val customization: suspend BriarDesktopTestApp.() -> Unit = {},
) {
companion object {
......@@ -58,8 +58,8 @@ internal class RunWithTemporaryAccount(
}
val app =
DaggerBriarDesktopTestApp.builder().desktopTestModule(
DesktopTestModule(dataDir)
DaggerBriarDesktopTestApp.builder().desktopCoreModule(
DesktopCoreModule(dataDir)
).build()
app.getShutdownManager().addShutdownHook {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment