DownloadManager$DownloadThread.smali

.class Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;
.super Ljava/lang/Object;
.source "DownloadManager.java"

# interfaces
.implements Ljava/lang/Runnable;


# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
    value = Lcom/google/android/exoplayer2/offline/DownloadManager;
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0xa
    name = "DownloadThread"
.end annotation


# instance fields
.field private final callbackHandler:Landroid/os/Handler;

.field private final download:Lcom/google/android/exoplayer2/offline/DownloadManager$Download;

.field private final downloader:Lcom/google/android/exoplayer2/offline/Downloader;

.field private volatile isCanceled:Z

.field private final minRetryCount:I

.field private final remove:Z

.field private final thread:Ljava/lang/Thread;


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

    return-void
.end method

.method private constructor <init>(Lcom/google/android/exoplayer2/offline/DownloadManager$Download;Lcom/google/android/exoplayer2/offline/Downloader;ZILandroid/os/Handler;)V
    .registers 7
    .param p1, "download"    # Lcom/google/android/exoplayer2/offline/DownloadManager$Download;
    .param p2, "downloader"    # Lcom/google/android/exoplayer2/offline/Downloader;
    .param p3, "remove"    # Z
    .param p4, "minRetryCount"    # I
    .param p5, "callbackHandler"    # Landroid/os/Handler;

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

    .line 713
    iput-object p1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->download:Lcom/google/android/exoplayer2/offline/DownloadManager$Download;

    .line 714
    iput-object p2, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->downloader:Lcom/google/android/exoplayer2/offline/Downloader;

    .line 715
    iput-boolean p3, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->remove:Z

    .line 716
    iput p4, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->minRetryCount:I

    .line 717
    iput-object p5, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->callbackHandler:Landroid/os/Handler;

    .line 718
    new-instance v0, Ljava/lang/Thread;

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

    iput-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->thread:Ljava/lang/Thread;

    .line 719
    invoke-virtual {v0}, Ljava/lang/Thread;->start()V

    .line 720
    return-void
.end method

.method synthetic constructor <init>(Lcom/google/android/exoplayer2/offline/DownloadManager$Download;Lcom/google/android/exoplayer2/offline/Downloader;ZILandroid/os/Handler;Lcom/google/android/exoplayer2/offline/DownloadManager$1;)V
    .registers 7
    .param p1, "x0"    # Lcom/google/android/exoplayer2/offline/DownloadManager$Download;
    .param p2, "x1"    # Lcom/google/android/exoplayer2/offline/Downloader;
    .param p3, "x2"    # Z
    .param p4, "x3"    # I
    .param p5, "x4"    # Landroid/os/Handler;
    .param p6, "x5"    # Lcom/google/android/exoplayer2/offline/DownloadManager$1;

    .line 697
    invoke-direct/range {p0 .. p5}, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;-><init>(Lcom/google/android/exoplayer2/offline/DownloadManager$Download;Lcom/google/android/exoplayer2/offline/Downloader;ZILandroid/os/Handler;)V

    return-void
.end method

.method static synthetic access$900(Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;)Z
    .registers 2
    .param p0, "x0"    # Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;

    .line 697
    iget-boolean v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->isCanceled:Z

    return v0
.end method

.method private getRetryDelayMillis(I)I
    .registers 4
    .param p1, "errorCount"    # I

    .line 769
    add-int/lit8 v0, p1, -0x1

    mul-int/lit16 v0, v0, 0x3e8

    const/16 v1, 0x1388

    invoke-static {v0, v1}, Ljava/lang/Math;->min(II)I

    move-result v0

    return v0
.end method


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

    .line 723
    const/4 v0, 0x1

    iput-boolean v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->isCanceled:Z

    .line 724
    iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->downloader:Lcom/google/android/exoplayer2/offline/Downloader;

    invoke-interface {v0}, Lcom/google/android/exoplayer2/offline/Downloader;->cancel()V

    .line 725
    iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->thread:Ljava/lang/Thread;

    invoke-virtual {v0}, Ljava/lang/Thread;->interrupt()V

    .line 726
    return-void
.end method

.method public synthetic lambda$run$0$DownloadManager$DownloadThread(Ljava/lang/Throwable;)V
    .registers 4
    .param p1, "finalError"    # Ljava/lang/Throwable;

    .line 765
    iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->download:Lcom/google/android/exoplayer2/offline/DownloadManager$Download;

    iget-boolean v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->isCanceled:Z

    if-eqz v1, :cond_8

    const/4 v1, 0x0

    goto :goto_9

    :cond_8
    move-object v1, p1

    :goto_9
    # invokes: Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->onDownloadThreadStopped(Ljava/lang/Throwable;)V
    invoke-static {v0, v1}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->access$1100(Lcom/google/android/exoplayer2/offline/DownloadManager$Download;Ljava/lang/Throwable;)V

    return-void
.end method

