package org.briarproject.plugins; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.concurrent.Executor; import org.briarproject.api.android.AndroidExecutor; import org.briarproject.api.crypto.CryptoComponent; import org.briarproject.api.lifecycle.IoExecutor; import org.briarproject.api.plugins.duplex.DuplexPluginConfig; import org.briarproject.api.plugins.duplex.DuplexPluginFactory; import org.briarproject.api.plugins.simplex.SimplexPluginConfig; import org.briarproject.api.plugins.simplex.SimplexPluginFactory; import org.briarproject.api.system.LocationUtils; import org.briarproject.api.event.EventBus; import org.briarproject.plugins.droidtooth.DroidtoothPluginFactory; import org.briarproject.plugins.tcp.AndroidLanTcpPluginFactory; import org.briarproject.plugins.tor.TorPluginFactory; import android.app.Application; import android.content.Context; import com.google.inject.Provides; public class AndroidPluginsModule extends PluginsModule { @Provides SimplexPluginConfig getSimplexPluginConfig() { return new SimplexPluginConfig() { public Collection getFactories() { return Collections.emptyList(); } }; } @Provides DuplexPluginConfig getDuplexPluginConfig(@IoExecutor Executor ioExecutor, AndroidExecutor androidExecutor, Application app, CryptoComponent crypto, LocationUtils locationUtils, EventBus eventBus) { Context appContext = app.getApplicationContext(); DuplexPluginFactory bluetooth = new DroidtoothPluginFactory(ioExecutor, androidExecutor, appContext, crypto.getSecureRandom()); DuplexPluginFactory tor = new TorPluginFactory(ioExecutor, appContext, locationUtils, eventBus); DuplexPluginFactory lan = new AndroidLanTcpPluginFactory(ioExecutor, appContext); final Collection factories = Arrays.asList(bluetooth, tor, lan); return new DuplexPluginConfig() { public Collection getFactories() { return factories; } }; } }