AppEventQueue.smali
.class Lcom/facebook/appevents/AppEventQueue;
.super Ljava/lang/Object;
.source "AppEventQueue.java"
# static fields
.field private static final FLUSH_PERIOD_IN_SECONDS:I = 0xf
.field private static final NUM_LOG_EVENTS_TO_TRY_TO_FLUSH_AFTER:I = 0x64
.field private static final TAG:Ljava/lang/String;
.field private static volatile appEventCollection:Lcom/facebook/appevents/AppEventCollection;
.field private static final flushRunnable:Ljava/lang/Runnable;
.field private static scheduledFuture:Ljava/util/concurrent/ScheduledFuture;
.field private static final singleThreadExecutor:Ljava/util/concurrent/ScheduledExecutorService;
# direct methods
.method static constructor <clinit>()V
.registers 1
.line 50
const-class v0, Lcom/facebook/appevents/AppEventQueue;
invoke-virtual {v0}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v0
sput-object v0, Lcom/facebook/appevents/AppEventQueue;->TAG:Ljava/lang/String;
.line 55
new-instance v0, Lcom/facebook/appevents/AppEventCollection;
invoke-direct {v0}, Lcom/facebook/appevents/AppEventCollection;-><init>()V
sput-object v0, Lcom/facebook/appevents/AppEventQueue;->appEventCollection:Lcom/facebook/appevents/AppEventCollection;
.line 57
invoke-static {}, Ljava/util/concurrent/Executors;->newSingleThreadScheduledExecutor()Ljava/util/concurrent/ScheduledExecutorService;
move-result-object v0
sput-object v0, Lcom/facebook/appevents/AppEventQueue;->singleThreadExecutor:Ljava/util/concurrent/ScheduledExecutorService;
.line 61
new-instance v0, Lcom/facebook/appevents/AppEventQueue$1;
invoke-direct {v0}, Lcom/facebook/appevents/AppEventQueue$1;-><init>()V
sput-object v0, Lcom/facebook/appevents/AppEventQueue;->flushRunnable:Ljava/lang/Runnable;
return-void
.end method
.method constructor <init>()V
.registers 1
.line 49
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method static synthetic access$000()Ljava/util/concurrent/ScheduledFuture;
.registers 1
.line 49
sget-object v0, Lcom/facebook/appevents/AppEventQueue;->scheduledFuture:Ljava/util/concurrent/ScheduledFuture;
return-object v0
.end method
.method static synthetic access$002(Ljava/util/concurrent/ScheduledFuture;)Ljava/util/concurrent/ScheduledFuture;
.registers 1
.line 49
sput-object p0, Lcom/facebook/appevents/AppEventQueue;->scheduledFuture:Ljava/util/concurrent/ScheduledFuture;
return-object p0
.end method
.method static synthetic access$100()Lcom/facebook/appevents/AppEventCollection;
.registers 1
.line 49
sget-object v0, Lcom/facebook/appevents/AppEventQueue;->appEventCollection:Lcom/facebook/appevents/AppEventCollection;
return-object v0
.end method
.method static synthetic access$102(Lcom/facebook/appevents/AppEventCollection;)Lcom/facebook/appevents/AppEventCollection;
.registers 1
.line 49
sput-object p0, Lcom/facebook/appevents/AppEventQueue;->appEventCollection:Lcom/facebook/appevents/AppEventCollection;
return-object p0
.end method
.method static synthetic access$200()Ljava/lang/Runnable;
.registers 1
.line 49
sget-object v0, Lcom/facebook/appevents/AppEventQueue;->flushRunnable:Ljava/lang/Runnable;
return-object v0
.end method
.method static synthetic access$300()Ljava/util/concurrent/ScheduledExecutorService;
.registers 1
.line 49
sget-object v0, Lcom/facebook/appevents/AppEventQueue;->singleThreadExecutor:Ljava/util/concurrent/ScheduledExecutorService;
return-object v0
.end method
.method static synthetic access$400(Lcom/facebook/appevents/AccessTokenAppIdPair;Lcom/facebook/GraphRequest;Lcom/facebook/GraphResponse;Lcom/facebook/appevents/SessionEventsState;Lcom/facebook/appevents/FlushStatistics;)V
.registers 5
.line 49
invoke-static {p0, p1, p2, p3, p4}, Lcom/facebook/appevents/AppEventQueue;->handleResponse(Lcom/facebook/appevents/AccessTokenAppIdPair;Lcom/facebook/GraphRequest;Lcom/facebook/GraphResponse;Lcom/facebook/appevents/SessionEventsState;Lcom/facebook/appevents/FlushStatistics;)V
return-void
.end method
.method public static add(Lcom/facebook/appevents/AccessTokenAppIdPair;Lcom/facebook/appevents/AppEvent;)V
.registers 4
.line 96
sget-object v0, Lcom/facebook/appevents/AppEventQueue;->singleThreadExecutor:Ljava/util/concurrent/ScheduledExecutorService;
new-instance v1, Lcom/facebook/appevents/AppEventQueue$4;
invoke-direct {v1, p0, p1}, Lcom/facebook/appevents/AppEventQueue$4;-><init>(Lcom/facebook/appevents/AccessTokenAppIdPair;Lcom/facebook/appevents/AppEvent;)V
invoke-interface {v0, v1}, Ljava/util/concurrent/ScheduledExecutorService;->execute(Ljava/lang/Runnable;)V
return-void
.end method
.method private static buildRequestForSession(Lcom/facebook/appevents/AccessTokenAppIdPair;Lcom/facebook/appevents/SessionEventsState;ZLcom/facebook/appevents/FlushStatistics;)Lcom/facebook/GraphRequest;
.registers 11
.line 195
invoke-virtual {p0}, Lcom/facebook/appevents/AccessTokenAppIdPair;->getApplicationId()Ljava/lang/String;
move-result-object v0
const/4 v1, 0x0
.line 198
invoke-static {v0, v1}, Lcom/facebook/internal/FetchedAppSettingsManager;->queryAppSettings(Ljava/lang/String;Z)Lcom/facebook/internal/FetchedAppSettings;
move-result-object v2
const/4 v3, 0x1
new-array v3, v3, [Ljava/lang/Object;
aput-object v0, v3, v1
const-string v0, "%s/activities"
.line 202
invoke-static {v0, v3}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
move-result-object v0
const/4 v3, 0x0
.line 200
invoke-static {v3, v0, v3, v3}, Lcom/facebook/GraphRequest;->newPostRequest(Lcom/facebook/AccessToken;Ljava/lang/String;Lorg/json/JSONObject;Lcom/facebook/GraphRequest$Callback;)Lcom/facebook/GraphRequest;
move-result-object v0
.line 206
invoke-virtual {v0}, Lcom/facebook/GraphRequest;->getParameters()Landroid/os/Bundle;
move-result-object v4
if-nez v4, :cond_24
.line 208
new-instance v4, Landroid/os/Bundle;
invoke-direct {v4}, Landroid/os/Bundle;-><init>()V
.line 210
:cond_24
invoke-virtual {p0}, Lcom/facebook/appevents/AccessTokenAppIdPair;->getAccessTokenString()Ljava/lang/String;
move-result-object v5
const-string v6, "access_token"
invoke-virtual {v4, v6, v5}, Landroid/os/Bundle;->putString(Ljava/lang/String;Ljava/lang/String;)V
.line 212
invoke-static {}, Lcom/facebook/appevents/InternalAppEventsLogger;->getPushNotificationsRegistrationId()Ljava/lang/String;
move-result-object v5
if-eqz v5, :cond_38
const-string v6, "device_token"
.line 214
invoke-virtual {v4, v6, v5}, Landroid/os/Bundle;->putString(Ljava/lang/String;Ljava/lang/String;)V
.line 217
:cond_38
invoke-static {}, Lcom/facebook/appevents/AppEventsLoggerImpl;->getInstallReferrer()Ljava/lang/String;
move-result-object v5
if-eqz v5, :cond_43
const-string v6, "install_referrer"
.line 219
invoke-virtual {v4, v6, v5}, Landroid/os/Bundle;->putString(Ljava/lang/String;Ljava/lang/String;)V
.line 222
:cond_43
invoke-virtual {v0, v4}, Lcom/facebook/GraphRequest;->setParameters(Landroid/os/Bundle;)V
if-eqz v2, :cond_4c
.line 227
invoke-virtual {v2}, Lcom/facebook/internal/FetchedAppSettings;->supportsImplicitLogging()Z
move-result v1
.line 232
:cond_4c
invoke-static {}, Lcom/facebook/FacebookSdk;->getApplicationContext()Landroid/content/Context;
move-result-object v2
.line 230
invoke-virtual {p1, v0, v2, v1, p2}, Lcom/facebook/appevents/SessionEventsState;->populateRequest(Lcom/facebook/GraphRequest;Landroid/content/Context;ZZ)I
move-result p2
if-nez p2, :cond_57
return-object v3
.line 240
:cond_57
iget v1, p3, Lcom/facebook/appevents/FlushStatistics;->numEvents:I
add-int/2addr v1, p2
iput v1, p3, Lcom/facebook/appevents/FlushStatistics;->numEvents:I
.line 242
new-instance p2, Lcom/facebook/appevents/AppEventQueue$5;
invoke-direct {p2, p0, v0, p1, p3}, Lcom/facebook/appevents/AppEventQueue$5;-><init>(Lcom/facebook/appevents/AccessTokenAppIdPair;Lcom/facebook/GraphRequest;Lcom/facebook/appevents/SessionEventsState;Lcom/facebook/appevents/FlushStatistics;)V
invoke-virtual {v0, p2}, Lcom/facebook/GraphRequest;->setCallback(Lcom/facebook/GraphRequest$Callback;)V
return-object v0
.end method
.method public static flush(Lcom/facebook/appevents/FlushReason;)V
.registers 3
.line 85
sget-object v0, Lcom/facebook/appevents/AppEventQueue;->singleThreadExecutor:Ljava/util/concurrent/ScheduledExecutorService;
new-instance v1, Lcom/facebook/appevents/AppEventQueue$3;
invoke-direct {v1, p0}, Lcom/facebook/appevents/AppEventQueue$3;-><init>(Lcom/facebook/appevents/FlushReason;)V
invoke-interface {v0, v1}, Ljava/util/concurrent/ScheduledExecutorService;->execute(Ljava/lang/Runnable;)V
return-void
.end method
.method static flushAndWait(Lcom/facebook/appevents/FlushReason;)V
.registers 4
.line 126
invoke-static {}, Lcom/facebook/appevents/AppEventStore;->readAndClearStore()Lcom/facebook/appevents/PersistedEvents;
move-result-object v0
.line 128
sget-object v1, Lcom/facebook/appevents/AppEventQueue;->appEventCollection:Lcom/facebook/appevents/AppEventCollection;
invoke-virtual {v1, v0}, Lcom/facebook/appevents/AppEventCollection;->addPersistedEvents(Lcom/facebook/appevents/PersistedEvents;)V
.line 133
:try_start_9
sget-object v0, Lcom/facebook/appevents/AppEventQueue;->appEventCollection:Lcom/facebook/appevents/AppEventCollection;
invoke-static {p0, v0}, Lcom/facebook/appevents/AppEventQueue;->sendEventsToServer(Lcom/facebook/appevents/FlushReason;Lcom/facebook/appevents/AppEventCollection;)Lcom/facebook/appevents/FlushStatistics;
move-result-object p0
:try_end_f
.catch Ljava/lang/Exception; {:try_start_9 .. :try_end_f} :catch_32
if-eqz p0, :cond_31
.line 142
new-instance v0, Landroid/content/Intent;
const-string v1, "com.facebook.sdk.APP_EVENTS_FLUSHED"
invoke-direct {v0, v1}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
.line 143
iget v1, p0, Lcom/facebook/appevents/FlushStatistics;->numEvents:I
const-string v2, "com.facebook.sdk.APP_EVENTS_NUM_EVENTS_FLUSHED"
invoke-virtual {v0, v2, v1}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;
.line 146
iget-object p0, p0, Lcom/facebook/appevents/FlushStatistics;->result:Lcom/facebook/appevents/FlushResult;
const-string v1, "com.facebook.sdk.APP_EVENTS_FLUSH_RESULT"
invoke-virtual {v0, v1, p0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/io/Serializable;)Landroid/content/Intent;
.line 149
invoke-static {}, Lcom/facebook/FacebookSdk;->getApplicationContext()Landroid/content/Context;
move-result-object p0
.line 150
invoke-static {p0}, Landroidx/localbroadcastmanager/content/LocalBroadcastManager;->getInstance(Landroid/content/Context;)Landroidx/localbroadcastmanager/content/LocalBroadcastManager;
move-result-object p0
invoke-virtual {p0, v0}, Landroidx/localbroadcastmanager/content/LocalBroadcastManager;->sendBroadcast(Landroid/content/Intent;)Z
:cond_31
return-void
:catch_32
move-exception p0
.line 137
sget-object v0, Lcom/facebook/appevents/AppEventQueue;->TAG:Ljava/lang/String;
const-string v1, "Caught unexpected exception while flushing app events: "
invoke-static {v0, v1, p0}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
return-void
.end method
.method public static getKeySet()Ljava/util/Set;
.registers 1
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/Set<",
"Lcom/facebook/appevents/AccessTokenAppIdPair;",
">;"
}
.end annotation
.line 121
sget-object v0, Lcom/facebook/appevents/AppEventQueue;->appEventCollection:Lcom/facebook/appevents/AppEventCollection;
invoke-virtual {v0}, Lcom/facebook/appevents/AppEventCollection;->keySet()Ljava/util/Set;
move-result-object v0
return-object v0
.end method
.method private static handleResponse(Lcom/facebook/appevents/AccessTokenAppIdPair;Lcom/facebook/GraphRequest;Lcom/facebook/GraphResponse;Lcom/facebook/appevents/SessionEventsState;Lcom/facebook/appevents/FlushStatistics;)V
.registers 14
.line 263
invoke-virtual {p2}, Lcom/facebook/GraphResponse;->getError()Lcom/facebook/FacebookRequestError;
move-result-object v0
.line 266
sget-object v1, Lcom/facebook/appevents/FlushResult;->SUCCESS:Lcom/facebook/appevents/FlushResult;
const/4 v2, 0x1
const/4 v3, 0x0
const/4 v4, 0x2
if-eqz v0, :cond_2e
.line 270
invoke-virtual {v0}, Lcom/facebook/FacebookRequestError;->getErrorCode()I
move-result v1
const/4 v5, -0x1
if-ne v1, v5, :cond_17
.line 272
sget-object v1, Lcom/facebook/appevents/FlushResult;->NO_CONNECTIVITY:Lcom/facebook/appevents/FlushResult;
const-string p2, "Failed: No Connectivity"
goto :goto_30
:cond_17
new-array v1, v4, [Ljava/lang/Object;
.line 275
invoke-virtual {p2}, Lcom/facebook/GraphResponse;->toString()Ljava/lang/String;
move-result-object p2
aput-object p2, v1, v3
.line 276
invoke-virtual {v0}, Lcom/facebook/FacebookRequestError;->toString()Ljava/lang/String;
move-result-object p2
aput-object p2, v1, v2
const-string p2, "Failed:\n Response: %s\n Error %s"
.line 274
invoke-static {p2, v1}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
move-result-object p2
.line 277
sget-object v1, Lcom/facebook/appevents/FlushResult;->SERVER_ERROR:Lcom/facebook/appevents/FlushResult;
goto :goto_30
:cond_2e
const-string p2, "Success"
.line 281
:goto_30
sget-object v5, Lcom/facebook/LoggingBehavior;->APP_EVENTS:Lcom/facebook/LoggingBehavior;
invoke-static {v5}, Lcom/facebook/FacebookSdk;->isLoggingBehaviorEnabled(Lcom/facebook/LoggingBehavior;)Z
move-result v5
if-eqz v5, :cond_64
.line 282
invoke-virtual {p1}, Lcom/facebook/GraphRequest;->getTag()Ljava/lang/Object;
move-result-object v5
check-cast v5, Ljava/lang/String;
.line 286
:try_start_3e
new-instance v6, Lorg/json/JSONArray;
invoke-direct {v6, v5}, Lorg/json/JSONArray;-><init>(Ljava/lang/String;)V
.line 287
invoke-virtual {v6, v4}, Lorg/json/JSONArray;->toString(I)Ljava/lang/String;
move-result-object v5
:try_end_47
.catch Lorg/json/JSONException; {:try_start_3e .. :try_end_47} :catch_48
goto :goto_4a
:catch_48
const-string v5, "<Can\'t encode events for debug logging>"
.line 292
:goto_4a
sget-object v6, Lcom/facebook/LoggingBehavior;->APP_EVENTS:Lcom/facebook/LoggingBehavior;
sget-object v7, Lcom/facebook/appevents/AppEventQueue;->TAG:Ljava/lang/String;
const/4 v8, 0x3
new-array v8, v8, [Ljava/lang/Object;
.line 294
invoke-virtual {p1}, Lcom/facebook/GraphRequest;->getGraphObject()Lorg/json/JSONObject;
move-result-object p1
invoke-virtual {p1}, Lorg/json/JSONObject;->toString()Ljava/lang/String;
move-result-object p1
aput-object p1, v8, v3
aput-object p2, v8, v2
aput-object v5, v8, v4
const-string p1, "Flush completed\nParams: %s\n Result: %s\n Events JSON: %s"
.line 292
invoke-static {v6, v7, p1, v8}, Lcom/facebook/internal/Logger;->log(Lcom/facebook/LoggingBehavior;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
:cond_64
if-eqz v0, :cond_67
goto :goto_68
:cond_67
const/4 v2, 0x0
.line 299
:goto_68
invoke-virtual {p3, v2}, Lcom/facebook/appevents/SessionEventsState;->clearInFlightAndStats(Z)V
.line 301
sget-object p1, Lcom/facebook/appevents/FlushResult;->NO_CONNECTIVITY:Lcom/facebook/appevents/FlushResult;
if-ne v1, p1, :cond_7b
.line 307
invoke-static {}, Lcom/facebook/FacebookSdk;->getExecutor()Ljava/util/concurrent/Executor;
move-result-object p1
new-instance p2, Lcom/facebook/appevents/AppEventQueue$6;
invoke-direct {p2, p0, p3}, Lcom/facebook/appevents/AppEventQueue$6;-><init>(Lcom/facebook/appevents/AccessTokenAppIdPair;Lcom/facebook/appevents/SessionEventsState;)V
invoke-interface {p1, p2}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V
.line 315
:cond_7b
sget-object p0, Lcom/facebook/appevents/FlushResult;->SUCCESS:Lcom/facebook/appevents/FlushResult;
if-eq v1, p0, :cond_87
.line 317
iget-object p0, p4, Lcom/facebook/appevents/FlushStatistics;->result:Lcom/facebook/appevents/FlushResult;
sget-object p1, Lcom/facebook/appevents/FlushResult;->NO_CONNECTIVITY:Lcom/facebook/appevents/FlushResult;
if-eq p0, p1, :cond_87
.line 318
iput-object v1, p4, Lcom/facebook/appevents/FlushStatistics;->result:Lcom/facebook/appevents/FlushResult;
:cond_87
return-void
.end method
.method public static persistToDisk()V
.registers 2
.line 74
sget-object v0, Lcom/facebook/appevents/AppEventQueue;->singleThreadExecutor:Ljava/util/concurrent/ScheduledExecutorService;
new-instance v1, Lcom/facebook/appevents/AppEventQueue$2;
invoke-direct {v1}, Lcom/facebook/appevents/AppEventQueue$2;-><init>()V
invoke-interface {v0, v1}, Ljava/util/concurrent/ScheduledExecutorService;->execute(Ljava/lang/Runnable;)V
return-void
.end method
.method private static sendEventsToServer(Lcom/facebook/appevents/FlushReason;Lcom/facebook/appevents/AppEventCollection;)Lcom/facebook/appevents/FlushStatistics;
.registers 8
.line 157
new-instance v0, Lcom/facebook/appevents/FlushStatistics;
invoke-direct {v0}, Lcom/facebook/appevents/FlushStatistics;-><init>()V
.line 159
invoke-static {}, Lcom/facebook/FacebookSdk;->getApplicationContext()Landroid/content/Context;
move-result-object v1
.line 160
invoke-static {v1}, Lcom/facebook/FacebookSdk;->getLimitEventAndDataUsage(Landroid/content/Context;)Z
move-result v1
.line 162
new-instance v2, Ljava/util/ArrayList;
invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
.line 163
invoke-virtual {p1}, Lcom/facebook/appevents/AppEventCollection;->keySet()Ljava/util/Set;
move-result-object v3
invoke-interface {v3}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v3
:cond_1a
:goto_1a
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v4
if-eqz v4, :cond_34
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v4
check-cast v4, Lcom/facebook/appevents/AccessTokenAppIdPair;
.line 166
invoke-virtual {p1, v4}, Lcom/facebook/appevents/AppEventCollection;->get(Lcom/facebook/appevents/AccessTokenAppIdPair;)Lcom/facebook/appevents/SessionEventsState;
move-result-object v5
.line 164
invoke-static {v4, v5, v1, v0}, Lcom/facebook/appevents/AppEventQueue;->buildRequestForSession(Lcom/facebook/appevents/AccessTokenAppIdPair;Lcom/facebook/appevents/SessionEventsState;ZLcom/facebook/appevents/FlushStatistics;)Lcom/facebook/GraphRequest;
move-result-object v4
if-eqz v4, :cond_1a
.line 170
invoke-interface {v2, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto :goto_1a
.line 174
:cond_34
invoke-interface {v2}, Ljava/util/List;->size()I
move-result p1
if-lez p1, :cond_6b
.line 175
sget-object p1, Lcom/facebook/LoggingBehavior;->APP_EVENTS:Lcom/facebook/LoggingBehavior;
sget-object v1, Lcom/facebook/appevents/AppEventQueue;->TAG:Ljava/lang/String;
const/4 v3, 0x2
new-array v3, v3, [Ljava/lang/Object;
const/4 v4, 0x0
iget v5, v0, Lcom/facebook/appevents/FlushStatistics;->numEvents:I
.line 176
invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v5
aput-object v5, v3, v4
const/4 v4, 0x1
.line 177
invoke-virtual {p0}, Lcom/facebook/appevents/FlushReason;->toString()Ljava/lang/String;
move-result-object p0
aput-object p0, v3, v4
const-string p0, "Flushing %d events due to %s."
.line 175
invoke-static {p1, v1, p0, v3}, Lcom/facebook/internal/Logger;->log(Lcom/facebook/LoggingBehavior;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
.line 179
invoke-interface {v2}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object p0
:goto_5a
invoke-interface {p0}, Ljava/util/Iterator;->hasNext()Z
move-result p1
if-eqz p1, :cond_6a
invoke-interface {p0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object p1
check-cast p1, Lcom/facebook/GraphRequest;
.line 182
invoke-virtual {p1}, Lcom/facebook/GraphRequest;->executeAndWait()Lcom/facebook/GraphResponse;
goto :goto_5a
:cond_6a
return-object v0
:cond_6b
const/4 p0, 0x0
return-object p0
.end method