From 6eb02e046d9a53d7810d447efe9067cac02baa05 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sebastian=20K=C3=BCrten?= <sebastian@mobanisto.de>
Date: Mon, 19 Sep 2022 12:25:33 +0200
Subject: [PATCH] Enable Tor on Windows

---
 .../briar/desktop/DesktopModule.kt            | 21 +++++++++++++------
 .../briar/desktop/DesktopTestModule.kt        | 21 +++++++++++++------
 2 files changed, 30 insertions(+), 12 deletions(-)

diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/DesktopModule.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/DesktopModule.kt
index 4ba3c05cc9..ec27276365 100644
--- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/DesktopModule.kt
+++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/DesktopModule.kt
@@ -27,8 +27,10 @@ import org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory
 import org.briarproject.bramble.api.plugin.simplex.SimplexPluginFactory
 import org.briarproject.bramble.plugin.tcp.LanTcpPluginFactory
 import org.briarproject.bramble.plugin.tor.UnixTorPluginFactory
-import org.briarproject.bramble.util.OsUtils
-import java.util.Collections
+import org.briarproject.bramble.plugin.tor.WindowsTorPluginFactory
+import org.briarproject.bramble.util.OsUtils.isLinux
+import org.briarproject.bramble.util.OsUtils.isMac
+import org.briarproject.bramble.util.OsUtils.isWindows
 import javax.inject.Singleton
 
 @Module(
@@ -58,12 +60,19 @@ internal class DesktopModule {
     }
 
     @Provides
-    internal fun providePluginConfig(tor: UnixTorPluginFactory, lan: LanTcpPluginFactory): PluginConfig {
-        val duplex: List<DuplexPluginFactory> =
-            if (OsUtils.isLinux() || OsUtils.isMac()) listOf(tor, lan) else listOf(lan)
+    internal fun providePluginConfig(
+        unixTor: UnixTorPluginFactory,
+        winTor: WindowsTorPluginFactory,
+        lan: LanTcpPluginFactory
+    ): PluginConfig {
+        val duplex: List<DuplexPluginFactory> = when {
+            isLinux() || isMac() -> listOf(unixTor, lan)
+            isWindows() -> listOf(winTor, lan)
+            else -> listOf(lan)
+        }
         return object : PluginConfig {
             override fun getDuplexFactories(): Collection<DuplexPluginFactory> = duplex
-            override fun getSimplexFactories(): Collection<SimplexPluginFactory> = Collections.emptyList()
+            override fun getSimplexFactories(): Collection<SimplexPluginFactory> = emptyList()
             override fun shouldPoll(): Boolean = true
             override fun getTransportPreferences(): Map<TransportId, List<TransportId>> = emptyMap()
         }
diff --git a/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/DesktopTestModule.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/DesktopTestModule.kt
index 25f45d2f84..0d181915e4 100644
--- a/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/DesktopTestModule.kt
+++ b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/DesktopTestModule.kt
@@ -27,12 +27,14 @@ import org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory
 import org.briarproject.bramble.api.plugin.simplex.SimplexPluginFactory
 import org.briarproject.bramble.plugin.tcp.TestLanTcpPluginFactory
 import org.briarproject.bramble.plugin.tor.UnixTorPluginFactory
-import org.briarproject.bramble.util.OsUtils
+import org.briarproject.bramble.plugin.tor.WindowsTorPluginFactory
+import org.briarproject.bramble.util.OsUtils.isLinux
+import org.briarproject.bramble.util.OsUtils.isMac
+import org.briarproject.bramble.util.OsUtils.isWindows
 import org.briarproject.briar.api.test.TestAvatarCreator
 import org.briarproject.briar.desktop.testdata.DeterministicTestDataCreator
 import org.briarproject.briar.desktop.testdata.DeterministicTestDataCreatorImpl
 import org.briarproject.briar.desktop.testdata.TestAvatarCreatorImpl
-import java.util.Collections
 import javax.inject.Singleton
 
 @Module(
@@ -72,12 +74,19 @@ internal class DesktopTestModule {
         testDataCreator
 
     @Provides
-    internal fun providePluginConfig(tor: UnixTorPluginFactory, lan: TestLanTcpPluginFactory): PluginConfig {
-        val duplex: List<DuplexPluginFactory> =
-            if (OsUtils.isLinux() || OsUtils.isMac()) listOf(tor, lan) else listOf(lan)
+    internal fun providePluginConfig(
+        unixTor: UnixTorPluginFactory,
+        winTor: WindowsTorPluginFactory,
+        lan: TestLanTcpPluginFactory
+    ): PluginConfig {
+        val duplex: List<DuplexPluginFactory> = when {
+            isLinux() || isMac() -> listOf(unixTor, lan)
+            isWindows() -> listOf(winTor, lan)
+            else -> listOf(lan)
+        }
         return object : PluginConfig {
             override fun getDuplexFactories(): Collection<DuplexPluginFactory> = duplex
-            override fun getSimplexFactories(): Collection<SimplexPluginFactory> = Collections.emptyList()
+            override fun getSimplexFactories(): Collection<SimplexPluginFactory> = emptyList()
             override fun shouldPoll(): Boolean = true
             override fun getTransportPreferences(): Map<TransportId, List<TransportId>> = emptyMap()
         }
-- 
GitLab