DownloadManager$Download.smali

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


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

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0x1a
    name = "Download"
.end annotation


# instance fields
.field private final actionQueue:Ljava/util/ArrayDeque;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/ArrayDeque<",
            "Lcom/google/android/exoplayer2/offline/DownloadAction;",
            ">;"
        }
    .end annotation
.end field

.field private final downloadManager:Lcom/google/android/exoplayer2/offline/DownloadManager;

.field private downloadThread:Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;

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

.field private final downloaderFactory:Lcom/google/android/exoplayer2/offline/DownloaderFactory;

.field private failureReason:I

.field private final id:Ljava/lang/String;

.field private final minRetryCount:I

.field private final startTimeMs:J

.field private state:I

.field private stopFlags:I


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

    return-void
.end method

.method private constructor <init>(Lcom/google/android/exoplayer2/offline/DownloadManager;Lcom/google/android/exoplayer2/offline/DownloaderFactory;Lcom/google/android/exoplayer2/offline/DownloadAction;II)V
    .registers 8
    .param p1, "downloadManager"    # Lcom/google/android/exoplayer2/offline/DownloadManager;
    .param p2, "downloaderFactory"    # Lcom/google/android/exoplayer2/offline/DownloaderFactory;
    .param p3, "action"    # Lcom/google/android/exoplayer2/offline/DownloadAction;
    .param p4, "minRetryCount"    # I
    .param p5, "stopFlags"    # I

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

    .line 521
    iget-object v0, p3, Lcom/google/android/exoplayer2/offline/DownloadAction;->id:Ljava/lang/String;

    iput-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->id:Ljava/lang/String;

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

    .line 523
    iput-object p2, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->downloaderFactory:Lcom/google/android/exoplayer2/offline/DownloaderFactory;

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

    .line 525
    iput p5, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->stopFlags:I

    .line 526
    invoke-static {}, Ljava/lang/System;->currentTimeMillis()J

    move-result-wide v0

    iput-wide v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->startTimeMs:J

    .line 527
    new-instance v0, Ljava/util/ArrayDeque;

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

    iput-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->actionQueue:Ljava/util/ArrayDeque;

    .line 528
    invoke-virtual {v0, p3}, Ljava/util/ArrayDeque;->add(Ljava/lang/Object;)Z

    .line 529
    const/4 v0, 0x0

    invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->initialize(Z)V

    .line 530
    return-void
.end method

.method synthetic constructor <init>(Lcom/google/android/exoplayer2/offline/DownloadManager;Lcom/google/android/exoplayer2/offline/DownloaderFactory;Lcom/google/android/exoplayer2/offline/DownloadAction;IILcom/google/android/exoplayer2/offline/DownloadManager$1;)V
    .registers 7
    .param p1, "x0"    # Lcom/google/android/exoplayer2/offline/DownloadManager;
    .param p2, "x1"    # Lcom/google/android/exoplayer2/offline/DownloaderFactory;
    .param p3, "x2"    # Lcom/google/android/exoplayer2/offline/DownloadAction;
    .param p4, "x3"    # I
    .param p5, "x4"    # I
    .param p6, "x5"    # Lcom/google/android/exoplayer2/offline/DownloadManager$1;

    .line 499
    invoke-direct/range {p0 .. p5}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;-><init>(Lcom/google/android/exoplayer2/offline/DownloadManager;Lcom/google/android/exoplayer2/offline/DownloaderFactory;Lcom/google/android/exoplayer2/offline/DownloadAction;II)V

    return-void
.end method

.method static synthetic access$000(Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)Ljava/lang/String;
    .registers 2
    .param p0, "x0"    # Lcom/google/android/exoplayer2/offline/DownloadManager$Download;

    .line 499
    iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->id:Ljava/lang/String;

    return-object v0
.end method

