PiiElider.smali

.class public Laegon/chrome/base/PiiElider;
.super Ljava/lang/Object;


# static fields
.field private static final APP_NAMESPACE:[Ljava/lang/String;

.field private static final CONSOLE_ELISION:Ljava/lang/String; = "[ELIDED:CONSOLE(0)] ELIDED CONSOLE MESSAGE"

.field private static final CONSOLE_MSG:Ljava/util/regex/Pattern;

.field private static final DOMAIN_NAME:Ljava/util/regex/Pattern;

.field private static final EMAIL_ELISION:Ljava/lang/String; = "XXX@EMAIL.ELIDED"

.field private static final GOOD_GTLD_CHAR:Ljava/lang/String; = "a-zA-Z\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef"

.field private static final GOOD_IRI_CHAR:Ljava/lang/String; = "a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef"

.field private static final GTLD:Ljava/lang/String; = "[a-zA-Z\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef]{2,63}"

.field private static final HOST_NAME:Ljava/lang/String; = "([a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef]([a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef\\-]{0,61}[a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef]){0,1}\\.)+[a-zA-Z\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef]{2,63}"

.field private static final IP_ADDRESS:Ljava/util/regex/Pattern;

.field private static final IP_ELISION:Ljava/lang/String; = "1.2.3.4"

.field private static final IRI:Ljava/lang/String; = "[a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef]([a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef\\-]{0,61}[a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef]){0,1}"

.field private static final LIKELY_EXCEPTION_LOG:Ljava/util/regex/Pattern;

.field private static final MAC_ADDRESS:Ljava/util/regex/Pattern;

.field private static final MAC_ELISION:Ljava/lang/String; = "01:23:45:67:89:AB"

.field private static final SYSTEM_NAMESPACE:[Ljava/lang/String;

.field private static final URL_ELISION:Ljava/lang/String; = "HTTP://WEBADDRESS.ELIDED"

.field private static final WEB_URL:Ljava/util/regex/Pattern;


# direct methods
.method static constructor <clinit>()V
    .registers 5

    const/4 v4, 0x2

    const/4 v3, 0x1

    const/4 v2, 0x0

    const-string v0, "((25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9])\\.(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[0-9]))"

    invoke-static {v0}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;

    move-result-object v0

    sput-object v0, Laegon/chrome/base/PiiElider;->IP_ADDRESS:Ljava/util/regex/Pattern;

    new-instance v0, Ljava/lang/StringBuilder;

    invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V

    const-string v1, "(([a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef]([a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef\\-]{0,61}[a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef]){0,1}\\.)+[a-zA-Z\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef]{2,63}|"

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    sget-object v1, Laegon/chrome/base/PiiElider;->IP_ADDRESS:Ljava/util/regex/Pattern;

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v0

    const-string v1, ")"

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-static {v0}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;

    move-result-object v0

    sput-object v0, Laegon/chrome/base/PiiElider;->DOMAIN_NAME:Ljava/util/regex/Pattern;

    const-string v0, "\\sat\\sorg\\.chromium\\.[^ ]+."

    invoke-static {v0}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;

    move-result-object v0

    sput-object v0, Laegon/chrome/base/PiiElider;->LIKELY_EXCEPTION_LOG:Ljava/util/regex/Pattern;

    new-instance v0, Ljava/lang/StringBuilder;

    invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V

    const-string v1, "(?:\\b|^)((?:(http|https|Http|Https|rtsp|Rtsp):\\/\\/(?:(?:[a-zA-Z0-9\\$\\-\\_\\.\\+\\!\\*\\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-fA-F0-9]{2})){1,64}(?:\\:(?:[a-zA-Z0-9\\$\\-\\_\\.\\+\\!\\*\\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-fA-F0-9]{2})){1,25})?\\@)?)?(?:"

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    sget-object v1, Laegon/chrome/base/PiiElider;->DOMAIN_NAME:Ljava/util/regex/Pattern;

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v0

    const-string v1, ")(?:\\:\\d{1,5})?)(\\/(?:(?:["

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    const-string v1, "a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef"

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    const-string v1, "\\;\\/\\?\\:\\@\\&\\=\\#\\~\\-\\.\\+\\!\\*\\\'\\(\\)\\,\\_])|(?:\\%[a-fA-F0-9]{2}))*)?(?:\\b|$)"

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-static {v0}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;

    move-result-object v0

    sput-object v0, Laegon/chrome/base/PiiElider;->WEB_URL:Ljava/util/regex/Pattern;

    const-string v0, "([0-9a-fA-F]{2}[-:]+){5}[0-9a-fA-F]{2}"

    invoke-static {v0}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;

    move-result-object v0

    sput-object v0, Laegon/chrome/base/PiiElider;->MAC_ADDRESS:Ljava/util/regex/Pattern;

    const-string v0, "\\[\\w*:CONSOLE.*\\].*"

    invoke-static {v0}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;

    move-result-object v0

    sput-object v0, Laegon/chrome/base/PiiElider;->CONSOLE_MSG:Ljava/util/regex/Pattern;

    new-array v0, v4, [Ljava/lang/String;

    const-string v1, "aegon.chrome."

    aput-object v1, v0, v2

    const-string v1, "com.google."

    aput-object v1, v0, v3

    sput-object v0, Laegon/chrome/base/PiiElider;->APP_NAMESPACE:[Ljava/lang/String;

    const/16 v0, 0x33

    new-array v0, v0, [Ljava/lang/String;

    const-string v1, "android.accessibilityservice"

    aput-object v1, v0, v2

    const-string v1, "android.accounts"

    aput-object v1, v0, v3

    const-string v1, "android.animation"

    aput-object v1, v0, v4

    const/4 v1, 0x3

    const-string v2, "android.annotation"

    aput-object v2, v0, v1

    const/4 v1, 0x4

    const-string v2, "android.app"

    aput-object v2, v0, v1

    const/4 v1, 0x5

    const-string v2, "android.appwidget"

    aput-object v2, v0, v1

    const/4 v1, 0x6

    const-string v2, "android.bluetooth"

    aput-object v2, v0, v1

    const/4 v1, 0x7

    const-string v2, "android.content"

    aput-object v2, v0, v1

    const/16 v1, 0x8

    const-string v2, "android.database"

    aput-object v2, v0, v1

    const/16 v1, 0x9

    const-string v2, "android.databinding"

    aput-object v2, v0, v1

    const/16 v1, 0xa

    const-string v2, "android.drm"

    aput-object v2, v0, v1

    const/16 v1, 0xb

    const-string v2, "android.gesture"

    aput-object v2, v0, v1

    const/16 v1, 0xc

    const-string v2, "android.graphics"

    aput-object v2, v0, v1

    const/16 v1, 0xd

    const-string v2, "android.hardware"

    aput-object v2, v0, v1

    const/16 v1, 0xe

    const-string v2, "android.inputmethodservice"

    aput-object v2, v0, v1

    const/16 v1, 0xf

    const-string v2, "android.location"

    aput-object v2, v0, v1

    const/16 v1, 0x10

    const-string v2, "android.media"

    aput-object v2, v0, v1

    const/16 v1, 0x11

    const-string v2, "android.mtp"

    aput-object v2, v0, v1

    const/16 v1, 0x12

    const-string v2, "android.net"

    aput-object v2, v0, v1

    const/16 v1, 0x13

    const-string v2, "android.nfc"

    aput-object v2, v0, v1

    const/16 v1, 0x14

    const-string v2, "android.opengl"

    aput-object v2, v0, v1

    const/16 v1, 0x15

    const-string v2, "android.os"

    aput-object v2, v0, v1

    const/16 v1, 0x16

    const-string v2, "android.preference"

    aput-object v2, v0, v1

    const/16 v1, 0x17

    const-string v2, "android.print"

    aput-object v2, v0, v1

    const/16 v1, 0x18

    const-string v2, "android.printservice"

    aput-object v2, v0, v1

    const/16 v1, 0x19

    const-string v2, "android.provider"

    aput-object v2, v0, v1

    const/16 v1, 0x1a

    const-string v2, "android.renderscript"

    aput-object v2, v0, v1

    const/16 v1, 0x1b

    const-string v2, "android.sax"

    aput-object v2, v0, v1

    const/16 v1, 0x1c

    const-string v2, "android.security"

    aput-object v2, v0, v1

    const/16 v1, 0x1d

    const-string v2, "android.service"

    aput-object v2, v0, v1

    const/16 v1, 0x1e

    const-string v2, "android.speech"

    aput-object v2, v0, v1

    const/16 v1, 0x1f

    const-string v2, "android.support"

    aput-object v2, v0, v1

    const/16 v1, 0x20

    const-string v2, "android.system"

    aput-object v2, v0, v1

    const/16 v1, 0x21

    const-string v2, "android.telecom"

    aput-object v2, v0, v1

    const/16 v1, 0x22

    const-string v2, "android.telephony"

    aput-object v2, v0, v1

    const/16 v1, 0x23

    const-string v2, "android.test"

    aput-object v2, v0, v1

    const/16 v1, 0x24

    const-string v2, "android.text"

    aput-object v2, v0, v1

    const/16 v1, 0x25

    const-string v2, "android.transition"

    aput-object v2, v0, v1

    const/16 v1, 0x26

    const-string v2, "android.util"

    aput-object v2, v0, v1

    const/16 v1, 0x27

    const-string v2, "android.view"

    aput-object v2, v0, v1

    const/16 v1, 0x28

    const-string v2, "android.webkit"

    aput-object v2, v0, v1

    const/16 v1, 0x29

    const-string v2, "android.widget"

    aput-object v2, v0, v1

    const/16 v1, 0x2a

    const-string v2, "com.android."

    aput-object v2, v0, v1

    const/16 v1, 0x2b

    const-string v2, "dalvik."

    aput-object v2, v0, v1

    const/16 v1, 0x2c

    const-string v2, "java."

    aput-object v2, v0, v1

    const/16 v1, 0x2d

    const-string v2, "javax."

    aput-object v2, v0, v1

    const/16 v1, 0x2e

    const-string v2, "org.apache."

    aput-object v2, v0, v1

    const/16 v1, 0x2f

    const-string v2, "org.json."

    aput-object v2, v0, v1

    const/16 v1, 0x30

    const-string v2, "org.w3c.dom."

    aput-object v2, v0, v1

    const/16 v1, 0x31

    const-string v2, "org.xml."

    aput-object v2, v0, v1

    const/16 v1, 0x32

    const-string v2, "org.xmlpull."

    aput-object v2, v0, v1

    sput-object v0, Laegon/chrome/base/PiiElider;->SYSTEM_NAMESPACE:[Ljava/lang/String;

    return-void
.end method

.method public constructor <init>()V
    .registers 1

    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    return-void
.end method

.method public static elideConsole(Ljava/lang/String;)Ljava/lang/String;
    .registers 3

    sget-object v0, Laegon/chrome/base/PiiElider;->CONSOLE_MSG:Ljava/util/regex/Pattern;

    invoke-virtual {v0, p0}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;

    move-result-object v0

    const-string v1, "[ELIDED:CONSOLE(0)] ELIDED CONSOLE MESSAGE"

    invoke-virtual {v0, v1}, Ljava/util/regex/Matcher;->replaceAll(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public static elideEmail(Ljava/lang/String;)Ljava/lang/String;
    .registers 3

    sget-object v0, Landroid/util/Patterns;->EMAIL_ADDRESS:Ljava/util/regex/Pattern;

    invoke-virtual {v0, p0}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;

    move-result-object v0

    const-string v1, "XXX@EMAIL.ELIDED"

    invoke-virtual {v0, v1}, Ljava/util/regex/Matcher;->replaceAll(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public static elideIp(Ljava/lang/String;)Ljava/lang/String;
    .registers 3

    sget-object v0, Landroid/util/Patterns;->IP_ADDRESS:Ljava/util/regex/Pattern;

    invoke-virtual {v0, p0}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;

    move-result-object v0

    const-string v1, "1.2.3.4"

    invoke-virtual {v0, v1}, Ljava/util/regex/Matcher;->replaceAll(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public static elideMac(Ljava/lang/String;)Ljava/lang/String;
    .registers 3

    sget-object v0, Laegon/chrome/base/PiiElider;->MAC_ADDRESS:Ljava/util/regex/Pattern;

    invoke-virtual {v0, p0}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;

    move-result-object v0

    const-string v1, "01:23:45:67:89:AB"

    invoke-virtual {v0, v1}, Ljava/util/regex/Matcher;->replaceAll(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public static elideUrl(Ljava/lang/String;)Ljava/lang/String;
    .registers 7

    sget-object v0, Laegon/chrome/base/PiiElider;->LIKELY_EXCEPTION_LOG:Ljava/util/regex/Pattern;

    invoke-virtual {v0, p0}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;

    move-result-object v0

    invoke-virtual {v0}, Ljava/util/regex/Matcher;->find()Z

    move-result v0

    if-eqz v0, :cond_d

    :goto_c
    return-object p0

    :cond_d
    new-instance v2, Ljava/lang/StringBuilder;

    invoke-direct {v2, p0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    sget-object v0, Laegon/chrome/base/PiiElider;->WEB_URL:Ljava/util/regex/Pattern;

    invoke-virtual {v0, v2}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;

    move-result-object v1

    const/4 v0, 0x0

    :cond_19
    :goto_19
    invoke-virtual {v1, v0}, Ljava/util/regex/Matcher;->find(I)Z

    move-result v0

    if-eqz v0, :cond_4a

    invoke-virtual {v1}, Ljava/util/regex/Matcher;->start()I

    move-result v3

    invoke-virtual {v1}, Ljava/util/regex/Matcher;->end()I

    move-result v0

    invoke-virtual {v2, v3, v0}, Ljava/lang/StringBuilder;->substring(II)Ljava/lang/String;

    move-result-object v4

    invoke-static {v4}, Laegon/chrome/base/PiiElider;->likelyToBeAppNamespace(Ljava/lang/String;)Z

    move-result v5

    if-nez v5, :cond_19

    invoke-static {v4}, Laegon/chrome/base/PiiElider;->likelyToBeSystemNamespace(Ljava/lang/String;)Z

    move-result v4

    if-nez v4, :cond_19

    const-string v1, "HTTP://WEBADDRESS.ELIDED"

    invoke-virtual {v2, v3, v0, v1}, Ljava/lang/StringBuilder;->replace(IILjava/lang/String;)Ljava/lang/StringBuilder;

    const-string v0, "HTTP://WEBADDRESS.ELIDED"

    invoke-virtual {v0}, Ljava/lang/String;->length()I

    move-result v0

    add-int/2addr v0, v3

    sget-object v1, Laegon/chrome/base/PiiElider;->WEB_URL:Ljava/util/regex/Pattern;

    invoke-virtual {v1, v2}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;

    move-result-object v1

    goto :goto_19

    :cond_4a
    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p0

    goto :goto_c
.end method

.method private static likelyToBeAppNamespace(Ljava/lang/String;)Z
    .registers 6

    const/4 v0, 0x0

    sget-object v2, Laegon/chrome/base/PiiElider;->APP_NAMESPACE:[Ljava/lang/String;

    array-length v3, v2

    move v1, v0

    :goto_5
    if-ge v1, v3, :cond_10

    aget-object v4, v2, v1

    invoke-virtual {p0, v4}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v4

    if-eqz v4, :cond_11

    const/4 v0, 0x1

    :cond_10
    return v0

    :cond_11
    add-int/lit8 v1, v1, 0x1

    goto :goto_5
.end method

.method private static likelyToBeSystemNamespace(Ljava/lang/String;)Z
    .registers 6

    const/4 v0, 0x0

    sget-object v2, Laegon/chrome/base/PiiElider;->SYSTEM_NAMESPACE:[Ljava/lang/String;

    array-length v3, v2

    move v1, v0

    :goto_5
    if-ge v1, v3, :cond_10

    aget-object v4, v2, v1

    invoke-virtual {p0, v4}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v4

    if-eqz v4, :cond_11

    const/4 v0, 0x1

    :cond_10
    return v0

    :cond_11
    add-int/lit8 v1, v1, 0x1

    goto :goto_5
.end method

.method public static sanitizeStacktrace(Ljava/lang/String;)Ljava/lang/String;
    .registers 5
    .annotation build Laegon/chrome/base/annotations/UsedByReflection;
        value = "jni_android.cc"
    .end annotation

    const/4 v2, 0x0

    const-string v0, "\\n"

    invoke-virtual {p0, v0}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;

    move-result-object v1

    aget-object v0, v1, v2

    invoke-static {v0}, Laegon/chrome/base/PiiElider;->elideUrl(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    aput-object v0, v1, v2

    const/4 v0, 0x1

    :goto_10
    array-length v2, v1

    if-ge v0, v2, :cond_28

    aget-object v2, v1, v0

    const-string v3, "Caused by:"

    invoke-virtual {v2, v3}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v2

    if-eqz v2, :cond_25

    aget-object v2, v1, v0

    invoke-static {v2}, Laegon/chrome/base/PiiElider;->elideUrl(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v2

    aput-object v2, v1, v0

    :cond_25
    add-int/lit8 v0, v0, 0x1

    goto :goto_10

    :cond_28
    const-string v0, "\n"

    invoke-static {v0, v1}, Landroid/text/TextUtils;->join(Ljava/lang/CharSequence;[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method