Do not enqueue no-op read receipt jobs.

This commit is contained in:
Cody Henthorne
2024-08-16 15:39:33 -04:00
committed by mtang-signal
parent cda029cd93
commit 4c9b5926b9
5 changed files with 313 additions and 362 deletions

View File

@@ -1,247 +0,0 @@
package org.thoughtcrime.securesms.dependencies;
import androidx.annotation.NonNull;
import org.signal.core.util.concurrent.DeadlockDetector;
import org.signal.libsignal.net.Network;
import org.signal.libsignal.zkgroup.profiles.ClientZkProfileOperations;
import org.signal.libsignal.zkgroup.receipts.ClientZkReceiptOperations;
import org.thoughtcrime.securesms.billing.GooglePlayBillingApi;
import org.thoughtcrime.securesms.components.TypingStatusRepository;
import org.thoughtcrime.securesms.components.TypingStatusSender;
import org.thoughtcrime.securesms.crypto.storage.SignalServiceDataStoreImpl;
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.IncomingMessageObserver;
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.DeletedCallEventManager;
import org.thoughtcrime.securesms.service.ExpiringMessageManager;
import org.thoughtcrime.securesms.service.ExpiringStoriesManager;
import org.thoughtcrime.securesms.service.PendingRetryReceiptManager;
import org.thoughtcrime.securesms.service.ScheduledMessageManager;
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.SignalServiceDataStore;
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.CallLinksService;
import org.whispersystems.signalservice.api.services.DonationsService;
import org.whispersystems.signalservice.api.services.ProfileService;
import org.whispersystems.signalservice.internal.configuration.SignalServiceConfiguration;
import java.util.function.Supplier;
import static org.mockito.Mockito.mock;
@SuppressWarnings("ConstantConditions")
public class MockApplicationDependencyProvider implements AppDependencies.Provider {
@Override
public @NonNull GroupsV2Operations provideGroupsV2Operations(@NonNull SignalServiceConfiguration signalServiceConfiguration) {
return null;
}
@Override
public @NonNull SignalServiceAccountManager provideSignalServiceAccountManager(@NonNull SignalServiceConfiguration signalServiceConfiguration, @NonNull GroupsV2Operations groupsV2Operations) {
return null;
}
@Override
public @NonNull SignalServiceMessageSender provideSignalServiceMessageSender(@NonNull SignalWebSocket signalWebSocket, @NonNull SignalServiceDataStore protocolStore, @NonNull SignalServiceConfiguration signalServiceConfiguration) {
return null;
}
@Override
public @NonNull SignalServiceMessageReceiver provideSignalServiceMessageReceiver(@NonNull SignalServiceConfiguration signalServiceConfiguration) {
return null;
}
@Override
public @NonNull SignalServiceNetworkAccess provideSignalServiceNetworkAccess() {
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 ExpiringStoriesManager provideExpiringStoriesManager() {
return null;
}
@Override
public @NonNull ExpiringMessageManager provideExpiringMessageManager() {
return null;
}
@Override
public @NonNull DeletedCallEventManager provideDeletedCallEventManager() {
return null;
}
@Override
public @NonNull TypingStatusRepository provideTypingStatusRepository() {
return null;
}
@Override
public @NonNull TypingStatusSender provideTypingStatusSender() {
return null;
}
@Override
public @NonNull DatabaseObserver provideDatabaseObserver() {
return mock(DatabaseObserver.class);
}
@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(@NonNull Supplier<SignalServiceConfiguration> signalServiceConfigurationSupplier, @NonNull Supplier<Network> libSignalNetworkSupplier) {
return null;
}
@Override
public @NonNull SignalServiceDataStoreImpl provideProtocolStore() {
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(@NonNull SignalServiceConfiguration signalServiceConfiguration, @NonNull GroupsV2Operations groupsV2Operations) {
return null;
}
@NonNull @Override public CallLinksService provideCallLinksService(@NonNull SignalServiceConfiguration signalServiceConfiguration, @NonNull GroupsV2Operations groupsV2Operations) {
return null;
}
@Override
public @NonNull ProfileService provideProfileService(@NonNull ClientZkProfileOperations profileOperations, @NonNull SignalServiceMessageReceiver signalServiceMessageReceiver, @NonNull SignalWebSocket signalWebSocket) {
return null;
}
@Override
public @NonNull DeadlockDetector provideDeadlockDetector() {
return null;
}
@Override
public @NonNull ClientZkReceiptOperations provideClientZkReceiptOperations(@NonNull SignalServiceConfiguration signalServiceConfiguration) {
return null;
}
@Override
public @NonNull ScheduledMessageManager provideScheduledMessageManager() {
return null;
}
@Override
public @NonNull Network provideLibsignalNetwork(@NonNull SignalServiceConfiguration config) {
return null;
}
@Override
public @NonNull GooglePlayBillingApi provideBillingApi() {
return null;
}
}

View File

@@ -0,0 +1,205 @@
package org.thoughtcrime.securesms.dependencies
import io.mockk.mockk
import org.mockito.Mockito
import org.signal.core.util.concurrent.DeadlockDetector
import org.signal.libsignal.net.Network
import org.signal.libsignal.zkgroup.profiles.ClientZkProfileOperations
import org.signal.libsignal.zkgroup.receipts.ClientZkReceiptOperations
import org.thoughtcrime.securesms.billing.GooglePlayBillingApi
import org.thoughtcrime.securesms.components.TypingStatusRepository
import org.thoughtcrime.securesms.components.TypingStatusSender
import org.thoughtcrime.securesms.crypto.storage.SignalServiceDataStoreImpl
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.IncomingMessageObserver
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.DeletedCallEventManager
import org.thoughtcrime.securesms.service.ExpiringMessageManager
import org.thoughtcrime.securesms.service.ExpiringStoriesManager
import org.thoughtcrime.securesms.service.PendingRetryReceiptManager
import org.thoughtcrime.securesms.service.ScheduledMessageManager
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.SignalServiceDataStore
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.CallLinksService
import org.whispersystems.signalservice.api.services.DonationsService
import org.whispersystems.signalservice.api.services.ProfileService
import org.whispersystems.signalservice.internal.configuration.SignalServiceConfiguration
import java.util.function.Supplier
class MockApplicationDependencyProvider : AppDependencies.Provider {
override fun provideGroupsV2Operations(signalServiceConfiguration: SignalServiceConfiguration): GroupsV2Operations {
return mockk()
}
override fun provideSignalServiceAccountManager(signalServiceConfiguration: SignalServiceConfiguration, groupsV2Operations: GroupsV2Operations): SignalServiceAccountManager {
return mockk()
}
override fun provideSignalServiceMessageSender(signalWebSocket: SignalWebSocket, protocolStore: SignalServiceDataStore, signalServiceConfiguration: SignalServiceConfiguration): SignalServiceMessageSender {
return mockk()
}
override fun provideSignalServiceMessageReceiver(signalServiceConfiguration: SignalServiceConfiguration): SignalServiceMessageReceiver {
return mockk()
}
override fun provideSignalServiceNetworkAccess(): SignalServiceNetworkAccess {
return mockk()
}
override fun provideRecipientCache(): LiveRecipientCache {
return mockk()
}
override fun provideJobManager(): JobManager {
return mockk()
}
override fun provideFrameRateTracker(): FrameRateTracker {
return mockk()
}
override fun provideMegaphoneRepository(): MegaphoneRepository {
return mockk()
}
override fun provideEarlyMessageCache(): EarlyMessageCache {
return mockk()
}
override fun provideMessageNotifier(): MessageNotifier {
return mockk()
}
override fun provideIncomingMessageObserver(): IncomingMessageObserver {
return mockk()
}
override fun provideTrimThreadsByDateManager(): TrimThreadsByDateManager {
return mockk()
}
override fun provideViewOnceMessageManager(): ViewOnceMessageManager {
return mockk()
}
override fun provideExpiringStoriesManager(): ExpiringStoriesManager {
return mockk()
}
override fun provideExpiringMessageManager(): ExpiringMessageManager {
return mockk()
}
override fun provideDeletedCallEventManager(): DeletedCallEventManager {
return mockk()
}
override fun provideTypingStatusRepository(): TypingStatusRepository {
return mockk()
}
override fun provideTypingStatusSender(): TypingStatusSender {
return mockk()
}
override fun provideDatabaseObserver(): DatabaseObserver {
return Mockito.mock(DatabaseObserver::class.java)
}
override fun providePayments(signalServiceAccountManager: SignalServiceAccountManager): Payments {
return mockk()
}
override fun provideShakeToReport(): ShakeToReport {
return mockk()
}
override fun provideAppForegroundObserver(): AppForegroundObserver {
return Mockito.mock(AppForegroundObserver::class.java)
}
override fun provideSignalCallManager(): SignalCallManager {
return mockk()
}
override fun providePendingRetryReceiptManager(): PendingRetryReceiptManager {
return mockk()
}
override fun providePendingRetryReceiptCache(): PendingRetryReceiptCache {
return mockk()
}
override fun provideSignalWebSocket(signalServiceConfigurationSupplier: Supplier<SignalServiceConfiguration>, libSignalNetworkSupplier: Supplier<Network>): SignalWebSocket {
return mockk()
}
override fun provideProtocolStore(): SignalServiceDataStoreImpl {
return mockk()
}
override fun provideGiphyMp4Cache(): GiphyMp4Cache {
return mockk()
}
override fun provideExoPlayerPool(): SimpleExoPlayerPool {
return mockk()
}
override fun provideAndroidCallAudioManager(): AudioManagerCompat {
return mockk()
}
override fun provideDonationsService(signalServiceConfiguration: SignalServiceConfiguration, groupsV2Operations: GroupsV2Operations): DonationsService {
return mockk()
}
override fun provideCallLinksService(signalServiceConfiguration: SignalServiceConfiguration, groupsV2Operations: GroupsV2Operations): CallLinksService {
return mockk()
}
override fun provideProfileService(profileOperations: ClientZkProfileOperations, signalServiceMessageReceiver: SignalServiceMessageReceiver, signalWebSocket: SignalWebSocket): ProfileService {
return mockk()
}
override fun provideDeadlockDetector(): DeadlockDetector {
return mockk()
}
override fun provideClientZkReceiptOperations(signalServiceConfiguration: SignalServiceConfiguration): ClientZkReceiptOperations {
return mockk()
}
override fun provideScheduledMessageManager(): ScheduledMessageManager {
return mockk()
}
override fun provideLibsignalNetwork(config: SignalServiceConfiguration): Network {
return mockk()
}
override fun provideBillingApi(): GooglePlayBillingApi {
return mockk()
}
}