.method static synthetic access$1100(Lcom/google/android/exoplayer2/offline/DownloadManager$Download;Ljava/lang/Throwable;)V
    .registers 2
    .param p0, "x0"    # Lcom/google/android/exoplayer2/offline/DownloadManager$Download;
    .param p1, "x1"    # Ljava/lang/Throwable;

    .line 499
    invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->onDownloadThreadStopped(Ljava/lang/Throwable;)V

    return-void
.end method

.method static synthetic access$200(Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)Ljava/util/ArrayDeque;
    .registers 2
    .param p0, "x0"    # Lcom/google/android/exoplayer2/offline/DownloadManager$Download;

    .line 499
    iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->actionQueue:Ljava/util/ArrayDeque;

    return-object v0
.end method

.method private initialize(Z)V
    .registers 5
    .param p1, "restart"    # Z

    .line 632
    iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->actionQueue:Ljava/util/ArrayDeque;

    invoke-virtual {v0}, Ljava/util/ArrayDeque;->peek()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lcom/google/android/exoplayer2/offline/DownloadAction;

    .line 633
    .local v0, "action":Lcom/google/android/exoplayer2/offline/DownloadAction;
    iget-boolean v1, v0, Lcom/google/android/exoplayer2/offline/DownloadAction;->isRemoveAction:Z

    const/4 v2, 0x1

    if-eqz v1, :cond_27

    .line 634
    iget-object v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->downloadManager:Lcom/google/android/exoplayer2/offline/DownloadManager;

    # getter for: Lcom/google/android/exoplayer2/offline/DownloadManager;->released:Z
    invoke-static {v1}, Lcom/google/android/exoplayer2/offline/DownloadManager;->access$400(Lcom/google/android/exoplayer2/offline/DownloadManager;)Z

    move-result v1

    if-nez v1, :cond_18

    .line 635
    invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->startDownloadThread(Lcom/google/android/exoplayer2/offline/DownloadAction;)V

    .line 637
    :cond_18
    iget-object v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->actionQueue:Ljava/util/ArrayDeque;

    invoke-virtual {v1}, Ljava/util/ArrayDeque;->size()I

    move-result v1

    if-ne v1, v2, :cond_22

    const/4 v1, 0x5

    goto :goto_23

    :cond_22
    const/4 v1, 0x7

    :goto_23
    invoke-direct {p0, v1}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->setState(I)V

    goto :goto_32

    .line 638
    :cond_27
    iget v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->stopFlags:I

    if-eqz v1, :cond_2f

    .line 639
    invoke-direct {p0, v2}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->setState(I)V

    goto :goto_32

    .line 641
    :cond_2f
    invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->startOrQueue(Z)V

    .line 643
    :goto_32
    return-void
.end method

.method private onDownloadThreadStopped(Ljava/lang/Throwable;)V
    .registers 8
    .param p1, "finalError"    # Ljava/lang/Throwable;

    .line 675
    const/4 v0, 0x0

    iput v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->failureReason:I

    .line 676
    iget-object v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->downloadThread:Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;

    # getter for: Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->isCanceled:Z
    invoke-static {v1}, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->access$900(Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;)Z

    move-result v1

    const/4 v2, 0x2

    const/4 v3, 0x1

    if-nez v1, :cond_3f

    .line 677
    const/4 v1, 0x5

    if-eqz p1, :cond_1e

    iget v4, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->state:I

    if-eq v4, v1, :cond_1e

    const/4 v5, 0x7

    if-eq v4, v5, :cond_1e

    .line 678
    iput v3, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->failureReason:I

    .line 679
    const/4 v0, 0x4

    invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->setState(I)V

    .line 680
    return-void

    .line 682
    :cond_1e
    iget-object v4, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->actionQueue:Ljava/util/ArrayDeque;

    invoke-virtual {v4}, Ljava/util/ArrayDeque;->size()I

    move-result v4

    if-ne v4, v3, :cond_3a

    .line 683
    iget v4, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->state:I

    if-ne v4, v1, :cond_2f

    .line 684
    const/4 v0, 0x6

    invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->setState(I)V

    goto :goto_39

    .line 686
    :cond_2f
    if-ne v4, v2, :cond_32

    const/4 v0, 0x1

    :cond_32
    invoke-static {v0}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(Z)V

    .line 687
    const/4 v0, 0x3

    invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->setState(I)V

    .line 689
    :goto_39
    return-void

    .line 691
    :cond_3a
    iget-object v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->actionQueue:Ljava/util/ArrayDeque;

    invoke-virtual {v1}, Ljava/util/ArrayDeque;->remove()Ljava/lang/Object;

    .line 693
    :cond_3f
    iget v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->state:I

    if-ne v1, v2, :cond_44

    const/4 v0, 0x1

    :cond_44
    invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->initialize(Z)V

    .line 694
    return-void
