DownloadManager.smali

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


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lcom/google/android/exoplayer2/offline/DownloadManager$RequirementListener;,
        Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;,
        Lcom/google/android/exoplayer2/offline/DownloadManager$Download;,
        Lcom/google/android/exoplayer2/offline/DownloadManager$Listener;
    }
.end annotation


# static fields
.field private static final DEBUG:Z = false

.field public static final DEFAULT_MAX_SIMULTANEOUS_DOWNLOADS:I = 0x1

.field public static final DEFAULT_MIN_RETRY_COUNT:I = 0x5

.field public static final DEFAULT_REQUIREMENTS:Lcom/google/android/exoplayer2/scheduler/Requirements;

.field private static final TAG:Ljava/lang/String; = "DownloadManager"


# instance fields
.field private final actionFile:Lcom/google/android/exoplayer2/offline/ActionFile;

.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 activeDownloads:Ljava/util/ArrayList;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/ArrayList<",
            "Lcom/google/android/exoplayer2/offline/DownloadManager$Download;",
            ">;"
        }
    .end annotation
.end field

.field private final context:Landroid/content/Context;

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

.field private final downloads:Ljava/util/ArrayList;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/ArrayList<",
            "Lcom/google/android/exoplayer2/offline/DownloadManager$Download;",
            ">;"
        }
    .end annotation
.end field

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

.field private final fileIOThread:Landroid/os/HandlerThread;

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

.field private initialized:Z

.field private final listeners:Ljava/util/concurrent/CopyOnWriteArraySet;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/concurrent/CopyOnWriteArraySet<",
            "Lcom/google/android/exoplayer2/offline/DownloadManager$Listener;",
            ">;"
        }
    .end annotation
.end field

.field private final maxActiveDownloads:I

.field private final minRetryCount:I

.field private released:Z

.field private requirementsWatcher:Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;

.field private stickyStopFlags:I


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

    .line 100
    new-instance v0, Lcom/google/android/exoplayer2/scheduler/Requirements;

    const/4 v1, 0x0

    const/4 v2, 0x1

    invoke-direct {v0, v2, v1, v1}, Lcom/google/android/exoplayer2/scheduler/Requirements;-><init>(IZZ)V

    sput-object v0, Lcom/google/android/exoplayer2/offline/DownloadManager;->DEFAULT_REQUIREMENTS:Lcom/google/android/exoplayer2/scheduler/Requirements;

    return-void
.end method

.method public constructor <init>(Landroid/content/Context;Ljava/io/File;Lcom/google/android/exoplayer2/offline/DownloaderFactory;)V
    .registers 11
    .param p1, "context"    # Landroid/content/Context;
    .param p2, "actionFile"    # Ljava/io/File;
    .param p3, "downloaderFactory"    # Lcom/google/android/exoplayer2/offline/DownloaderFactory;

    .line 132
    sget-object v6, Lcom/google/android/exoplayer2/offline/DownloadManager;->DEFAULT_REQUIREMENTS:Lcom/google/android/exoplayer2/scheduler/Requirements;

    const/4 v4, 0x1

    const/4 v5, 0x5

    move-object v0, p0

    move-object v1, p1

    move-object v2, p2

    move-object v3, p3

    invoke-direct/range {v0 .. v6}, Lcom/google/android/exoplayer2/offline/DownloadManager;-><init>(Landroid/content/Context;Ljava/io/File;Lcom/google/android/exoplayer2/offline/DownloaderFactory;IILcom/google/android/exoplayer2/scheduler/Requirements;)V

    .line 139
    return-void
.end method

