feat: logging_config-based remote logging control, SDK version gating, and misc Otel fixes#2552
feat: logging_config-based remote logging control, SDK version gating, and misc Otel fixes#2552abdulraqeeb33 wants to merge 8 commits intoar-otel-crash-reportingfrom
Conversation
… gating - Derive isRemoteLoggingEnabled from log_level presence in logging_config (empty object = disabled, has log_level = enabled) - Add OtelSdkSupport utility for testable SDK version checks (API 26+) - Gate all Otel initialization (crash, ANR, remote logging) on both SDK support and backend config - Rename OneSignalCrashLogInit to OneSignalOtelInit to reflect full scope - Simplify OneSignalCrashHandlerFactory with require() instead of no-op - Add crash test button in demo app SecondaryActivity - Fix Compose compiler plugin compatibility with AGP 8.8.2 - Add flow chart documentation for init sequence Co-authored-by: Cursor <cursoragent@cursor.com>
71dfc6d to
1211bd8
Compare
| @@ -0,0 +1,52 @@ | |||
| sequenceDiagram | |||
There was a problem hiding this comment.
maybe put these elsewhere?
OneSignalSDK/onesignal/otel/src/main/java/com/onesignal/otel/IOtelPlatformProvider.kt
Show resolved
Hide resolved
📊 Diff Coverage ReportDiff Coverage Report (Changed Lines Only)Threshold: 80% Changed Files Coverage
Overall Coverage (Changed Lines Only)52/893 changed lines covered (5.8%) ❌ Coverage Check FailedFiles below 80% threshold:
|
| resolver.resolveRemoteLoggingEnabled() shouldBe true | ||
| } | ||
|
|
||
| test("resolveRemoteLoggingEnabled returns false when logLevel is NONE") { |
There was a problem hiding this comment.
where is this logic that prevents none loglevel?
Summary
isRemoteLoggingEnabledfrom the presence of a validlog_levelinlogging_config({}= disabled,{"log_level": "ERROR"}= enabled). RetainsisEnabledas a convenience field inConfigModelandRemoteLoggingParamsObject.OtelSdkSupportutility to gate all Otel features (crash reporting, ANR detection, remote logging) on Android API 26+.OneSignalCrashHandlerFactorynow usesrequire()assertion instead of no-op fallback.OneSignalCrashLogInit→OneSignalOtelInit: Reflects broader scope (crash handler + ANR + logging).otel-logging-misc-fixesby @jkasten2):initializeOtelLoggingandparseLogLevelprocessUptime(Double→Long milliseconds)Throwableon otel access to prevent app crashesBuild.VERSIONusage withAndroidUtilswrapper for testabilityFiles changed
Key files:
OneSignalOtelInit.kt(renamed fromOneSignalCrashLogInit.kt) — SDK gate + isEnabled gate + init logicOtelSdkSupport.kt— centralized SDK version check (testable)OtelIdResolver.kt— derivesisRemoteLoggingEnabledfromlogLevelOtelPlatformProvider.kt—remoteLogLevelreturns null when disabledConfigModel.kt/ConfigModelStoreListener.kt— persistsisEnabledIParamsBackendService.kt— derivedisEnabledonRemoteLoggingParamsObjectOneSignalCrashHandlerFactory.kt—require()instead of no-opParamsBackendService.kt— simplified log level parsingOtelCrashHandler.kt— improved error handling for missing classesLogging.kt/OneSignalCrashUploaderWrapper.kt— Android version checksTest plan
OtelSdkSupport(API 26+ gate, reset, override)OtelIdResolver.resolveRemoteLoggingEnabled()(all config permutations)OtelPlatformProvider(isRemoteLoggingEnabled,remoteLogLevel)OneSignalOtelInitTestcovers crash handler + logging init pathsCrashReportUploadTestfor processUptime fixLoggingOtelTestfor Build.VERSION usageMade with Cursor
This change is