Skip to content

Commit cb830b0

Browse files
committed
refactor(common): rename crash package to crashreporting
Move CrashReportService from com.ichi2.anki to com.ichi2.anki.common.crashreporting. Update imports across all call sites. - initializeAcraCrashReporter() wires up CrashReportService internally so the instance is never exposed publicly - AcraCrashReporter constants reference CrashReporter.Companion - Add TODO to remove Context/Activity params from CrashReporter interface to enable java-library module usage, noting profile-aware context considerations
1 parent 1001569 commit cb830b0

Some content is hidden

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

51 files changed

+75
-57
lines changed

AnkiDroid/src/androidTest/java/com/ichi2/anki/tests/ACRATest.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ import androidx.core.content.edit
2222
import androidx.test.annotation.UiThreadTest
2323
import androidx.test.ext.junit.runners.AndroidJUnit4
2424
import com.ichi2.anki.AnkiDroidApp
25-
import com.ichi2.anki.CrashReportService
26-
import com.ichi2.anki.CrashReporter.Companion.FEEDBACK_REPORT_ALWAYS
27-
import com.ichi2.anki.CrashReporter.Companion.FEEDBACK_REPORT_ASK
28-
import com.ichi2.anki.CrashReporter.Companion.FEEDBACK_REPORT_KEY
29-
import com.ichi2.anki.CrashReporter.Companion.FEEDBACK_REPORT_NEVER
3025
import com.ichi2.anki.R
3126
import com.ichi2.anki.analytics.UsageAnalytics
27+
import com.ichi2.anki.common.crashreporting.CrashReportService
28+
import com.ichi2.anki.common.crashreporting.CrashReporter.Companion.FEEDBACK_REPORT_ALWAYS
29+
import com.ichi2.anki.common.crashreporting.CrashReporter.Companion.FEEDBACK_REPORT_ASK
30+
import com.ichi2.anki.common.crashreporting.CrashReporter.Companion.FEEDBACK_REPORT_KEY
31+
import com.ichi2.anki.common.crashreporting.CrashReporter.Companion.FEEDBACK_REPORT_NEVER
3232
import com.ichi2.anki.getAcraCoreConfigBuilder
3333
import com.ichi2.anki.logging.ProductionCrashReportingTree
3434
import com.ichi2.anki.preferences.sharedPrefs

AnkiDroid/src/main/java/com/ichi2/anki/AcraCrashReporter.kt

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ import androidx.webkit.WebViewCompat
2727
import com.ichi2.anki.analytics.AnkiDroidCrashReportDialog
2828
import com.ichi2.anki.analytics.UsageAnalytics
2929
import com.ichi2.anki.analytics.UsageAnalytics.sendAnalyticsException
30+
import com.ichi2.anki.common.crashreporting.CrashReportService
31+
import com.ichi2.anki.common.crashreporting.CrashReporter
3032
import com.ichi2.anki.common.time.TimeManager
3133
import com.ichi2.anki.exception.ManuallyReportedException
3234
import com.ichi2.anki.exception.UserSubmittedException
@@ -45,11 +47,11 @@ import org.acra.sender.HttpSender
4547
import timber.log.Timber
4648

