- 28,932 files - Full Java source code - Smali files - Resources Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
373 lines
18 KiB
Java
373 lines
18 KiB
Java
package com.facebook.appevents.internal;
|
|
|
|
import android.app.Activity;
|
|
import android.app.Application;
|
|
import android.content.Context;
|
|
import android.os.Bundle;
|
|
import android.util.Log;
|
|
import androidx.annotation.RestrictTo;
|
|
import com.facebook.FacebookSdk;
|
|
import com.facebook.LoggingBehavior;
|
|
import com.facebook.appevents.AppEventsLogger;
|
|
import com.facebook.appevents.aam.MetadataIndexer;
|
|
import com.facebook.appevents.codeless.CodelessManager;
|
|
import com.facebook.appevents.iap.InAppPurchaseManager;
|
|
import com.facebook.appevents.suggestedevents.SuggestedEventsManager;
|
|
import com.facebook.internal.FeatureManager;
|
|
import com.facebook.internal.FetchedAppSettings;
|
|
import com.facebook.internal.FetchedAppSettingsManager;
|
|
import com.facebook.internal.Logger;
|
|
import com.facebook.internal.Utility;
|
|
import java.lang.ref.WeakReference;
|
|
import java.util.UUID;
|
|
import java.util.concurrent.Executors;
|
|
import java.util.concurrent.ScheduledExecutorService;
|
|
import java.util.concurrent.ScheduledFuture;
|
|
import java.util.concurrent.TimeUnit;
|
|
import java.util.concurrent.atomic.AtomicBoolean;
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
import kotlin.Unit;
|
|
import kotlin.jvm.internal.Intrinsics;
|
|
|
|
/* loaded from: classes2.dex */
|
|
public final class ActivityLifecycleTracker {
|
|
private static final String INCORRECT_IMPL_WARNING = "Unexpected activity pause without a matching activity resume. Logging data may be incorrect. Make sure you call activateApp from your Application's onCreate method";
|
|
public static final ActivityLifecycleTracker INSTANCE = new ActivityLifecycleTracker();
|
|
private static final long INTERRUPTION_THRESHOLD_MILLISECONDS = 1000;
|
|
private static final String TAG;
|
|
private static int activityReferences;
|
|
private static String appId;
|
|
private static WeakReference<Activity> currActivity;
|
|
private static long currentActivityAppearTime;
|
|
private static volatile ScheduledFuture<?> currentFuture;
|
|
private static final Object currentFutureLock;
|
|
private static volatile SessionInfo currentSession;
|
|
private static final AtomicInteger foregroundActivityCount;
|
|
private static final ScheduledExecutorService singleThreadExecutor;
|
|
private static final AtomicBoolean tracking;
|
|
|
|
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
|
|
public static final boolean isInBackground() {
|
|
return activityReferences == 0;
|
|
}
|
|
|
|
private ActivityLifecycleTracker() {
|
|
}
|
|
|
|
static {
|
|
String canonicalName = ActivityLifecycleTracker.class.getCanonicalName();
|
|
if (canonicalName == null) {
|
|
canonicalName = "com.facebook.appevents.internal.ActivityLifecycleTracker";
|
|
}
|
|
TAG = canonicalName;
|
|
singleThreadExecutor = Executors.newSingleThreadScheduledExecutor();
|
|
currentFutureLock = new Object();
|
|
foregroundActivityCount = new AtomicInteger(0);
|
|
tracking = new AtomicBoolean(false);
|
|
}
|
|
|
|
public static final void startTracking(Application application, String str) {
|
|
Intrinsics.checkNotNullParameter(application, "application");
|
|
if (tracking.compareAndSet(false, true)) {
|
|
FeatureManager featureManager = FeatureManager.INSTANCE;
|
|
FeatureManager.checkFeature(FeatureManager.Feature.CodelessEvents, new FeatureManager.Callback() { // from class: com.facebook.appevents.internal.ActivityLifecycleTracker$$ExternalSyntheticLambda3
|
|
@Override // com.facebook.internal.FeatureManager.Callback
|
|
public final void onCompleted(boolean z) {
|
|
ActivityLifecycleTracker.m511startTracking$lambda0(z);
|
|
}
|
|
});
|
|
appId = str;
|
|
application.registerActivityLifecycleCallbacks(new Application.ActivityLifecycleCallbacks() { // from class: com.facebook.appevents.internal.ActivityLifecycleTracker$startTracking$2
|
|
@Override // android.app.Application.ActivityLifecycleCallbacks
|
|
public void onActivityCreated(Activity activity, Bundle bundle) {
|
|
String str2;
|
|
Intrinsics.checkNotNullParameter(activity, "activity");
|
|
Logger.Companion companion = Logger.Companion;
|
|
LoggingBehavior loggingBehavior = LoggingBehavior.APP_EVENTS;
|
|
str2 = ActivityLifecycleTracker.TAG;
|
|
companion.log(loggingBehavior, str2, "onActivityCreated");
|
|
AppEventUtility.assertIsMainThread();
|
|
ActivityLifecycleTracker.onActivityCreated(activity);
|
|
}
|
|
|
|
@Override // android.app.Application.ActivityLifecycleCallbacks
|
|
public void onActivityStarted(Activity activity) {
|
|
int i;
|
|
String str2;
|
|
Intrinsics.checkNotNullParameter(activity, "activity");
|
|
i = ActivityLifecycleTracker.activityReferences;
|
|
ActivityLifecycleTracker.activityReferences = i + 1;
|
|
Logger.Companion companion = Logger.Companion;
|
|
LoggingBehavior loggingBehavior = LoggingBehavior.APP_EVENTS;
|
|
str2 = ActivityLifecycleTracker.TAG;
|
|
companion.log(loggingBehavior, str2, "onActivityStarted");
|
|
}
|
|
|
|
@Override // android.app.Application.ActivityLifecycleCallbacks
|
|
public void onActivityResumed(Activity activity) {
|
|
String str2;
|
|
Intrinsics.checkNotNullParameter(activity, "activity");
|
|
Logger.Companion companion = Logger.Companion;
|
|
LoggingBehavior loggingBehavior = LoggingBehavior.APP_EVENTS;
|
|
str2 = ActivityLifecycleTracker.TAG;
|
|
companion.log(loggingBehavior, str2, "onActivityResumed");
|
|
AppEventUtility.assertIsMainThread();
|
|
ActivityLifecycleTracker.onActivityResumed(activity);
|
|
}
|
|
|
|
@Override // android.app.Application.ActivityLifecycleCallbacks
|
|
public void onActivityPaused(Activity activity) {
|
|
String str2;
|
|
Intrinsics.checkNotNullParameter(activity, "activity");
|
|
Logger.Companion companion = Logger.Companion;
|
|
LoggingBehavior loggingBehavior = LoggingBehavior.APP_EVENTS;
|
|
str2 = ActivityLifecycleTracker.TAG;
|
|
companion.log(loggingBehavior, str2, "onActivityPaused");
|
|
AppEventUtility.assertIsMainThread();
|
|
ActivityLifecycleTracker.INSTANCE.onActivityPaused(activity);
|
|
}
|
|
|
|
@Override // android.app.Application.ActivityLifecycleCallbacks
|
|
public void onActivityStopped(Activity activity) {
|
|
String str2;
|
|
int i;
|
|
Intrinsics.checkNotNullParameter(activity, "activity");
|
|
Logger.Companion companion = Logger.Companion;
|
|
LoggingBehavior loggingBehavior = LoggingBehavior.APP_EVENTS;
|
|
str2 = ActivityLifecycleTracker.TAG;
|
|
companion.log(loggingBehavior, str2, "onActivityStopped");
|
|
AppEventsLogger.Companion.onContextStop();
|
|
i = ActivityLifecycleTracker.activityReferences;
|
|
ActivityLifecycleTracker.activityReferences = i - 1;
|
|
}
|
|
|
|
@Override // android.app.Application.ActivityLifecycleCallbacks
|
|
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
|
|
String str2;
|
|
Intrinsics.checkNotNullParameter(activity, "activity");
|
|
Intrinsics.checkNotNullParameter(outState, "outState");
|
|
Logger.Companion companion = Logger.Companion;
|
|
LoggingBehavior loggingBehavior = LoggingBehavior.APP_EVENTS;
|
|
str2 = ActivityLifecycleTracker.TAG;
|
|
companion.log(loggingBehavior, str2, "onActivitySaveInstanceState");
|
|
}
|
|
|
|
@Override // android.app.Application.ActivityLifecycleCallbacks
|
|
public void onActivityDestroyed(Activity activity) {
|
|
String str2;
|
|
Intrinsics.checkNotNullParameter(activity, "activity");
|
|
Logger.Companion companion = Logger.Companion;
|
|
LoggingBehavior loggingBehavior = LoggingBehavior.APP_EVENTS;
|
|
str2 = ActivityLifecycleTracker.TAG;
|
|
companion.log(loggingBehavior, str2, "onActivityDestroyed");
|
|
ActivityLifecycleTracker.INSTANCE.onActivityDestroyed(activity);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
/* renamed from: startTracking$lambda-0, reason: not valid java name */
|
|
public static final void m511startTracking$lambda0(boolean z) {
|
|
if (z) {
|
|
CodelessManager.enable();
|
|
} else {
|
|
CodelessManager.disable();
|
|
}
|
|
}
|
|
|
|
public static final boolean isTracking() {
|
|
return tracking.get();
|
|
}
|
|
|
|
public static final UUID getCurrentSessionGuid() {
|
|
SessionInfo sessionInfo;
|
|
if (currentSession == null || (sessionInfo = currentSession) == null) {
|
|
return null;
|
|
}
|
|
return sessionInfo.getSessionId();
|
|
}
|
|
|
|
public static final void onActivityCreated(Activity activity) {
|
|
singleThreadExecutor.execute(new Runnable() { // from class: com.facebook.appevents.internal.ActivityLifecycleTracker$$ExternalSyntheticLambda4
|
|
@Override // java.lang.Runnable
|
|
public final void run() {
|
|
ActivityLifecycleTracker.m507onActivityCreated$lambda1();
|
|
}
|
|
});
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
/* renamed from: onActivityCreated$lambda-1, reason: not valid java name */
|
|
public static final void m507onActivityCreated$lambda1() {
|
|
if (currentSession == null) {
|
|
currentSession = SessionInfo.Companion.getStoredSessionInfo();
|
|
}
|
|
}
|
|
|
|
public static final void onActivityResumed(Activity activity) {
|
|
Intrinsics.checkNotNullParameter(activity, "activity");
|
|
currActivity = new WeakReference<>(activity);
|
|
foregroundActivityCount.incrementAndGet();
|
|
INSTANCE.cancelCurrentTask();
|
|
final long currentTimeMillis = System.currentTimeMillis();
|
|
currentActivityAppearTime = currentTimeMillis;
|
|
final String activityName = Utility.getActivityName(activity);
|
|
CodelessManager.onActivityResumed(activity);
|
|
MetadataIndexer.onActivityResumed(activity);
|
|
SuggestedEventsManager.trackActivity(activity);
|
|
InAppPurchaseManager.startTracking();
|
|
final Context applicationContext = activity.getApplicationContext();
|
|
singleThreadExecutor.execute(new Runnable() { // from class: com.facebook.appevents.internal.ActivityLifecycleTracker$$ExternalSyntheticLambda2
|
|
@Override // java.lang.Runnable
|
|
public final void run() {
|
|
ActivityLifecycleTracker.m510onActivityResumed$lambda2(currentTimeMillis, activityName, applicationContext);
|
|
}
|
|
});
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
/* renamed from: onActivityResumed$lambda-2, reason: not valid java name */
|
|
public static final void m510onActivityResumed$lambda2(long j, String activityName, Context appContext) {
|
|
SessionInfo sessionInfo;
|
|
Intrinsics.checkNotNullParameter(activityName, "$activityName");
|
|
SessionInfo sessionInfo2 = currentSession;
|
|
Long sessionLastEventTime = sessionInfo2 == null ? null : sessionInfo2.getSessionLastEventTime();
|
|
if (currentSession == null) {
|
|
currentSession = new SessionInfo(Long.valueOf(j), null, null, 4, null);
|
|
SessionLogger sessionLogger = SessionLogger.INSTANCE;
|
|
String str = appId;
|
|
Intrinsics.checkNotNullExpressionValue(appContext, "appContext");
|
|
SessionLogger.logActivateApp(activityName, null, str, appContext);
|
|
} else if (sessionLastEventTime != null) {
|
|
long longValue = j - sessionLastEventTime.longValue();
|
|
if (longValue > INSTANCE.getSessionTimeoutInSeconds() * 1000) {
|
|
SessionLogger sessionLogger2 = SessionLogger.INSTANCE;
|
|
SessionLogger.logDeactivateApp(activityName, currentSession, appId);
|
|
String str2 = appId;
|
|
Intrinsics.checkNotNullExpressionValue(appContext, "appContext");
|
|
SessionLogger.logActivateApp(activityName, null, str2, appContext);
|
|
currentSession = new SessionInfo(Long.valueOf(j), null, null, 4, null);
|
|
} else if (longValue > 1000 && (sessionInfo = currentSession) != null) {
|
|
sessionInfo.incrementInterruptionCount();
|
|
}
|
|
}
|
|
SessionInfo sessionInfo3 = currentSession;
|
|
if (sessionInfo3 != null) {
|
|
sessionInfo3.setSessionLastEventTime(Long.valueOf(j));
|
|
}
|
|
SessionInfo sessionInfo4 = currentSession;
|
|
if (sessionInfo4 == null) {
|
|
return;
|
|
}
|
|
sessionInfo4.writeSessionToDisk();
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public final void onActivityPaused(Activity activity) {
|
|
AtomicInteger atomicInteger = foregroundActivityCount;
|
|
if (atomicInteger.decrementAndGet() < 0) {
|
|
atomicInteger.set(0);
|
|
Log.w(TAG, INCORRECT_IMPL_WARNING);
|
|
}
|
|
cancelCurrentTask();
|
|
final long currentTimeMillis = System.currentTimeMillis();
|
|
final String activityName = Utility.getActivityName(activity);
|
|
CodelessManager.onActivityPaused(activity);
|
|
singleThreadExecutor.execute(new Runnable() { // from class: com.facebook.appevents.internal.ActivityLifecycleTracker$$ExternalSyntheticLambda1
|
|
@Override // java.lang.Runnable
|
|
public final void run() {
|
|
ActivityLifecycleTracker.m508onActivityPaused$lambda6(currentTimeMillis, activityName);
|
|
}
|
|
});
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
/* renamed from: onActivityPaused$lambda-6, reason: not valid java name */
|
|
public static final void m508onActivityPaused$lambda6(final long j, final String activityName) {
|
|
Intrinsics.checkNotNullParameter(activityName, "$activityName");
|
|
if (currentSession == null) {
|
|
currentSession = new SessionInfo(Long.valueOf(j), null, null, 4, null);
|
|
}
|
|
SessionInfo sessionInfo = currentSession;
|
|
if (sessionInfo != null) {
|
|
sessionInfo.setSessionLastEventTime(Long.valueOf(j));
|
|
}
|
|
if (foregroundActivityCount.get() <= 0) {
|
|
Runnable runnable = new Runnable() { // from class: com.facebook.appevents.internal.ActivityLifecycleTracker$$ExternalSyntheticLambda0
|
|
@Override // java.lang.Runnable
|
|
public final void run() {
|
|
ActivityLifecycleTracker.m509onActivityPaused$lambda6$lambda4(j, activityName);
|
|
}
|
|
};
|
|
synchronized (currentFutureLock) {
|
|
currentFuture = singleThreadExecutor.schedule(runnable, INSTANCE.getSessionTimeoutInSeconds(), TimeUnit.SECONDS);
|
|
Unit unit = Unit.INSTANCE;
|
|
}
|
|
}
|
|
long j2 = currentActivityAppearTime;
|
|
AutomaticAnalyticsLogger.logActivityTimeSpentEvent(activityName, j2 > 0 ? (j - j2) / 1000 : 0L);
|
|
SessionInfo sessionInfo2 = currentSession;
|
|
if (sessionInfo2 == null) {
|
|
return;
|
|
}
|
|
sessionInfo2.writeSessionToDisk();
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
/* renamed from: onActivityPaused$lambda-6$lambda-4, reason: not valid java name */
|
|
public static final void m509onActivityPaused$lambda6$lambda4(long j, String activityName) {
|
|
Intrinsics.checkNotNullParameter(activityName, "$activityName");
|
|
if (currentSession == null) {
|
|
currentSession = new SessionInfo(Long.valueOf(j), null, null, 4, null);
|
|
}
|
|
if (foregroundActivityCount.get() <= 0) {
|
|
SessionLogger sessionLogger = SessionLogger.INSTANCE;
|
|
SessionLogger.logDeactivateApp(activityName, currentSession, appId);
|
|
SessionInfo.Companion.clearSavedSessionFromDisk();
|
|
currentSession = null;
|
|
}
|
|
synchronized (currentFutureLock) {
|
|
currentFuture = null;
|
|
Unit unit = Unit.INSTANCE;
|
|
}
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public final void onActivityDestroyed(Activity activity) {
|
|
CodelessManager.onActivityDestroyed(activity);
|
|
}
|
|
|
|
private final int getSessionTimeoutInSeconds() {
|
|
FetchedAppSettingsManager fetchedAppSettingsManager = FetchedAppSettingsManager.INSTANCE;
|
|
FetchedAppSettings appSettingsWithoutQuery = FetchedAppSettingsManager.getAppSettingsWithoutQuery(FacebookSdk.getApplicationId());
|
|
if (appSettingsWithoutQuery == null) {
|
|
return Constants.getDefaultAppEventsSessionTimeoutInSeconds();
|
|
}
|
|
return appSettingsWithoutQuery.getSessionTimeoutInSeconds();
|
|
}
|
|
|
|
private final void cancelCurrentTask() {
|
|
ScheduledFuture<?> scheduledFuture;
|
|
synchronized (currentFutureLock) {
|
|
try {
|
|
if (currentFuture != null && (scheduledFuture = currentFuture) != null) {
|
|
scheduledFuture.cancel(false);
|
|
}
|
|
currentFuture = null;
|
|
Unit unit = Unit.INSTANCE;
|
|
} catch (Throwable th) {
|
|
throw th;
|
|
}
|
|
}
|
|
}
|
|
|
|
public static final Activity getCurrentActivity() {
|
|
WeakReference<Activity> weakReference = currActivity;
|
|
if (weakReference == null || weakReference == null) {
|
|
return null;
|
|
}
|
|
return weakReference.get();
|
|
}
|
|
}
|