From 00705447ec9b960163ed150465c2b10cfd7bcddd Mon Sep 17 00:00:00 2001 From: akwizgran <michael@briarproject.org> Date: Tue, 18 Jun 2019 13:39:01 +0100 Subject: [PATCH] Use feature flag to decide which version to advertise. --- .../test/BrambleCoreIntegrationTestModule.java | 18 ++++++++++++++++++ .../briar/messaging/MessagingModule.java | 9 ++++++--- .../briar/headless/HeadlessModule.kt | 6 ++++++ .../briar/headless/HeadlessTestModule.kt | 6 ++++++ 4 files changed, 36 insertions(+), 3 deletions(-) diff --git a/bramble-core/src/test/java/org/briarproject/bramble/test/BrambleCoreIntegrationTestModule.java b/bramble-core/src/test/java/org/briarproject/bramble/test/BrambleCoreIntegrationTestModule.java index ab30c90a65..8b06bc4169 100644 --- a/bramble-core/src/test/java/org/briarproject/bramble/test/BrambleCoreIntegrationTestModule.java +++ b/bramble-core/src/test/java/org/briarproject/bramble/test/BrambleCoreIntegrationTestModule.java @@ -1,9 +1,11 @@ package org.briarproject.bramble.test; +import org.briarproject.bramble.api.FeatureFlags; import org.briarproject.bramble.battery.DefaultBatteryManagerModule; import org.briarproject.bramble.event.DefaultEventExecutorModule; import dagger.Module; +import dagger.Provides; @Module(includes = { DefaultBatteryManagerModule.class, @@ -13,4 +15,20 @@ import dagger.Module; TestSecureRandomModule.class }) public class BrambleCoreIntegrationTestModule { + + @Provides + FeatureFlags provideFeatureFlags() { + return new FeatureFlags() { + + @Override + public boolean shouldEnableImageAttachments() { + return true; + } + + @Override + public boolean shouldEnableRemoteContacts() { + return true; + } + }; + } } diff --git a/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingModule.java b/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingModule.java index c9a55cff8e..17b77ef390 100644 --- a/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingModule.java +++ b/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingModule.java @@ -1,5 +1,6 @@ package org.briarproject.briar.messaging; +import org.briarproject.bramble.api.FeatureFlags; import org.briarproject.bramble.api.contact.ContactManager; import org.briarproject.bramble.api.data.BdfReaderFactory; import org.briarproject.bramble.api.data.MetadataEncoder; @@ -19,7 +20,6 @@ import dagger.Provides; import static org.briarproject.briar.api.messaging.MessagingManager.CLIENT_ID; import static org.briarproject.briar.api.messaging.MessagingManager.MAJOR_VERSION; -import static org.briarproject.briar.api.messaging.MessagingManager.MINOR_VERSION; @Module public class MessagingModule { @@ -57,14 +57,17 @@ public class MessagingModule { ContactManager contactManager, ValidationManager validationManager, ConversationManager conversationManager, ClientVersioningManager clientVersioningManager, - MessagingManagerImpl messagingManager) { + FeatureFlags featureFlags, MessagingManagerImpl messagingManager) { lifecycleManager.registerOpenDatabaseHook(messagingManager); contactManager.registerContactHook(messagingManager); validationManager.registerIncomingMessageHook(CLIENT_ID, MAJOR_VERSION, messagingManager); conversationManager.registerConversationClient(messagingManager); + // Advertise the current or previous minor version depending on the + // feature flag + int minorVersion = featureFlags.shouldEnableImageAttachments() ? 1 : 0; clientVersioningManager.registerClient(CLIENT_ID, MAJOR_VERSION, - MINOR_VERSION, messagingManager); + minorVersion, messagingManager); return messagingManager; } diff --git a/briar-headless/src/main/java/org/briarproject/briar/headless/HeadlessModule.kt b/briar-headless/src/main/java/org/briarproject/briar/headless/HeadlessModule.kt index 1a4c2a4b0c..af765e114e 100644 --- a/briar-headless/src/main/java/org/briarproject/briar/headless/HeadlessModule.kt +++ b/briar-headless/src/main/java/org/briarproject/briar/headless/HeadlessModule.kt @@ -3,6 +3,7 @@ package org.briarproject.briar.headless import com.fasterxml.jackson.databind.ObjectMapper import dagger.Module import dagger.Provides +import org.briarproject.bramble.api.FeatureFlags import org.briarproject.bramble.api.battery.BatteryManager import org.briarproject.bramble.api.db.DatabaseConfig import org.briarproject.bramble.api.event.EventBus @@ -94,4 +95,9 @@ internal class HeadlessModule(private val appDir: File) { @Singleton internal fun provideObjectMapper() = ObjectMapper() + @Provides + internal fun provideFeatureFlags() = object : FeatureFlags { + override fun shouldEnableImageAttachments() = false + override fun shouldEnableRemoteContacts() = true + } } diff --git a/briar-headless/src/test/java/org/briarproject/briar/headless/HeadlessTestModule.kt b/briar-headless/src/test/java/org/briarproject/briar/headless/HeadlessTestModule.kt index c8f2b7d21d..160efd8f07 100644 --- a/briar-headless/src/test/java/org/briarproject/briar/headless/HeadlessTestModule.kt +++ b/briar-headless/src/test/java/org/briarproject/briar/headless/HeadlessTestModule.kt @@ -3,6 +3,7 @@ package org.briarproject.briar.headless import com.fasterxml.jackson.databind.ObjectMapper import dagger.Module import dagger.Provides +import org.briarproject.bramble.api.FeatureFlags import org.briarproject.bramble.api.db.DatabaseConfig import org.briarproject.bramble.api.plugin.PluginConfig import org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory @@ -61,4 +62,9 @@ internal class HeadlessTestModule(private val appDir: File) { @Singleton internal fun provideObjectMapper() = ObjectMapper() + @Provides + internal fun provideFeatureFlags() = object : FeatureFlags { + override fun shouldEnableImageAttachments() = false + override fun shouldEnableRemoteContacts() = true + } } -- GitLab