DefaultTaskExecutor.smali

.class Laegon/chrome/base/task/DefaultTaskExecutor;
.super Ljava/lang/Object;

# interfaces
.implements Laegon/chrome/base/task/TaskExecutor;


# instance fields
.field private final mTraitsToRunnerMap:Ljava/util/Map;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/Map",
            "<",
            "Laegon/chrome/base/task/TaskTraits;",
            "Laegon/chrome/base/task/TaskRunner;",
            ">;"
        }
    .end annotation
.end field


# direct methods
.method constructor <init>()V
    .registers 2

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

    new-instance v0, Ljava/util/HashMap;

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

    iput-object v0, p0, Laegon/chrome/base/task/DefaultTaskExecutor;->mTraitsToRunnerMap:Ljava/util/Map;

    return-void
.end method

.method private declared-synchronized createChoreographerTaskRunner()Laegon/chrome/base/task/ChoreographerTaskRunner;
    .registers 2

    monitor-enter p0

    :try_start_1
    invoke-static {}, Laegon/chrome/base/task/DefaultTaskExecutor$$Lambda$1;->lambdaFactory$()Ljava/util/concurrent/Callable;

    move-result-object v0

    invoke-static {v0}, Laegon/chrome/base/ThreadUtils;->runOnUiThreadBlockingNoException(Ljava/util/concurrent/Callable;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Laegon/chrome/base/task/ChoreographerTaskRunner;
    :try_end_b
    .catchall {:try_start_1 .. :try_end_b} :catchall_d

    monitor-exit p0

    return-object v0

    :catchall_d
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method static synthetic lambda$createChoreographerTaskRunner$0()Laegon/chrome/base/task/ChoreographerTaskRunner;
    .registers 2

    new-instance v0, Laegon/chrome/base/task/ChoreographerTaskRunner;

    invoke-static {}, Landroid/view/Choreographer;->getInstance()Landroid/view/Choreographer;

    move-result-object v1

    invoke-direct {v0, v1}, Laegon/chrome/base/task/ChoreographerTaskRunner;-><init>(Landroid/view/Choreographer;)V

    return-object v0
.end method


# virtual methods
.method public canRunTaskImmediately(Laegon/chrome/base/task/TaskTraits;)Z
    .registers 3

    const/4 v0, 0x0

    return v0
.end method

.method public createSequencedTaskRunner(Laegon/chrome/base/task/TaskTraits;)Laegon/chrome/base/task/SequencedTaskRunner;
    .registers 3

    iget-boolean v0, p1, Laegon/chrome/base/task/TaskTraits;->mIsChoreographerFrame:Z

    if-eqz v0, :cond_9

    invoke-direct {p0}, Laegon/chrome/base/task/DefaultTaskExecutor;->createChoreographerTaskRunner()Laegon/chrome/base/task/ChoreographerTaskRunner;

    move-result-object v0

    :goto_8
    return-object v0

    :cond_9
    new-instance v0, Laegon/chrome/base/task/SequencedTaskRunnerImpl;

    invoke-direct {v0, p1}, Laegon/chrome/base/task/SequencedTaskRunnerImpl;-><init>(Laegon/chrome/base/task/TaskTraits;)V

    goto :goto_8
.end method

.method public createSingleThreadTaskRunner(Laegon/chrome/base/task/TaskTraits;)Laegon/chrome/base/task/SingleThreadTaskRunner;
    .registers 4

    iget-boolean v0, p1, Laegon/chrome/base/task/TaskTraits;->mIsChoreographerFrame:Z

    if-eqz v0, :cond_9

    invoke-direct {p0}, Laegon/chrome/base/task/DefaultTaskExecutor;->createChoreographerTaskRunner()Laegon/chrome/base/task/ChoreographerTaskRunner;

    move-result-object v0

    :goto_8
    return-object v0

    :cond_9
    new-instance v0, Laegon/chrome/base/task/SingleThreadTaskRunnerImpl;

    const/4 v1, 0x0

    invoke-direct {v0, v1, p1}, Laegon/chrome/base/task/SingleThreadTaskRunnerImpl;-><init>(Landroid/os/Handler;Laegon/chrome/base/task/TaskTraits;)V

    goto :goto_8
.end method

.method public createTaskRunner(Laegon/chrome/base/task/TaskTraits;)Laegon/chrome/base/task/TaskRunner;
    .registers 3

    iget-boolean v0, p1, Laegon/chrome/base/task/TaskTraits;->mIsChoreographerFrame:Z

    if-eqz v0, :cond_9

    invoke-direct {p0}, Laegon/chrome/base/task/DefaultTaskExecutor;->createChoreographerTaskRunner()Laegon/chrome/base/task/ChoreographerTaskRunner;

    move-result-object v0

    :goto_8
    return-object v0

    :cond_9
    new-instance v0, Laegon/chrome/base/task/TaskRunnerImpl;

    invoke-direct {v0, p1}, Laegon/chrome/base/task/TaskRunnerImpl;-><init>(Laegon/chrome/base/task/TaskTraits;)V

    goto :goto_8
.end method

.method public declared-synchronized postDelayedTask(Laegon/chrome/base/task/TaskTraits;Ljava/lang/Runnable;J)V
    .registers 8

    monitor-enter p0

    :try_start_1
    invoke-virtual {p1}, Laegon/chrome/base/task/TaskTraits;->hasExtension()Z

    move-result v0

    if-eqz v0, :cond_13

    invoke-virtual {p0, p1}, Laegon/chrome/base/task/DefaultTaskExecutor;->createTaskRunner(Laegon/chrome/base/task/TaskTraits;)Laegon/chrome/base/task/TaskRunner;

    move-result-object v0

    invoke-interface {v0, p2, p3, p4}, Laegon/chrome/base/task/TaskRunner;->postDelayedTask(Ljava/lang/Runnable;J)V

    invoke-interface {v0}, Laegon/chrome/base/task/TaskRunner;->destroy()V
    :try_end_11
    .catchall {:try_start_1 .. :try_end_11} :catchall_2d

    :goto_11
    monitor-exit p0

    return-void

    :cond_13
    :try_start_13
    iget-object v0, p0, Laegon/chrome/base/task/DefaultTaskExecutor;->mTraitsToRunnerMap:Ljava/util/Map;

    invoke-interface {v0, p1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Laegon/chrome/base/task/TaskRunner;

    if-nez v0, :cond_29

    invoke-virtual {p0, p1}, Laegon/chrome/base/task/DefaultTaskExecutor;->createTaskRunner(Laegon/chrome/base/task/TaskTraits;)Laegon/chrome/base/task/TaskRunner;

    move-result-object v0

    invoke-interface {v0}, Laegon/chrome/base/task/TaskRunner;->disableLifetimeCheck()V

    iget-object v1, p0, Laegon/chrome/base/task/DefaultTaskExecutor;->mTraitsToRunnerMap:Ljava/util/Map;

    invoke-interface {v1, p1, v0}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    :cond_29
    invoke-interface {v0, p2, p3, p4}, Laegon/chrome/base/task/TaskRunner;->postDelayedTask(Ljava/lang/Runnable;J)V
    :try_end_2c
    .catchall {:try_start_13 .. :try_end_2c} :catchall_2d

    goto :goto_11

    :catchall_2d
    move-exception v0

    monitor-exit p0

    throw v0
.end method