.end method

.method private setState(I)V
    .registers 3
    .param p1, "newState"    # I

    .line 659
    iput p1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->state:I

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

    # invokes: Lcom/google/android/exoplayer2/offline/DownloadManager;->onDownloadStateChange(Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)V
    invoke-static {v0, p0}, Lcom/google/android/exoplayer2/offline/DownloadManager;->access$600(Lcom/google/android/exoplayer2/offline/DownloadManager;Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)V

    .line 661
    return-void
.end method

.method private startDownloadThread(Lcom/google/android/exoplayer2/offline/DownloadAction;)V
    .registers 10
    .param p1, "action"    # Lcom/google/android/exoplayer2/offline/DownloadAction;

    .line 664
    iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->downloaderFactory:Lcom/google/android/exoplayer2/offline/DownloaderFactory;

    invoke-interface {v0, p1}, Lcom/google/android/exoplayer2/offline/DownloaderFactory;->createDownloader(Lcom/google/android/exoplayer2/offline/DownloadAction;)Lcom/google/android/exoplayer2/offline/Downloader;

    move-result-object v3

    iput-object v3, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->downloader:Lcom/google/android/exoplayer2/offline/Downloader;

    .line 665
    new-instance v0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;

    iget-boolean v4, p1, Lcom/google/android/exoplayer2/offline/DownloadAction;->isRemoveAction:Z

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

    iget-object v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->downloadManager:Lcom/google/android/exoplayer2/offline/DownloadManager;

    .line 667
    # getter for: Lcom/google/android/exoplayer2/offline/DownloadManager;->handler:Landroid/os/Handler;
    invoke-static {v1}, Lcom/google/android/exoplayer2/offline/DownloadManager;->access$700(Lcom/google/android/exoplayer2/offline/DownloadManager;)Landroid/os/Handler;

    move-result-object v6

    const/4 v7, 0x0

    move-object v1, v0

    move-object v2, p0

    invoke-direct/range {v1 .. v7}, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;-><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

    iput-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->downloadThread:Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;

    .line 668
    return-void
.end method

.method private startOrQueue(Z)V
    .registers 3
    .param p1, "restart"    # Z

    .line 647
    const/4 v0, 0x0

    iput v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->state:I

    .line 648
    if-eqz p1, :cond_9

    .line 649
    invoke-virtual {p0}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->start()Z

    goto :goto_e

    .line 651
    :cond_9
    iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->downloadManager:Lcom/google/android/exoplayer2/offline/DownloadManager;

    # invokes: Lcom/google/android/exoplayer2/offline/DownloadManager;->maybeStartDownload(Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)V
    invoke-static {v0, p0}, Lcom/google/android/exoplayer2/offline/DownloadManager;->access$500(Lcom/google/android/exoplayer2/offline/DownloadManager;Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)V

    .line 653
    :goto_e
    iget v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->state:I

    if-nez v0, :cond_17

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

    # invokes: Lcom/google/android/exoplayer2/offline/DownloadManager;->onDownloadStateChange(Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)V
    invoke-static {v0, p0}, Lcom/google/android/exoplayer2/offline/DownloadManager;->access$600(Lcom/google/android/exoplayer2/offline/DownloadManager;Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)V

    .line 656
    :cond_17
    return-void