.method public constructor <init>(Landroid/content/Context;Ljava/io/File;Lcom/google/android/exoplayer2/offline/DownloaderFactory;IILcom/google/android/exoplayer2/scheduler/Requirements;)V
    .registers 10
    .param p1, "context"    # Landroid/content/Context;
    .param p2, "actionFile"    # Ljava/io/File;
    .param p3, "downloaderFactory"    # Lcom/google/android/exoplayer2/offline/DownloaderFactory;
    .param p4, "maxSimultaneousDownloads"    # I
    .param p5, "minRetryCount"    # I
    .param p6, "requirements"    # Lcom/google/android/exoplayer2/scheduler/Requirements;

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

    .line 158
    invoke-virtual {p1}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context;

    move-result-object v0

    iput-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->context:Landroid/content/Context;

    .line 159
    new-instance v0, Lcom/google/android/exoplayer2/offline/ActionFile;

    invoke-direct {v0, p2}, Lcom/google/android/exoplayer2/offline/ActionFile;-><init>(Ljava/io/File;)V

    iput-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->actionFile:Lcom/google/android/exoplayer2/offline/ActionFile;

    .line 160
    iput-object p3, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->downloaderFactory:Lcom/google/android/exoplayer2/offline/DownloaderFactory;

    .line 161
    iput p4, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->maxActiveDownloads:I

    .line 162
    iput p5, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->minRetryCount:I

    .line 163
    const/4 v0, 0x3

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

    .line 165
    new-instance v0, Ljava/util/ArrayList;

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

    iput-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->downloads:Ljava/util/ArrayList;

    .line 166
    new-instance v0, Ljava/util/ArrayList;

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

    iput-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->activeDownloads:Ljava/util/ArrayList;

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

    move-result-object v0

    .line 169
    .local v0, "looper":Landroid/os/Looper;
    if-nez v0, :cond_31

    .line 170
    invoke-static {}, Landroid/os/Looper;->getMainLooper()Landroid/os/Looper;

    move-result-object v0

    .line 172
    :cond_31
    new-instance v1, Landroid/os/Handler;

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

    iput-object v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->handler:Landroid/os/Handler;

    .line 174
    new-instance v1, Landroid/os/HandlerThread;

    const-string v2, "DownloadManager file i/o"

    invoke-direct {v1, v2}, Landroid/os/HandlerThread;-><init>(Ljava/lang/String;)V

    iput-object v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->fileIOThread:Landroid/os/HandlerThread;

    .line 175
    invoke-virtual {v1}, Landroid/os/HandlerThread;->start()V

    .line 176
    new-instance v1, Landroid/os/Handler;

    iget-object v2, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->fileIOThread:Landroid/os/HandlerThread;

    invoke-virtual {v2}, Landroid/os/HandlerThread;->getLooper()Landroid/os/Looper;

    move-result-object v2

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

    iput-object v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->fileIOHandler:Landroid/os/Handler;

    .line 178
    new-instance v1, Ljava/util/concurrent/CopyOnWriteArraySet;

    invoke-direct {v1}, Ljava/util/concurrent/CopyOnWriteArraySet;-><init>()V

    iput-object v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->listeners:Ljava/util/concurrent/CopyOnWriteArraySet;

    .line 179
    new-instance v1, Ljava/util/ArrayDeque;

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

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

    .line 181
    invoke-direct {p0, p6}, Lcom/google/android/exoplayer2/offline/DownloadManager;->watchRequirements(Lcom/google/android/exoplayer2/scheduler/Requirements;)I

    .line 182
    invoke-direct {p0}, Lcom/google/android/exoplayer2/offline/DownloadManager;->loadActions()V

    .line 183
    const-string v1, "Created"

    invoke-static {v1}, Lcom/google/android/exoplayer2/offline/DownloadManager;->logd(Ljava/lang/String;)V

    .line 184
    return-void
.end method

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

    .line 56
    invoke-static {p0, p1}, Lcom/google/android/exoplayer2/offline/DownloadManager;->logd(Ljava/lang/String;Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)V

    return-void
.end method

.method static synthetic access$1200(Lcom/google/android/exoplayer2/offline/DownloadManager;I)V
    .registers 2
    .param p0, "x0"    # Lcom/google/android/exoplayer2/offline/DownloadManager;
    .param p1, "x1"    # I

    .line 56
    invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/offline/DownloadManager;->notifyListenersRequirementsStateChange(I)V

    return-void
.end method

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

    .line 56
    iget-boolean v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->released:Z

    return v0
.end method

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

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

    return-void
.end method

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

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

    return-void
.end method

.method static synthetic access$700(Lcom/google/android/exoplayer2/offline/DownloadManager;)Landroid/os/Handler;
    .registers 2
    .param p0, "x0"    # Lcom/google/android/exoplayer2/offline/DownloadManager;

    .line 56
    iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->handler:Landroid/os/Handler;

    return-object v0
