NetworkChangeNotifierAutoDetect.smali

.class public Laegon/chrome/net/NetworkChangeNotifierAutoDetect;
.super Landroid/content/BroadcastReceiver;


# annotations
.annotation build Landroid/annotation/SuppressLint;
    value = {
        "NewApi"
    }
.end annotation

.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkConnectivityIntentFilter;,
        Laegon/chrome/net/NetworkChangeNotifierAutoDetect$Observer;,
        Laegon/chrome/net/NetworkChangeNotifierAutoDetect$RegistrationPolicy;,
        Laegon/chrome/net/NetworkChangeNotifierAutoDetect$MyNetworkCallback;,
        Laegon/chrome/net/NetworkChangeNotifierAutoDetect$DefaultNetworkCallback;,
        Laegon/chrome/net/NetworkChangeNotifierAutoDetect$WifiManagerDelegate;,
        Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;,
        Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkState;
    }
.end annotation


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

.field private static final UNKNOWN_LINK_SPEED:I = -0x1


# instance fields
.field private mConnectivityManagerDelegate:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;

.field private mDefaultNetworkCallback:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$DefaultNetworkCallback;

.field private final mHandler:Landroid/os/Handler;

.field private mIgnoreNextBroadcast:Z

.field private final mIntentFilter:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkConnectivityIntentFilter;

.field private final mLooper:Landroid/os/Looper;

.field private mNetworkCallback:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$MyNetworkCallback;

.field private mNetworkRequest:Landroid/net/NetworkRequest;

.field private mNetworkState:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkState;

.field private final mObserver:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$Observer;

.field private mRegisterNetworkCallbackFailed:Z

.field private mRegistered:Z

.field private final mRegistrationPolicy:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$RegistrationPolicy;

.field private mShouldSignalObserver:Z

.field private mWifiManagerDelegate:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$WifiManagerDelegate;


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

    const-class v0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;

    invoke-virtual {v0}, Ljava/lang/Class;->getSimpleName()Ljava/lang/String;

    move-result-object v0

    sput-object v0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->TAG:Ljava/lang/String;

    return-void
.end method

.method public constructor <init>(Laegon/chrome/net/NetworkChangeNotifierAutoDetect$Observer;Laegon/chrome/net/NetworkChangeNotifierAutoDetect$RegistrationPolicy;)V
    .registers 7
    .annotation build Landroid/annotation/TargetApi;
        value = 0x15
    .end annotation

    const/4 v3, 0x0

    const/4 v1, 0x0

    invoke-direct {p0}, Landroid/content/BroadcastReceiver;-><init>()V

    invoke-static {}, Landroid/os/Looper;->myLooper()Landroid/os/Looper;

    move-result-object v0

    iput-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mLooper:Landroid/os/Looper;

    new-instance v0, Landroid/os/Handler;

    iget-object v2, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mLooper:Landroid/os/Looper;

    invoke-direct {v0, v2}, Landroid/os/Handler;-><init>(Landroid/os/Looper;)V

    iput-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mHandler:Landroid/os/Handler;

    iput-object p1, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mObserver:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$Observer;

    new-instance v0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;

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

    move-result-object v2

    invoke-direct {v0, v2}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;-><init>(Landroid/content/Context;)V

    iput-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mConnectivityManagerDelegate:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;

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

    const/16 v2, 0x17

    if-ge v0, v2, :cond_32

    new-instance v0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$WifiManagerDelegate;

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

    move-result-object v2

    invoke-direct {v0, v2}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$WifiManagerDelegate;-><init>(Landroid/content/Context;)V

    iput-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mWifiManagerDelegate:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$WifiManagerDelegate;

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

    const/16 v2, 0x15

    if-lt v0, v2, :cond_7f

    new-instance v0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$MyNetworkCallback;

    invoke-direct {v0, p0, v1}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$MyNetworkCallback;-><init>(Laegon/chrome/net/NetworkChangeNotifierAutoDetect;Laegon/chrome/net/NetworkChangeNotifierAutoDetect$1;)V

    iput-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mNetworkCallback:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$MyNetworkCallback;

    new-instance v0, Landroid/net/NetworkRequest$Builder;

    invoke-direct {v0}, Landroid/net/NetworkRequest$Builder;-><init>()V

    const/16 v2, 0xc

    invoke-virtual {v0, v2}, Landroid/net/NetworkRequest$Builder;->addCapability(I)Landroid/net/NetworkRequest$Builder;

    move-result-object v0

    const/16 v2, 0xf

    invoke-virtual {v0, v2}, Landroid/net/NetworkRequest$Builder;->removeCapability(I)Landroid/net/NetworkRequest$Builder;

    move-result-object v0

    invoke-virtual {v0}, Landroid/net/NetworkRequest$Builder;->build()Landroid/net/NetworkRequest;

    move-result-object v0

    iput-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mNetworkRequest:Landroid/net/NetworkRequest;

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

    const/16 v2, 0x1c

    if-lt v0, v2, :cond_84

    new-instance v0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$DefaultNetworkCallback;

    invoke-direct {v0, p0, v1}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$DefaultNetworkCallback;-><init>(Laegon/chrome/net/NetworkChangeNotifierAutoDetect;Laegon/chrome/net/NetworkChangeNotifierAutoDetect$1;)V

    :goto_61
    iput-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mDefaultNetworkCallback:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$DefaultNetworkCallback;

    invoke-virtual {p0}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->getCurrentNetworkState()Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkState;

    move-result-object v0

    iput-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mNetworkState:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkState;

    new-instance v0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkConnectivityIntentFilter;

    invoke-direct {v0}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkConnectivityIntentFilter;-><init>()V

    iput-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mIntentFilter:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkConnectivityIntentFilter;

    iput-boolean v3, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mIgnoreNextBroadcast:Z

    iput-boolean v3, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mShouldSignalObserver:Z

    iput-object p2, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mRegistrationPolicy:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$RegistrationPolicy;

    iget-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mRegistrationPolicy:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$RegistrationPolicy;

    invoke-virtual {v0, p0}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$RegistrationPolicy;->init(Laegon/chrome/net/NetworkChangeNotifierAutoDetect;)V

    const/4 v0, 0x1

    iput-boolean v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mShouldSignalObserver:Z

    return-void

    :cond_7f
    iput-object v1, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mNetworkCallback:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$MyNetworkCallback;

    iput-object v1, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mNetworkRequest:Landroid/net/NetworkRequest;

    goto :goto_56

    :cond_84
    move-object v0, v1

    goto :goto_61
