JavaUrlRequest$SerializingExecutor.smali

.class final Laegon/chrome/net/impl/JavaUrlRequest$SerializingExecutor;
.super Ljava/lang/Object;

# interfaces
.implements Ljava/util/concurrent/Executor;


# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
    value = Laegon/chrome/net/impl/JavaUrlRequest;
.end annotation

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


# instance fields
.field private final mRunTasks:Ljava/lang/Runnable;

.field private mRunning:Z
    .annotation build Ljavax/annotation/concurrent/GuardedBy;
        value = "mTaskQueue"
    .end annotation
.end field

.field private final mTaskQueue:Ljava/util/ArrayDeque;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/ArrayDeque",
            "<",
            "Ljava/lang/Runnable;",
            ">;"
        }
    .end annotation

    .annotation build Ljavax/annotation/concurrent/GuardedBy;
        value = "mTaskQueue"
    .end annotation
.end field

.field private final mUnderlyingExecutor:Ljava/util/concurrent/Executor;


# direct methods
.method constructor <init>(Ljava/util/concurrent/Executor;)V
    .registers 3

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

    new-instance v0, Laegon/chrome/net/impl/JavaUrlRequest$SerializingExecutor$1;

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

    iput-object v0, p0, Laegon/chrome/net/impl/JavaUrlRequest$SerializingExecutor;->mRunTasks:Ljava/lang/Runnable;

    new-instance v0, Ljava/util/ArrayDeque;

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

    iput-object v0, p0, Laegon/chrome/net/impl/JavaUrlRequest$SerializingExecutor;->mTaskQueue:Ljava/util/ArrayDeque;

    iput-object p1, p0, Laegon/chrome/net/impl/JavaUrlRequest$SerializingExecutor;->mUnderlyingExecutor:Ljava/util/concurrent/Executor;

    return-void
.end method

.method static synthetic access$000(Laegon/chrome/net/impl/JavaUrlRequest$SerializingExecutor;)Ljava/util/ArrayDeque;
    .registers 2

    iget-object v0, p0, Laegon/chrome/net/impl/JavaUrlRequest$SerializingExecutor;->mTaskQueue:Ljava/util/ArrayDeque;

    return-object v0
.end method

.method static synthetic access$100(Laegon/chrome/net/impl/JavaUrlRequest$SerializingExecutor;)Z
    .registers 2

    iget-boolean v0, p0, Laegon/chrome/net/impl/JavaUrlRequest$SerializingExecutor;->mRunning:Z

    return v0
.end method

.method static synthetic access$102(Laegon/chrome/net/impl/JavaUrlRequest$SerializingExecutor;Z)Z
    .registers 2

    iput-boolean p1, p0, Laegon/chrome/net/impl/JavaUrlRequest$SerializingExecutor;->mRunning:Z

    return p1
.end method

.method static synthetic access$200(Laegon/chrome/net/impl/JavaUrlRequest$SerializingExecutor;)Ljava/lang/Runnable;
    .registers 2

    iget-object v0, p0, Laegon/chrome/net/impl/JavaUrlRequest$SerializingExecutor;->mRunTasks:Ljava/lang/Runnable;

    return-object v0
.end method

.method static synthetic access$300(Laegon/chrome/net/impl/JavaUrlRequest$SerializingExecutor;)Ljava/util/concurrent/Executor;
    .registers 2

    iget-object v0, p0, Laegon/chrome/net/impl/JavaUrlRequest$SerializingExecutor;->mUnderlyingExecutor:Ljava/util/concurrent/Executor;

    return-object v0
.end method


# virtual methods
.method public execute(Ljava/lang/Runnable;)V
    .registers 5

    iget-object v1, p0, Laegon/chrome/net/impl/JavaUrlRequest$SerializingExecutor;->mTaskQueue:Ljava/util/ArrayDeque;

    monitor-enter v1

    :try_start_3
    iget-object v0, p0, Laegon/chrome/net/impl/JavaUrlRequest$SerializingExecutor;->mTaskQueue:Ljava/util/ArrayDeque;

    invoke-virtual {v0, p1}, Ljava/util/ArrayDeque;->addLast(Ljava/lang/Object;)V
    :try_end_8
    .catchall {:try_start_3 .. :try_end_8} :catchall_18

    :try_start_8
    iget-object v0, p0, Laegon/chrome/net/impl/JavaUrlRequest$SerializingExecutor;->mUnderlyingExecutor:Ljava/util/concurrent/Executor;

    iget-object v2, p0, Laegon/chrome/net/impl/JavaUrlRequest$SerializingExecutor;->mRunTasks:Ljava/lang/Runnable;

    invoke-interface {v0, v2}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V
    :try_end_f
    .catch Ljava/util/concurrent/RejectedExecutionException; {:try_start_8 .. :try_end_f} :catch_11
    .catchall {:try_start_8 .. :try_end_f} :catchall_18

    :goto_f
    :try_start_f
    monitor-exit v1

    return-void

    :catch_11
    move-exception v0

    iget-object v0, p0, Laegon/chrome/net/impl/JavaUrlRequest$SerializingExecutor;->mTaskQueue:Ljava/util/ArrayDeque;

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

    goto :goto_f

    :catchall_18
    move-exception v0

    monitor-exit v1
    :try_end_1a
    .catchall {:try_start_f .. :try_end_1a} :catchall_18

    throw v0
.end method