4749
private object AcraCrashReporter : CrashReporter {
48-
// ACRA constants used for stored preferences
49-
const val FEEDBACK_REPORT_KEY = "reportErrorMode"
50-
const val FEEDBACK_REPORT_ASK = "2"
51-
const val FEEDBACK_REPORT_NEVER = "1"
52-
const val FEEDBACK_REPORT_ALWAYS = "0"
50+
// Reference constants from the interface companion
51+
val FEEDBACK_REPORT_KEY get() = CrashReporter.FEEDBACK_REPORT_KEY
52+
val FEEDBACK_REPORT_ASK get() = CrashReporter.FEEDBACK_REPORT_ASK
53+
val FEEDBACK_REPORT_NEVER get() = CrashReporter.FEEDBACK_REPORT_NEVER
54+
val FEEDBACK_REPORT_ALWAYS get() = CrashReporter.FEEDBACK_REPORT_ALWAYS
5355

5456
/** Our ACRA configurations, initialized during Application.onCreate() */
5557
@JvmStatic
@@ -410,13 +412,13 @@ private object AcraCrashReporter : CrashReporter {
410412
}
411413

412414
/**
413-
* Initializes ACRA crash reporting and returns the reporter
414-
* as a [CrashReporter] for use with [CrashReportService].
415+
* Initializes ACRA crash reporting and wires it up as the
416+
* global [CrashReportService] reporter.
415417
*/
416418
context(application: Application)
417-
fun initializeAcraCrashReporter(): CrashReporter {
419+
fun initializeAcraCrashReporter() {
418420
AcraCrashReporter.initialize(application)
419-
return AcraCrashReporter
421+
CrashReportService.setReporter(AcraCrashReporter)
420422
}
421423

422424
fun isAcraSenderProcess(): Boolean = AcraCrashReporter.isProperServiceProcess()

AnkiDroid/src/main/java/com/ichi2/anki/AnkiActivity.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ import com.ichi2.anki.android.input.ShortcutGroup
6161
import com.ichi2.anki.android.input.ShortcutGroupProvider
6262
import com.ichi2.anki.android.input.shortcut
6363
import com.ichi2.anki.common.annotations.LegacyNotifications
64+
import com.ichi2.anki.common.crashreporting.CrashReportService
6465
import com.ichi2.anki.common.utils.annotation.KotlinCleanup
6566
import com.ichi2.anki.compat.CompatHelper
6667
import com.ichi2.anki.compat.CompatHelper.Companion.registerReceiverCompat

AnkiDroid/src/main/java/com/ichi2/anki/AnkiDroidApp.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,12 @@ import androidx.fragment.app.FragmentActivity
3535
import androidx.lifecycle.MutableLiveData
3636
import anki.collection.OpChanges
3737
import com.ichi2.anki.AnkiDroidApp.Companion.sharedPreferencesTestingOverride
38-
import com.ichi2.anki.CrashReportService.sendExceptionReport
3938
import com.ichi2.anki.analytics.UsageAnalytics
4039
import com.ichi2.anki.browser.SharedPreferencesLastDeckIdRepository
4140
import com.ichi2.anki.common.annotations.LegacyNotifications
4241
import com.ichi2.anki.common.annotations.NeedsTest
42+
import com.ichi2.anki.common.crashreporting.CrashReportService
43+
import com.ichi2.anki.common.crashreporting.CrashReportService.sendExceptionReport
4344
import com.ichi2.anki.common.utils.annotation.KotlinCleanup
4445
import com.ichi2.anki.compat.CompatHelper
4546
import com.ichi2.anki.contextmenu.AnkiCardContextMenu
@@ -134,8 +135,7 @@ open class AnkiDroidApp :
134135
// Ensures any change is propagated to widgets
135136
ChangeManager.subscribe(this)
136137

137-
val crashReporter = initializeAcraCrashReporter()
138-
CrashReportService.setReporter(crashReporter)
138+
initializeAcraCrashReporter()
139139
val logType = LogType.value
140140
when (logType) {
141141
LogType.DEBUG -> Timber.plant(DebugTree())

AnkiDroid/src/main/java/com/ichi2/anki/CoroutineHelpers.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import com.ichi2.anki.CrashReportData.HelpAction
4141
import com.ichi2.anki.CrashReportData.HelpAction.AnkiBackendLink
4242
import com.ichi2.anki.CrashReportData.HelpAction.OpenDeckOptions
4343
import com.ichi2.anki.common.annotations.UseContextParameter
44+
import com.ichi2.anki.common.crashreporting.CrashReportService
4445
import com.ichi2.anki.dialogs.DatabaseErrorDialog
4546
import com.ichi2.anki.dialogs.DatabaseErrorDialog.DatabaseErrorDialogType
4647
import com.ichi2.anki.exception.StorageAccessException

AnkiDroid/src/main/java/com/ichi2/anki/DayRolloverHandler.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import androidx.core.content.ContextCompat.RECEIVER_EXPORTED
3535
import anki.collection.OpChanges
3636
import anki.collection.opChanges
3737
import com.ichi2.anki.CollectionManager.withOpenColOrNull
38+
import com.ichi2.anki.common.crashreporting.CrashReportService
3839
import com.ichi2.anki.exception.ManuallyReportedException
3940
import com.ichi2.anki.libanki.EpochSeconds
4041
import com.ichi2.anki.libanki.sched.Scheduler

AnkiDroid/src/main/java/com/ichi2/anki/DeckPicker.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ import com.ichi2.anki.android.back.exitViaDoubleTapBackCallback
9494
import com.ichi2.anki.android.input.ShortcutGroup
9595
import com.ichi2.anki.android.input.shortcut
9696
import com.ichi2.anki.common.annotations.NeedsTest
97+
import com.ichi2.anki.common.crashreporting.CrashReportService
9798
import com.ichi2.anki.common.time.TimeManager
9899
import com.ichi2.anki.common.utils.annotation.KotlinCleanup
99100
import com.ichi2.anki.compat.CompatHelper.Companion.getSerializableCompat

AnkiDroid/src/main/java/com/ichi2/anki/InitialActivity.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import android.os.Parcelable
2727
import androidx.annotation.CheckResult
2828
import androidx.annotation.RequiresApi
2929
import androidx.core.content.edit
30+
import com.ichi2.anki.common.crashreporting.CrashReportService
3031
import com.ichi2.anki.compat.CompatHelper.Companion.sdkVersion
3132
import com.ichi2.anki.dialogs.DatabaseErrorDialog
3233
import com.ichi2.anki.exception.StorageAccessException

AnkiDroid/src/main/java/com/ichi2/anki/MediaRegistration.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import android.graphics.BitmapFactory
2222
import android.net.Uri
2323
import androidx.annotation.CheckResult
2424
import com.ichi2.anki.common.annotations.NeedsTest
25+
import com.ichi2.anki.common.crashreporting.CrashReportService
2526
import com.ichi2.anki.compat.CompatHelper
2627
import com.ichi2.anki.libanki.exception.EmptyMediaException
2728
import com.ichi2.anki.multimediacard.fields.ImageField

AnkiDroid/src/main/java/com/ichi2/anki/NoteEditorFragment.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ import com.ichi2.anki.android.input.ShortcutGroup
9090
import com.ichi2.anki.android.input.ShortcutGroupProvider
9191
import com.ichi2.anki.android.input.shortcut
9292
import com.ichi2.anki.common.annotations.NeedsTest
93+
import com.ichi2.anki.common.crashreporting.CrashReportService
9394
import com.ichi2.anki.common.utils.annotation.KotlinCleanup
9495
import com.ichi2.anki.common.utils.ext.ifZero
9596
import com.ichi2.anki.compat.CompatHelper.Companion.getSerializableCompat

0 commit comments

Comments
 (0)