Skip to content

Commit 45e7da1

Browse files
authored
Remove FeatureExceptions.Store and all its implementations (#5877)
Task/Issue URL: https://app.asana.com/0/1202552961248957/1209892744822628/f ### Description FeatureExceptions.Store interface as it's no longer necessary after adding getExceptions() We'll need to remove the following classes * AutoconsentExceptionsStore * AutofillServiceExceptionsStore * MediaPlaybackStore * DrmBlockFeatureExceptionStore * MaliciousSiteProtectionExceptionsStore * AutofillSiteBreakageReportingExceptionsPersister * AutofillFeatureExceptionStore * EmailProtectionInContextRemoteExceptionsPersister We'll need to refactor repositories associated to classes above ### Steps to test this PR Smoke test all features related to the stores above
1 parent 542c2a1 commit 45e7da1

File tree

118 files changed

+849
-1511
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

118 files changed

+849
-1511
lines changed

anvil/anvil-annotations/src/main/java/com/duckduckgo/anvil/annotations/ContributesRemoteFeature.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,6 @@ annotation class ContributesRemoteFeature(
5858
@Deprecated("Not needed anymore. Settings is now supported in top-level and sub-features and Toggle#getSettings returns it")
5959
val settingsStore: KClass<*> = Unit::class,
6060

61-
/** The class that implements the [FeatureExceptions.Store] interface */
62-
val exceptionsStore: KClass<*> = Unit::class,
63-
6461
/** The class that implements the [Toggle.Store] interface */
6562
val toggleStore: KClass<*> = Unit::class,
6663
)

anvil/anvil-compiler/src/main/java/com/duckduckgo/anvil/compiler/ContributesRemoteFeatureCodeGenerator.kt

Lines changed: 15 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -152,27 +152,6 @@ class ContributesRemoteFeatureCodeGenerator : CodeGenerator {
152152
.build(),
153153
)
154154
}
155-
if (!customStorePresence.exceptionStorePresent) {
156-
addFunction(
157-
FunSpec.builder("providesNoopExceptionsStore")
158-
.addAnnotation(Provides::class.asClassName())
159-
.addAnnotation(
160-
AnnotationSpec.builder(RemoteFeatureStoreNamed::class.asClassName())
161-
.addMember("value = %T::class", boundType.asClassName())
162-
.build(),
163-
)
164-
.addCode(
165-
CodeBlock.of(
166-
"""
167-
return %T.EMPTY_STORE
168-
""".trimIndent(),
169-
FeatureExceptions::class.asClassName(),
170-
),
171-
)
172-
.returns(FeatureExceptions.Store::class.asClassName())
173-
.build(),
174-
)
175-
}
176155
addFunction(
177156
FunSpec.builder("provides${boundType.shortName}Inventory")
178157
.addAnnotation(Provides::class.asClassName())
@@ -264,20 +243,6 @@ class ContributesRemoteFeatureCodeGenerator : CodeGenerator {
264243
.primaryConstructor(
265244
FunSpec.constructorBuilder()
266245
.addAnnotation(AnnotationSpec.builder(Inject::class).build())
267-
.addParameter(
268-
ParameterSpec
269-
.builder(
270-
"exceptionStore",
271-
FeatureExceptions.Store::class,
272-
)
273-
.addAnnotation(
274-
AnnotationSpec
275-
.builder(RemoteFeatureStoreNamed::class).addMember("value = %T::class", boundType.asClassName())
276-
.build(),
277-
278-
)
279-
.build(),
280-
)
281246
.addParameter(
282247
ParameterSpec
283248
.builder(
@@ -298,16 +263,6 @@ class ContributesRemoteFeatureCodeGenerator : CodeGenerator {
298263
.addParameter("context", context.asClassName(module))
299264
.build(),
300265
)
301-
.addProperty(
302-
PropertySpec
303-
.builder(
304-
"exceptionStore",
305-
FeatureExceptions.Store::class,
306-
KModifier.PRIVATE,
307-
)
308-
.initializer("exceptionStore")
309-
.build(),
310-
)
311266
.addProperty(
312267
PropertySpec
313268
.builder(
@@ -400,18 +355,6 @@ class ContributesRemoteFeatureCodeGenerator : CodeGenerator {
400355
.returns(FeatureSettings.Store::class.java.asClassName())
401356
.build(),
402357
)
403-
.addFunction(
404-
FunSpec.builder("bindOptionalExceptionsStore")
405-
.addModifiers(KModifier.ABSTRACT)
406-
.addAnnotation(BindsOptionalOf::class.asClassName())
407-
.addAnnotation(
408-
AnnotationSpec.builder(RemoteFeatureStoreNamed::class.asClassName())
409-
.addMember("value = %T::class", boundType.asClassName())
410-
.build(),
411-
)
412-
.returns(FeatureExceptions.Store::class.java.asClassName())
413-
.build(),
414-
)
415358
.build(),
416359
)
417360
}
@@ -487,8 +430,6 @@ class ContributesRemoteFeatureCodeGenerator : CodeGenerator {
487430
}
488431
489432
val exceptions = parseExceptions(feature.exceptions)
490-
// TODO: Remove once migrating everything to getExceptions()
491-
exceptionStore.insertAll(exceptions)
492433
493434
val isEnabled = (feature.state == "enabled") || (appBuildConfig.flavor == %T && feature.state == "internal")
494435
this.feature.get().invokeMethod("self").setRawStoredState(
@@ -656,11 +597,11 @@ class ContributesRemoteFeatureCodeGenerator : CodeGenerator {
656597
}
657598
return featureExceptions.toList()
658599
""".trimIndent(),
659-
FeatureExceptions.FeatureException::class.fqName.asClassName(module),
660-
FeatureExceptions.FeatureException::class.fqName.asClassName(module),
600+
FeatureException::class.fqName.asClassName(module),
601+
FeatureException::class.fqName.asClassName(module),
661602
).build(),
662603
)
663-
.returns(List::class.asClassName().parameterizedBy(FeatureExceptions.FeatureException::class.asClassName()))
604+
.returns(List::class.asClassName().parameterizedBy(FeatureException::class.asClassName()))
664605
.build()
665606
}
666607

@@ -1025,7 +966,6 @@ class ContributesRemoteFeatureCodeGenerator : CodeGenerator {
1025966
}
1026967
}
1027968

1028-
var exceptionStore = false
1029969
var settingsStore = false
1030970
var toggleStore = false
1031971

@@ -1080,20 +1020,6 @@ class ContributesRemoteFeatureCodeGenerator : CodeGenerator {
10801020
requireFeatureAndStoreCrossReference(vmClass, this)
10811021
}
10821022
}
1083-
with(annotation.exceptionsStoreOrNull()) {
1084-
exceptionStore = this != null
1085-
if (this != null) {
1086-
if (this.directSuperTypeReferences()
1087-
.none { it.asClassReferenceOrNull()?.fqName == FeatureExceptions.Store::class.fqName }
1088-
) {
1089-
throw AnvilCompilationException(
1090-
"${vmClass.fqName} [exceptionsStore] must extend [FeatureExceptions.Store]",
1091-
element = vmClass.clazz.identifyingElement,
1092-
)
1093-
}
1094-
requireFeatureAndStoreCrossReference(vmClass, this)
1095-
}
1096-
}
10971023
with(annotation.toggleStoreOrNull()) {
10981024
toggleStore = this != null
10991025
if (this != null) {
@@ -1152,30 +1078,33 @@ class ContributesRemoteFeatureCodeGenerator : CodeGenerator {
11521078
}
11531079

11541080
return CustomStorePresence(
1155-
exceptionStorePresent = exceptionStore,
11561081
toggleStorePresent = toggleStore,
11571082
settingsStorePresent = settingsStore,
11581083
)
11591084
}
11601085

1086+
private enum class ContributesRemoteFeatureValues {
1087+
SCOPE,
1088+
BOUND_TYPE,
1089+
FEATURE_NAME,
1090+
SETTINGS_STORE,
1091+
TOGGLE_STORE,
1092+
}
1093+
11611094
private fun AnnotationReference.remoteFeatureStoreValueOrNull(): ClassReference? {
1162-
return argumentAt("value", 0)?.value()
1095+
return argumentAt("value", ContributesRemoteFeatureValues.SCOPE.ordinal)?.value()
11631096
}
11641097

11651098
private fun AnnotationReference.featureNameOrNull(): String? {
1166-
return argumentAt("featureName", 2)?.value()
1099+
return argumentAt("featureName", ContributesRemoteFeatureValues.FEATURE_NAME.ordinal)?.value()
11671100
}
11681101

11691102
private fun AnnotationReference.settingsStoreOrNull(): ClassReference? {
1170-
return argumentAt("settingsStore", 3)?.value()
1171-
}
1172-
1173-
private fun AnnotationReference.exceptionsStoreOrNull(): ClassReference? {
1174-
return argumentAt("exceptionsStore", 4)?.value()
1103+
return argumentAt("settingsStore", ContributesRemoteFeatureValues.SETTINGS_STORE.ordinal)?.value()
11751104
}
11761105

11771106
private fun AnnotationReference.toggleStoreOrNull(): ClassReference? {
1178-
return argumentAt("toggleStore", 5)?.value()
1107+
return argumentAt("toggleStore", ContributesRemoteFeatureValues.TOGGLE_STORE.ordinal)?.value()
11791108
}
11801109

11811110
private fun ClassReference.declaredFunctions(): List<MemberFunctionReference> {
@@ -1208,6 +1137,5 @@ class ContributesRemoteFeatureCodeGenerator : CodeGenerator {
12081137

12091138
private data class CustomStorePresence(
12101139
val settingsStorePresent: Boolean = false,
1211-
val exceptionStorePresent: Boolean = false,
12121140
val toggleStorePresent: Boolean = false,
12131141
)

app/src/androidTest/java/com/duckduckgo/app/referencetests/FirstPartyCookiesReferenceTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ import com.duckduckgo.cookies.store.CookieExceptionEntity
3737
import com.duckduckgo.cookies.store.CookiesRepository
3838
import com.duckduckgo.cookies.store.FirstPartyCookiePolicyEntity
3939
import com.duckduckgo.cookies.store.toFeatureException
40-
import com.duckduckgo.feature.toggles.api.FeatureExceptions.FeatureException
40+
import com.duckduckgo.feature.toggles.api.FeatureException
4141
import com.duckduckgo.privacy.config.api.UnprotectedTemporary
4242
import com.duckduckgo.privacy.config.impl.models.JsonPrivacyConfig
4343
import com.duckduckgo.privacy.config.impl.network.JSONObjectAdapter

app/src/androidTest/java/com/duckduckgo/app/referencetests/HttpsReferenceTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import com.duckduckgo.common.test.CoroutineTestRule
2727
import com.duckduckgo.common.test.FileUtilities
2828
import com.duckduckgo.common.utils.isHttps
2929
import com.duckduckgo.common.utils.store.BinaryDataStore
30-
import com.duckduckgo.feature.toggles.api.FeatureExceptions.FeatureException
30+
import com.duckduckgo.feature.toggles.api.FeatureException
3131
import com.duckduckgo.feature.toggles.api.FeatureToggle
3232
import com.duckduckgo.httpsupgrade.api.HttpsEmbeddedDataPersister
3333
import com.duckduckgo.httpsupgrade.api.HttpsUpgrader

app/src/androidTest/java/com/duckduckgo/cookies/impl/features/firstparty/RealFirstPartyCookiesModifierTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import com.duckduckgo.common.utils.DefaultDispatcherProvider
2929
import com.duckduckgo.cookies.impl.SQLCookieRemover
3030
import com.duckduckgo.cookies.store.CookiesRepository
3131
import com.duckduckgo.cookies.store.FirstPartyCookiePolicyEntity
32-
import com.duckduckgo.feature.toggles.api.FeatureExceptions.FeatureException
32+
import com.duckduckgo.feature.toggles.api.FeatureException
3333
import com.duckduckgo.privacy.config.api.UnprotectedTemporary
3434
import java.time.Instant
3535
import java.time.ZoneOffset

app/src/main/java/com/duckduckgo/app/browser/di/BrowserModule.kt

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import android.content.pm.PackageManager
2222
import androidx.datastore.core.DataStore
2323
import androidx.datastore.preferences.core.Preferences
2424
import androidx.datastore.preferences.preferencesDataStore
25-
import androidx.room.Room
2625
import androidx.work.WorkManager
2726
import com.duckduckgo.adclick.api.AdClickManager
2827
import com.duckduckgo.app.browser.*
@@ -45,9 +44,6 @@ import com.duckduckgo.app.browser.httperrors.HttpCodeSiteErrorHandlerImpl
4544
import com.duckduckgo.app.browser.httperrors.StringSiteErrorHandler
4645
import com.duckduckgo.app.browser.httperrors.StringSiteErrorHandlerImpl
4746
import com.duckduckgo.app.browser.logindetection.*
48-
import com.duckduckgo.app.browser.mediaplayback.store.ALL_MIGRATIONS
49-
import com.duckduckgo.app.browser.mediaplayback.store.MediaPlaybackDao
50-
import com.duckduckgo.app.browser.mediaplayback.store.MediaPlaybackDatabase
5147
import com.duckduckgo.app.browser.pageloadpixel.PageLoadedPixelDao
5248
import com.duckduckgo.app.browser.pageloadpixel.firstpaint.PagePaintedPixelDao
5349
import com.duckduckgo.app.browser.session.WebViewSessionInMemoryStorage
@@ -340,22 +336,6 @@ class BrowserModule {
340336
return appDatabase.pagePaintedPixelDao()
341337
}
342338

343-
@Provides
344-
@SingleInstanceIn(AppScope::class)
345-
fun provideMediaPlaybackDatabase(context: Context): MediaPlaybackDatabase {
346-
return Room.databaseBuilder(context, MediaPlaybackDatabase::class.java, "media_playback.db")
347-
.enableMultiInstanceInvalidation()
348-
.fallbackToDestructiveMigration()
349-
.addMigrations(*ALL_MIGRATIONS)
350-
.build()
351-
}
352-
353-
@Provides
354-
@SingleInstanceIn(AppScope::class)
355-
fun providesMediaPlaybackDao(mediaPlaybackDatabase: MediaPlaybackDatabase): MediaPlaybackDao {
356-
return mediaPlaybackDatabase.mediaPlaybackDao()
357-
}
358-
359339
private val Context.indonesiaNewTabSectionDataStore: DataStore<Preferences> by preferencesDataStore(
360340
name = "indonesia_new_tab_section_store",
361341
)

app/src/main/java/com/duckduckgo/app/browser/mediaplayback/UnusedMediaPlaybackFeatureFeatureCodegenTrigger.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,11 @@
1717
package com.duckduckgo.app.browser.mediaplayback
1818

1919
import com.duckduckgo.anvil.annotations.ContributesRemoteFeature
20-
import com.duckduckgo.app.browser.mediaplayback.store.MediaPlaybackStore
2120
import com.duckduckgo.di.scopes.AppScope
2221

2322
@ContributesRemoteFeature(
2423
scope = AppScope::class,
2524
featureName = "mediaPlaybackRequiresUserGesture",
26-
exceptionsStore = MediaPlaybackStore::class,
2725
boundType = MediaPlaybackFeature::class,
2826
)
2927
@Suppress("unused")

app/src/main/java/com/duckduckgo/app/browser/mediaplayback/store/MediaPlaybackDao.kt

Lines changed: 0 additions & 41 deletions
This file was deleted.

app/src/main/java/com/duckduckgo/app/browser/mediaplayback/store/MediaPlaybackDatabase.kt

Lines changed: 0 additions & 34 deletions
This file was deleted.

app/src/main/java/com/duckduckgo/app/browser/mediaplayback/store/MediaPlaybackExceptionEntity.kt

Lines changed: 0 additions & 28 deletions
This file was deleted.

0 commit comments

Comments
 (0)