.end method

.method static synthetic access$000(II)I
    .registers 3

    invoke-static {p0, p1}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->convertToConnectionType(II)I

    move-result v0

    return v0
.end method

.method static synthetic access$100(Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;Landroid/net/Network;)[Landroid/net/Network;
    .registers 3

    invoke-static {p0, p1}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->getAllNetworksFiltered(Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;Landroid/net/Network;)[Landroid/net/Network;

    move-result-object v0

    return-object v0
.end method

.method static synthetic access$200(Laegon/chrome/net/NetworkChangeNotifierAutoDetect;)Z
    .registers 2

    iget-boolean v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mRegistered:Z

    return v0
.end method

.method static synthetic access$300(Laegon/chrome/net/NetworkChangeNotifierAutoDetect;)V
    .registers 1

    invoke-direct {p0}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->connectionTypeChanged()V

    return-void
.end method

.method static synthetic access$400(Laegon/chrome/net/NetworkChangeNotifierAutoDetect;)Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;
    .registers 2

    iget-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mConnectivityManagerDelegate:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;

    return-object v0
.end method

.method static synthetic access$500(Laegon/chrome/net/NetworkChangeNotifierAutoDetect;)Laegon/chrome/net/NetworkChangeNotifierAutoDetect$Observer;
    .registers 2

    iget-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mObserver:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$Observer;

    return-object v0
.end method

.method static synthetic access$600(Laegon/chrome/net/NetworkChangeNotifierAutoDetect;Ljava/lang/Runnable;)V
    .registers 2

    invoke-direct {p0, p1}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->runOnThread(Ljava/lang/Runnable;)V

    return-void
.end method

.method static synthetic access$900(Laegon/chrome/net/NetworkChangeNotifierAutoDetect;)Z
    .registers 2

    iget-boolean v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mIgnoreNextBroadcast:Z

    return v0
.end method

.method static synthetic access$902(Laegon/chrome/net/NetworkChangeNotifierAutoDetect;Z)Z
    .registers 2

    iput-boolean p1, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mIgnoreNextBroadcast:Z

    return p1
.end method

.method private assertOnThread()V
    .registers 3

    sget-boolean v0, Laegon/chrome/base/BuildConfig;->DCHECK_IS_ON:Z

    if-eqz v0, :cond_12

    invoke-direct {p0}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->onThread()Z

    move-result v0

    if-nez v0, :cond_12

    new-instance v0, Ljava/lang/IllegalStateException;

    const-string v1, "Must be called on NetworkChangeNotifierAutoDetect thread."

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

    throw v0

    :cond_12
    return-void
.end method

.method private connectionTypeChanged()V
    .registers 4

    invoke-virtual {p0}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->getCurrentNetworkState()Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkState;

    move-result-object v0

    invoke-virtual {v0}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkState;->getConnectionType()I

    move-result v1

    iget-object v2, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mNetworkState:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkState;

    invoke-virtual {v2}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkState;->getConnectionType()I

    move-result v2

    if-ne v1, v2, :cond_2c

    invoke-virtual {v0}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkState;->getNetworkIdentifier()Ljava/lang/String;

    move-result-object v1

    iget-object v2, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mNetworkState:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkState;

    invoke-virtual {v2}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkState;->getNetworkIdentifier()Ljava/lang/String;

    move-result-object v2

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

    move-result v1

    if-eqz v1, :cond_2c

    invoke-virtual {v0}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkState;->isPrivateDnsActive()Z

    move-result v1

    iget-object v2, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mNetworkState:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkState;

    invoke-virtual {v2}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkState;->isPrivateDnsActive()Z

    move-result v2

    if-eq v1, v2, :cond_35

    :cond_2c
    iget-object v1, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mObserver:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$Observer;

    invoke-virtual {v0}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkState;->getConnectionType()I

    move-result v2

    invoke-interface {v1, v2}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$Observer;->onConnectionTypeChanged(I)V

    :cond_35
    invoke-virtual {v0}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkState;->getConnectionType()I

    move-result v1

    iget-object v2, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mNetworkState:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkState;

    invoke-virtual {v2}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkState;->getConnectionType()I

    move-result v2

    if-ne v1, v2, :cond_4d

    invoke-virtual {v0}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkState;->getConnectionSubtype()I

    move-result v1

    iget-object v2, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mNetworkState:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkState;

    invoke-virtual {v2}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkState;->getConnectionSubtype()I

    move-result v2

    if-eq v1, v2, :cond_56

    :cond_4d
    iget-object v1, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mObserver:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$Observer;

    invoke-virtual {v0}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkState;->getConnectionSubtype()I

    move-result v2

    invoke-interface {v1, v2}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$Observer;->onConnectionSubtypeChanged(I)V

    :cond_56
    iput-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mNetworkState:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkState;

    return-void
.end method

.method private static convertToConnectionType(II)I
    .registers 4

    const/4 v0, 0x5

    const/4 v1, 0x0

    packed-switch p0, :pswitch_data_16

    :pswitch_5
    move v0, v1

    :goto_6
    :pswitch_6
    return v0

    :pswitch_7
    const/4 v0, 0x1

    goto :goto_6

    :pswitch_9
    const/4 v0, 0x2

    goto :goto_6

    :pswitch_b
    const/4 v0, 0x7

    goto :goto_6

    :pswitch_d
    packed-switch p1, :pswitch_data_2e

    move v0, v1

    goto :goto_6

    :pswitch_12
    const/4 v0, 0x3

    goto :goto_6

    :pswitch_14
    const/4 v0, 0x4

    goto :goto_6

    :pswitch_data_16
    .packed-switch 0x0
        :pswitch_d
        :pswitch_9
        :pswitch_5
        :pswitch_5
        :pswitch_5
        :pswitch_5
        :pswitch_6
        :pswitch_b
        :pswitch_5
        :pswitch_7
    .end packed-switch

    :pswitch_data_2e
    .packed-switch 0x1
        :pswitch_12
        :pswitch_12
        :pswitch_14
        :pswitch_12
        :pswitch_14
        :pswitch_14
        :pswitch_12
        :pswitch_14
        :pswitch_14
        :pswitch_14
        :pswitch_12
        :pswitch_14
        :pswitch_6
        :pswitch_14
        :pswitch_14
    .end packed-switch
.end method

.method private static getAllNetworksFiltered(Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;Landroid/net/Network;)[Landroid/net/Network;
    .registers 10
    .annotation build Landroid/annotation/TargetApi;
        value = 0x15
    .end annotation

    const/4 v3, 0x0

    invoke-virtual {p0}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;->getAllNetworksUnfiltered()[Landroid/net/Network;

    move-result-object v4

    array-length v5, v4

    move v2, v3

    move v0, v3

    :goto_8
    if-ge v2, v5, :cond_3d

    aget-object v6, v4, v2

    invoke-virtual {v6, p1}, Landroid/net/Network;->equals(Ljava/lang/Object;)Z

    move-result v1

    if-eqz v1, :cond_16

    :cond_12
    :goto_12
    add-int/lit8 v1, v2, 0x1

    move v2, v1

    goto :goto_8

    :cond_16
    invoke-virtual {p0, v6}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;->getNetworkCapabilities(Landroid/net/Network;)Landroid/net/NetworkCapabilities;

    move-result-object v1

    if-eqz v1, :cond_12

    const/16 v7, 0xc

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

    move-result v7

    if-eqz v7, :cond_12

    const/4 v7, 0x4

    invoke-virtual {v1, v7}, Landroid/net/NetworkCapabilities;->hasTransport(I)Z

    move-result v1

    if-eqz v1, :cond_37

    invoke-virtual {p0, v6}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;->vpnAccessible(Landroid/net/Network;)Z

    move-result v1

    if-eqz v1, :cond_12

    const/4 v0, 0x1

    new-array v0, v0, [Landroid/net/Network;

    aput-object v6, v0, v3

    :goto_36
    return-object v0

    :cond_37
    add-int/lit8 v1, v0, 0x1

    aput-object v6, v4, v0

    move v0, v1

    goto :goto_12

    :cond_3d
    invoke-static {v4, v0}, Ljava/util/Arrays;->copyOf([Ljava/lang/Object;I)[Ljava/lang/Object;

    move-result-object v0

    check-cast v0, [Landroid/net/Network;

    goto :goto_36
.end method

.method static networkToNetId(Landroid/net/Network;)J
    .registers 3
    .annotation build Laegon/chrome/base/VisibleForTesting;
    .end annotation

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

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

    const/16 v1, 0x17

    if-lt v0, v1, :cond_b

    invoke-static {p0}, Laegon/chrome/base/compat/ApiHelperForM;->getNetworkHandle(Landroid/net/Network;)J

    move-result-wide v0

    :goto_a
    return-wide v0

    :cond_b
    invoke-virtual {p0}, Landroid/net/Network;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-static {v0}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I

    move-result v0

    int-to-long v0, v0

    goto :goto_a
.end method

.method private onThread()Z
    .registers 3

    iget-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mLooper:Landroid/os/Looper;

    invoke-static {}, Landroid/os/Looper;->myLooper()Landroid/os/Looper;

    move-result-object v1

    if-ne v0, v1, :cond_a

    const/4 v0, 0x1

    :goto_9
    return v0

    :cond_a
    const/4 v0, 0x0

    goto :goto_9
.end method

.method private runOnThread(Ljava/lang/Runnable;)V
    .registers 3

    invoke-direct {p0}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->onThread()Z

    move-result v0

    if-eqz v0, :cond_a

    invoke-interface {p1}, Ljava/lang/Runnable;->run()V

    :goto_9
    return-void

    :cond_a
    iget-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mHandler:Landroid/os/Handler;

    invoke-virtual {v0, p1}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z

    goto :goto_9
.end method


# virtual methods
.method public destroy()V
    .registers 2

    invoke-direct {p0}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->assertOnThread()V

    iget-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mRegistrationPolicy:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$RegistrationPolicy;

    invoke-virtual {v0}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$RegistrationPolicy;->destroy()V

    invoke-virtual {p0}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->unregister()V

    return-void
.end method

.method public getCurrentNetworkState()Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkState;
    .registers 3

    iget-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mConnectivityManagerDelegate:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;

    iget-object v1, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mWifiManagerDelegate:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$WifiManagerDelegate;

    invoke-virtual {v0, v1}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;->getNetworkState(Laegon/chrome/net/NetworkChangeNotifierAutoDetect$WifiManagerDelegate;)Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkState;

    move-result-object v0

    return-object v0
.end method

.method public getDefaultNetId()J
    .registers 5

    const-wide/16 v0, -0x1

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

    const/16 v3, 0x15

    if-ge v2, v3, :cond_9

    :cond_8
    :goto_8
    return-wide v0

    :cond_9
    iget-object v2, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mConnectivityManagerDelegate:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;

    invoke-virtual {v2}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;->getDefaultNetwork()Landroid/net/Network;

    move-result-object v2

    if-eqz v2, :cond_8

    invoke-static {v2}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->networkToNetId(Landroid/net/Network;)J

    move-result-wide v0

    goto :goto_8
.end method

.method public getNetworksAndTypes()[J
    .registers 11

    const/4 v1, 0x0

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

    const/16 v2, 0x15

    if-ge v0, v2, :cond_a

    new-array v0, v1, [J

    :cond_9
    return-object v0

    :cond_a
    iget-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mConnectivityManagerDelegate:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;

    const/4 v2, 0x0

    invoke-static {v0, v2}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->getAllNetworksFiltered(Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;Landroid/net/Network;)[Landroid/net/Network;

    move-result-object v3

    array-length v0, v3

    mul-int/lit8 v0, v0, 0x2

    new-array v0, v0, [J

    array-length v4, v3

    move v2, v1

    :goto_18
    if-ge v1, v4, :cond_9

    aget-object v5, v3, v1

    add-int/lit8 v6, v2, 0x1

    invoke-static {v5}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->networkToNetId(Landroid/net/Network;)J

    move-result-wide v8

    aput-wide v8, v0, v2

    add-int/lit8 v2, v6, 0x1

    iget-object v7, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mConnectivityManagerDelegate:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;

    invoke-virtual {v7, v5}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;->getConnectionType(Landroid/net/Network;)I

    move-result v5

    int-to-long v8, v5

    aput-wide v8, v0, v6

    add-int/lit8 v1, v1, 0x1

    goto :goto_18
.end method

.method getRegistrationPolicy()Laegon/chrome/net/NetworkChangeNotifierAutoDetect$RegistrationPolicy;
    .registers 2
    .annotation build Laegon/chrome/base/VisibleForTesting;
    .end annotation

    iget-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mRegistrationPolicy:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$RegistrationPolicy;

    return-object v0
.end method

.method isReceiverRegisteredForTesting()Z
    .registers 2
    .annotation build Laegon/chrome/base/VisibleForTesting;
    .end annotation

    iget-boolean v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mRegistered:Z

    return v0
.end method

.method public onReceive(Landroid/content/Context;Landroid/content/Intent;)V
    .registers 4

    new-instance v0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$1;

    invoke-direct {v0, p0}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$1;-><init>(Laegon/chrome/net/NetworkChangeNotifierAutoDetect;)V

    invoke-direct {p0, v0}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->runOnThread(Ljava/lang/Runnable;)V

    return-void
.end method

.method public register()V
    .registers 8

    const/4 v2, 0x0

    const/4 v6, 0x0

    const/4 v1, 0x1

    invoke-direct {p0}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->assertOnThread()V

    iget-boolean v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mRegistered:Z

    if-eqz v0, :cond_b

    :cond_a
    :goto_a
    return-void

    :cond_b
    iget-boolean v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mShouldSignalObserver:Z

    if-eqz v0, :cond_12

    invoke-direct {p0}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->connectionTypeChanged()V

    :cond_12
    iget-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mDefaultNetworkCallback:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$DefaultNetworkCallback;

    if-eqz v0, :cond_1f

    :try_start_16
    iget-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mConnectivityManagerDelegate:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;

    iget-object v3, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mDefaultNetworkCallback:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$DefaultNetworkCallback;

    iget-object v4, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mHandler:Landroid/os/Handler;

    invoke-virtual {v0, v3, v4}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;->registerDefaultNetworkCallback(Landroid/net/ConnectivityManager$NetworkCallback;Landroid/os/Handler;)V
    :try_end_1f
    .catch Ljava/lang/RuntimeException; {:try_start_16 .. :try_end_1f} :catch_67

    :cond_1f
    :goto_1f
    iget-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mDefaultNetworkCallback:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$DefaultNetworkCallback;

    if-nez v0, :cond_32

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

    move-result-object v0

    iget-object v3, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mIntentFilter:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$NetworkConnectivityIntentFilter;

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

    move-result-object v0

    if-eqz v0, :cond_6b

    move v0, v1

    :goto_30
    iput-boolean v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mIgnoreNextBroadcast:Z

    :cond_32
    iput-boolean v1, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mRegistered:Z

    iget-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mNetworkCallback:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$MyNetworkCallback;

    if-eqz v0, :cond_a

    iget-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mNetworkCallback:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$MyNetworkCallback;

    invoke-virtual {v0}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$MyNetworkCallback;->initializeVpnInPlace()V

    :try_start_3d
    iget-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mConnectivityManagerDelegate:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;

    iget-object v3, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mNetworkRequest:Landroid/net/NetworkRequest;

    iget-object v4, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mNetworkCallback:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$MyNetworkCallback;

    iget-object v5, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mHandler:Landroid/os/Handler;

    invoke-virtual {v0, v3, v4, v5}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;->registerNetworkCallback(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;Landroid/os/Handler;)V
    :try_end_48
    .catch Ljava/lang/RuntimeException; {:try_start_3d .. :try_end_48} :catch_6d

    :goto_48
    iget-boolean v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mRegisterNetworkCallbackFailed:Z

    if-nez v0, :cond_a

    iget-boolean v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mShouldSignalObserver:Z

    if-eqz v0, :cond_a

    iget-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mConnectivityManagerDelegate:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;

    invoke-static {v0, v6}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->getAllNetworksFiltered(Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;Landroid/net/Network;)[Landroid/net/Network;

    move-result-object v0

    array-length v1, v0

    new-array v1, v1, [J

    :goto_59
    array-length v3, v0

    if-ge v2, v3, :cond_73

    aget-object v3, v0, v2

    invoke-static {v3}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->networkToNetId(Landroid/net/Network;)J

    move-result-wide v4

    aput-wide v4, v1, v2

    add-int/lit8 v2, v2, 0x1

    goto :goto_59

    :catch_67
    move-exception v0

    iput-object v6, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mDefaultNetworkCallback:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$DefaultNetworkCallback;

    goto :goto_1f

    :cond_6b
    move v0, v2

    goto :goto_30

    :catch_6d
    move-exception v0

    iput-boolean v1, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mRegisterNetworkCallbackFailed:Z

    iput-object v6, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mNetworkCallback:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$MyNetworkCallback;

    goto :goto_48

    :cond_73
    iget-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mObserver:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$Observer;

    invoke-interface {v0, v1}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$Observer;->purgeActiveNetworkList([J)V

    goto :goto_a
.end method

.method public registerNetworkCallbackFailed()Z
    .registers 2

    iget-boolean v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mRegisterNetworkCallbackFailed:Z

    return v0
.end method

.method setConnectivityManagerDelegateForTests(Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;)V
    .registers 2

    iput-object p1, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mConnectivityManagerDelegate:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;

    return-void
.end method

.method setWifiManagerDelegateForTests(Laegon/chrome/net/NetworkChangeNotifierAutoDetect$WifiManagerDelegate;)V
    .registers 2

    iput-object p1, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mWifiManagerDelegate:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$WifiManagerDelegate;

    return-void
.end method

.method public unregister()V
    .registers 3

    invoke-direct {p0}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->assertOnThread()V

    iget-boolean v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mRegistered:Z

    if-nez v0, :cond_8

    :goto_7
    return-void

    :cond_8
    const/4 v0, 0x0

    iput-boolean v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mRegistered:Z

    iget-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mNetworkCallback:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$MyNetworkCallback;

    if-eqz v0, :cond_16

    iget-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mConnectivityManagerDelegate:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;

    iget-object v1, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mNetworkCallback:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$MyNetworkCallback;

    invoke-virtual {v0, v1}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;->unregisterNetworkCallback(Landroid/net/ConnectivityManager$NetworkCallback;)V

    :cond_16
    iget-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mDefaultNetworkCallback:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$DefaultNetworkCallback;

    if-eqz v0, :cond_22

    iget-object v0, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mConnectivityManagerDelegate:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;

    iget-object v1, p0, Laegon/chrome/net/NetworkChangeNotifierAutoDetect;->mDefaultNetworkCallback:Laegon/chrome/net/NetworkChangeNotifierAutoDetect$DefaultNetworkCallback;

    invoke-virtual {v0, v1}, Laegon/chrome/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;->unregisterNetworkCallback(Landroid/net/ConnectivityManager$NetworkCallback;)V

    goto :goto_7

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

    move-result-object v0

    invoke-virtual {v0, p0}, Landroid/content/Context;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V

    goto :goto_7
.end method