.end method

.method private stopDownloadThread()V
    .registers 2

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

    invoke-static {v0}, Lcom/google/android/exoplayer2/util/Assertions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;

    invoke-virtual {v0}, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->cancel()V

    .line 672
    return-void
.end method


# virtual methods
.method public addAction(Lcom/google/android/exoplayer2/offline/DownloadAction;)Z
    .registers 9
    .param p1, "newAction"    # Lcom/google/android/exoplayer2/offline/DownloadAction;

    .line 533
    iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->actionQueue:Ljava/util/ArrayDeque;

    invoke-virtual {v0}, Ljava/util/ArrayDeque;->peek()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lcom/google/android/exoplayer2/offline/DownloadAction;

    .line 534
    .local v0, "action":Lcom/google/android/exoplayer2/offline/DownloadAction;
    invoke-virtual {v0, p1}, Lcom/google/android/exoplayer2/offline/DownloadAction;->isSameMedia(Lcom/google/android/exoplayer2/offline/DownloadAction;)Z

    move-result v1

    const/4 v2, 0x0

    if-nez v1, :cond_10

    .line 535
    return v2

    .line 537
    :cond_10
    iget-object v1, v0, Lcom/google/android/exoplayer2/offline/DownloadAction;->type:Ljava/lang/String;

    iget-object v3, p1, Lcom/google/android/exoplayer2/offline/DownloadAction;->type:Ljava/lang/String;

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

    move-result v1

    invoke-static {v1}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(Z)V

    .line 538
    iget-object v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->actionQueue:Ljava/util/ArrayDeque;

    invoke-virtual {v1, p1}, Ljava/util/ArrayDeque;->add(Ljava/lang/Object;)Z

    .line 539
    iget-object v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->actionQueue:Ljava/util/ArrayDeque;

    invoke-static {v1}, Lcom/google/android/exoplayer2/offline/DownloadActionUtil;->mergeActions(Ljava/util/ArrayDeque;)Lcom/google/android/exoplayer2/offline/DownloadAction;

    move-result-object v1

    .line 540
    .local v1, "updatedAction":Lcom/google/android/exoplayer2/offline/DownloadAction;
    iget v3, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->state:I

    const/4 v4, 0x7

    const/4 v5, 0x5

    const/4 v6, 0x1

    if-ne v3, v5, :cond_3e

    .line 541
    iget-boolean v2, v1, Lcom/google/android/exoplayer2/offline/DownloadAction;->isRemoveAction:Z

    invoke-static {v2}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(Z)V

    .line 542
    iget-object v2, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->actionQueue:Ljava/util/ArrayDeque;

    invoke-virtual {v2}, Ljava/util/ArrayDeque;->size()I

    move-result v2

    if-le v2, v6, :cond_6e

    .line 543
    invoke-direct {p0, v4}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->setState(I)V

    goto :goto_6e

    .line 545
    :cond_3e
    if-ne v3, v4, :cond_51

    .line 546
    iget-boolean v2, v1, Lcom/google/android/exoplayer2/offline/DownloadAction;->isRemoveAction:Z

    invoke-static {v2}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(Z)V

    .line 547
    iget-object v2, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->actionQueue:Ljava/util/ArrayDeque;

    invoke-virtual {v2}, Ljava/util/ArrayDeque;->size()I

    move-result v2

    if-ne v2, v6, :cond_6e

    .line 548
    invoke-direct {p0, v5}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->setState(I)V

    goto :goto_6e

    .line 550
    :cond_51
    invoke-virtual {v0, v1}, Lcom/google/android/exoplayer2/offline/DownloadAction;->equals(Ljava/lang/Object;)Z

    move-result v3

    if-nez v3, :cond_6e

    .line 551
    iget v3, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->state:I

    const/4 v4, 0x2

    if-ne v3, v4, :cond_60

    .line 552
    invoke-direct {p0}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->stopDownloadThread()V

    goto :goto_6e

    .line 554
    :cond_60
    if-eqz v3, :cond_67

    if-ne v3, v6, :cond_65

    goto :goto_67

    :cond_65
    const/4 v3, 0x0

    goto :goto_68

    :cond_67
    :goto_67
    const/4 v3, 0x1

    :goto_68
    invoke-static {v3}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(Z)V

    .line 555
    invoke-direct {p0, v2}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->initialize(Z)V

    .line 558
    :cond_6e
    :goto_6e
    return v6
