diff --git a/play-services-api/src/main/java/com/google/android/gms/measurement/internal/AppMetadata.java b/play-services-api/src/main/java/com/google/android/gms/measurement/internal/AppMetadata.java index d372624959..ad2c505f31 100644 --- a/play-services-api/src/main/java/com/google/android/gms/measurement/internal/AppMetadata.java +++ b/play-services-api/src/main/java/com/google/android/gms/measurement/internal/AppMetadata.java @@ -39,7 +39,7 @@ public class AppMetadata extends AutoSafeParcelable { @Field(15) public int appType; @Field(16) - private boolean adIdReportingEnabled; + private boolean adIdReportingEnabled = true; @Field(17) public boolean ssaidCollectionEnabled = true; @Field(18) @@ -55,19 +55,19 @@ public class AppMetadata extends AutoSafeParcelable { @Field(24) public String gaAppId; @Field(25) - private String consentSettings; + private String consentSettings = ""; @Field(26) - public String ephemeralAppInstanceId; + public String ephemeralAppInstanceId = ""; @Field(27) private String sessionStitchingToken; @Field(28) - private boolean sgtmUploadEnabled; + private boolean sgtmUploadEnabled = false; @Field(29) private long targetOsVersion; @Field(30) - private int consentSource; + private int consentSource = 100; @Field(31) - private String dmaConsent; + private String dmaConsent = ""; @Field(32) private int adServicesVersion; diff --git a/play-services-api/src/main/java/com/google/android/gms/measurement/internal/UserAttributeParcel.java b/play-services-api/src/main/java/com/google/android/gms/measurement/internal/UserAttributeParcel.java index d9c746637b..a2c03ed3ca 100644 --- a/play-services-api/src/main/java/com/google/android/gms/measurement/internal/UserAttributeParcel.java +++ b/play-services-api/src/main/java/com/google/android/gms/measurement/internal/UserAttributeParcel.java @@ -5,23 +5,31 @@ package com.google.android.gms.measurement.internal; +import androidx.annotation.Nullable; import org.microg.safeparcel.AutoSafeParcelable; public class UserAttributeParcel extends AutoSafeParcelable { @Field(1) - public int field1; + public int versionCode = 2; @Field(2) public String name; @Field(3) public long timestamp; @Field(4) - public Long field4; + @Nullable + public Long longValue; + @Deprecated + @Field(5) + @Nullable + public Float floatValue; @Field(6) - public String field6; + @Nullable + public String stringValue; @Field(7) public String field7; @Field(8) - public Double field8; + @Nullable + public Double doubleValue; public static final Creator CREATOR = new AutoCreator<>(UserAttributeParcel.class); } diff --git a/play-services-core/src/main/java/com/google/android/gms/dynamite/descriptors/com/google/android/gms/measurement/dynamite/ModuleDescriptor.java b/play-services-core/src/main/java/com/google/android/gms/dynamite/descriptors/com/google/android/gms/measurement/dynamite/ModuleDescriptor.java index f958d8da2c..331b6ec784 100644 --- a/play-services-core/src/main/java/com/google/android/gms/dynamite/descriptors/com/google/android/gms/measurement/dynamite/ModuleDescriptor.java +++ b/play-services-core/src/main/java/com/google/android/gms/dynamite/descriptors/com/google/android/gms/measurement/dynamite/ModuleDescriptor.java @@ -18,5 +18,5 @@ public class ModuleDescriptor { public static final String MODULE_ID = "com.google.android.gms.measurement.dynamite"; - public static final int MODULE_VERSION = 98; + public static final int MODULE_VERSION = 112; } diff --git a/play-services-core/src/main/kotlin/com/google/android/gms/measurement/internal/AppMeasurementDynamiteService.kt b/play-services-core/src/main/kotlin/com/google/android/gms/measurement/internal/AppMeasurementDynamiteService.kt index 3d649ffa23..46f5578426 100644 --- a/play-services-core/src/main/kotlin/com/google/android/gms/measurement/internal/AppMeasurementDynamiteService.kt +++ b/play-services-core/src/main/kotlin/com/google/android/gms/measurement/internal/AppMeasurementDynamiteService.kt @@ -4,91 +4,119 @@ */ package com.google.android.gms.measurement.internal +import android.content.Intent import android.os.Bundle import android.os.Parcel import android.os.Parcelable import android.util.Log import androidx.annotation.Keep +import androidx.core.os.bundleOf import com.google.android.gms.dynamic.IObjectWrapper +import com.google.android.gms.dynamic.ObjectWrapper import com.google.android.gms.measurement.api.internal.* +import org.microg.gms.utils.toHexString import org.microg.gms.utils.warnOnTransactionIssues +import kotlin.random.Random private const val TAG = "AppMeasurementService" @Keep class AppMeasurementDynamiteService : IAppMeasurementDynamiteService.Stub() { - override fun initialize(context: IObjectWrapper?, params: InitializationParams?, timestamp: Long) { + private var initialized: Boolean = false + + private fun returnBundle(receiver: IBundleReceiver?, bundle: Bundle?) = runCatching { receiver?.onBundle(bundle) } + private fun returnResult(receiver: IBundleReceiver?, value: Any?) = returnBundle(receiver, bundleOf("r" to value)) + + private fun requireInitialized() { + require(initialized) { "Attempting to perform action before initialize." } + } + + override fun initialize(context: IObjectWrapper?, params: InitializationParams?, eventTimeMillis: Long) { Log.d(TAG, "Not yet implemented: initialize") + initialized = true } - override fun logEvent(str: String?, str2: String?, bundle: Bundle?, z: Boolean, z2: Boolean, timestamp: Long) { + override fun logEvent(origin: String?, name: String?, params: Bundle?, z: Boolean, z2: Boolean, eventTimeMillis: Long) { + requireInitialized() Log.d(TAG, "Not yet implemented: logEvent") } - override fun logEventAndBundle(str: String?, str2: String?, bundle: Bundle?, receiver: IBundleReceiver?, j: Long) { + override fun logEventAndBundle(origin: String?, name: String?, params: Bundle?, receiver: IBundleReceiver?, eventTimeMillis: Long) { + requireInitialized() Log.d(TAG, "Not yet implemented: logEventAndBundle") - receiver?.onBundle(Bundle().apply { putByteArray("r", ByteArray(0)) }) + returnResult(receiver, ByteArray(0)) } - override fun setUserProperty(str: String?, str2: String?, obj: IObjectWrapper?, z: Boolean, j: Long) { - Log.d(TAG, "Not yet implemented: setUserProperty") + override fun setUserProperty(origin: String?, name: String?, value: IObjectWrapper?, z: Boolean, eventTimeMillis: Long) { + requireInitialized() + setUserProperty(origin, name, ObjectWrapper.unwrap(value), z, eventTimeMillis) } - override fun getUserProperties(str: String?, str2: String?, z: Boolean, receiver: IBundleReceiver?) { - Log.d(TAG, "Not yet implemented: getUserProperties") - receiver?.onBundle(Bundle()) + private fun setUserProperty(origin: String?, name: String?, value: Any?, z: Boolean, eventTimeMillis: Long) { + Log.d(TAG, "Not yet implemented: setUserProperty($origin, $name, $value, $z)") } - override fun getMaxUserProperties(str: String?, receiver: IBundleReceiver?) { - Log.d(TAG, "Not yet implemented: getMaxUserProperties") - receiver?.onBundle(Bundle().apply { putInt("r", 25) }) + override fun getUserProperties(origin: String?, prefix: String?, includeInternal: Boolean, receiver: IBundleReceiver?) { + requireInitialized() + Log.d(TAG, "Not yet implemented: getUserProperties($origin, $prefix, $includeInternal)") + returnBundle(receiver, Bundle()) } - override fun setUserId(str: String?, j: Long) { - Log.d(TAG, "Not yet implemented: setUserId") + override fun getMaxUserProperties(origin: String?, receiver: IBundleReceiver?) { + requireInitialized() + returnResult(receiver, 25) + } + + override fun setUserId(userId: String?, eventTimeMillis: Long) { + if (userId != null && userId.isEmpty()) { + Log.w(TAG, "User ID must be non-empty or null") + } else { + Log.d(TAG, "Not yet implemented: setUserId($userId)") + setUserProperty(null, "_id", userId, true, eventTimeMillis) + } } - override fun setConditionalUserProperty(bundle: Bundle?, j: Long) { + override fun setConditionalUserProperty(bundle: Bundle?, eventTimeMillis: Long) { Log.d(TAG, "Not yet implemented: setConditionalUserProperty") } - override fun clearConditionalUserProperty(str: String?, str2: String?, bundle: Bundle?) { - Log.d(TAG, "Not yet implemented: clearConditionalUserProperty") + override fun clearConditionalUserProperty(name: String?, eventName: String?, bundle: Bundle?) { + Log.d(TAG, "Not yet implemented: clearConditionalUserProperty($name, $eventName)") } - override fun getConditionalUserProperties(str: String?, str2: String?, receiver: IBundleReceiver?) { - Log.d(TAG, "Not yet implemented: getConditionalUserProperties") - receiver?.onBundle(Bundle().apply { putParcelableArrayList("r", arrayListOf()) }) + override fun getConditionalUserProperties(origin: String?, prefix: String?, receiver: IBundleReceiver?) { + Log.d(TAG, "Not yet implemented: getConditionalUserProperties($origin, $prefix)") + returnResult(receiver, arrayListOf()) } - override fun setMeasurementEnabled(z: Boolean, j: Long) { - Log.d(TAG, "Not yet implemented: setMeasurementEnabled") + override fun setMeasurementEnabled(measurementEnabled: Boolean, eventTimeMillis: Long) { + Log.d(TAG, "Not yet implemented: setMeasurementEnabled($measurementEnabled)") } - override fun resetAnalyticsData(j: Long) { + override fun resetAnalyticsData(eventTimeMillis: Long) { Log.d(TAG, "Not yet implemented: resetAnalyticsData") } - override fun setMinimumSessionDuration(j: Long) { - Log.d(TAG, "Not yet implemented: setMinimumSessionDuration") + override fun setMinimumSessionDuration(minimumSessionDuration: Long) { + Log.d(TAG, "Not yet implemented: setMinimumSessionDuration($minimumSessionDuration)") } - override fun setSessionTimeoutDuration(j: Long) { - Log.d(TAG, "Not yet implemented: setSessionTimeoutDuration") + override fun setSessionTimeoutDuration(sessionTimeoutDuration: Long) { + Log.d(TAG, "Not yet implemented: setSessionTimeoutDuration($sessionTimeoutDuration)") } - override fun setCurrentScreen(obj: IObjectWrapper?, str: String?, str2: String?, j: Long) { - Log.d(TAG, "Not yet implemented: setCurrentScreen") + override fun setCurrentScreen(obj: IObjectWrapper?, screenName: String?, className: String?, eventTimeMillis: Long) { + Log.d(TAG, "Not yet implemented: setCurrentScreen($screenName, $className)") } override fun getCurrentScreenName(receiver: IBundleReceiver?) { Log.d(TAG, "Not yet implemented: getCurrentScreenName") - receiver?.onBundle(Bundle().apply { putString("r", null) }) + returnResult(receiver, null) } override fun getCurrentScreenClass(receiver: IBundleReceiver?) { Log.d(TAG, "Not yet implemented: getCurrentScreenClass") - receiver?.onBundle(Bundle().apply { putString("r", null) }) + returnResult(receiver, null) } override fun setInstanceIdProvider(provider: IStringProvider?) { @@ -97,64 +125,67 @@ class AppMeasurementDynamiteService : IAppMeasurementDynamiteService.Stub() { override fun getCachedAppInstanceId(receiver: IBundleReceiver?) { Log.d(TAG, "Not yet implemented: getCachedAppInstanceId") - receiver?.onBundle(Bundle().apply { putString("r", null) }) + returnResult(receiver, null) } override fun getAppInstanceId(receiver: IBundleReceiver?) { Log.d(TAG, "Not yet implemented: getAppInstanceId") - receiver?.onBundle(Bundle().apply { putString("r", null) }) + // Generate a random ID -> equivalent to ephemeral app instance id + // Correct behavior would be to generate appropriate AppMetadata and call IMeasurementService.getAppInstanceId + val ephemeralAppInstanceId = Random.nextBytes(32).toHexString("") + returnResult(receiver, ephemeralAppInstanceId) } override fun getGmpAppId(receiver: IBundleReceiver?) { Log.d(TAG, "Not yet implemented: getGmpAppId") - receiver?.onBundle(Bundle().apply { putString("r", null) }) + returnResult(receiver, null) } override fun generateEventId(receiver: IBundleReceiver?) { Log.d(TAG, "Not yet implemented: generateEventId") - receiver?.onBundle(Bundle().apply { putLong("r", 1L) }) + returnResult(receiver, 1L) } - override fun beginAdUnitExposure(str: String?, j: Long) { + override fun beginAdUnitExposure(adUnitId: String?, eventElapsedRealtime: Long) { Log.d(TAG, "Not yet implemented: beginAdUnitExposure") } - override fun endAdUnitExposure(str: String?, j: Long) { + override fun endAdUnitExposure(adUnitId: String?, eventElapsedRealtime: Long) { Log.d(TAG, "Not yet implemented: endAdUnitExposure") } - override fun onActivityStarted(activity: IObjectWrapper?, j: Long) { + override fun onActivityStarted(activity: IObjectWrapper?, eventElapsedRealtime: Long) { Log.d(TAG, "Not yet implemented: onActivityStarted") } - override fun onActivityStopped(activity: IObjectWrapper?, j: Long) { + override fun onActivityStopped(activity: IObjectWrapper?, eventElapsedRealtime: Long) { Log.d(TAG, "Not yet implemented: onActivityStopped") } - override fun onActivityCreated(activity: IObjectWrapper?, bundle: Bundle?, j: Long) { + override fun onActivityCreated(activity: IObjectWrapper?, savedInstanceState: Bundle?, eventElapsedRealtime: Long) { Log.d(TAG, "Not yet implemented: onActivityCreated") } - override fun onActivityDestroyed(activity: IObjectWrapper?, j: Long) { + override fun onActivityDestroyed(activity: IObjectWrapper?, eventElapsedRealtime: Long) { Log.d(TAG, "Not yet implemented: onActivityDestroyed") } - override fun onActivityPaused(activity: IObjectWrapper?, j: Long) { + override fun onActivityPaused(activity: IObjectWrapper?, eventElapsedRealtime: Long) { Log.d(TAG, "Not yet implemented: onActivityPaused") } - override fun onActivityResumed(activity: IObjectWrapper?, j: Long) { + override fun onActivityResumed(activity: IObjectWrapper?, eventElapsedRealtime: Long) { Log.d(TAG, "Not yet implemented: onActivityResumed") } - override fun onActivitySaveInstanceState(activity: IObjectWrapper?, receiver: IBundleReceiver?, j: Long) { + override fun onActivitySaveInstanceState(activity: IObjectWrapper?, receiver: IBundleReceiver?, eventElapsedRealtime: Long) { Log.d(TAG, "Not yet implemented: onActivitySaveInstanceState") - receiver?.onBundle(Bundle()) + returnBundle(receiver, Bundle()) } - override fun performAction(bundle: Bundle?, receiver: IBundleReceiver?, j: Long) { - Log.d(TAG, "Not yet implemented: performAction") - receiver?.onBundle(null) + override fun performAction(bundle: Bundle?, receiver: IBundleReceiver?, eventTimeMillis: Long) { + requireInitialized() + returnBundle(receiver, null) } override fun logHealthData(i: Int, str: String?, obj: IObjectWrapper?, obj2: IObjectWrapper?, obj3: IObjectWrapper?) { @@ -180,37 +211,46 @@ class AppMeasurementDynamiteService : IAppMeasurementDynamiteService.Stub() { override fun getTestFlag(receiver: IBundleReceiver?, i: Int) { Log.d(TAG, "Not yet implemented: getTestFlag") when(i) { - 0 -> receiver?.onBundle(Bundle().apply { putString("r", "---") }) - 1 -> receiver?.onBundle(Bundle().apply { putLong("r", -1L) }) - 2 -> receiver?.onBundle(Bundle().apply { putDouble("r", -3.0) }) - 3 -> receiver?.onBundle(Bundle().apply { putInt("r", -2) }) - 4 -> receiver?.onBundle(Bundle().apply { putBoolean("r", false) }) + 0 -> returnResult(receiver, "---") + 1 -> returnResult(receiver, -1L) + 2 -> returnResult(receiver, 3.0) + 3 -> returnResult(receiver, -2) + 4 -> returnResult(receiver, false) } } - override fun setDataCollectionEnabled(z: Boolean) { + override fun setDataCollectionEnabled(dataCollectionEnabled: Boolean) { Log.d(TAG, "Not yet implemented: setDataCollectionEnabled") } override fun isDataCollectionEnabled(receiver: IBundleReceiver?) { Log.d(TAG, "Not yet implemented: isDataCollectionEnabled") - receiver?.onBundle(Bundle().apply { putBoolean("r", false) }) + returnResult(receiver, false) } override fun setDefaultEventParameters(bundle: Bundle?) { Log.d(TAG, "Not yet implemented: setDefaultEventParameters") } - override fun setConsent(bundle: Bundle?, j: Long) { + override fun clearMeasurementEnabled(eventTimeMillis: Long) { + Log.d(TAG, "Not yet implemented: clearMeasurementEnabled") + } + + override fun setConsent(bundle: Bundle?, eventTimeMillis: Long) { Log.d(TAG, "Not yet implemented: setConsent") } - override fun setConsentThirdParty(bundle: Bundle?, j: Long) { + override fun setConsentThirdParty(bundle: Bundle?, eventTimeMillis: Long) { Log.d(TAG, "Not yet implemented: setConsentThirdParty") } - override fun clearMeasurementEnabled(j: Long) { - Log.d(TAG, "Not yet implemented: clearMeasurementEnabled") + override fun getSessionId(receiver: IBundleReceiver?) { + Log.d(TAG, "Not yet implemented: getSessionId") + returnBundle(receiver, null) + } + + override fun setSgtmDebugInfo(intent: Intent?) { + Log.d(TAG, "Not yet implemented: setSgtmDebugInfo") } override fun onTransact(code: Int, data: Parcel, reply: Parcel?, flags: Int): Boolean = warnOnTransactionIssues(code, reply, flags, TAG) { super.onTransact(code, data, reply, flags) } diff --git a/play-services-measurement-base/src/main/aidl/com/google/android/gms/measurement/api/internal/IAppMeasurementDynamiteService.aidl b/play-services-measurement-base/src/main/aidl/com/google/android/gms/measurement/api/internal/IAppMeasurementDynamiteService.aidl index 5df0a37f04..ed9018c366 100644 --- a/play-services-measurement-base/src/main/aidl/com/google/android/gms/measurement/api/internal/IAppMeasurementDynamiteService.aidl +++ b/play-services-measurement-base/src/main/aidl/com/google/android/gms/measurement/api/internal/IAppMeasurementDynamiteService.aidl @@ -7,21 +7,21 @@ import com.google.android.gms.measurement.api.internal.IStringProvider; import com.google.android.gms.measurement.api.internal.InitializationParams; interface IAppMeasurementDynamiteService { - void initialize(in IObjectWrapper context, in InitializationParams params, long timestamp) = 0; - void logEvent(String str, String str2, in Bundle bundle, boolean z, boolean z2, long timestamp) = 1; - void logEventAndBundle(String str, String str2, in Bundle bundle, IBundleReceiver receiver, long j) = 2; - void setUserProperty(String str, String str2, in IObjectWrapper obj, boolean z, long j) = 3; - void getUserProperties(String str, String str2, boolean z, IBundleReceiver receiver) = 4; - void getMaxUserProperties(String str, IBundleReceiver receiver) = 5; - void setUserId(String str, long j) = 6; - void setConditionalUserProperty(in Bundle bundle, long j) = 7; - void clearConditionalUserProperty(String str, String str2, in Bundle bundle) = 8; - void getConditionalUserProperties(String str, String str2, IBundleReceiver receiver) = 9; - void setMeasurementEnabled(boolean z, long j) = 10; - void resetAnalyticsData(long j) = 11; - void setMinimumSessionDuration(long j) = 12; - void setSessionTimeoutDuration(long j) = 13; - void setCurrentScreen(in IObjectWrapper obj, String str, String str2, long j) = 14; + void initialize(in IObjectWrapper context, in InitializationParams params, long eventTimeMillis) = 0; + void logEvent(String origin, String name, in Bundle params, boolean z, boolean z2, long eventTimeMillis) = 1; + void logEventAndBundle(String origin, String name, in Bundle params, IBundleReceiver receiver, long eventTimeMillis) = 2; + void setUserProperty(String origin, String name, in IObjectWrapper value, boolean z, long eventTimeMillis) = 3; + void getUserProperties(String origin, String propertyNamePrefix, boolean includeInternal, IBundleReceiver receiver) = 4; + void getMaxUserProperties(String origin, IBundleReceiver receiver) = 5; + void setUserId(String userId, long eventTimeMillis) = 6; + void setConditionalUserProperty(in Bundle bundle, long eventTimeMillis) = 7; + void clearConditionalUserProperty(String name, String eventName, in Bundle bundle) = 8; + void getConditionalUserProperties(String origin, String propertyNamePrefix, IBundleReceiver receiver) = 9; + void setMeasurementEnabled(boolean measurementEnabled, long eventTimeMillis) = 10; + void resetAnalyticsData(long eventTimeMillis) = 11; + void setMinimumSessionDuration(long minimumSessionDuration) = 12; + void setSessionTimeoutDuration(long sessionTimeoutDuration) = 13; + void setCurrentScreen(in IObjectWrapper obj, String screenName, String className, long eventTimeMillis) = 14; void getCurrentScreenName(IBundleReceiver receiver) = 15; void getCurrentScreenClass(IBundleReceiver receiver) = 16; void setInstanceIdProvider(IStringProvider provider) = 17; @@ -29,27 +29,30 @@ interface IAppMeasurementDynamiteService { void getAppInstanceId(IBundleReceiver receiver) = 19; void getGmpAppId(IBundleReceiver receiver) = 20; void generateEventId(IBundleReceiver receiver) = 21; - void beginAdUnitExposure(String str, long j) = 22; - void endAdUnitExposure(String str, long j) = 23; - void onActivityStarted(in IObjectWrapper activity, long j) = 24; - void onActivityStopped(in IObjectWrapper activity, long j) = 25; - void onActivityCreated(in IObjectWrapper activity, in Bundle bundle, long j) = 26; - void onActivityDestroyed(in IObjectWrapper activity, long j) = 27; - void onActivityPaused(in IObjectWrapper activity, long j) = 28; - void onActivityResumed(in IObjectWrapper activity, long j) = 29; - void onActivitySaveInstanceState(in IObjectWrapper activity, IBundleReceiver receiver, long j) = 30; - void performAction(in Bundle bundle, IBundleReceiver receiver, long j) = 31; + void beginAdUnitExposure(String adUnitId, long eventElapsedRealtime) = 22; + void endAdUnitExposure(String adUnitId, long eventElapsedRealtime) = 23; + void onActivityStarted(in IObjectWrapper activity, long eventElapsedRealtime) = 24; + void onActivityStopped(in IObjectWrapper activity, long eventElapsedRealtime) = 25; + void onActivityCreated(in IObjectWrapper activity, in Bundle savedInstanceState, long eventElapsedRealtime) = 26; + void onActivityDestroyed(in IObjectWrapper activity, long eventElapsedRealtime) = 27; + void onActivityPaused(in IObjectWrapper activity, long eventElapsedRealtime) = 28; + void onActivityResumed(in IObjectWrapper activity, long eventElapsedRealtime) = 29; + void onActivitySaveInstanceState(in IObjectWrapper activity, IBundleReceiver receiver, long eventElapsedRealtime) = 30; + void performAction(in Bundle bundle, IBundleReceiver receiver, long eventTimeMillis) = 31; void logHealthData(int i, String str, in IObjectWrapper obj, in IObjectWrapper obj2, in IObjectWrapper obj3) = 32; - void setEventInterceptor(IEventHandlerProxy proxy) = 33; - void registerOnMeasurementEventListener(IEventHandlerProxy proxy) = 34; - void unregisterOnMeasurementEventListener(IEventHandlerProxy proxy) = 35; + void setEventInterceptor(IEventHandlerProxy eventHandler) = 33; + void registerOnMeasurementEventListener(IEventHandlerProxy eventHandler) = 34; + void unregisterOnMeasurementEventListener(IEventHandlerProxy eventHandler) = 35; void initForTests(in Map map) = 36; void getTestFlag(IBundleReceiver receiver, int i) = 37; - void setDataCollectionEnabled(boolean z) = 38; + void setDataCollectionEnabled(boolean dataCollectionEnabled) = 38; void isDataCollectionEnabled(IBundleReceiver receiver) = 39; void setDefaultEventParameters(in Bundle bundle) = 41; - void setConsent(in Bundle bundle, long j) = 43; - void setConsentThirdParty(in Bundle bundle, long j) = 44; - void clearMeasurementEnabled(long j) = 42; + void clearMeasurementEnabled(long eventTimeMillis) = 42; + void setConsent(in Bundle bundle, long eventTimeMillis) = 43; + void setConsentThirdParty(in Bundle bundle, long eventTimeMillis) = 44; + void getSessionId(IBundleReceiver receiver) = 45; + + void setSgtmDebugInfo(in Intent intent) = 47; }