That fuck shit the fascists are using
1package org.tm.archive
2
3import org.signal.core.util.concurrent.SignalExecutors
4import org.signal.core.util.logging.AndroidLogger
5import org.signal.core.util.logging.Log
6import org.signal.libsignal.protocol.logging.SignalProtocolLoggerProvider
7import org.tm.archive.database.LogDatabase
8import org.tm.archive.dependencies.ApplicationDependencies
9import org.tm.archive.dependencies.ApplicationDependencyProvider
10import org.tm.archive.dependencies.InstrumentationApplicationDependencyProvider
11import org.tm.archive.logging.CustomSignalProtocolLogger
12import org.tm.archive.logging.PersistentLogger
13import org.tm.archive.testing.InMemoryLogger
14
15/**
16 * Application context for running instrumentation tests (aka androidTests).
17 */
18class SignalInstrumentationApplicationContext : ApplicationContext() {
19
20 val inMemoryLogger: InMemoryLogger = InMemoryLogger()
21
22 override fun initializeAppDependencies() {
23 val default = ApplicationDependencyProvider(this)
24 ApplicationDependencies.init(this, InstrumentationApplicationDependencyProvider(this, default))
25 ApplicationDependencies.getDeadlockDetector().start()
26 }
27
28 override fun initializeLogging() {
29 Log.initialize({ true }, AndroidLogger(), PersistentLogger(this), inMemoryLogger)
30
31 SignalProtocolLoggerProvider.setProvider(CustomSignalProtocolLogger())
32
33 SignalExecutors.UNBOUNDED.execute {
34 Log.blockUntilAllWritesFinished()
35 LogDatabase.getInstance(this).logs.trimToSize()
36 }
37 }
38
39 override fun beginJobLoop() = Unit
40
41 /**
42 * Some of the jobs can interfere with some of the instrumentation tests.
43 *
44 * For example, we may try to create a release channel recipient while doing
45 * an import/backup test.
46 *
47 * This can be used to start the job loop if needed for tests that rely on it.
48 */
49 fun beginJobLoopForTests() {
50 super.beginJobLoop()
51 }
52}