.end method

.method public clearStopFlags(I)V
    .registers 3
    .param p1, "flags"    # I

    .line 615
    const/4 v0, 0x0

    invoke-virtual {p0, p1, v0}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->updateStopFlags(II)V

    .line 616
    return-void
.end method

.method public getDownloadState()Lcom/google/android/exoplayer2/offline/DownloadState;
    .registers 28

    .line 562
    move-object/from16 v0, p0

    const/high16 v1, -0x40800000    # -1.0f

    .line 563
    .local v1, "downloadPercentage":F
    const-wide/16 v2, 0x0

    .line 564
    .local v2, "downloadedBytes":J
    const-wide/16 v4, -0x1

    .line 565
    .local v4, "totalBytes":J
    iget-object v6, v0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->downloader:Lcom/google/android/exoplayer2/offline/Downloader;

    if-eqz v6, :cond_1c

    .line 566
    invoke-interface {v6}, Lcom/google/android/exoplayer2/offline/Downloader;->getDownloadPercentage()F

    move-result v1

    .line 567
    iget-object v6, v0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->downloader:Lcom/google/android/exoplayer2/offline/Downloader;

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

    move-result-wide v2

    .line 568
    iget-object v6, v0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->downloader:Lcom/google/android/exoplayer2/offline/Downloader;

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

    move-result-wide v4

    .line 570
    :cond_1c
    iget-object v6, v0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->actionQueue:Ljava/util/ArrayDeque;

    invoke-virtual {v6}, Ljava/util/ArrayDeque;->peek()Ljava/lang/Object;

    move-result-object v6

    move-object v15, v6

    check-cast v15, Lcom/google/android/exoplayer2/offline/DownloadAction;

    .line 571
    .local v15, "action":Lcom/google/android/exoplayer2/offline/DownloadAction;
    new-instance v25, Lcom/google/android/exoplayer2/offline/DownloadState;

    move-object/from16 v6, v25

    iget-object v7, v15, Lcom/google/android/exoplayer2/offline/DownloadAction;->id:Ljava/lang/String;

    iget-object v8, v15, Lcom/google/android/exoplayer2/offline/DownloadAction;->type:Ljava/lang/String;

    iget-object v9, v15, Lcom/google/android/exoplayer2/offline/DownloadAction;->uri:Landroid/net/Uri;

    iget-object v10, v15, Lcom/google/android/exoplayer2/offline/DownloadAction;->customCacheKey:Ljava/lang/String;

    iget v11, v0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->state:I

    iget v12, v0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->failureReason:I

    move/from16 v17, v12

    iget v12, v0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->stopFlags:I

    move/from16 v18, v12

    iget-wide v12, v0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->startTimeMs:J

    move-wide/from16 v19, v12

    .line 583
    invoke-static {}, Ljava/lang/System;->currentTimeMillis()J

    move-result-wide v21

    iget-object v12, v15, Lcom/google/android/exoplayer2/offline/DownloadAction;->keys:Ljava/util/List;

    const/4 v13, 0x0

    new-array v13, v13, [Lcom/google/android/exoplayer2/offline/StreamKey;

    .line 584
    invoke-interface {v12, v13}, Ljava/util/List;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;

    move-result-object v12

    move-object/from16 v23, v12

    check-cast v23, [Lcom/google/android/exoplayer2/offline/StreamKey;

    iget-object v12, v15, Lcom/google/android/exoplayer2/offline/DownloadAction;->data:[B

    move-object/from16 v24, v12

    move v12, v1

    move-wide v13, v2

    move-object/from16 v26, v15

    .end local v15    # "action":Lcom/google/android/exoplayer2/offline/DownloadAction;
    .local v26, "action":Lcom/google/android/exoplayer2/offline/DownloadAction;
    move-wide v15, v4

    invoke-direct/range {v6 .. v24}, Lcom/google/android/exoplayer2/offline/DownloadState;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;IFJJIIJJ[Lcom/google/android/exoplayer2/offline/StreamKey;[B)V

    .line 571
    return-object v25
.end method

.method public isFinished()Z
    .registers 3

    .line 589
    iget v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->state:I

    const/4 v1, 0x4

    if-eq v0, v1, :cond_e

    const/4 v1, 0x3

    if-eq v0, v1, :cond_e

    const/4 v1, 0x6

    if-ne v0, v1, :cond_c

    goto :goto_e

    :cond_c
    const/4 v0, 0x0

    goto :goto_f

    :cond_e
    :goto_e
    const/4 v0, 0x1

    :goto_f
    return v0
.end method

.method public isIdle()Z
    .registers 3

    .line 593
    iget v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->state:I

    const/4 v1, 0x2

    if-eq v0, v1, :cond_d

    const/4 v1, 0x5

    if-eq v0, v1, :cond_d

    const/4 v1, 0x7

    if-eq v0, v1, :cond_d

    const/4 v0, 0x1

    goto :goto_e

    :cond_d
    const/4 v0, 0x0

    :goto_e
    return v0
.end method

.method public setStopFlags(I)V
    .registers 2
    .param p1, "flags"    # I

    .line 611
    invoke-virtual {p0, p1, p1}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->updateStopFlags(II)V

    .line 612
    return-void
.end method

.method public start()Z
    .registers 2

    .line 602
    iget v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->state:I

    if-eqz v0, :cond_6

    .line 603
    const/4 v0, 0x0

    return v0

    .line 605
    :cond_6
    iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->actionQueue:Ljava/util/ArrayDeque;

    invoke-virtual {v0}, Ljava/util/ArrayDeque;->peek()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lcom/google/android/exoplayer2/offline/DownloadAction;

    invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->startDownloadThread(Lcom/google/android/exoplayer2/offline/DownloadAction;)V

    .line 606
    const/4 v0, 0x2

    invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->setState(I)V

    .line 607
    const/4 v0, 0x1

    return v0
.end method

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

    .line 598
    new-instance v0, Ljava/lang/StringBuilder;

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

    iget-object v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->id:Ljava/lang/String;

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

    const/16 v1, 0x20

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

    iget v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->state:I

    invoke-static {v1}, Lcom/google/android/exoplayer2/offline/DownloadState;->getStateString(I)Ljava/lang/String;

    move-result-object v1

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

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

    move-result-object v0

    return-object v0
.end method

.method public updateStopFlags(II)V
    .registers 6
    .param p1, "flags"    # I
    .param p2, "values"    # I

    .line 619
    and-int v0, p2, p1

    iget v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->stopFlags:I

    xor-int/lit8 v2, p1, -0x1

    and-int/2addr v1, v2

    or-int/2addr v0, v1

    iput v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->stopFlags:I

    .line 620
    const/4 v1, 0x1

    if-eqz v0, :cond_1c

    .line 621
    iget v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->state:I

    const/4 v2, 0x2

    if-ne v0, v2, :cond_16

    .line 622
    invoke-direct {p0}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->stopDownloadThread()V

    goto :goto_24

    .line 623
    :cond_16
    if-nez v0, :cond_24

    .line 624
    invoke-direct {p0, v1}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->setState(I)V

    goto :goto_24

    .line 626
    :cond_1c
    iget v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->state:I

    if-ne v0, v1, :cond_24

    .line 627
    const/4 v0, 0x0

    invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->startOrQueue(Z)V

    .line 629
    :cond_24
    :goto_24
    return-void
.end method