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