AppEvent.smali
.class Lcom/facebook/appevents/AppEvent;
.super Ljava/lang/Object;
.source "AppEvent.java"
# interfaces
.implements Ljava/io/Serializable;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/facebook/appevents/AppEvent$SerializationProxyV2;,
Lcom/facebook/appevents/AppEvent$SerializationProxyV1;
}
.end annotation
# static fields
.field private static final serialVersionUID:J = 0x1L
.field private static final validatedIdentifiers:Ljava/util/HashSet;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/HashSet<",
"Ljava/lang/String;",
">;"
}
.end annotation
.end field
# instance fields
.field private final checksum:Ljava/lang/String;
.field private final inBackground:Z
.field private final isImplicit:Z
.field private final jsonObject:Lorg/json/JSONObject;
.field private final name:Ljava/lang/String;
# direct methods
.method static constructor <clinit>()V
.registers 1
.line 51
new-instance v0, Ljava/util/HashSet;
invoke-direct {v0}, Ljava/util/HashSet;-><init>()V
sput-object v0, Lcom/facebook/appevents/AppEvent;->validatedIdentifiers:Ljava/util/HashSet;
return-void
.end method
.method public constructor <init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Double;Landroid/os/Bundle;ZZLjava/util/UUID;)V
.registers 8
.annotation system Ldalvik/annotation/Throws;
value = {
Lorg/json/JSONException;,
Lcom/facebook/FacebookException;
}
.end annotation
.line 67
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 68
invoke-static/range {p1 .. p7}, Lcom/facebook/appevents/AppEvent;->getJSONObjectForAppEvent(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Double;Landroid/os/Bundle;ZZLjava/util/UUID;)Lorg/json/JSONObject;
move-result-object p1
iput-object p1, p0, Lcom/facebook/appevents/AppEvent;->jsonObject:Lorg/json/JSONObject;
.line 76
iput-boolean p5, p0, Lcom/facebook/appevents/AppEvent;->isImplicit:Z
.line 77
iput-boolean p6, p0, Lcom/facebook/appevents/AppEvent;->inBackground:Z
.line 78
iput-object p2, p0, Lcom/facebook/appevents/AppEvent;->name:Ljava/lang/String;
.line 79
invoke-direct {p0}, Lcom/facebook/appevents/AppEvent;->calculateChecksum()Ljava/lang/String;
move-result-object p1
iput-object p1, p0, Lcom/facebook/appevents/AppEvent;->checksum:Ljava/lang/String;
return-void
.end method
.method private constructor <init>(Ljava/lang/String;ZZLjava/lang/String;)V
.registers 6
.annotation system Ldalvik/annotation/Throws;
value = {
Lorg/json/JSONException;
}
.end annotation
.line 90
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 91
new-instance v0, Lorg/json/JSONObject;
invoke-direct {v0, p1}, Lorg/json/JSONObject;-><init>(Ljava/lang/String;)V
iput-object v0, p0, Lcom/facebook/appevents/AppEvent;->jsonObject:Lorg/json/JSONObject;
.line 92
iput-boolean p2, p0, Lcom/facebook/appevents/AppEvent;->isImplicit:Z
const-string p1, "_eventName"
.line 93
invoke-virtual {v0, p1}, Lorg/json/JSONObject;->optString(Ljava/lang/String;)Ljava/lang/String;
move-result-object p1
iput-object p1, p0, Lcom/facebook/appevents/AppEvent;->name:Ljava/lang/String;
.line 94
iput-object p4, p0, Lcom/facebook/appevents/AppEvent;->checksum:Ljava/lang/String;
.line 95
iput-boolean p3, p0, Lcom/facebook/appevents/AppEvent;->inBackground:Z
return-void
.end method
.method synthetic constructor <init>(Ljava/lang/String;ZZLjava/lang/String;Lcom/facebook/appevents/AppEvent$1;)V
.registers 6
.annotation system Ldalvik/annotation/Throws;
value = {
Lorg/json/JSONException;
}
.end annotation
.line 48
invoke-direct {p0, p1, p2, p3, p4}, Lcom/facebook/appevents/AppEvent;-><init>(Ljava/lang/String;ZZLjava/lang/String;)V
return-void
.end method
.method private calculateChecksum()Ljava/lang/String;
.registers 5
.line 280
sget v0, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v1, 0x13
if-le v0, v1, :cond_11
.line 281
iget-object v0, p0, Lcom/facebook/appevents/AppEvent;->jsonObject:Lorg/json/JSONObject;
invoke-virtual {v0}, Lorg/json/JSONObject;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lcom/facebook/appevents/AppEvent;->md5Checksum(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
return-object v0
.line 283
:cond_11
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
.line 284
iget-object v1, p0, Lcom/facebook/appevents/AppEvent;->jsonObject:Lorg/json/JSONObject;
invoke-virtual {v1}, Lorg/json/JSONObject;->keys()Ljava/util/Iterator;
move-result-object v1
:goto_1c
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v2
if-eqz v2, :cond_2a
.line 285
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
invoke-virtual {v0, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
goto :goto_1c
.line 287
:cond_2a
invoke-static {v0}, Ljava/util/Collections;->sort(Ljava/util/List;)V
.line 288
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
.line 289
invoke-virtual {v0}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
move-result-object v0
:goto_36
invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
move-result v2
if-eqz v2, :cond_59
invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, Ljava/lang/String;
.line 290
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v3, " = "
invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object v3, p0, Lcom/facebook/appevents/AppEvent;->jsonObject:Lorg/json/JSONObject;
invoke-virtual {v3, v2}, Lorg/json/JSONObject;->optString(Ljava/lang/String;)Ljava/lang/String;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const/16 v2, 0xa
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
goto :goto_36
.line 292
:cond_59
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lcom/facebook/appevents/AppEvent;->md5Checksum(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
return-object v0
.end method
.method private static getJSONObjectForAppEvent(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Double;Landroid/os/Bundle;ZZLjava/util/UUID;)Lorg/json/JSONObject;
.registers 12
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/facebook/FacebookException;,
Lorg/json/JSONException;
}
.end annotation
.line 170
invoke-static {p1}, Lcom/facebook/appevents/AppEvent;->validateIdentifier(Ljava/lang/String;)V
.line 172
new-instance v0, Lorg/json/JSONObject;
invoke-direct {v0}, Lorg/json/JSONObject;-><init>()V
const-string v1, "_eventName"
.line 174
invoke-virtual {v0, v1, p1}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
.line 175
invoke-static {p1}, Lcom/facebook/appevents/AppEvent;->md5Checksum(Ljava/lang/String;)Ljava/lang/String;
move-result-object p1
const-string v1, "_eventName_md5"
invoke-virtual {v0, v1, p1}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
.line 176
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v1
const-wide/16 v3, 0x3e8
div-long/2addr v1, v3
const-string p1, "_logTime"
invoke-virtual {v0, p1, v1, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;J)Lorg/json/JSONObject;
const-string p1, "_ui"
.line 177
invoke-virtual {v0, p1, p0}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
if-eqz p6, :cond_2e
const-string p0, "_session_id"
.line 179
invoke-virtual {v0, p0, p6}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
:cond_2e
if-eqz p2, :cond_39
.line 183
invoke-virtual {p2}, Ljava/lang/Double;->doubleValue()D
move-result-wide p0
const-string p2, "_valueToSum"
invoke-virtual {v0, p2, p0, p1}, Lorg/json/JSONObject;->put(Ljava/lang/String;D)Lorg/json/JSONObject;
:cond_39
const-string p0, "1"
if-eqz p4, :cond_42
const-string p1, "_implicitlyLogged"
.line 187
invoke-virtual {v0, p1, p0}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
:cond_42
if-eqz p5, :cond_49
const-string p1, "_inBackground"
.line 191
invoke-virtual {v0, p1, p0}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
:cond_49
const/4 p0, 0x0
const/4 p1, 0x1
if-eqz p3, :cond_8c
.line 195
invoke-virtual {p3}, Landroid/os/Bundle;->keySet()Ljava/util/Set;
move-result-object p2
invoke-interface {p2}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object p2
:goto_55
invoke-interface {p2}, Ljava/util/Iterator;->hasNext()Z
move-result p5
if-eqz p5, :cond_8c
invoke-interface {p2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object p5
check-cast p5, Ljava/lang/String;
.line 197
invoke-static {p5}, Lcom/facebook/appevents/AppEvent;->validateIdentifier(Ljava/lang/String;)V
.line 199
invoke-virtual {p3, p5}, Landroid/os/Bundle;->get(Ljava/lang/String;)Ljava/lang/Object;
move-result-object p6
.line 200
instance-of v1, p6, Ljava/lang/String;
if-nez v1, :cond_84
instance-of v1, p6, Ljava/lang/Number;
if-eqz v1, :cond_71
goto :goto_84
.line 201
:cond_71
new-instance p2, Lcom/facebook/FacebookException;
const/4 p3, 0x2
new-array p3, p3, [Ljava/lang/Object;
aput-object p6, p3, p0
aput-object p5, p3, p1
const-string p0, "Parameter value \'%s\' for key \'%s\' should be a string or a numeric type."
.line 202
invoke-static {p0, p3}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
move-result-object p0
invoke-direct {p2, p0}, Lcom/facebook/FacebookException;-><init>(Ljava/lang/String;)V
throw p2
.line 210
:cond_84
:goto_84
invoke-virtual {p6}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object p6
invoke-virtual {v0, p5, p6}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
goto :goto_55
:cond_8c
if-nez p4, :cond_9f
.line 215
sget-object p2, Lcom/facebook/LoggingBehavior;->APP_EVENTS:Lcom/facebook/LoggingBehavior;
new-array p1, p1, [Ljava/lang/Object;
.line 216
invoke-virtual {v0}, Lorg/json/JSONObject;->toString()Ljava/lang/String;
move-result-object p3
aput-object p3, p1, p0
const-string p0, "AppEvents"
const-string p3, "Created app event \'%s\'"
.line 215
invoke-static {p2, p0, p3, p1}, Lcom/facebook/internal/Logger;->log(Lcom/facebook/LoggingBehavior;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
:cond_9f
return-object v0
.end method
.method private static md5Checksum(Ljava/lang/String;)Ljava/lang/String;
.registers 5
const-string v0, "Failed to generate checksum: "
:try_start_2
const-string v1, "MD5"
.line 300
invoke-static {v1}, Ljava/security/MessageDigest;->getInstance(Ljava/lang/String;)Ljava/security/MessageDigest;
move-result-object v1
const-string v2, "UTF-8"
.line 301
invoke-virtual {p0, v2}, Ljava/lang/String;->getBytes(Ljava/lang/String;)[B
move-result-object p0
const/4 v2, 0x0
.line 302
array-length v3, p0
invoke-virtual {v1, p0, v2, v3}, Ljava/security/MessageDigest;->update([BII)V
.line 303
invoke-virtual {v1}, Ljava/security/MessageDigest;->digest()[B
move-result-object p0
.line 304
invoke-static {p0}, Lcom/facebook/appevents/internal/AppEventUtility;->bytesToHex([B)Ljava/lang/String;
move-result-object p0
:try_end_1b
.catch Ljava/security/NoSuchAlgorithmException; {:try_start_2 .. :try_end_1b} :catch_23
.catch Ljava/io/UnsupportedEncodingException; {:try_start_2 .. :try_end_1b} :catch_1c
return-object p0
:catch_1c
move-exception p0
.line 313
invoke-static {v0, p0}, Lcom/facebook/internal/Utility;->logd(Ljava/lang/String;Ljava/lang/Exception;)V
const-string p0, "1"
return-object p0
:catch_23
move-exception p0
.line 308
invoke-static {v0, p0}, Lcom/facebook/internal/Utility;->logd(Ljava/lang/String;Ljava/lang/Exception;)V
const-string p0, "0"
return-object p0
.end method
.method private static validateIdentifier(Ljava/lang/String;)V
.registers 8
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/facebook/FacebookException;
}
.end annotation
const/16 v0, 0x28
const/4 v1, 0x1
const/4 v2, 0x0
if-eqz p0, :cond_48
.line 124
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v3
if-eqz v3, :cond_48
.line 125
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v3
if-le v3, v0, :cond_13
goto :goto_48
.line 139
:cond_13
sget-object v3, Lcom/facebook/appevents/AppEvent;->validatedIdentifiers:Ljava/util/HashSet;
monitor-enter v3
.line 140
:try_start_16
sget-object v0, Lcom/facebook/appevents/AppEvent;->validatedIdentifiers:Ljava/util/HashSet;
invoke-virtual {v0, p0}, Ljava/util/HashSet;->contains(Ljava/lang/Object;)Z
move-result v0
.line 141
monitor-exit v3
:try_end_1d
.catchall {:try_start_16 .. :try_end_1d} :catchall_45
if-nez v0, :cond_44
const-string v0, "^[0-9a-zA-Z_]+[0-9a-zA-Z _-]*$"
.line 144
invoke-virtual {p0, v0}, Ljava/lang/String;->matches(Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_34
.line 145
sget-object v0, Lcom/facebook/appevents/AppEvent;->validatedIdentifiers:Ljava/util/HashSet;
monitor-enter v0
.line 146
:try_start_2a
sget-object v1, Lcom/facebook/appevents/AppEvent;->validatedIdentifiers:Ljava/util/HashSet;
invoke-virtual {v1, p0}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
.line 147
monitor-exit v0
goto :goto_44
:catchall_31
move-exception p0
monitor-exit v0
:try_end_33
.catchall {:try_start_2a .. :try_end_33} :catchall_31
throw p0
.line 149
:cond_34
new-instance v0, Lcom/facebook/FacebookException;
const-string v3, "Skipping event named \'%s\' due to illegal name - must be under 40 chars and alphanumeric, _, - or space, and not start with a space or hyphen."
new-array v1, v1, [Ljava/lang/Object;
aput-object p0, v1, v2
.line 150
invoke-static {v3, v1}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
move-result-object p0
invoke-direct {v0, p0}, Lcom/facebook/FacebookException;-><init>(Ljava/lang/String;)V
throw v0
:cond_44
:goto_44
return-void
:catchall_45
move-exception p0
.line 141
:try_start_46
monitor-exit v3
:try_end_47
.catchall {:try_start_46 .. :try_end_47} :catchall_45
throw p0
:cond_48
:goto_48
if-nez p0, :cond_4c
const-string p0, "<None Provided>"
.line 129
:cond_4c
new-instance v3, Lcom/facebook/FacebookException;
sget-object v4, Ljava/util/Locale;->ROOT:Ljava/util/Locale;
const-string v5, "Identifier \'%s\' must be less than %d characters"
const/4 v6, 0x2
new-array v6, v6, [Ljava/lang/Object;
aput-object p0, v6, v2
.line 134
invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object p0
aput-object p0, v6, v1
.line 130
invoke-static {v4, v5, v6}, Ljava/lang/String;->format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
move-result-object p0
invoke-direct {v3, p0}, Lcom/facebook/FacebookException;-><init>(Ljava/lang/String;)V
throw v3
.end method
.method private writeReplace()Ljava/lang/Object;
.registers 8
.line 264
new-instance v6, Lcom/facebook/appevents/AppEvent$SerializationProxyV2;
iget-object v0, p0, Lcom/facebook/appevents/AppEvent;->jsonObject:Lorg/json/JSONObject;
invoke-virtual {v0}, Lorg/json/JSONObject;->toString()Ljava/lang/String;
move-result-object v1
iget-boolean v2, p0, Lcom/facebook/appevents/AppEvent;->isImplicit:Z
iget-boolean v3, p0, Lcom/facebook/appevents/AppEvent;->inBackground:Z
iget-object v4, p0, Lcom/facebook/appevents/AppEvent;->checksum:Ljava/lang/String;
const/4 v5, 0x0
move-object v0, v6
invoke-direct/range {v0 .. v5}, Lcom/facebook/appevents/AppEvent$SerializationProxyV2;-><init>(Ljava/lang/String;ZZLjava/lang/String;Lcom/facebook/appevents/AppEvent$1;)V
return-object v6
.end method
# virtual methods
.method public getIsImplicit()Z
.registers 2
.line 99
iget-boolean v0, p0, Lcom/facebook/appevents/AppEvent;->isImplicit:Z
return v0
.end method
.method public getJSONObject()Lorg/json/JSONObject;
.registers 2
.line 103
iget-object v0, p0, Lcom/facebook/appevents/AppEvent;->jsonObject:Lorg/json/JSONObject;
return-object v0
.end method
.method public getName()Ljava/lang/String;
.registers 2
.line 83
iget-object v0, p0, Lcom/facebook/appevents/AppEvent;->name:Ljava/lang/String;
return-object v0
.end method
.method public isChecksumValid()Z
.registers 3
.line 107
iget-object v0, p0, Lcom/facebook/appevents/AppEvent;->checksum:Ljava/lang/String;
if-nez v0, :cond_6
const/4 v0, 0x1
return v0
.line 112
:cond_6
invoke-direct {p0}, Lcom/facebook/appevents/AppEvent;->calculateChecksum()Ljava/lang/String;
move-result-object v0
iget-object v1, p0, Lcom/facebook/appevents/AppEvent;->checksum:Ljava/lang/String;
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
return v0
.end method
.method public toString()Ljava/lang/String;
.registers 4
const/4 v0, 0x3
new-array v0, v0, [Ljava/lang/Object;
.line 269
iget-object v1, p0, Lcom/facebook/appevents/AppEvent;->jsonObject:Lorg/json/JSONObject;
const-string v2, "_eventName"
.line 271
invoke-virtual {v1, v2}, Lorg/json/JSONObject;->optString(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
const/4 v2, 0x0
aput-object v1, v0, v2
iget-boolean v1, p0, Lcom/facebook/appevents/AppEvent;->isImplicit:Z
.line 272
invoke-static {v1}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v1
const/4 v2, 0x1
aput-object v1, v0, v2
iget-object v1, p0, Lcom/facebook/appevents/AppEvent;->jsonObject:Lorg/json/JSONObject;
.line 273
invoke-virtual {v1}, Lorg/json/JSONObject;->toString()Ljava/lang/String;
move-result-object v1
const/4 v2, 0x2
aput-object v1, v0, v2
const-string v1, "\"%s\", implicit: %b, json: %s"
.line 269
invoke-static {v1, v0}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
move-result-object v0
return-object v0
.end method