Skip to content

Commit

Permalink
Remove internal API from Embrace.java
Browse files Browse the repository at this point in the history
  • Loading branch information
bidetofevil committed Dec 18, 2023
1 parent 75d1de4 commit cdcfe7a
Show file tree
Hide file tree
Showing 11 changed files with 173 additions and 109 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import io.embrace.android.embracesdk.Embrace
internal class ComposeInternalErrorLogger {

fun logError(throwable: Throwable) {
Embrace.getInstance().logInternalError(
Embrace.getInstance().internalInterface.logInternalError(
throwable
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ public class EmbraceOkHttp3NetworkInterceptor internal constructor(
i++
}
dataCaptureErrorMessage = "There were errors in capturing the following part(s) of the network call: %s$errors"
embrace.logInternalError(
embrace.internalInterface.logInternalError(
RuntimeException("Failure during the building of NetworkCaptureData. $dataCaptureErrorMessage", e)
)
}
Expand Down Expand Up @@ -227,7 +227,7 @@ public class EmbraceOkHttp3NetworkInterceptor internal constructor(
return buffer.readByteArray()
}
} catch (e: IOException) {
embrace.logInternalError("Failed to capture okhttp request body.", e.javaClass.toString())
embrace.internalInterface.logInternalError("Failed to capture okhttp request body.", e.javaClass.toString())
}
return null
}
Expand Down
8 changes: 4 additions & 4 deletions embrace-android-sdk/api/embrace-android-sdk.api
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ public final class io/embrace/android/embracesdk/Embrace : io/embrace/android/em
public fun endSession (Z)V
public fun endView (Ljava/lang/String;)Z
public fun generateW3cTraceparent ()Ljava/lang/String;
public fun getConfigService ()Lio/embrace/android/embracesdk/config/ConfigService;
public fun getCurrentSessionId ()Ljava/lang/String;
public fun getDeviceId ()Ljava/lang/String;
public fun getFlutterInternalInterface ()Lio/embrace/android/embracesdk/FlutterInternalInterface;
Expand All @@ -53,8 +52,6 @@ public final class io/embrace/android/embracesdk/Embrace : io/embrace/android/em
public fun logException (Ljava/lang/Throwable;Lio/embrace/android/embracesdk/Severity;Ljava/util/Map;Ljava/lang/String;)V
public fun logHandledDartException (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
public fun logInfo (Ljava/lang/String;)V
public fun logInternalError (Ljava/lang/String;Ljava/lang/String;)V
public fun logInternalError (Ljava/lang/Throwable;)V
public fun logMessage (Ljava/lang/String;Lio/embrace/android/embracesdk/Severity;)V
public fun logMessage (Ljava/lang/String;Lio/embrace/android/embracesdk/Severity;Ljava/util/Map;)V
public fun logPushNotification (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Boolean;Ljava/lang/Boolean;)V
Expand All @@ -72,7 +69,6 @@ public final class io/embrace/android/embracesdk/Embrace : io/embrace/android/em
public fun recordSpan (Ljava/lang/String;Lio/embrace/android/embracesdk/spans/EmbraceSpan;Lkotlin/jvm/functions/Function0;)Ljava/lang/Object;
public fun recordSpan (Ljava/lang/String;Lkotlin/jvm/functions/Function0;)Ljava/lang/Object;
public fun removeSessionProperty (Ljava/lang/String;)Z
public fun sampleCurrentThreadDuringAnrs ()V
public fun setAppId (Ljava/lang/String;)Z
public fun setDartVersion (Ljava/lang/String;)V
public fun setEmbraceFlutterSdkVersion (Ljava/lang/String;)V
Expand Down Expand Up @@ -173,12 +169,16 @@ public abstract interface annotation class io/embrace/android/embracesdk/annotat

public abstract interface class io/embrace/android/embracesdk/internal/EmbraceInternalInterface {
public abstract fun getSdkCurrentTime ()J
public abstract fun isAnrCaptureEnabled ()Z
public abstract fun isInternalNetworkCaptureDisabled ()Z
public abstract fun isNdkEnabled ()Z
public abstract fun isNetworkSpanForwardingEnabled ()Z
public abstract fun logComposeTap (Landroid/util/Pair;Ljava/lang/String;)V
public abstract fun logError (Ljava/lang/String;Ljava/util/Map;Ljava/lang/String;Z)V
public abstract fun logHandledException (Ljava/lang/Throwable;Lio/embrace/android/embracesdk/LogType;Ljava/util/Map;[Ljava/lang/StackTraceElement;)V
public abstract fun logInfo (Ljava/lang/String;Ljava/util/Map;)V
public abstract fun logInternalError (Ljava/lang/String;Ljava/lang/String;)V
public abstract fun logInternalError (Ljava/lang/Throwable;)V
public abstract fun logWarning (Ljava/lang/String;Ljava/util/Map;Ljava/lang/String;)V
public abstract fun recordAndDeduplicateNetworkRequest (Ljava/lang/String;Lio/embrace/android/embracesdk/network/EmbraceNetworkRequest;)V
public abstract fun recordCompletedNetworkRequest (Ljava/lang/String;Ljava/lang/String;JJJJILjava/lang/String;Lio/embrace/android/embracesdk/internal/network/http/NetworkCaptureData;)V
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -577,33 +577,6 @@ public EmbraceInternalInterface getInternalInterface() {
return impl.getEmbraceInternalInterface();
}

/**
* Logs an internal error to the Embrace SDK - this is not intended for public use.
* @hide
*/
@InternalApi
public void logInternalError(@Nullable String message, @Nullable String details) {
impl.logInternalError(message, details);
}

/**
* Logs an internal error to the Embrace SDK - this is not intended for public use.
* @hide
*/
@InternalApi
public void logInternalError(@NonNull Throwable error) {
impl.logInternalError(error);
}

/**
* @hide
*/
@Nullable
@InternalApi
public ConfigService getConfigService() {
return impl.getConfigService();
}

/**
* Gets the {@link ReactNativeInternalInterface} that should be used as the sole source of
* communication with the Android SDK for React Native.
Expand Down Expand Up @@ -716,14 +689,6 @@ public void logUnhandledDartException(
impl.logDartException(stack, name, message, context, library, LogExceptionType.UNHANDLED);
}

/**
* @hide
*/
@InternalApi
public void sampleCurrentThreadDuringAnrs() {
impl.sampleCurrentThreadDuringAnrs();
}

private boolean verifyNonNullParameters(@NonNull String functionName, @NonNull Object... params) {
for (Object param : params) {
if (param == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1300,23 +1300,6 @@ boolean endView(@NonNull String name) {
return false;
}

void sampleCurrentThreadDuringAnrs() {
try {
AnrService service = anrService;
if (service != null && nativeThreadSamplerInstaller != null) {
nativeThreadSamplerInstaller.monitorCurrentThread(
nativeThreadSampler,
configService,
service
);
} else {
internalEmbraceLogger.logWarning("nativeThreadSamplerInstaller not started, cannot sample current thread");
}
} catch (Exception exc) {
internalEmbraceLogger.logError("Failed to sample current thread during ANRs", exc);
}
}

/**
* Logs the fact that a particular view was entered.
* <p>
Expand Down Expand Up @@ -1597,6 +1580,23 @@ private void onActivityReported() {
}
}

private void sampleCurrentThreadDuringAnrs() {
try {
AnrService service = anrService;

Check warning on line 1585 in embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/EmbraceImpl.java

View check run for this annotation

Codecov / codecov/patch

embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/EmbraceImpl.java#L1585

Added line #L1585 was not covered by tests
if (service != null && nativeThreadSamplerInstaller != null) {
nativeThreadSamplerInstaller.monitorCurrentThread(

Check warning on line 1587 in embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/EmbraceImpl.java

View check run for this annotation

Codecov / codecov/patch

embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/EmbraceImpl.java#L1587

Added line #L1587 was not covered by tests
nativeThreadSampler,
configService,
service
);
} else {
internalEmbraceLogger.logWarning("nativeThreadSamplerInstaller not started, cannot sample current thread");

Check warning on line 1593 in embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/EmbraceImpl.java

View check run for this annotation

Codecov / codecov/patch

embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/EmbraceImpl.java#L1593

Added line #L1593 was not covered by tests
}
} catch (Exception exc) {
internalEmbraceLogger.logError("Failed to sample current thread during ANRs", exc);
}

Check warning on line 1597 in embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/EmbraceImpl.java

View check run for this annotation

Codecov / codecov/patch

embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/EmbraceImpl.java#L1595-L1597

Added lines #L1595 - L1597 were not covered by tests
}

@Nullable
private Map<String, Object> normalizeProperties(@Nullable Map<String, Object> properties) {
Map<String, Object> normalizedProperties = new HashMap<>();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package io.embrace.android.embracesdk

import android.util.Pair
import io.embrace.android.embracesdk.config.ConfigService
import io.embrace.android.embracesdk.injection.InitModule
import io.embrace.android.embracesdk.internal.ApkToolsConfig
import io.embrace.android.embracesdk.internal.EmbraceInternalInterface
Expand All @@ -11,7 +12,8 @@ import io.embrace.android.embracesdk.payload.TapBreadcrumb

internal class EmbraceInternalInterfaceImpl(
private val embraceImpl: EmbraceImpl,
private val initModule: InitModule
private val initModule: InitModule,
private val configService: ConfigService
) : EmbraceInternalInterface {

override fun logInfo(message: String, properties: Map<String, Any>?) {
Expand Down Expand Up @@ -173,11 +175,21 @@ internal class EmbraceInternalInterfaceImpl(
embraceImpl.setProcessStartedByNotification()
}

override fun isNetworkSpanForwardingEnabled(): Boolean {
return embraceImpl.configService?.networkSpanForwardingBehavior?.isNetworkSpanForwardingEnabled() ?: false
}
override fun isNetworkSpanForwardingEnabled(): Boolean = configService.networkSpanForwardingBehavior.isNetworkSpanForwardingEnabled()

override fun getSdkCurrentTime(): Long = initModule.clock.now()

override fun isInternalNetworkCaptureDisabled(): Boolean = ApkToolsConfig.IS_NETWORK_CAPTURE_DISABLED

override fun isAnrCaptureEnabled(): Boolean = configService.anrBehavior.isAnrCaptureEnabled()

override fun isNdkEnabled(): Boolean = configService.autoDataCaptureBehavior.isNdkEnabled()

override fun logInternalError(message: String?, details: String?) {
embraceImpl.logInternalError(message, details)
}

override fun logInternalError(error: Throwable) {
embraceImpl.logInternalError(error)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ internal class InternalInterfaceModuleImpl(
) : InternalInterfaceModule {

override val embraceInternalInterface: EmbraceInternalInterface by singleton {
EmbraceInternalInterfaceImpl(embrace, initModule)
EmbraceInternalInterfaceImpl(embrace, initModule, essentialServiceModule.configService)
}

override val reactNativeInternalInterface: ReactNativeInternalInterface by singleton {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,22 +137,37 @@ public interface EmbraceInternalInterface {
* Whether network capture has been disabled through an internal, not-publicly supported means
*/
public fun isInternalNetworkCaptureDisabled(): Boolean

public fun isAnrCaptureEnabled(): Boolean

public fun isNdkEnabled(): Boolean

/**
* Logs an internal error to the Embrace SDK - this is not intended for public use.
*/
public fun logInternalError(message: String?, details: String?)

/**
* Logs an internal error to the Embrace SDK - this is not intended for public use.
*/
public fun logInternalError(error: Throwable)
}

internal val defaultImpl = object : EmbraceInternalInterface {

override fun logInfo(message: String, properties: Map<String, Any>?) { }
override fun logInfo(message: String, properties: Map<String, Any>?) {}

Check warning on line 158 in embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/internal/EmbraceInternalInterface.kt

View check run for this annotation

Codecov / codecov/patch

embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/internal/EmbraceInternalInterface.kt#L158

Added line #L158 was not covered by tests

override fun logWarning(message: String, properties: Map<String, Any>?, stacktrace: String?) { }
override fun logWarning(message: String, properties: Map<String, Any>?, stacktrace: String?) {}

Check warning on line 160 in embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/internal/EmbraceInternalInterface.kt

View check run for this annotation

Codecov / codecov/patch

embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/internal/EmbraceInternalInterface.kt#L160

Added line #L160 was not covered by tests

override fun logError(message: String, properties: Map<String, Any>?, stacktrace: String?, isException: Boolean) { }
override fun logError(message: String, properties: Map<String, Any>?, stacktrace: String?, isException: Boolean) {}

Check warning on line 162 in embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/internal/EmbraceInternalInterface.kt

View check run for this annotation

Codecov / codecov/patch

embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/internal/EmbraceInternalInterface.kt#L162

Added line #L162 was not covered by tests

override fun logHandledException(
throwable: Throwable,
type: LogType,
properties: Map<String, Any>?,
customStackTrace: Array<StackTraceElement>?
) { }
) {
}

Check warning on line 170 in embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/internal/EmbraceInternalInterface.kt

View check run for this annotation

Codecov / codecov/patch

embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/internal/EmbraceInternalInterface.kt#L170

Added line #L170 was not covered by tests

override fun recordCompletedNetworkRequest(
url: String,
Expand All @@ -164,7 +179,8 @@ internal val defaultImpl = object : EmbraceInternalInterface {
statusCode: Int,
traceId: String?,
networkCaptureData: NetworkCaptureData?
) { }
) {
}

Check warning on line 183 in embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/internal/EmbraceInternalInterface.kt

View check run for this annotation

Codecov / codecov/patch

embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/internal/EmbraceInternalInterface.kt#L183

Added line #L183 was not covered by tests

override fun recordIncompleteNetworkRequest(
url: String,
Expand All @@ -174,7 +190,8 @@ internal val defaultImpl = object : EmbraceInternalInterface {
error: Throwable?,
traceId: String?,
networkCaptureData: NetworkCaptureData?
) { }
) {
}

Check warning on line 194 in embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/internal/EmbraceInternalInterface.kt

View check run for this annotation

Codecov / codecov/patch

embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/internal/EmbraceInternalInterface.kt#L194

Added line #L194 was not covered by tests

override fun recordIncompleteNetworkRequest(
url: String,
Expand All @@ -185,19 +202,28 @@ internal val defaultImpl = object : EmbraceInternalInterface {
errorMessage: String?,
traceId: String?,
networkCaptureData: NetworkCaptureData?
) { }
) {
}

Check warning on line 206 in embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/internal/EmbraceInternalInterface.kt

View check run for this annotation

Codecov / codecov/patch

embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/internal/EmbraceInternalInterface.kt#L206

Added line #L206 was not covered by tests

override fun recordAndDeduplicateNetworkRequest(callId: String, embraceNetworkRequest: EmbraceNetworkRequest) { }
override fun recordAndDeduplicateNetworkRequest(callId: String, embraceNetworkRequest: EmbraceNetworkRequest) {}

Check warning on line 208 in embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/internal/EmbraceInternalInterface.kt

View check run for this annotation

Codecov / codecov/patch

embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/internal/EmbraceInternalInterface.kt#L208

Added line #L208 was not covered by tests

override fun logComposeTap(point: Pair<Float, Float>, elementName: String) { }
override fun logComposeTap(point: Pair<Float, Float>, elementName: String) {}

Check warning on line 210 in embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/internal/EmbraceInternalInterface.kt

View check run for this annotation

Codecov / codecov/patch

embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/internal/EmbraceInternalInterface.kt#L210

Added line #L210 was not covered by tests

override fun shouldCaptureNetworkBody(url: String, method: String): Boolean = false

override fun setProcessStartedByNotification() { }
override fun setProcessStartedByNotification() {}

override fun isNetworkSpanForwardingEnabled(): Boolean = false

override fun getSdkCurrentTime(): Long = System.currentTimeMillis()

override fun isInternalNetworkCaptureDisabled(): Boolean = false

override fun isAnrCaptureEnabled(): Boolean = false

override fun isNdkEnabled(): Boolean = false

override fun logInternalError(message: String?, details: String?) {}

override fun logInternalError(error: Throwable) {}

Check warning on line 228 in embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/internal/EmbraceInternalInterface.kt

View check run for this annotation

Codecov / codecov/patch

embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/internal/EmbraceInternalInterface.kt#L228

Added line #L228 was not covered by tests
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ internal object EmbraceCrashSamples {

private val logger = InternalEmbraceLogger()

val ndkCrashSamplesNdkDelegate = EmbraceCrashSamplesNdkDelegateImpl()
private val ndkCrashSamplesNdkDelegate = EmbraceCrashSamplesNdkDelegateImpl()

/**
* Verifies if Embrace is initialized
Expand All @@ -35,7 +35,7 @@ internal object EmbraceCrashSamples {
*/

fun checkAnrDetectionEnabled() {
if (Embrace.getInstance().configService?.anrBehavior?.isAnrCaptureEnabled() == false) {
if (!Embrace.getInstance().internalInterface.isAnrCaptureEnabled()) {
val e = EmbraceSampleCodeException(
"ANR capture disabled - you need to enable it to test Embrace's ANR functionality:\n" +
" - add [\"anr\":{\"pct_enabled\": 100 }]" +
Expand Down Expand Up @@ -91,7 +91,7 @@ internal object EmbraceCrashSamples {
// First verifies is Embrace SDK is initialized
isSdkStarted()

if (Embrace.getInstance().configService?.autoDataCaptureBehavior?.isNdkEnabled() != true) {
if (!Embrace.getInstance().internalInterface.isNdkEnabled()) {
val e = EmbraceSampleCodeException(
"NDK crash capture is disabled - you need to enable it to test Embrace's NDK functionality" +
" - To enable it, add [\"ndk_enabled\": true] inside the configuration file"
Expand Down
Loading

0 comments on commit cdcfe7a

Please sign in to comment.