.method public run()V
    .registers 10

    .line 732
    iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->download:Lcom/google/android/exoplayer2/offline/DownloadManager$Download;

    const-string v1, "Download is started"

    # invokes: Lcom/google/android/exoplayer2/offline/DownloadManager;->logd(Ljava/lang/String;Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)V
    invoke-static {v1, v0}, Lcom/google/android/exoplayer2/offline/DownloadManager;->access$1000(Ljava/lang/String;Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)V

    .line 733
    const/4 v0, 0x0

    .line 735
    .local v0, "error":Ljava/lang/Throwable;
    :try_start_8
    iget-boolean v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->remove:Z

    if-eqz v1, :cond_12

    .line 736
    iget-object v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->downloader:Lcom/google/android/exoplayer2/offline/Downloader;

    invoke-interface {v1}, Lcom/google/android/exoplayer2/offline/Downloader;->remove()V

    goto :goto_6e

    .line 738
    :cond_12
    const/4 v1, 0x0

    .line 739
    .local v1, "errorCount":I
    const-wide/16 v2, -0x1

    .line 740
    .local v2, "errorPosition":J
    :goto_15
    iget-boolean v4, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->isCanceled:Z
    :try_end_17
    .catchall {:try_start_8 .. :try_end_17} :catchall_6f

    if-nez v4, :cond_6e

    .line 742
    :try_start_19
    iget-object v4, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->downloader:Lcom/google/android/exoplayer2/offline/Downloader;

    invoke-interface {v4}, Lcom/google/android/exoplayer2/offline/Downloader;->download()V
    :try_end_1e
    .catch Ljava/io/IOException; {:try_start_19 .. :try_end_1e} :catch_1f
    .catchall {:try_start_19 .. :try_end_1e} :catchall_6f

    .line 743
    goto :goto_6e

    .line 744
    :catch_1f
    move-exception v4

    .line 745
    .local v4, "e":Ljava/io/IOException;
    :try_start_20
    iget-boolean v5, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->isCanceled:Z

    if-nez v5, :cond_6d

    .line 746
    iget-object v5, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->downloader:Lcom/google/android/exoplayer2/offline/Downloader;

    invoke-interface {v5}, Lcom/google/android/exoplayer2/offline/Downloader;->getDownloadedBytes()J

    move-result-wide v5

    .line 747
    .local v5, "downloadedBytes":J
    cmp-long v7, v5, v2

    if-eqz v7, :cond_46

    .line 748
    new-instance v7, Ljava/lang/StringBuilder;

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

    const-string v8, "Reset error count. downloadedBytes = "

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

    invoke-virtual {v7, v5, v6}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;

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

    move-result-object v7

    iget-object v8, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->download:Lcom/google/android/exoplayer2/offline/DownloadManager$Download;

    # invokes: Lcom/google/android/exoplayer2/offline/DownloadManager;->logd(Ljava/lang/String;Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)V
    invoke-static {v7, v8}, Lcom/google/android/exoplayer2/offline/DownloadManager;->access$1000(Ljava/lang/String;Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)V

    .line 749
    move-wide v2, v5

    .line 750
    const/4 v1, 0x0

    .line 752
    :cond_46
    add-int/lit8 v1, v1, 0x1

    iget v7, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->minRetryCount:I

    if-gt v1, v7, :cond_6b

    .line 755
    new-instance v7, Ljava/lang/StringBuilder;

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

    const-string v8, "Download error. Retry "

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

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

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

    move-result-object v7

    iget-object v8, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->download:Lcom/google/android/exoplayer2/offline/DownloadManager$Download;

    # invokes: Lcom/google/android/exoplayer2/offline/DownloadManager;->logd(Ljava/lang/String;Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)V
    invoke-static {v7, v8}, Lcom/google/android/exoplayer2/offline/DownloadManager;->access$1000(Ljava/lang/String;Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)V

    .line 756
    invoke-direct {p0, v1}, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->getRetryDelayMillis(I)I

    move-result v7

    int-to-long v7, v7

    invoke-static {v7, v8}, Ljava/lang/Thread;->sleep(J)V

    goto :goto_6d

    .line 753
    :cond_6b
    nop

    .end local v0    # "error":Ljava/lang/Throwable;
    throw v4
    :try_end_6d
    .catchall {:try_start_20 .. :try_end_6d} :catchall_6f

    .line 758
    .end local v4    # "e":Ljava/io/IOException;
    .end local v5    # "downloadedBytes":J
    .restart local v0    # "error":Ljava/lang/Throwable;
    :cond_6d
    :goto_6d
    goto :goto_15

    .line 763
    .end local v1    # "errorCount":I
    .end local v2    # "errorPosition":J
    :cond_6e
    :goto_6e
    goto :goto_71

    .line 761
    :catchall_6f
    move-exception v1

    .line 762
    .local v1, "e":Ljava/lang/Throwable;
    move-object v0, v1

    .line 764
    .end local v1    # "e":Ljava/lang/Throwable;
    :goto_71
    move-object v1, v0

    .line 765
    .local v1, "finalError":Ljava/lang/Throwable;
    iget-object v2, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->callbackHandler:Landroid/os/Handler;

    new-instance v3, Lcom/google/android/exoplayer2/offline/-$$Lambda$DownloadManager$DownloadThread$Tt02hURVEgn-zT94Ed18uLqgFZk;

    invoke-direct {v3, p0, v1}, Lcom/google/android/exoplayer2/offline/-$$Lambda$DownloadManager$DownloadThread$Tt02hURVEgn-zT94Ed18uLqgFZk;-><init>(Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;Ljava/lang/Throwable;)V

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

    .line 766
    return-void
.end method