Migrate local account data into SignalStore.

This commit is contained in:
Greyson Parrelli
2021-11-17 15:08:28 -05:00
committed by Cody Henthorne
parent 87f175a96b
commit 8aea20f147
87 changed files with 1063 additions and 756 deletions

View File

@@ -0,0 +1,230 @@
package org.thoughtcrime.securesms.dependencies;
import androidx.annotation.NonNull;
import org.signal.core.util.concurrent.DeadlockDetector;
import org.signal.zkgroup.receipts.ClientZkReceiptOperations;
import org.thoughtcrime.securesms.components.TypingStatusRepository;
import org.thoughtcrime.securesms.components.TypingStatusSender;
import org.thoughtcrime.securesms.crypto.storage.SignalSenderKeyStore;
import org.thoughtcrime.securesms.crypto.storage.TextSecureIdentityKeyStore;
import org.thoughtcrime.securesms.crypto.storage.TextSecurePreKeyStore;
import org.thoughtcrime.securesms.crypto.storage.TextSecureSessionStore;
import org.thoughtcrime.securesms.database.DatabaseObserver;
import org.thoughtcrime.securesms.database.PendingRetryReceiptCache;
import org.thoughtcrime.securesms.jobmanager.JobManager;
import org.thoughtcrime.securesms.megaphone.MegaphoneRepository;
import org.thoughtcrime.securesms.messages.BackgroundMessageRetriever;
import org.thoughtcrime.securesms.messages.IncomingMessageObserver;
import org.thoughtcrime.securesms.messages.IncomingMessageProcessor;
import org.thoughtcrime.securesms.notifications.MessageNotifier;
import org.thoughtcrime.securesms.payments.Payments;
import org.thoughtcrime.securesms.push.SignalServiceNetworkAccess;
import org.thoughtcrime.securesms.recipients.LiveRecipientCache;
import org.thoughtcrime.securesms.revealable.ViewOnceMessageManager;
import org.thoughtcrime.securesms.service.ExpiringMessageManager;
import org.thoughtcrime.securesms.service.PendingRetryReceiptManager;
import org.thoughtcrime.securesms.service.TrimThreadsByDateManager;
import org.thoughtcrime.securesms.service.webrtc.SignalCallManager;
import org.thoughtcrime.securesms.shakereport.ShakeToReport;
import org.thoughtcrime.securesms.util.AppForegroundObserver;
import org.thoughtcrime.securesms.util.EarlyMessageCache;
import org.thoughtcrime.securesms.util.FrameRateTracker;
import org.thoughtcrime.securesms.video.exo.GiphyMp4Cache;
import org.thoughtcrime.securesms.video.exo.SimpleExoPlayerPool;
import org.thoughtcrime.securesms.webrtc.audio.AudioManagerCompat;
import org.whispersystems.signalservice.api.SignalServiceAccountManager;
import org.whispersystems.signalservice.api.SignalServiceMessageReceiver;
import org.whispersystems.signalservice.api.SignalServiceMessageSender;
import org.whispersystems.signalservice.api.SignalWebSocket;
import org.whispersystems.signalservice.api.groupsv2.GroupsV2Operations;
import org.whispersystems.signalservice.api.services.DonationsService;
import static org.mockito.Mockito.mock;
public class MockApplicationDependencyProvider implements ApplicationDependencies.Provider {
@Override
public @NonNull GroupsV2Operations provideGroupsV2Operations() {
return null;
}
@Override
public @NonNull SignalServiceAccountManager provideSignalServiceAccountManager() {
return null;
}
@Override
public @NonNull SignalServiceMessageSender provideSignalServiceMessageSender(@NonNull SignalWebSocket signalWebSocket) {
return null;
}
@Override
public @NonNull SignalServiceMessageReceiver provideSignalServiceMessageReceiver() {
return null;
}
@Override
public @NonNull SignalServiceNetworkAccess provideSignalServiceNetworkAccess() {
return null;
}
@Override
public @NonNull IncomingMessageProcessor provideIncomingMessageProcessor() {
return null;
}
@Override
public @NonNull BackgroundMessageRetriever provideBackgroundMessageRetriever() {
return null;
}
@Override
public @NonNull LiveRecipientCache provideRecipientCache() {
return null;
}
@Override
public @NonNull JobManager provideJobManager() {
return null;
}
@Override
public @NonNull FrameRateTracker provideFrameRateTracker() {
return null;
}
@Override
public @NonNull MegaphoneRepository provideMegaphoneRepository() {
return null;
}
@Override
public @NonNull EarlyMessageCache provideEarlyMessageCache() {
return null;
}
@Override
public @NonNull MessageNotifier provideMessageNotifier() {
return null;
}
@Override
public @NonNull IncomingMessageObserver provideIncomingMessageObserver() {
return null;
}
@Override
public @NonNull TrimThreadsByDateManager provideTrimThreadsByDateManager() {
return null;
}
@Override
public @NonNull ViewOnceMessageManager provideViewOnceMessageManager() {
return null;
}
@Override
public @NonNull ExpiringMessageManager provideExpiringMessageManager() {
return null;
}
@Override
public @NonNull TypingStatusRepository provideTypingStatusRepository() {
return null;
}
@Override
public @NonNull TypingStatusSender provideTypingStatusSender() {
return null;
}
@Override
public @NonNull DatabaseObserver provideDatabaseObserver() {
return null;
}
@Override
public @NonNull Payments providePayments(@NonNull SignalServiceAccountManager signalServiceAccountManager) {
return null;
}
@Override
public @NonNull ShakeToReport provideShakeToReport() {
return null;
}
@Override
public @NonNull AppForegroundObserver provideAppForegroundObserver() {
return mock(AppForegroundObserver.class);
}
@Override
public @NonNull SignalCallManager provideSignalCallManager() {
return null;
}
@Override
public @NonNull PendingRetryReceiptManager providePendingRetryReceiptManager() {
return null;
}
@Override
public @NonNull PendingRetryReceiptCache providePendingRetryReceiptCache() {
return null;
}
@Override
public @NonNull SignalWebSocket provideSignalWebSocket() {
return null;
}
@Override
public @NonNull TextSecureIdentityKeyStore provideIdentityStore() {
return null;
}
@Override
public @NonNull TextSecureSessionStore provideSessionStore() {
return null;
}
@Override
public @NonNull TextSecurePreKeyStore providePreKeyStore() {
return null;
}
@Override
public @NonNull SignalSenderKeyStore provideSenderKeyStore() {
return null;
}
@Override
public @NonNull GiphyMp4Cache provideGiphyMp4Cache() {
return null;
}
@Override
public @NonNull SimpleExoPlayerPool provideExoPlayerPool() {
return null;
}
@Override
public @NonNull AudioManagerCompat provideAndroidCallAudioManager() {
return null;
}
@Override
public @NonNull DonationsService provideDonationsService() {
return null;
}
@Override
public @NonNull DeadlockDetector provideDeadlockDetector() {
return null;
}
@Override
public @NonNull ClientZkReceiptOperations provideClientZkReceiptOperations() {
return null;
}
}

