Skip to content

Commit

Permalink
Convert EmbraceInternalInterface to Kotlin, move to internal package,…
Browse files Browse the repository at this point in the history
… and make the getter non-null
  • Loading branch information
bidetofevil committed Oct 21, 2023
1 parent 12e634f commit d7da4f2
Show file tree
Hide file tree
Showing 18 changed files with 226 additions and 134 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ internal class EmbraceNodeIterator {
backgroundWorker.submit {
findClickedElement(semanticsNodes, x, y)?.let {
val clickedView = ClickedView(it, x, y)
Embrace.getInstance().internalInterface?.logComposeTap(Pair(clickedView.x, clickedView.y), clickedView.tag)
Embrace.getInstance().internalInterface.logComposeTap(Pair(clickedView.x, clickedView.y), clickedView.tag)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,8 @@ public Response intercept(Chain chain) throws IOException {
contentLength = 0L;
}

boolean shouldCaptureNetworkData = embrace.getInternalInterface().shouldCaptureNetworkBody(request.url().toString(), request.method());
boolean shouldCaptureNetworkData =
embrace.getInternalInterface().shouldCaptureNetworkBody(request.url().toString(), request.method());

if (shouldCaptureNetworkData &&
ENCODING_GZIP.equalsIgnoreCase(networkResponse.header(CONTENT_ENCODING_HEADER_NAME)) &&
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,8 @@ internal class EmbraceOkHttp3InterceptorsTest {
.header(requestHeaderName, requestHeaderValue)
capturedEmbraceNetworkRequest = slot()
every { mockEmbrace.isStarted } answers { isSDKStarted }
every { mockEmbrace.internalInterface?.shouldCaptureNetworkBody(any(), "POST") } answers { true }
every { mockEmbrace.internalInterface?.shouldCaptureNetworkBody(any(), "GET") } answers { false }
every { mockEmbrace.internalInterface.shouldCaptureNetworkBody(any(), "POST") } answers { true }
every { mockEmbrace.internalInterface.shouldCaptureNetworkBody(any(), "GET") } answers { false }
every { mockEmbrace.recordNetworkRequest(capture(capturedEmbraceNetworkRequest)) } answers { }
every { mockEmbrace.generateW3cTraceparent() } answers { GENERATED_TRACEPARENT }
every { mockSdkFacade.isNetworkSpanForwardingEnabled } answers { isNetworkSpanForwardingEnabled }
Expand Down Expand Up @@ -185,7 +185,7 @@ internal class EmbraceOkHttp3InterceptorsTest {
server.enqueue(createBaseMockResponse())
runGetRequest()
verify(exactly = 0) { mockSdkFacade.isNetworkSpanForwardingEnabled }
verify(exactly = 0) { mockEmbrace.internalInterface?.shouldCaptureNetworkBody(any(), any()) }
verify(exactly = 0) { mockEmbrace.internalInterface.shouldCaptureNetworkBody(any(), any()) }
}

@Test
Expand Down
30 changes: 15 additions & 15 deletions embrace-android-sdk/api/embrace-android-sdk.api
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public final class io/embrace/android/embracesdk/Embrace : io/embrace/android/em
public fun getDeviceId ()Ljava/lang/String;
public fun getFlutterInternalInterface ()Lio/embrace/android/embracesdk/FlutterInternalInterface;
public static fun getInstance ()Lio/embrace/android/embracesdk/Embrace;
public fun getInternalInterface ()Lio/embrace/android/embracesdk/EmbraceInternalInterface;
public fun getInternalInterface ()Lio/embrace/android/embracesdk/internal/EmbraceInternalInterface;
public fun getLastRunEndState ()Lio/embrace/android/embracesdk/Embrace$LastRunEndState;
public fun getReactNativeInternalInterface ()Lio/embrace/android/embracesdk/ReactNativeInternalInterface;
public fun getSessionProperties ()Ljava/util/Map;
Expand Down Expand Up @@ -113,20 +113,6 @@ public final class io/embrace/android/embracesdk/Embrace$LastRunEndState : java/
public static fun values ()[Lio/embrace/android/embracesdk/Embrace$LastRunEndState;
}

public abstract interface class io/embrace/android/embracesdk/EmbraceInternalInterface {
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 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/network/http/NetworkCaptureData;)V
public abstract fun recordIncompleteNetworkRequest (Ljava/lang/String;Ljava/lang/String;JJLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/embrace/android/embracesdk/network/http/NetworkCaptureData;)V
public abstract fun recordIncompleteNetworkRequest (Ljava/lang/String;Ljava/lang/String;JJLjava/lang/Throwable;Ljava/lang/String;Lio/embrace/android/embracesdk/network/http/NetworkCaptureData;)V
public abstract fun setProcessStartedByNotification ()V
public abstract fun shouldCaptureNetworkBody (Ljava/lang/String;Ljava/lang/String;)Z
}

public final class io/embrace/android/embracesdk/EmbraceSamples {
public static final field INSTANCE Lio/embrace/android/embracesdk/EmbraceSamples;
public static final fun causeNdkIllegalInstruction ()V
Expand Down Expand Up @@ -191,6 +177,20 @@ public final class io/embrace/android/embracesdk/WebViewClientSwazzledHooks {
public abstract interface annotation class io/embrace/android/embracesdk/annotation/StartupActivity : java/lang/annotation/Annotation {
}

public abstract interface class io/embrace/android/embracesdk/internal/EmbraceInternalInterface {
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 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/network/http/NetworkCaptureData;)V
public abstract fun recordIncompleteNetworkRequest (Ljava/lang/String;Ljava/lang/String;JJLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/embrace/android/embracesdk/network/http/NetworkCaptureData;)V
public abstract fun recordIncompleteNetworkRequest (Ljava/lang/String;Ljava/lang/String;JJLjava/lang/Throwable;Ljava/lang/String;Lio/embrace/android/embracesdk/network/http/NetworkCaptureData;)V
public abstract fun setProcessStartedByNotification ()V
public abstract fun shouldCaptureNetworkBody (Ljava/lang/String;Ljava/lang/String;)Z
}

public final class io/embrace/android/embracesdk/network/EmbraceNetworkRequest {
public static fun fromCompletedRequest (Ljava/lang/String;Lio/embrace/android/embracesdk/network/http/HttpMethod;JJJJI)Lio/embrace/android/embracesdk/network/EmbraceNetworkRequest;
public static fun fromCompletedRequest (Ljava/lang/String;Lio/embrace/android/embracesdk/network/http/HttpMethod;JJJJILjava/lang/String;)Lio/embrace/android/embracesdk/network/EmbraceNetworkRequest;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ internal class NetworkRequestApiTest {
harness.fakeClock.tick(5)

val callId = UUID.randomUUID().toString()
embrace.internalInterface?.recordAndDeduplicateNetworkRequest(
embrace.internalInterface.recordAndDeduplicateNetworkRequest(
callId,
EmbraceNetworkRequest.fromCompletedRequest(
"$URL/bad",
Expand All @@ -224,7 +224,7 @@ internal class NetworkRequestApiTest {
200
)
)
embrace.internalInterface?.recordAndDeduplicateNetworkRequest(
embrace.internalInterface.recordAndDeduplicateNetworkRequest(
callId,
EmbraceNetworkRequest.fromCompletedRequest(
URL,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

import android.annotation.SuppressLint;
import android.content.Context;
import android.util.Pair;
import android.webkit.ConsoleMessage;

import androidx.annotation.NonNull;
Expand All @@ -14,6 +13,7 @@
import java.util.Map;

import io.embrace.android.embracesdk.config.ConfigService;
import io.embrace.android.embracesdk.internal.EmbraceInternalInterface;
import io.embrace.android.embracesdk.logging.InternalEmbraceLogger;
import io.embrace.android.embracesdk.logging.InternalStaticEmbraceLogger;
import io.embrace.android.embracesdk.network.EmbraceNetworkRequest;
Expand Down Expand Up @@ -566,7 +566,7 @@ public LastRunEndState getLastRunEndState() {
return impl.getLastRunEndState();
}

@Nullable
@NonNull
@InternalApi
public EmbraceInternalInterface getInternalInterface() {
return impl.getEmbraceInternalInterface();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@
import io.embrace.android.embracesdk.internal.BuildInfo;
import io.embrace.android.embracesdk.internal.DeviceArchitecture;
import io.embrace.android.embracesdk.internal.DeviceArchitectureImpl;
import io.embrace.android.embracesdk.internal.EmbraceInternalInterface;
import io.embrace.android.embracesdk.internal.EmbraceInternalInterfaceKt;
import io.embrace.android.embracesdk.internal.MessageType;
import io.embrace.android.embracesdk.internal.TraceparentGenerator;
import io.embrace.android.embracesdk.internal.crash.LastRunCrashVerifier;
Expand Down Expand Up @@ -1565,9 +1567,14 @@ private Map<String, Object> normalizeProperties(@Nullable Map<String, Object> pr
* Gets the {@link EmbraceInternalInterface} that should be used as the sole source of
* communication with other Android SDK modules.
*/
@Nullable
@NonNull
EmbraceInternalInterface getEmbraceInternalInterface() {
return embraceInternalInterface;
if (isStarted() && embraceInternalInterface != null) {
return embraceInternalInterface;
} else {
return EmbraceInternalInterfaceKt.getDefault();
}

}

/**
Expand Down

This file was deleted.

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.internal.EmbraceInternalInterface
import io.embrace.android.embracesdk.network.EmbraceNetworkRequest
import io.embrace.android.embracesdk.network.http.HttpMethod
import io.embrace.android.embracesdk.network.http.NetworkCaptureData
Expand Down Expand Up @@ -62,7 +63,7 @@ internal class EmbraceInternalInterfaceImpl(
throwable: Throwable,
type: LogType,
properties: Map<String, Any>?,
customStackTrace: Array<out StackTraceElement>?
customStackTrace: Array<StackTraceElement>?
) {
embraceImpl.logMessage(
type.toEventType(),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package io.embrace.android.embracesdk

import io.embrace.android.embracesdk.internal.EmbraceInternalInterface

/**
* Provides an internal interface to Embrace that is intended for use by Flutter as its
* sole source of communication with the Android SDK.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package io.embrace.android.embracesdk

import io.embrace.android.embracesdk.capture.metadata.MetadataService
import io.embrace.android.embracesdk.internal.EmbraceInternalInterface
import io.embrace.android.embracesdk.logging.InternalEmbraceLogger

internal class FlutterInternalInterfaceImpl(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import io.embrace.android.embracesdk.injection.CoreModule
import io.embrace.android.embracesdk.injection.CrashModule
import io.embrace.android.embracesdk.injection.EssentialServiceModule
import io.embrace.android.embracesdk.injection.singleton
import io.embrace.android.embracesdk.internal.EmbraceInternalInterface

internal interface InternalInterfaceModule {
val embraceInternalInterface: EmbraceInternalInterface
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package io.embrace.android.embracesdk

import android.content.Context
import io.embrace.android.embracesdk.internal.EmbraceInternalInterface

/**
* Provides an internal interface to Embrace that is intended for use by React Native as its
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import android.content.Context
import io.embrace.android.embracesdk.Embrace.AppFramework
import io.embrace.android.embracesdk.capture.crash.CrashService
import io.embrace.android.embracesdk.capture.metadata.MetadataService
import io.embrace.android.embracesdk.internal.EmbraceInternalInterface
import io.embrace.android.embracesdk.logging.InternalEmbraceLogger
import io.embrace.android.embracesdk.payload.JsException
import io.embrace.android.embracesdk.prefs.PreferencesService
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package io.embrace.android.embracesdk

import io.embrace.android.embracesdk.internal.EmbraceInternalInterface

/**
* Provides an internal interface to Embrace that is intended for use by Unity as its
* sole source of communication with the Android SDK.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.embrace.android.embracesdk

import io.embrace.android.embracesdk.internal.EmbraceInternalInterface
import io.embrace.android.embracesdk.logging.InternalEmbraceLogger
import io.embrace.android.embracesdk.prefs.PreferencesService

Expand Down
Loading

0 comments on commit d7da4f2

Please sign in to comment.