AndroidNetworkLibrary.smali

.class Laegon/chrome/net/AndroidNetworkLibrary;
.super Ljava/lang/Object;


# annotations
.annotation build Laegon/chrome/base/annotations/MainDex;
.end annotation

.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Laegon/chrome/net/AndroidNetworkLibrary$SocketFd;,
        Laegon/chrome/net/AndroidNetworkLibrary$SetFileDescriptor;,
        Laegon/chrome/net/AndroidNetworkLibrary$NetworkSecurityPolicyProxy;
    }
.end annotation


# static fields
.field private static final TAG:Ljava/lang/String; = "AndroidNetworkLibrary"

.field private static final sAutoDohDotServers:Ljava/util/Set;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/Set",
            "<",
            "Ljava/lang/String;",
            ">;"
        }
    .end annotation
.end field

.field private static final sAutoDohServers:Ljava/util/Set;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/Set",
            "<",
            "Ljava/net/InetAddress;",
            ">;"
        }
    .end annotation
.end field

.field private static sHaveAccessNetworkState:Ljava/lang/Boolean;

.field private static sHaveAccessWifiState:Ljava/lang/Boolean;


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

    new-instance v0, Ljava/util/HashSet;

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

    sput-object v0, Laegon/chrome/net/AndroidNetworkLibrary;->sAutoDohServers:Ljava/util/Set;

    new-instance v0, Ljava/util/HashSet;

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

    sput-object v0, Laegon/chrome/net/AndroidNetworkLibrary;->sAutoDohDotServers:Ljava/util/Set;

    :try_start_e
    sget-object v0, Laegon/chrome/net/AndroidNetworkLibrary;->sAutoDohServers:Ljava/util/Set;

    const-string v1, "8.8.8.8"

    invoke-static {v1}, Ljava/net/InetAddress;->getByName(Ljava/lang/String;)Ljava/net/InetAddress;

    move-result-object v1

    invoke-interface {v0, v1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z

    sget-object v0, Laegon/chrome/net/AndroidNetworkLibrary;->sAutoDohServers:Ljava/util/Set;

    const-string v1, "8.8.4.4"

    invoke-static {v1}, Ljava/net/InetAddress;->getByName(Ljava/lang/String;)Ljava/net/InetAddress;

    move-result-object v1

    invoke-interface {v0, v1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z

    sget-object v0, Laegon/chrome/net/AndroidNetworkLibrary;->sAutoDohServers:Ljava/util/Set;

    const-string v1, "2001:4860:4860::8888"

    invoke-static {v1}, Ljava/net/InetAddress;->getByName(Ljava/lang/String;)Ljava/net/InetAddress;

    move-result-object v1

    invoke-interface {v0, v1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z

    sget-object v0, Laegon/chrome/net/AndroidNetworkLibrary;->sAutoDohServers:Ljava/util/Set;

    const-string v1, "2001:4860:4860::8844"

    invoke-static {v1}, Ljava/net/InetAddress;->getByName(Ljava/lang/String;)Ljava/net/InetAddress;

    move-result-object v1

    invoke-interface {v0, v1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z

    sget-object v0, Laegon/chrome/net/AndroidNetworkLibrary;->sAutoDohServers:Ljava/util/Set;

    const-string v1, "1.1.1.1"

    invoke-static {v1}, Ljava/net/InetAddress;->getByName(Ljava/lang/String;)Ljava/net/InetAddress;

    move-result-object v1

    invoke-interface {v0, v1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z

    sget-object v0, Laegon/chrome/net/AndroidNetworkLibrary;->sAutoDohServers:Ljava/util/Set;

    const-string v1, "1.0.0.1"

    invoke-static {v1}, Ljava/net/InetAddress;->getByName(Ljava/lang/String;)Ljava/net/InetAddress;

    move-result-object v1

    invoke-interface {v0, v1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z

    sget-object v0, Laegon/chrome/net/AndroidNetworkLibrary;->sAutoDohServers:Ljava/util/Set;

    const-string v1, "2606:4700:4700::1111"

    invoke-static {v1}, Ljava/net/InetAddress;->getByName(Ljava/lang/String;)Ljava/net/InetAddress;

    move-result-object v1

    invoke-interface {v0, v1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z

    sget-object v0, Laegon/chrome/net/AndroidNetworkLibrary;->sAutoDohServers:Ljava/util/Set;

    const-string v1, "2606:4700:4700::1001"

    invoke-static {v1}, Ljava/net/InetAddress;->getByName(Ljava/lang/String;)Ljava/net/InetAddress;

    move-result-object v1

    invoke-interface {v0, v1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z

    sget-object v0, Laegon/chrome/net/AndroidNetworkLibrary;->sAutoDohServers:Ljava/util/Set;

    const-string v1, "9.9.9.9"

    invoke-static {v1}, Ljava/net/InetAddress;->getByName(Ljava/lang/String;)Ljava/net/InetAddress;

    move-result-object v1

    invoke-interface {v0, v1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z

    sget-object v0, Laegon/chrome/net/AndroidNetworkLibrary;->sAutoDohServers:Ljava/util/Set;

    const-string v1, "149.112.112.112"

    invoke-static {v1}, Ljava/net/InetAddress;->getByName(Ljava/lang/String;)Ljava/net/InetAddress;

    move-result-object v1

    invoke-interface {v0, v1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z

    sget-object v0, Laegon/chrome/net/AndroidNetworkLibrary;->sAutoDohServers:Ljava/util/Set;

    const-string v1, "2620:fe::fe"

    invoke-static {v1}, Ljava/net/InetAddress;->getByName(Ljava/lang/String;)Ljava/net/InetAddress;

    move-result-object v1

    invoke-interface {v0, v1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z

    sget-object v0, Laegon/chrome/net/AndroidNetworkLibrary;->sAutoDohServers:Ljava/util/Set;

    const-string v1, "2620:fe::9"

    invoke-static {v1}, Ljava/net/InetAddress;->getByName(Ljava/lang/String;)Ljava/net/InetAddress;

    move-result-object v1

    invoke-interface {v0, v1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
    :try_end_92
    .catch Ljava/net/UnknownHostException; {:try_start_e .. :try_end_92} :catch_af

    sget-object v0, Laegon/chrome/net/AndroidNetworkLibrary;->sAutoDohDotServers:Ljava/util/Set;

    const-string v1, "dns.google"

    invoke-interface {v0, v1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z

    sget-object v0, Laegon/chrome/net/AndroidNetworkLibrary;->sAutoDohDotServers:Ljava/util/Set;

    const-string v1, "1dot1dot1dot1.cloudflare-dns.com"

    invoke-interface {v0, v1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z

    sget-object v0, Laegon/chrome/net/AndroidNetworkLibrary;->sAutoDohDotServers:Ljava/util/Set;

    const-string v1, "cloudflare-dns.com"

    invoke-interface {v0, v1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z

    sget-object v0, Laegon/chrome/net/AndroidNetworkLibrary;->sAutoDohDotServers:Ljava/util/Set;

    const-string v1, "dns.quad9.net"

    invoke-interface {v0, v1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z

    return-void

    :catch_af
    move-exception v0

    new-instance v1, Ljava/lang/RuntimeException;

    const-string v2, "Failed to parse IP addresses"

    invoke-direct {v1, v2, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V

    throw v1
.end method

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

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

    return-void
.end method

.method public static addTestRootCertificate([B)V
    .registers 1
    .annotation build Laegon/chrome/base/annotations/CalledByNativeUnchecked;
    .end annotation

    invoke-static {p0}, Laegon/chrome/net/X509Util;->addTestRootCertificate([B)V

    return-void
.end method

.method public static clearTestRootCertificates()V
    .registers 0
    .annotation build Laegon/chrome/base/annotations/CalledByNativeUnchecked;
    .end annotation

    invoke-static {}, Laegon/chrome/net/X509Util;->clearTestRootCertificates()V

    return-void
.end method

.method private static getDnsServers()[[B
    .registers 7
    .annotation build Laegon/chrome/base/annotations/CalledByNative;
    .end annotation

    .annotation build Landroid/annotation/TargetApi;
        value = 0x17
    .end annotation

    const/4 v1, 0x1

    const/4 v2, 0x0

    invoke-static {}, Laegon/chrome/net/AndroidNetworkLibrary;->haveAccessNetworkState()Z

    move-result v0

    if-nez v0, :cond_15

    filled-new-array {v2, v2}, [I

    move-result-object v0

    sget-object v1, Ljava/lang/Byte;->TYPE:Ljava/lang/Class;

    invoke-static {v1, v0}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;[I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, [[B

    :goto_14
    return-object v0

    :cond_15
    invoke-static {}, Laegon/chrome/base/ContextUtils;->getApplicationContext()Landroid/content/Context;

    move-result-object v0

    const-string v3, "connectivity"

    invoke-virtual {v0, v3}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/net/ConnectivityManager;

    if-nez v0, :cond_30

    filled-new-array {v2, v2}, [I

    move-result-object v0

    sget-object v1, Ljava/lang/Byte;->TYPE:Ljava/lang/Class;

    invoke-static {v1, v0}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;[I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, [[B

    goto :goto_14

    :cond_30
    invoke-static {v0}, Laegon/chrome/base/compat/ApiHelperForM;->getActiveNetwork(Landroid/net/ConnectivityManager;)Landroid/net/Network;

    move-result-object v3

    if-nez v3, :cond_43

    filled-new-array {v2, v2}, [I

    move-result-object v0

    sget-object v1, Ljava/lang/Byte;->TYPE:Ljava/lang/Class;

    invoke-static {v1, v0}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;[I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, [[B

    goto :goto_14

    :cond_43
    invoke-virtual {v0, v3}, Landroid/net/ConnectivityManager;->getLinkProperties(Landroid/net/Network;)Landroid/net/LinkProperties;

    move-result-object v3

    if-nez v3, :cond_56

    filled-new-array {v2, v2}, [I

    move-result-object v0

    sget-object v1, Ljava/lang/Byte;->TYPE:Ljava/lang/Class;

    invoke-static {v1, v0}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;[I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, [[B

    goto :goto_14

    :cond_56
    invoke-virtual {v3}, Landroid/net/LinkProperties;->getDnsServers()Ljava/util/List;

    move-result-object v4

    invoke-interface {v4}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v5

    :cond_5e
    invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_c9

    invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/net/InetAddress;

    sget-object v6, Laegon/chrome/net/AndroidNetworkLibrary;->sAutoDohServers:Ljava/util/Set;

    invoke-interface {v6, v0}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z

    move-result v0

    if-eqz v0, :cond_5e

    move v0, v1

    :goto_73
    invoke-static {v3}, Laegon/chrome/net/AndroidNetworkLibrary;->isPrivateDnsActive(Landroid/net/LinkProperties;)Z

    move-result v5

    if-eqz v5, :cond_a6

    invoke-static {v3}, Laegon/chrome/net/AndroidNetworkLibrary;->getPrivateDnsServerName(Landroid/net/LinkProperties;)Ljava/lang/String;

    move-result-object v3

    if-eqz v3, :cond_8b

    sget-object v0, Laegon/chrome/net/AndroidNetworkLibrary;->sAutoDohDotServers:Ljava/util/Set;

    sget-object v4, Ljava/util/Locale;->US:Ljava/util/Locale;

    invoke-virtual {v3, v4}, Ljava/lang/String;->toLowerCase(Ljava/util/Locale;)Ljava/lang/String;

    move-result-object v4

    invoke-interface {v0, v4}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z

    move-result v0

    :cond_8b
    const-string v4, "Net.DNS.Android.DotExplicit"

    if-eqz v3, :cond_90

    move v2, v1

    :cond_90
    invoke-static {v4, v2}, Laegon/chrome/base/metrics/RecordHistogram;->recordBooleanHistogram(Ljava/lang/String;Z)V

    const-string v2, "Net.DNS.Android.AutoDohPrivate"

    invoke-static {v2, v0}, Laegon/chrome/base/metrics/RecordHistogram;->recordBooleanHistogram(Ljava/lang/String;Z)V

    filled-new-array {v1, v1}, [I

    move-result-object v0

    sget-object v1, Ljava/lang/Byte;->TYPE:Ljava/lang/Class;

    invoke-static {v1, v0}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;[I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, [[B

    goto/16 :goto_14

    :cond_a6
    const-string v1, "Net.DNS.Android.AutoDohPublic"

    invoke-static {v1, v0}, Laegon/chrome/base/metrics/RecordHistogram;->recordBooleanHistogram(Ljava/lang/String;Z)V

    invoke-interface {v4}, Ljava/util/List;->size()I

    move-result v0

    new-array v1, v0, [[B

    :goto_b1
    invoke-interface {v4}, Ljava/util/List;->size()I

    move-result v0

    if-ge v2, v0, :cond_c6

    invoke-interface {v4, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/net/InetAddress;

    invoke-virtual {v0}, Ljava/net/InetAddress;->getAddress()[B

    move-result-object v0

    aput-object v0, v1, v2

    add-int/lit8 v2, v2, 0x1

    goto :goto_b1

    :cond_c6
    move-object v0, v1

    goto/16 :goto_14

    :cond_c9
    move v0, v2

    goto :goto_73
.end method

.method private static getIsCaptivePortal()Z
    .registers 3
    .annotation build Laegon/chrome/base/annotations/CalledByNative;
    .end annotation

    .annotation build Landroid/annotation/TargetApi;
        value = 0x17
    .end annotation

    const/4 v1, 0x0

    sget v0, Landroid/os/Build$VERSION;->SDK_INT:I

    const/16 v2, 0x17

    if-ge v0, v2, :cond_8

    :cond_7
    :goto_7
    return v1

    :cond_8
    invoke-static {}, Laegon/chrome/base/ContextUtils;->getApplicationContext()Landroid/content/Context;

    move-result-object v0

    const-string v2, "connectivity"

    invoke-virtual {v0, v2}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/net/ConnectivityManager;

    if-eqz v0, :cond_7

    invoke-static {v0}, Laegon/chrome/base/compat/ApiHelperForM;->getActiveNetwork(Landroid/net/ConnectivityManager;)Landroid/net/Network;

    move-result-object v2

    if-eqz v2, :cond_7

    invoke-virtual {v0, v2}, Landroid/net/ConnectivityManager;->getNetworkCapabilities(Landroid/net/Network;)Landroid/net/NetworkCapabilities;

    move-result-object v0

    if-eqz v0, :cond_2d

    const/16 v2, 0x11

    invoke-virtual {v0, v2}, Landroid/net/NetworkCapabilities;->hasCapability(I)Z

    move-result v0

    if-eqz v0, :cond_2d

    const/4 v0, 0x1

    :goto_2b
    move v1, v0

    goto :goto_7

    :cond_2d
    move v0, v1

    goto :goto_2b
.end method

.method private static getIsRoaming()Z
    .registers 2
    .annotation build Laegon/chrome/base/annotations/CalledByNative;
    .end annotation

    invoke-static {}, Laegon/chrome/base/ContextUtils;->getApplicationContext()Landroid/content/Context;

    move-result-object v0

    const-string v1, "connectivity"

    invoke-virtual {v0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/net/ConnectivityManager;

    invoke-virtual {v0}, Landroid/net/ConnectivityManager;->getActiveNetworkInfo()Landroid/net/NetworkInfo;

    move-result-object v0

    if-nez v0, :cond_14

    const/4 v0, 0x0

    :goto_13
    return v0

    :cond_14
    invoke-virtual {v0}, Landroid/net/NetworkInfo;->isRoaming()Z

    move-result v0

    goto :goto_13
.end method

.method public static getMimeTypeFromExtension(Ljava/lang/String;)Ljava/lang/String;
    .registers 3
    .annotation build Laegon/chrome/base/annotations/CalledByNative;
    .end annotation

    new-instance v0, Ljava/lang/StringBuilder;

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

    const-string v1, "foo."

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

    move-result-object v0

    invoke-virtual {v0, p0}, 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/net/URLConnection;->guessContentTypeFromName(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method private static getNetworkCountryIso()Ljava/lang/String;
    .registers 1
    .annotation build Laegon/chrome/base/annotations/CalledByNative;
    .end annotation

    invoke-static {}, Laegon/chrome/net/AndroidTelephonyManagerBridge;->getInstance()Laegon/chrome/net/AndroidTelephonyManagerBridge;

    move-result-object v0

    invoke-virtual {v0}, Laegon/chrome/net/AndroidTelephonyManagerBridge;->getNetworkCountryIso()Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method private static getNetworkOperator()Ljava/lang/String;
    .registers 1
    .annotation build Laegon/chrome/base/annotations/CalledByNative;
    .end annotation

    invoke-static {}, Laegon/chrome/net/AndroidTelephonyManagerBridge;->getInstance()Laegon/chrome/net/AndroidTelephonyManagerBridge;

    move-result-object v0

    invoke-virtual {v0}, Laegon/chrome/net/AndroidTelephonyManagerBridge;->getNetworkOperator()Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method private static getPrivateDnsServerName(Landroid/net/LinkProperties;)Ljava/lang/String;
    .registers 3

    sget v0, Landroid/os/Build$VERSION;->SDK_INT:I

    const/16 v1, 0x1c

    if-lt v0, v1, :cond_d

    if-eqz p0, :cond_d

    invoke-static {p0}, Laegon/chrome/base/compat/ApiHelperForP;->getPrivateDnsServerName(Landroid/net/LinkProperties;)Ljava/lang/String;

    move-result-object v0

    :goto_c
    return-object v0

    :cond_d
    const/4 v0, 0x0

    goto :goto_c
.end method

.method private static getSimOperator()Ljava/lang/String;
    .registers 1
    .annotation build Laegon/chrome/base/annotations/CalledByNative;
    .end annotation

    invoke-static {}, Laegon/chrome/net/AndroidTelephonyManagerBridge;->getInstance()Laegon/chrome/net/AndroidTelephonyManagerBridge;

    move-result-object v0

    invoke-virtual {v0}, Laegon/chrome/net/AndroidTelephonyManagerBridge;->getSimOperator()Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public static getWifiSSID()Ljava/lang/String;
    .registers 4
    .annotation build Laegon/chrome/base/annotations/CalledByNative;
    .end annotation

    const/4 v0, 0x0

    invoke-static {}, Laegon/chrome/net/AndroidNetworkLibrary;->haveAccessWifiState()Z

    move-result v1

    if-eqz v1, :cond_28

    invoke-static {}, Laegon/chrome/base/ContextUtils;->getApplicationContext()Landroid/content/Context;

    move-result-object v0

    const-string v1, "wifi"

    invoke-virtual {v0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/net/wifi/WifiManager;

    invoke-virtual {v0}, Landroid/net/wifi/WifiManager;->getConnectionInfo()Landroid/net/wifi/WifiInfo;

    move-result-object v0

    :cond_17
    :goto_17
    if-eqz v0, :cond_42

    invoke-virtual {v0}, Landroid/net/wifi/WifiInfo;->getSSID()Ljava/lang/String;

    move-result-object v0

    if-eqz v0, :cond_42

    const-string v1, "<unknown ssid>"

    invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v1

    if-nez v1, :cond_42

    :goto_27
    return-object v0

    :cond_28
    invoke-static {}, Laegon/chrome/base/ContextUtils;->getApplicationContext()Landroid/content/Context;

    move-result-object v1

    new-instance v2, Landroid/content/IntentFilter;

    const-string v3, "android.net.wifi.STATE_CHANGE"

    invoke-direct {v2, v3}, Landroid/content/IntentFilter;-><init>(Ljava/lang/String;)V

    invoke-virtual {v1, v0, v2}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;

    move-result-object v1

    if-eqz v1, :cond_17

    const-string v0, "wifiInfo"

    invoke-virtual {v1, v0}, Landroid/content/Intent;->getParcelableExtra(Ljava/lang/String;)Landroid/os/Parcelable;

    move-result-object v0

    check-cast v0, Landroid/net/wifi/WifiInfo;

    goto :goto_17

    :cond_42
    const-string v0, ""

    goto :goto_27
.end method

.method public static getWifiSignalLevel(I)I
    .registers 7
    .annotation build Laegon/chrome/base/annotations/CalledByNative;
    .end annotation

    const/high16 v5, -0x80000000

    const/4 v0, -0x1

    :try_start_3
    invoke-static {}, Laegon/chrome/base/ContextUtils;->getApplicationContext()Landroid/content/Context;

    move-result-object v1

    const/4 v2, 0x0

    new-instance v3, Landroid/content/IntentFilter;

    const-string v4, "android.net.wifi.RSSI_CHANGED"

    invoke-direct {v3, v4}, Landroid/content/IntentFilter;-><init>(Ljava/lang/String;)V

    invoke-virtual {v1, v2, v3}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;
    :try_end_12
    .catch Ljava/lang/IllegalArgumentException; {:try_start_3 .. :try_end_12} :catch_2a
    .catch Ljava/lang/Exception; {:try_start_3 .. :try_end_12} :catch_28

    move-result-object v1

    if-nez v1, :cond_16

    :cond_15
    :goto_15
    return v0

    :cond_16
    const-string v2, "newRssi"

    invoke-virtual {v1, v2, v5}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I

    move-result v1

    if-eq v1, v5, :cond_15

    invoke-static {v1, p0}, Landroid/net/wifi/WifiManager;->calculateSignalLevel(II)I

    move-result v1

    if-ltz v1, :cond_15

    if-ge v1, p0, :cond_15

    move v0, v1

    goto :goto_15

    :catch_28
    move-exception v1

    goto :goto_15

    :catch_2a
    move-exception v1

    goto :goto_15
.end method

.method private static haveAccessNetworkState()Z
    .registers 4

    sget-object v0, Laegon/chrome/net/AndroidNetworkLibrary;->sHaveAccessNetworkState:Ljava/lang/Boolean;

    if-nez v0, :cond_1f

    invoke-static {}, Laegon/chrome/base/ContextUtils;->getApplicationContext()Landroid/content/Context;

    move-result-object v0

    const-string v1, "android.permission.ACCESS_NETWORK_STATE"

    invoke-static {}, Landroid/os/Process;->myPid()I

    move-result v2

    invoke-static {}, Landroid/os/Process;->myUid()I

    move-result v3

    invoke-static {v0, v1, v2, v3}, Laegon/chrome/base/ApiCompatibilityUtils;->checkPermission(Landroid/content/Context;Ljava/lang/String;II)I

    move-result v0

    if-nez v0, :cond_26

    const/4 v0, 0x1

    :goto_19
    invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;

    move-result-object v0

    sput-object v0, Laegon/chrome/net/AndroidNetworkLibrary;->sHaveAccessNetworkState:Ljava/lang/Boolean;

    :cond_1f
    sget-object v0, Laegon/chrome/net/AndroidNetworkLibrary;->sHaveAccessNetworkState:Ljava/lang/Boolean;

    invoke-virtual {v0}, Ljava/lang/Boolean;->booleanValue()Z

    move-result v0

    return v0

    :cond_26
    const/4 v0, 0x0

    goto :goto_19
.end method

.method private static haveAccessWifiState()Z
    .registers 4

    sget-object v0, Laegon/chrome/net/AndroidNetworkLibrary;->sHaveAccessWifiState:Ljava/lang/Boolean;

    if-nez v0, :cond_1f

    invoke-static {}, Laegon/chrome/base/ContextUtils;->getApplicationContext()Landroid/content/Context;

    move-result-object v0

    const-string v1, "android.permission.ACCESS_WIFI_STATE"

    invoke-static {}, Landroid/os/Process;->myPid()I

    move-result v2

    invoke-static {}, Landroid/os/Process;->myUid()I

    move-result v3

    invoke-static {v0, v1, v2, v3}, Laegon/chrome/base/ApiCompatibilityUtils;->checkPermission(Landroid/content/Context;Ljava/lang/String;II)I

    move-result v0

    if-nez v0, :cond_26

    const/4 v0, 0x1

    :goto_19
    invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;

    move-result-object v0

    sput-object v0, Laegon/chrome/net/AndroidNetworkLibrary;->sHaveAccessWifiState:Ljava/lang/Boolean;

    :cond_1f
    sget-object v0, Laegon/chrome/net/AndroidNetworkLibrary;->sHaveAccessWifiState:Ljava/lang/Boolean;

    invoke-virtual {v0}, Ljava/lang/Boolean;->booleanValue()Z

    move-result v0

    return v0

    :cond_26
    const/4 v0, 0x0

    goto :goto_19
.end method

.method public static haveOnlyLoopbackAddresses()Z
    .registers 5
    .annotation build Laegon/chrome/base/annotations/CalledByNative;
    .end annotation

    const/4 v1, 0x0

    :try_start_1
    invoke-static {}, Ljava/net/NetworkInterface;->getNetworkInterfaces()Ljava/util/Enumeration;
    :try_end_4
    .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_4} :catch_9

    move-result-object v2

    if-nez v2, :cond_25

    move v0, v1

    :goto_8
    return v0

    :catch_9
    move-exception v0

    const-string v2, "AndroidNetworkLibrary"

    new-instance v3, Ljava/lang/StringBuilder;

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

    const-string v4, "could not get network interfaces: "

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

    move-result-object v3

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

    move-result-object v0

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

    move-result-object v0

    invoke-static {v2, v0}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I

    move v0, v1

    goto :goto_8

    :catch_24
    move-exception v0

    :cond_25
    invoke-interface {v2}, Ljava/util/Enumeration;->hasMoreElements()Z

    move-result v0

    if-eqz v0, :cond_3f

    invoke-interface {v2}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/net/NetworkInterface;

    :try_start_31
    invoke-virtual {v0}, Ljava/net/NetworkInterface;->isUp()Z

    move-result v3

    if-eqz v3, :cond_25

    invoke-virtual {v0}, Ljava/net/NetworkInterface;->isLoopback()Z
    :try_end_3a
    .catch Ljava/net/SocketException; {:try_start_31 .. :try_end_3a} :catch_24

    move-result v0

    if-nez v0, :cond_25

    move v0, v1

    goto :goto_8

    :cond_3f
    const/4 v0, 0x1

    goto :goto_8
.end method

.method private static isCleartextPermitted(Ljava/lang/String;)Z
    .registers 2
    .annotation build Laegon/chrome/base/annotations/CalledByNative;
    .end annotation

    :try_start_0
    invoke-static {}, Laegon/chrome/net/AndroidNetworkLibrary$NetworkSecurityPolicyProxy;->getInstance()Laegon/chrome/net/AndroidNetworkLibrary$NetworkSecurityPolicyProxy;

    move-result-object v0

    invoke-virtual {v0, p0}, Laegon/chrome/net/AndroidNetworkLibrary$NetworkSecurityPolicyProxy;->isCleartextTrafficPermitted(Ljava/lang/String;)Z
    :try_end_7
    .catch Ljava/lang/IllegalArgumentException; {:try_start_0 .. :try_end_7} :catch_9

    move-result v0

    :goto_8
    return v0

    :catch_9
    move-exception v0

    invoke-static {}, Laegon/chrome/net/AndroidNetworkLibrary$NetworkSecurityPolicyProxy;->getInstance()Laegon/chrome/net/AndroidNetworkLibrary$NetworkSecurityPolicyProxy;

    move-result-object v0

    invoke-virtual {v0}, Laegon/chrome/net/AndroidNetworkLibrary$NetworkSecurityPolicyProxy;->isCleartextTrafficPermitted()Z

    move-result v0

    goto :goto_8
.end method

.method static isPrivateDnsActive(Landroid/net/LinkProperties;)Z
    .registers 3

    sget v0, Landroid/os/Build$VERSION;->SDK_INT:I

    const/16 v1, 0x1c

    if-lt v0, v1, :cond_d

    if-eqz p0, :cond_d

    invoke-static {p0}, Laegon/chrome/base/compat/ApiHelperForP;->isPrivateDnsActive(Landroid/net/LinkProperties;)Z

    move-result v0

    :goto_c
    return v0

    :cond_d
    const/4 v0, 0x0

    goto :goto_c
.end method

.method private static tagSocket(III)V
    .registers 8
    .annotation build Laegon/chrome/base/annotations/CalledByNative;
    .end annotation

    const/4 v4, -0x1

    invoke-static {}, Landroid/net/TrafficStats;->getThreadStatsTag()I

    move-result v2

    if-eq p2, v2, :cond_a

    invoke-static {p2}, Landroid/net/TrafficStats;->setThreadStatsTag(I)V

    :cond_a
    if-eq p1, v4, :cond_f

    invoke-static {p1}, Laegon/chrome/net/ThreadStatsUid;->set(I)V

    :cond_f
    sget v0, Landroid/os/Build$VERSION;->SDK_INT:I

    const/16 v1, 0x17

    if-ge v0, v1, :cond_35

    const/4 v1, 0x0

    invoke-static {p0}, Laegon/chrome/net/AndroidNetworkLibrary$SetFileDescriptor;->createWithFd(I)Ljava/io/FileDescriptor;

    move-result-object v0

    :goto_1a
    new-instance v3, Laegon/chrome/net/AndroidNetworkLibrary$SocketFd;

    invoke-direct {v3, v0}, Laegon/chrome/net/AndroidNetworkLibrary$SocketFd;-><init>(Ljava/io/FileDescriptor;)V

    invoke-static {v3}, Landroid/net/TrafficStats;->tagSocket(Ljava/net/Socket;)V

    invoke-virtual {v3}, Ljava/net/Socket;->close()V

    if-eqz v1, :cond_2a

    invoke-virtual {v1}, Landroid/os/ParcelFileDescriptor;->detachFd()I

    :cond_2a
    if-eq p2, v2, :cond_2f

    invoke-static {v2}, Landroid/net/TrafficStats;->setThreadStatsTag(I)V

    :cond_2f
    if-eq p1, v4, :cond_34

    invoke-static {}, Laegon/chrome/net/ThreadStatsUid;->clear()V

    :cond_34
    return-void

    :cond_35
    invoke-static {p0}, Landroid/os/ParcelFileDescriptor;->adoptFd(I)Landroid/os/ParcelFileDescriptor;

    move-result-object v1

    invoke-virtual {v1}, Landroid/os/ParcelFileDescriptor;->getFileDescriptor()Ljava/io/FileDescriptor;

    move-result-object v0

    goto :goto_1a
.end method

.method public static verifyServerCertificates([[BLjava/lang/String;Ljava/lang/String;)Laegon/chrome/net/AndroidCertVerifyResult;
    .registers 5
    .annotation build Laegon/chrome/base/annotations/CalledByNative;
    .end annotation

    const/4 v1, -0x1

    :try_start_1
    invoke-static {p0, p1, p2}, Laegon/chrome/net/X509Util;->verifyServerCertificates([[BLjava/lang/String;Ljava/lang/String;)Laegon/chrome/net/AndroidCertVerifyResult;
    :try_end_4
    .catch Ljava/security/KeyStoreException; {:try_start_1 .. :try_end_4} :catch_6
    .catch Ljava/security/NoSuchAlgorithmException; {:try_start_1 .. :try_end_4} :catch_d
    .catch Ljava/lang/IllegalArgumentException; {:try_start_1 .. :try_end_4} :catch_14
    .catch Ljava/lang/Throwable; {:try_start_1 .. :try_end_4} :catch_1b

    move-result-object v0

    :goto_5
    return-object v0

    :catch_6
    move-exception v0

    new-instance v0, Laegon/chrome/net/AndroidCertVerifyResult;

    invoke-direct {v0, v1}, Laegon/chrome/net/AndroidCertVerifyResult;-><init>(I)V

    goto :goto_5

    :catch_d
    move-exception v0

    new-instance v0, Laegon/chrome/net/AndroidCertVerifyResult;

    invoke-direct {v0, v1}, Laegon/chrome/net/AndroidCertVerifyResult;-><init>(I)V

    goto :goto_5

    :catch_14
    move-exception v0

    new-instance v0, Laegon/chrome/net/AndroidCertVerifyResult;

    invoke-direct {v0, v1}, Laegon/chrome/net/AndroidCertVerifyResult;-><init>(I)V

    goto :goto_5

    :catch_1b
    move-exception v0

    new-instance v0, Laegon/chrome/net/AndroidCertVerifyResult;

    invoke-direct {v0, v1}, Laegon/chrome/net/AndroidCertVerifyResult;-><init>(I)V

    goto :goto_5
.end method