View File

@@ -0,0 +1,29 @@
package org.thoughtcrime.securesms.keyvalue;
import androidx.annotation.NonNull;
import java.util.Collection;
public final class MockKeyValuePersistentStorage implements KeyValuePersistentStorage {
private final KeyValueDataSet dataSet;
public static KeyValuePersistentStorage withDataSet(@NonNull KeyValueDataSet dataSet) {
return new MockKeyValuePersistentStorage(dataSet);
}
private MockKeyValuePersistentStorage(@NonNull KeyValueDataSet dataSet) {
this.dataSet = dataSet;
}
@Override
public void writeDataSet(@NonNull KeyValueDataSet dataSet, @NonNull Collection<String> removes) {
this.dataSet.putAll(dataSet);
this.dataSet.removeAll(removes);
}
@Override
public @NonNull KeyValueDataSet getDataSet() {
return dataSet;
}
}

View File

@@ -4,10 +4,18 @@ import android.app.Application;
import androidx.test.core.app.ApplicationProvider;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.ParameterizedRobolectricTestRunner;
import org.robolectric.annotation.Config;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.dependencies.MockApplicationDependencyProvider;
import org.thoughtcrime.securesms.keyvalue.AccountValues;
import org.thoughtcrime.securesms.keyvalue.KeyValueDataSet;
import org.thoughtcrime.securesms.keyvalue.KeyValueStore;
import org.thoughtcrime.securesms.keyvalue.MockKeyValuePersistentStorage;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import java.util.Arrays;
import java.util.Collection;
@@ -38,6 +46,18 @@ public class SignalMeUtilText_parseE164FromLink {
});
}
@Before
public void setup() {
if (!ApplicationDependencies.isInitialized()) {
ApplicationDependencies.init(ApplicationProvider.getApplicationContext(), new MockApplicationDependencyProvider());
}
KeyValueDataSet dataSet = new KeyValueDataSet();
dataSet.putString(AccountValues.KEY_E164, "+15555555555");
SignalStore.inject(new KeyValueStore(MockKeyValuePersistentStorage.withDataSet(dataSet)));
}
public SignalMeUtilText_parseE164FromLink(String input, String output) {
this.input = input;
this.output = output;
@@ -45,6 +65,6 @@ public class SignalMeUtilText_parseE164FromLink {
@Test
public void parse() {
assertEquals(output, SignalMeUtil.parseE164FromLink(ApplicationProvider.getApplicationContext(), input));
assertEquals(output, SignalMeUtil.parseE164FromLink(ApplicationDependencies.getApplication(), input));
}
}