.end method

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

    .line 344
    const/4 v0, 0x0

    .local v0, "i":I
    :goto_1
    iget-object v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->downloads:Ljava/util/ArrayList;

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

    move-result v1

    if-ge v0, v1, :cond_20

    .line 345
    iget-object v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->downloads:Ljava/util/ArrayList;

    invoke-virtual {v1, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;

    .line 346
    .local v1, "download":Lcom/google/android/exoplayer2/offline/DownloadManager$Download;
    invoke-virtual {v1, p1}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->addAction(Lcom/google/android/exoplayer2/offline/DownloadAction;)Z

    move-result v2

    if-eqz v2, :cond_1d

    .line 347
    const-string v2, "Action is added to existing download"

    invoke-static {v2, v1}, Lcom/google/android/exoplayer2/offline/DownloadManager;->logd(Ljava/lang/String;Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)V

    .line 348
    return-void

    .line 344
    .end local v1    # "download":Lcom/google/android/exoplayer2/offline/DownloadManager$Download;
    :cond_1d
    add-int/lit8 v0, v0, 0x1

    goto :goto_1

    .line 351
    .end local v0    # "i":I
    :cond_20
    new-instance v0, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;

    iget-object v3, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->downloaderFactory:Lcom/google/android/exoplayer2/offline/DownloaderFactory;

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

    iget v6, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->stickyStopFlags:I

    const/4 v7, 0x0

    move-object v1, v0

    move-object v2, p0

    move-object v4, p1

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

    .line 353
    .local v0, "download":Lcom/google/android/exoplayer2/offline/DownloadManager$Download;
    iget-object v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->downloads:Ljava/util/ArrayList;

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

    .line 354
    const-string v1, "Download is added"

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

    .line 355
    return-void
.end method

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

    .line 238
    const/4 v0, 0x0

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

    .line 239
    return-void
.end method

.method private loadActions()V
    .registers 3

    .line 414
    iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->fileIOHandler:Landroid/os/Handler;

    new-instance v1, Lcom/google/android/exoplayer2/offline/-$$Lambda$DownloadManager$0LJSbWXADhROJkmo8hGQn9eqfcs;

    invoke-direct {v1, p0}, Lcom/google/android/exoplayer2/offline/-$$Lambda$DownloadManager$0LJSbWXADhROJkmo8hGQn9eqfcs;-><init>(Lcom/google/android/exoplayer2/offline/DownloadManager;)V

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

    .line 447
    return-void
.end method

.method private static logd(Ljava/lang/String;)V
    .registers 1
    .param p0, "message"    # Ljava/lang/String;

    .line 473
    return-void
.end method

.method private static logd(Ljava/lang/String;Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)V
    .registers 2
    .param p0, "message"    # Ljava/lang/String;
    .param p1, "download"    # Lcom/google/android/exoplayer2/offline/DownloadManager$Download;

    .line 479
    return-void
.end method

.method private static logdFlags(Ljava/lang/String;I)V
    .registers 2
    .param p0, "message"    # Ljava/lang/String;
    .param p1, "flags"    # I

    .line 485
    return-void
.end method

.method private maybeNotifyListenersIdle()V
    .registers 3

    .line 366
    invoke-virtual {p0}, Lcom/google/android/exoplayer2/offline/DownloadManager;->isIdle()Z

    move-result v0

    if-nez v0, :cond_7

    .line 367
    return-void

    .line 369
    :cond_7
    const-string v0, "Notify idle state"

    invoke-static {v0}, Lcom/google/android/exoplayer2/offline/DownloadManager;->logd(Ljava/lang/String;)V

    .line 370
    iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->listeners:Ljava/util/concurrent/CopyOnWriteArraySet;

    invoke-virtual {v0}, Ljava/util/concurrent/CopyOnWriteArraySet;->iterator()Ljava/util/Iterator;

    move-result-object v0

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

    move-result v1

    if-eqz v1, :cond_22

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

    move-result-object v1

    check-cast v1, Lcom/google/android/exoplayer2/offline/DownloadManager$Listener;

    .line 371
    .local v1, "listener":Lcom/google/android/exoplayer2/offline/DownloadManager$Listener;
    invoke-interface {v1, p0}, Lcom/google/android/exoplayer2/offline/DownloadManager$Listener;->onIdle(Lcom/google/android/exoplayer2/offline/DownloadManager;)V

    .line 372
    .end local v1    # "listener":Lcom/google/android/exoplayer2/offline/DownloadManager$Listener;
    goto :goto_12

    .line 373
    :cond_22
    return-void
.end method

.method private maybeStartDownload(Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)V
    .registers 4
    .param p1, "download"    # Lcom/google/android/exoplayer2/offline/DownloadManager$Download;

    .line 358
    iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->activeDownloads:Ljava/util/ArrayList;

    invoke-virtual {v0}, Ljava/util/ArrayList;->size()I

    move-result v0

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

    if-ge v0, v1, :cond_15

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

    move-result v0

    if-eqz v0, :cond_15

    .line 360
    iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->activeDownloads:Ljava/util/ArrayList;

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

    .line 363
    :cond_15
    return-void
.end method

.method private notifyListenersDownloadStateChange(Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)V
    .registers 5
    .param p1, "download"    # Lcom/google/android/exoplayer2/offline/DownloadManager$Download;

    .line 397
    const-string v0, "Download state is changed"

    invoke-static {v0, p1}, Lcom/google/android/exoplayer2/offline/DownloadManager;->logd(Ljava/lang/String;Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)V

    .line 398
    invoke-virtual {p1}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->getDownloadState()Lcom/google/android/exoplayer2/offline/DownloadState;

    move-result-object v0

    .line 399
    .local v0, "downloadState":Lcom/google/android/exoplayer2/offline/DownloadState;
    iget-object v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->listeners:Ljava/util/concurrent/CopyOnWriteArraySet;

    invoke-virtual {v1}, Ljava/util/concurrent/CopyOnWriteArraySet;->iterator()Ljava/util/Iterator;

    move-result-object v1

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

    move-result v2

    if-eqz v2, :cond_1f

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

    move-result-object v2

    check-cast v2, Lcom/google/android/exoplayer2/offline/DownloadManager$Listener;

    .line 400
    .local v2, "listener":Lcom/google/android/exoplayer2/offline/DownloadManager$Listener;
    invoke-interface {v2, p0, v0}, Lcom/google/android/exoplayer2/offline/DownloadManager$Listener;->onDownloadStateChanged(Lcom/google/android/exoplayer2/offline/DownloadManager;Lcom/google/android/exoplayer2/offline/DownloadState;)V

    .line 401
    .end local v2    # "listener":Lcom/google/android/exoplayer2/offline/DownloadManager$Listener;
    goto :goto_f

    .line 402
    :cond_1f
    return-void
.end method

.method private notifyListenersRequirementsStateChange(I)V
    .registers 5
    .param p1, "notMetRequirements"    # I

    .line 406
    const-string v0, "Not met requirements are changed"

    invoke-static {v0, p1}, Lcom/google/android/exoplayer2/offline/DownloadManager;->logdFlags(Ljava/lang/String;I)V

    .line 407
    iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->listeners:Ljava/util/concurrent/CopyOnWriteArraySet;

    invoke-virtual {v0}, Ljava/util/concurrent/CopyOnWriteArraySet;->iterator()Ljava/util/Iterator;

    move-result-object v0

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

    move-result v1

    if-eqz v1, :cond_21

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

    move-result-object v1

    check-cast v1, Lcom/google/android/exoplayer2/offline/DownloadManager$Listener;

    .line 408
    .local v1, "listener":Lcom/google/android/exoplayer2/offline/DownloadManager$Listener;
    iget-object v2, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->requirementsWatcher:Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;

    .line 409
    invoke-virtual {v2}, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->getRequirements()Lcom/google/android/exoplayer2/scheduler/Requirements;

    move-result-object v2

    .line 408
    invoke-interface {v1, p0, v2, p1}, Lcom/google/android/exoplayer2/offline/DownloadManager$Listener;->onRequirementsStateChanged(Lcom/google/android/exoplayer2/offline/DownloadManager;Lcom/google/android/exoplayer2/scheduler/Requirements;I)V

    .line 410
    .end local v1    # "listener":Lcom/google/android/exoplayer2/offline/DownloadManager$Listener;
    goto :goto_b

    .line 411
    :cond_21
    return-void
.end method

.method private onDownloadStateChange(Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)V
    .registers 5
    .param p1, "download"    # Lcom/google/android/exoplayer2/offline/DownloadManager$Download;

    .line 376
    iget-boolean v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->released:Z

    if-eqz v0, :cond_5

    .line 377
    return-void

    .line 379
    :cond_5
    invoke-virtual {p1}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->isIdle()Z

    move-result v0

    .line 380
    .local v0, "idle":Z
    if-eqz v0, :cond_10

    .line 381
    iget-object v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->activeDownloads:Ljava/util/ArrayList;

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

    .line 383
    :cond_10
    invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/offline/DownloadManager;->notifyListenersDownloadStateChange(Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)V

    .line 384
    invoke-virtual {p1}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->isFinished()Z

    move-result v1

    if-eqz v1, :cond_21

    .line 385
    iget-object v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->downloads:Ljava/util/ArrayList;

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

    .line 386
    invoke-direct {p0}, Lcom/google/android/exoplayer2/offline/DownloadManager;->saveActions()V

    .line 388
    :cond_21
    if-eqz v0, :cond_3d

    .line 389
    const/4 v1, 0x0

    .local v1, "i":I
    :goto_24
    iget-object v2, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->downloads:Ljava/util/ArrayList;

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

    move-result v2

    if-ge v1, v2, :cond_3a

    .line 390
    iget-object v2, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->downloads:Ljava/util/ArrayList;

    invoke-virtual {v2, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;

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

    .line 389
    add-int/lit8 v1, v1, 0x1

    goto :goto_24

    .line 392
    .end local v1    # "i":I
    :cond_3a
    invoke-direct {p0}, Lcom/google/android/exoplayer2/offline/DownloadManager;->maybeNotifyListenersIdle()V

    .line 394
    :cond_3d
    return-void
.end method

.method private saveActions()V
    .registers 5

    .line 450
    iget-boolean v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->released:Z

    if-eqz v0, :cond_5

    .line 451
    return-void

    .line 453
    :cond_5
    new-instance v0, Ljava/util/ArrayList;

    iget-object v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->downloads:Ljava/util/ArrayList;

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

    move-result v1

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

    .line 454
    .local v0, "actions":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Lcom/google/android/exoplayer2/offline/DownloadAction;>;"
    const/4 v1, 0x0

    .local v1, "i":I
    :goto_11
    iget-object v2, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->downloads:Ljava/util/ArrayList;

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

    move-result v2

    if-ge v1, v2, :cond_2b

    .line 455
    iget-object v2, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->downloads:Ljava/util/ArrayList;

    invoke-virtual {v2, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;

    # getter for: Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->actionQueue:Ljava/util/ArrayDeque;
    invoke-static {v2}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->access$200(Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)Ljava/util/ArrayDeque;

    move-result-object v2

    invoke-virtual {v0, v2}, Ljava/util/ArrayList;->addAll(Ljava/util/Collection;)Z

    .line 454
    add-int/lit8 v1, v1, 0x1

    goto :goto_11

    .line 457
    .end local v1    # "i":I
    :cond_2b
    const/4 v1, 0x0

    new-array v1, v1, [Lcom/google/android/exoplayer2/offline/DownloadAction;

    invoke-virtual {v0, v1}, Ljava/util/ArrayList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;

    move-result-object v1

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

    .line 458
    .local v1, "actionsArray":[Lcom/google/android/exoplayer2/offline/DownloadAction;
    iget-object v2, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->fileIOHandler:Landroid/os/Handler;

    new-instance v3, Lcom/google/android/exoplayer2/offline/-$$Lambda$DownloadManager$SgHHqKrgOJ8vvRnakgUybwmDe2w;

    invoke-direct {v3, p0, v1}, Lcom/google/android/exoplayer2/offline/-$$Lambda$DownloadManager$SgHHqKrgOJ8vvRnakgUybwmDe2w;-><init>(Lcom/google/android/exoplayer2/offline/DownloadManager;[Lcom/google/android/exoplayer2/offline/DownloadAction;)V

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

    .line 467
    return-void
.end method

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

    .line 234
    invoke-direct {p0, p1, p1}, Lcom/google/android/exoplayer2/offline/DownloadManager;->updateStopFlags(II)V

    .line 235
    return-void
.end method

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

    .line 242
    iget-boolean v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->released:Z

    xor-int/lit8 v0, v0, 0x1

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

    .line 243
    and-int v0, p2, p1

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

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

    and-int/2addr v2, v1

    or-int/2addr v0, v2

    .line 244
    .local v0, "updatedStickyStopFlags":I
    if-eq v1, v0, :cond_2f

    .line 245
    iput v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->stickyStopFlags:I

    .line 246
    const/4 v1, 0x0

    .local v1, "i":I
    :goto_14
    iget-object v2, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->downloads:Ljava/util/ArrayList;

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

    move-result v2

    if-ge v1, v2, :cond_2a

    .line 247
    iget-object v2, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->downloads:Ljava/util/ArrayList;

    invoke-virtual {v2, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;

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

    .line 246
    add-int/lit8 v1, v1, 0x1

    goto :goto_14

    .line 249
    .end local v1    # "i":I
    :cond_2a
    const-string v1, "Sticky stop flags are updated"

    invoke-static {v1, v0}, Lcom/google/android/exoplayer2/offline/DownloadManager;->logdFlags(Ljava/lang/String;I)V

    .line 251
    :cond_2f
    return-void
.end method

.method private watchRequirements(Lcom/google/android/exoplayer2/scheduler/Requirements;)I
    .registers 6
    .param p1, "requirements"    # Lcom/google/android/exoplayer2/scheduler/Requirements;

    .line 489
    new-instance v0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;

    iget-object v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->context:Landroid/content/Context;

    new-instance v2, Lcom/google/android/exoplayer2/offline/DownloadManager$RequirementListener;

    const/4 v3, 0x0

    invoke-direct {v2, p0, v3}, Lcom/google/android/exoplayer2/offline/DownloadManager$RequirementListener;-><init>(Lcom/google/android/exoplayer2/offline/DownloadManager;Lcom/google/android/exoplayer2/offline/DownloadManager$1;)V

    invoke-direct {v0, v1, v2, p1}, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;-><init>(Landroid/content/Context;Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher$Listener;Lcom/google/android/exoplayer2/scheduler/Requirements;)V

    iput-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->requirementsWatcher:Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;

    .line 490
    invoke-virtual {v0}, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->start()I

    move-result v0

    .line 491
    .local v0, "notMetRequirements":I
    if-nez v0, :cond_19

    .line 492
    invoke-virtual {p0}, Lcom/google/android/exoplayer2/offline/DownloadManager;->startDownloads()V

    goto :goto_1c

    .line 494
    :cond_19
    invoke-virtual {p0}, Lcom/google/android/exoplayer2/offline/DownloadManager;->stopDownloads()V

    .line 496
    :goto_1c
    return v0
.end method


# virtual methods
.method public addListener(Lcom/google/android/exoplayer2/offline/DownloadManager$Listener;)V
    .registers 3
    .param p1, "listener"    # Lcom/google/android/exoplayer2/offline/DownloadManager$Listener;

    .line 211
    iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->listeners:Ljava/util/concurrent/CopyOnWriteArraySet;

    invoke-virtual {v0, p1}, Ljava/util/concurrent/CopyOnWriteArraySet;->add(Ljava/lang/Object;)Z

    .line 212
    return-void
.end method

.method public getAllDownloadStates()[Lcom/google/android/exoplayer2/offline/DownloadState;
    .registers 4

    .line 294
    iget-boolean v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->released:Z

    xor-int/lit8 v0, v0, 0x1

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

    .line 295
    iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->downloads:Ljava/util/ArrayList;

    invoke-virtual {v0}, Ljava/util/ArrayList;->size()I

    move-result v0

    new-array v0, v0, [Lcom/google/android/exoplayer2/offline/DownloadState;

    .line 296
    .local v0, "states":[Lcom/google/android/exoplayer2/offline/DownloadState;
    const/4 v1, 0x0

    .local v1, "i":I
    :goto_10
    array-length v2, v0

    if-ge v1, v2, :cond_24

    .line 297
    iget-object v2, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->downloads:Ljava/util/ArrayList;

    invoke-virtual {v2, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;

    invoke-virtual {v2}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->getDownloadState()Lcom/google/android/exoplayer2/offline/DownloadState;

    move-result-object v2

    aput-object v2, v0, v1

    .line 296
    add-int/lit8 v1, v1, 0x1

    goto :goto_10

    .line 299
    .end local v1    # "i":I
    :cond_24
    return-object v0
.end method

.method public getDownloadCount()I
    .registers 2

    .line 270
    iget-boolean v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->released:Z

    xor-int/lit8 v0, v0, 0x1

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

    .line 271
    iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->downloads:Ljava/util/ArrayList;

    invoke-virtual {v0}, Ljava/util/ArrayList;->size()I

    move-result v0

    return v0
.end method

.method public getDownloadState(Ljava/lang/String;)Lcom/google/android/exoplayer2/offline/DownloadState;
    .registers 5
    .param p1, "id"    # Ljava/lang/String;

    .line 282
    iget-boolean v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->released:Z

    xor-int/lit8 v0, v0, 0x1

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

    .line 283
    const/4 v0, 0x0

    .local v0, "i":I
    :goto_8
    iget-object v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->downloads:Ljava/util/ArrayList;

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

    move-result v1

    if-ge v0, v1, :cond_2a

    .line 284
    iget-object v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->downloads:Ljava/util/ArrayList;

    invoke-virtual {v1, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;

    .line 285
    .local v1, "download":Lcom/google/android/exoplayer2/offline/DownloadManager$Download;
    # getter for: Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->id:Ljava/lang/String;
    invoke-static {v1}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->access$000(Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)Ljava/lang/String;

    move-result-object v2

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

    move-result v2

    if-eqz v2, :cond_27

    .line 286
    invoke-virtual {v1}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->getDownloadState()Lcom/google/android/exoplayer2/offline/DownloadState;

    move-result-object v2

    return-object v2

    .line 283
    .end local v1    # "download":Lcom/google/android/exoplayer2/offline/DownloadManager$Download;
    :cond_27
    add-int/lit8 v0, v0, 0x1

    goto :goto_8

    .line 289
    .end local v0    # "i":I
    :cond_2a
    const/4 v0, 0x0

    return-object v0
.end method

.method public getRequirements()Lcom/google/android/exoplayer2/scheduler/Requirements;
    .registers 2

    .line 202
    iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->requirementsWatcher:Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;

    invoke-virtual {v0}, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->getRequirements()Lcom/google/android/exoplayer2/scheduler/Requirements;

    move-result-object v0

    return-object v0
.end method

.method public handleAction(Lcom/google/android/exoplayer2/offline/DownloadAction;)V
    .registers 3
    .param p1, "action"    # Lcom/google/android/exoplayer2/offline/DownloadAction;

    .line 259
    iget-boolean v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->released:Z

    xor-int/lit8 v0, v0, 0x1

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

    .line 260
    iget-boolean v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->initialized:Z

    if-eqz v0, :cond_12

    .line 261
    invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/offline/DownloadManager;->addDownloadForAction(Lcom/google/android/exoplayer2/offline/DownloadAction;)V

    .line 262
    invoke-direct {p0}, Lcom/google/android/exoplayer2/offline/DownloadManager;->saveActions()V

    goto :goto_17

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

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

    .line 266
    :goto_17
    return-void
.end method

.method public isIdle()Z
    .registers 5

    .line 310
    iget-boolean v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->released:Z

    const/4 v1, 0x1

    xor-int/2addr v0, v1

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

    .line 311
    iget-boolean v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->initialized:Z

    const/4 v2, 0x0

    if-nez v0, :cond_d

    .line 312
    return v2

    .line 314
    :cond_d
    const/4 v0, 0x0

    .local v0, "i":I
    :goto_e
    iget-object v3, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->downloads:Ljava/util/ArrayList;

    invoke-virtual {v3}, Ljava/util/ArrayList;->size()I

    move-result v3

    if-ge v0, v3, :cond_28

    .line 315
    iget-object v3, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->downloads:Ljava/util/ArrayList;

    invoke-virtual {v3, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;

    move-result-object v3

    check-cast v3, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;

    invoke-virtual {v3}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->isIdle()Z

    move-result v3

    if-nez v3, :cond_25

    .line 316
    return v2

    .line 314
    :cond_25
    add-int/lit8 v0, v0, 0x1

    goto :goto_e

    .line 319
    .end local v0    # "i":I
    :cond_28
    return v1
.end method

.method public isInitialized()Z
    .registers 2

    .line 304
    iget-boolean v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->released:Z

    xor-int/lit8 v0, v0, 0x1

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

    .line 305
    iget-boolean v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->initialized:Z

    return v0
.end method

.method public synthetic lambda$loadActions$1$DownloadManager()V
    .registers 5

    .line 418
    :try_start_0
    iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->actionFile:Lcom/google/android/exoplayer2/offline/ActionFile;

    invoke-virtual {v0}, Lcom/google/android/exoplayer2/offline/ActionFile;->load()[Lcom/google/android/exoplayer2/offline/DownloadAction;

    move-result-object v0

    .line 419
    .local v0, "loadedActions":[Lcom/google/android/exoplayer2/offline/DownloadAction;
    const-string v1, "Action file is loaded."

    invoke-static {v1}, Lcom/google/android/exoplayer2/offline/DownloadManager;->logd(Ljava/lang/String;)V
    :try_end_b
    .catchall {:try_start_0 .. :try_end_b} :catchall_c

    .line 423
    goto :goto_18

    .line 420
    .end local v0    # "loadedActions":[Lcom/google/android/exoplayer2/offline/DownloadAction;
    :catchall_c
    move-exception v0

    .line 421
    .local v0, "e":Ljava/lang/Throwable;
    const-string v1, "DownloadManager"

    const-string v2, "Action file loading failed."

    invoke-static {v1, v2, v0}, Lcom/google/android/exoplayer2/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V

    .line 422
    const/4 v1, 0x0

    new-array v1, v1, [Lcom/google/android/exoplayer2/offline/DownloadAction;

    move-object v0, v1

    .line 424
    .local v0, "loadedActions":[Lcom/google/android/exoplayer2/offline/DownloadAction;
    :goto_18
    move-object v1, v0

    .line 425
    .local v1, "actions":[Lcom/google/android/exoplayer2/offline/DownloadAction;
    iget-object v2, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->handler:Landroid/os/Handler;

    new-instance v3, Lcom/google/android/exoplayer2/offline/-$$Lambda$DownloadManager$tqhW7d1-gBwDY6S8i1JfVeIyzSI;

    invoke-direct {v3, p0, v1}, Lcom/google/android/exoplayer2/offline/-$$Lambda$DownloadManager$tqhW7d1-gBwDY6S8i1JfVeIyzSI;-><init>(Lcom/google/android/exoplayer2/offline/DownloadManager;[Lcom/google/android/exoplayer2/offline/DownloadAction;)V

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

    .line 446
    return-void
.end method

.method public synthetic lambda$null$0$DownloadManager([Lcom/google/android/exoplayer2/offline/DownloadAction;)V
    .registers 5
    .param p1, "actions"    # [Lcom/google/android/exoplayer2/offline/DownloadAction;

    .line 427
    iget-boolean v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->released:Z

    if-eqz v0, :cond_5

    .line 428
    return-void

    .line 430
    :cond_5
    array-length v0, p1

    const/4 v1, 0x0

    :goto_7
    if-ge v1, v0, :cond_11

    aget-object v2, p1, v1

    .line 431
    .local v2, "action":Lcom/google/android/exoplayer2/offline/DownloadAction;
    invoke-direct {p0, v2}, Lcom/google/android/exoplayer2/offline/DownloadManager;->addDownloadForAction(Lcom/google/android/exoplayer2/offline/DownloadAction;)V

    .line 430
    .end local v2    # "action":Lcom/google/android/exoplayer2/offline/DownloadAction;
    add-int/lit8 v1, v1, 0x1

    goto :goto_7

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

    invoke-virtual {v0}, Ljava/util/ArrayDeque;->isEmpty()Z

    move-result v0

    if-nez v0, :cond_30

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

    invoke-virtual {v0}, Ljava/util/ArrayDeque;->isEmpty()Z

    move-result v0

    if-nez v0, :cond_2d

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

    invoke-virtual {v0}, Ljava/util/ArrayDeque;->remove()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;->addDownloadForAction(Lcom/google/android/exoplayer2/offline/DownloadAction;)V

    goto :goto_19

    .line 437
    :cond_2d
    invoke-direct {p0}, Lcom/google/android/exoplayer2/offline/DownloadManager;->saveActions()V

    .line 439
    :cond_30
    const-string v0, "Downloads are created."

    invoke-static {v0}, Lcom/google/android/exoplayer2/offline/DownloadManager;->logd(Ljava/lang/String;)V

    .line 440
    const/4 v0, 0x1

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

    .line 441
    iget-object v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->listeners:Ljava/util/concurrent/CopyOnWriteArraySet;

    invoke-virtual {v1}, Ljava/util/concurrent/CopyOnWriteArraySet;->iterator()Ljava/util/Iterator;

    move-result-object v1

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

    move-result v2

    if-eqz v2, :cond_4e

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

    move-result-object v2

    check-cast v2, Lcom/google/android/exoplayer2/offline/DownloadManager$Listener;

    .line 442
    .local v2, "listener":Lcom/google/android/exoplayer2/offline/DownloadManager$Listener;
    invoke-interface {v2, p0}, Lcom/google/android/exoplayer2/offline/DownloadManager$Listener;->onInitialized(Lcom/google/android/exoplayer2/offline/DownloadManager;)V

    .line 443
    .end local v2    # "listener":Lcom/google/android/exoplayer2/offline/DownloadManager$Listener;
    goto :goto_3e

    .line 444
    :cond_4e
    invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/offline/DownloadManager;->clearStopFlags(I)V

    .line 445
    return-void
.end method

.method public synthetic lambda$saveActions$2$DownloadManager([Lcom/google/android/exoplayer2/offline/DownloadAction;)V
    .registers 5
    .param p1, "actionsArray"    # [Lcom/google/android/exoplayer2/offline/DownloadAction;

    .line 461
    :try_start_0
    iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->actionFile:Lcom/google/android/exoplayer2/offline/ActionFile;

    invoke-virtual {v0, p1}, Lcom/google/android/exoplayer2/offline/ActionFile;->store([Lcom/google/android/exoplayer2/offline/DownloadAction;)V

    .line 462
    const-string v0, "Actions persisted."

    invoke-static {v0}, Lcom/google/android/exoplayer2/offline/DownloadManager;->logd(Ljava/lang/String;)V
    :try_end_a
    .catch Ljava/io/IOException; {:try_start_0 .. :try_end_a} :catch_b

    .line 465
    goto :goto_13

    .line 463
    :catch_b
    move-exception v0

    .line 464
    .local v0, "e":Ljava/io/IOException;
    const-string v1, "DownloadManager"

    const-string v2, "Persisting actions failed."

    invoke-static {v1, v2, v0}, Lcom/google/android/exoplayer2/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V

    .line 466
    .end local v0    # "e":Ljava/io/IOException;
    :goto_13
    return-void
.end method

.method public release()V
    .registers 4

    .line 328
    iget-boolean v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->released:Z

    if-eqz v0, :cond_5

    .line 329
    return-void

    .line 331
    :cond_5
    const/4 v0, 0x1

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

    .line 332
    iput-boolean v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->released:Z

    .line 333
    iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->requirementsWatcher:Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;

    if-eqz v0, :cond_12

    .line 334
    invoke-virtual {v0}, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->stop()V

    .line 336
    :cond_12
    new-instance v0, Landroid/os/ConditionVariable;

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

    .line 337
    .local v0, "fileIOFinishedCondition":Landroid/os/ConditionVariable;
    iget-object v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->fileIOHandler:Landroid/os/Handler;

    invoke-virtual {v0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;

    new-instance v2, Lcom/google/android/exoplayer2/offline/-$$Lambda$xEDVsWySjOhZCU-CTVGu6ziJ2xc;

    invoke-direct {v2, v0}, Lcom/google/android/exoplayer2/offline/-$$Lambda$xEDVsWySjOhZCU-CTVGu6ziJ2xc;-><init>(Landroid/os/ConditionVariable;)V

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

    .line 338
    invoke-virtual {v0}, Landroid/os/ConditionVariable;->block()V

    .line 339
    iget-object v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->fileIOThread:Landroid/os/HandlerThread;

    invoke-virtual {v1}, Landroid/os/HandlerThread;->quit()Z

    .line 340
    const-string v1, "Released"

    invoke-static {v1}, Lcom/google/android/exoplayer2/offline/DownloadManager;->logd(Ljava/lang/String;)V

    .line 341
    return-void
.end method

.method public removeListener(Lcom/google/android/exoplayer2/offline/DownloadManager$Listener;)V
    .registers 3
    .param p1, "listener"    # Lcom/google/android/exoplayer2/offline/DownloadManager$Listener;

    .line 220
    iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->listeners:Ljava/util/concurrent/CopyOnWriteArraySet;

    invoke-virtual {v0, p1}, Ljava/util/concurrent/CopyOnWriteArraySet;->remove(Ljava/lang/Object;)Z

    .line 221
    return-void
.end method

.method public setRequirements(Lcom/google/android/exoplayer2/scheduler/Requirements;)V
    .registers 3
    .param p1, "requirements"    # Lcom/google/android/exoplayer2/scheduler/Requirements;

    .line 192
    iget-boolean v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->released:Z

    xor-int/lit8 v0, v0, 0x1

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

    .line 193
    iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->requirementsWatcher:Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;

    invoke-virtual {v0}, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->getRequirements()Lcom/google/android/exoplayer2/scheduler/Requirements;

    move-result-object v0

    invoke-virtual {p1, v0}, Lcom/google/android/exoplayer2/scheduler/Requirements;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-eqz v0, :cond_14

    .line 194
    return-void

    .line 196
    :cond_14
    iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager;->requirementsWatcher:Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;

    invoke-virtual {v0}, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->stop()V

    .line 197
    invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/offline/DownloadManager;->watchRequirements(Lcom/google/android/exoplayer2/scheduler/Requirements;)I

    move-result v0

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

    .line 198
    return-void
.end method

.method public startDownloads()V
    .registers 2

    .line 225
    const/4 v0, 0x2

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

    .line 226
    return-void
.end method

.method public stopDownloads()V
    .registers 2

    .line 230
    const/4 v0, 0x2

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

    .line 231
    return-void
.end method