CronetUploadDataStream.smali
.class public final Laegon/chrome/net/impl/CronetUploadDataStream;
.super Laegon/chrome/net/UploadDataSink;
# annotations
.annotation build Laegon/chrome/base/VisibleForTesting;
.end annotation
.annotation runtime Laegon/chrome/base/annotations/JNINamespace;
value = "cronet"
.end annotation
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Laegon/chrome/net/impl/CronetUploadDataStream$UserCallback;
}
.end annotation
# static fields
.field private static final TAG:Ljava/lang/String;
# instance fields
.field private mByteBuffer:Ljava/nio/ByteBuffer;
.field private mByteBufferLimit:J
.field private final mDataProvider:Laegon/chrome/net/impl/VersionSafeCallbacks$UploadDataProviderWrapper;
.field private mDestroyAdapterPostponed:Z
.annotation build Ljavax/annotation/concurrent/GuardedBy;
value = "mLock"
.end annotation
.end field
.field private final mExecutor:Ljava/util/concurrent/Executor;
.field private mInWhichUserCallback:I
.annotation build Ljavax/annotation/concurrent/GuardedBy;
value = "mLock"
.end annotation
.end field
.field private mLength:J
.field private final mLock:Ljava/lang/Object;
.field private mOnDestroyedCallbackForTesting:Ljava/lang/Runnable;
.field private final mReadTask:Ljava/lang/Runnable;
.field private mRemainingLength:J
.field private final mRequest:Laegon/chrome/net/impl/CronetUrlRequest;
.field private mUploadDataStreamAdapter:J
.annotation build Ljavax/annotation/concurrent/GuardedBy;
value = "mLock"
.end annotation
.end field
# direct methods
.method static constructor <clinit>()V
.registers 1
const-class v0, Laegon/chrome/net/impl/CronetUploadDataStream;
invoke-virtual {v0}, Ljava/lang/Class;->getSimpleName()Ljava/lang/String;
move-result-object v0
sput-object v0, Laegon/chrome/net/impl/CronetUploadDataStream;->TAG:Ljava/lang/String;
return-void
.end method
.method public constructor <init>(Laegon/chrome/net/UploadDataProvider;Ljava/util/concurrent/Executor;Laegon/chrome/net/impl/CronetUrlRequest;)V
.registers 5
invoke-direct {p0}, Laegon/chrome/net/UploadDataSink;-><init>()V
new-instance v0, Laegon/chrome/net/impl/CronetUploadDataStream$1;
invoke-direct {v0, p0}, Laegon/chrome/net/impl/CronetUploadDataStream$1;-><init>(Laegon/chrome/net/impl/CronetUploadDataStream;)V
iput-object v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mReadTask:Ljava/lang/Runnable;
new-instance v0, Ljava/lang/Object;
invoke-direct {v0}, Ljava/lang/Object;-><init>()V
iput-object v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mLock:Ljava/lang/Object;
const/4 v0, 0x3
iput v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mInWhichUserCallback:I
iput-object p2, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mExecutor:Ljava/util/concurrent/Executor;
new-instance v0, Laegon/chrome/net/impl/VersionSafeCallbacks$UploadDataProviderWrapper;
invoke-direct {v0, p1}, Laegon/chrome/net/impl/VersionSafeCallbacks$UploadDataProviderWrapper;-><init>(Laegon/chrome/net/UploadDataProvider;)V
iput-object v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mDataProvider:Laegon/chrome/net/impl/VersionSafeCallbacks$UploadDataProviderWrapper;
iput-object p3, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mRequest:Laegon/chrome/net/impl/CronetUrlRequest;
return-void
.end method
.method static synthetic access$000(Laegon/chrome/net/impl/CronetUploadDataStream;)Ljava/lang/Object;
.registers 2
iget-object v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mLock:Ljava/lang/Object;
return-object v0
.end method
.method static synthetic access$100(Laegon/chrome/net/impl/CronetUploadDataStream;)J
.registers 3
iget-wide v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mUploadDataStreamAdapter:J
return-wide v0
.end method
.method static synthetic access$200(Laegon/chrome/net/impl/CronetUploadDataStream;I)V
.registers 2
invoke-direct {p0, p1}, Laegon/chrome/net/impl/CronetUploadDataStream;->checkState(I)V
return-void
.end method
.method static synthetic access$300(Laegon/chrome/net/impl/CronetUploadDataStream;)Ljava/nio/ByteBuffer;
.registers 2
iget-object v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mByteBuffer:Ljava/nio/ByteBuffer;
return-object v0
.end method
.method static synthetic access$402(Laegon/chrome/net/impl/CronetUploadDataStream;I)I
.registers 2
iput p1, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mInWhichUserCallback:I
return p1
.end method
.method static synthetic access$500(Laegon/chrome/net/impl/CronetUploadDataStream;)V
.registers 1
invoke-direct {p0}, Laegon/chrome/net/impl/CronetUploadDataStream;->checkCallingThread()V
return-void
.end method
.method static synthetic access$600(Laegon/chrome/net/impl/CronetUploadDataStream;)Laegon/chrome/net/impl/VersionSafeCallbacks$UploadDataProviderWrapper;
.registers 2
iget-object v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mDataProvider:Laegon/chrome/net/impl/VersionSafeCallbacks$UploadDataProviderWrapper;
return-object v0
.end method
.method static synthetic access$700(Laegon/chrome/net/impl/CronetUploadDataStream;Ljava/lang/Throwable;)V
.registers 2
invoke-direct {p0, p1}, Laegon/chrome/net/impl/CronetUploadDataStream;->onError(Ljava/lang/Throwable;)V
return-void
.end method
.method static synthetic access$800()Ljava/lang/String;
.registers 1
sget-object v0, Laegon/chrome/net/impl/CronetUploadDataStream;->TAG:Ljava/lang/String;
return-object v0
.end method
.method private checkCallingThread()V
.registers 2
iget-object v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mRequest:Laegon/chrome/net/impl/CronetUrlRequest;
invoke-virtual {v0}, Laegon/chrome/net/impl/CronetUrlRequest;->checkCallingThread()V
return-void
.end method
.method private checkState(I)V
.registers 5
.annotation build Ljavax/annotation/concurrent/GuardedBy;
value = "mLock"
.end annotation
iget v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mInWhichUserCallback:I
if-eq v0, p1, :cond_29
new-instance v0, Ljava/lang/IllegalStateException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Expected "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, ", but was "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
iget v2, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mInWhichUserCallback:I
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
:cond_29
return-void
.end method
.method private destroyAdapter()V
.registers 7
const-wide/16 v4, 0x0
iget-object v1, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mLock:Ljava/lang/Object;
monitor-enter v1
:try_start_5
iget v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mInWhichUserCallback:I
if-nez v0, :cond_e
const/4 v0, 0x1
iput-boolean v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mDestroyAdapterPostponed:Z
monitor-exit v1
:goto_d
return-void
:cond_e
iget-wide v2, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mUploadDataStreamAdapter:J
cmp-long v0, v2, v4
if-nez v0, :cond_19
monitor-exit v1
goto :goto_d
:catchall_16
move-exception v0
monitor-exit v1
:try_end_18
.catchall {:try_start_5 .. :try_end_18} :catchall_16
throw v0
:cond_19
:try_start_19
iget-wide v2, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mUploadDataStreamAdapter:J
invoke-static {v2, v3}, Laegon/chrome/net/impl/CronetUploadDataStream;->nativeDestroy(J)V
const-wide/16 v2, 0x0
iput-wide v2, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mUploadDataStreamAdapter:J
iget-object v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mOnDestroyedCallbackForTesting:Ljava/lang/Runnable;
if-eqz v0, :cond_2b
iget-object v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mOnDestroyedCallbackForTesting:Ljava/lang/Runnable;
invoke-interface {v0}, Ljava/lang/Runnable;->run()V
:cond_2b
monitor-exit v1
:try_end_2c
.catchall {:try_start_19 .. :try_end_2c} :catchall_16
new-instance v0, Laegon/chrome/net/impl/CronetUploadDataStream$3;
invoke-direct {v0, p0}, Laegon/chrome/net/impl/CronetUploadDataStream$3;-><init>(Laegon/chrome/net/impl/CronetUploadDataStream;)V
invoke-virtual {p0, v0}, Laegon/chrome/net/impl/CronetUploadDataStream;->postTaskToExecutor(Ljava/lang/Runnable;)V
goto :goto_d
.end method
.method private destroyAdapterIfPostponed()V
.registers 4
iget-object v1, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mLock:Ljava/lang/Object;
monitor-enter v1
:try_start_3
iget v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mInWhichUserCallback:I
if-nez v0, :cond_12
new-instance v0, Ljava/lang/IllegalStateException;
const-string v2, "Method should not be called when read has not completed."
invoke-direct {v0, v2}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
:catchall_f
move-exception v0
monitor-exit v1
:try_end_11
.catchall {:try_start_3 .. :try_end_11} :catchall_f
throw v0
:cond_12
:try_start_12
iget-boolean v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mDestroyAdapterPostponed:Z
if-eqz v0, :cond_19
invoke-direct {p0}, Laegon/chrome/net/impl/CronetUploadDataStream;->destroyAdapter()V
:cond_19
monitor-exit v1
:try_end_1a
.catchall {:try_start_12 .. :try_end_1a} :catchall_f
return-void
.end method
.method private native nativeAttachUploadDataToRequest(JJ)J
.end method
.method private native nativeCreateAdapterForTesting()J
.end method
.method private native nativeCreateUploadDataStreamForTesting(JJ)J
.end method
.method private static native nativeDestroy(J)V
.annotation runtime Laegon/chrome/base/annotations/NativeClassQualifiedName;
value = "CronetUploadDataStreamAdapter"
.end annotation
.end method
.method private native nativeOnReadSucceeded(JIZ)V
.annotation runtime Laegon/chrome/base/annotations/NativeClassQualifiedName;
value = "CronetUploadDataStreamAdapter"
.end annotation
.end method
.method private native nativeOnRewindSucceeded(J)V
.annotation runtime Laegon/chrome/base/annotations/NativeClassQualifiedName;
value = "CronetUploadDataStreamAdapter"
.end annotation
.end method
.method private onError(Ljava/lang/Throwable;)V
.registers 7
const/4 v4, 0x3
const/4 v1, 0x1
const/4 v2, 0x0
iget-object v3, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mLock:Ljava/lang/Object;
monitor-enter v3
:try_start_6
iget v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mInWhichUserCallback:I
if-ne v0, v4, :cond_15
new-instance v0, Ljava/lang/IllegalStateException;
const-string v1, "There is no read or rewind or length check in progress."
invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
:catchall_12
move-exception v0
monitor-exit v3
:try_end_14
.catchall {:try_start_6 .. :try_end_14} :catchall_12
throw v0
:cond_15
:try_start_15
iget v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mInWhichUserCallback:I
const/4 v4, 0x2
if-ne v0, v4, :cond_32
move v0, v1
:goto_1b
const/4 v4, 0x3
iput v4, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mInWhichUserCallback:I
const/4 v4, 0x0
iput-object v4, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mByteBuffer:Ljava/nio/ByteBuffer;
invoke-direct {p0}, Laegon/chrome/net/impl/CronetUploadDataStream;->destroyAdapterIfPostponed()V
monitor-exit v3
:try_end_25
.catchall {:try_start_15 .. :try_end_25} :catchall_12
if-eqz v0, :cond_2c
:try_start_27
iget-object v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mDataProvider:Laegon/chrome/net/impl/VersionSafeCallbacks$UploadDataProviderWrapper;
invoke-virtual {v0}, Laegon/chrome/net/impl/VersionSafeCallbacks$UploadDataProviderWrapper;->close()V
:try_end_2c
.catch Ljava/lang/Exception; {:try_start_27 .. :try_end_2c} :catch_34
:cond_2c
:goto_2c
iget-object v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mRequest:Laegon/chrome/net/impl/CronetUrlRequest;
invoke-virtual {v0, p1}, Laegon/chrome/net/impl/CronetUrlRequest;->onUploadException(Ljava/lang/Throwable;)V
return-void
:cond_32
move v0, v2
goto :goto_1b
:catch_34
move-exception v0
sget-object v3, Laegon/chrome/net/impl/CronetUploadDataStream;->TAG:Ljava/lang/String;
const-string v4, "Failure closing data provider"
new-array v1, v1, [Ljava/lang/Object;
aput-object v0, v1, v2
invoke-static {v3, v4, v1}, Laegon/chrome/base/Log;->e(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
goto :goto_2c
.end method
# virtual methods
.method attachNativeAdapterToRequest(J)V
.registers 8
iget-object v1, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mLock:Ljava/lang/Object;
monitor-enter v1
:try_start_3
iget-wide v2, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mLength:J
invoke-direct {p0, p1, p2, v2, v3}, Laegon/chrome/net/impl/CronetUploadDataStream;->nativeAttachUploadDataToRequest(JJ)J
move-result-wide v2
iput-wide v2, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mUploadDataStreamAdapter:J
monitor-exit v1
return-void
:catchall_d
move-exception v0
monitor-exit v1
:try_end_f
.catchall {:try_start_3 .. :try_end_f} :catchall_d
throw v0
.end method
.method public createUploadDataStreamForTesting()J
.registers 7
.annotation build Laegon/chrome/base/VisibleForTesting;
.end annotation
iget-object v1, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mLock:Ljava/lang/Object;
monitor-enter v1
:try_start_3
invoke-direct {p0}, Laegon/chrome/net/impl/CronetUploadDataStream;->nativeCreateAdapterForTesting()J
move-result-wide v2
iput-wide v2, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mUploadDataStreamAdapter:J
iget-object v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mDataProvider:Laegon/chrome/net/impl/VersionSafeCallbacks$UploadDataProviderWrapper;
invoke-virtual {v0}, Laegon/chrome/net/impl/VersionSafeCallbacks$UploadDataProviderWrapper;->getLength()J
move-result-wide v2
iput-wide v2, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mLength:J
iget-wide v2, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mLength:J
iput-wide v2, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mRemainingLength:J
iget-wide v2, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mLength:J
iget-wide v4, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mUploadDataStreamAdapter:J
invoke-direct {p0, v2, v3, v4, v5}, Laegon/chrome/net/impl/CronetUploadDataStream;->nativeCreateUploadDataStreamForTesting(JJ)J
move-result-wide v2
monitor-exit v1
return-wide v2
:catchall_1f
move-exception v0
monitor-exit v1
:try_end_21
.catchall {:try_start_3 .. :try_end_21} :catchall_1f
throw v0
.end method
.method initializeWithRequest()V
.registers 3
iget-object v1, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mLock:Ljava/lang/Object;
monitor-enter v1
const/4 v0, 0x2
:try_start_4
iput v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mInWhichUserCallback:I
monitor-exit v1
:try_end_7
.catchall {:try_start_4 .. :try_end_7} :catchall_20
:try_start_7
iget-object v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mRequest:Laegon/chrome/net/impl/CronetUrlRequest;
invoke-virtual {v0}, Laegon/chrome/net/impl/CronetUrlRequest;->checkCallingThread()V
iget-object v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mDataProvider:Laegon/chrome/net/impl/VersionSafeCallbacks$UploadDataProviderWrapper;
invoke-virtual {v0}, Laegon/chrome/net/impl/VersionSafeCallbacks$UploadDataProviderWrapper;->getLength()J
move-result-wide v0
iput-wide v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mLength:J
iget-wide v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mLength:J
iput-wide v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mRemainingLength:J
:try_end_18
.catch Ljava/lang/Throwable; {:try_start_7 .. :try_end_18} :catch_23
:goto_18
iget-object v1, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mLock:Ljava/lang/Object;
monitor-enter v1
const/4 v0, 0x3
:try_start_1c
iput v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mInWhichUserCallback:I
monitor-exit v1
:try_end_1f
.catchall {:try_start_1c .. :try_end_1f} :catchall_28
return-void
:catchall_20
move-exception v0
:try_start_21
monitor-exit v1
:try_end_22
.catchall {:try_start_21 .. :try_end_22} :catchall_20
throw v0
:catch_23
move-exception v0
invoke-direct {p0, v0}, Laegon/chrome/net/impl/CronetUploadDataStream;->onError(Ljava/lang/Throwable;)V
goto :goto_18
:catchall_28
move-exception v0
:try_start_29
monitor-exit v1
:try_end_2a
.catchall {:try_start_29 .. :try_end_2a} :catchall_28
throw v0
.end method
.method public onReadError(Ljava/lang/Exception;)V
.registers 4
iget-object v1, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mLock:Ljava/lang/Object;
monitor-enter v1
const/4 v0, 0x0
:try_start_4
invoke-direct {p0, v0}, Laegon/chrome/net/impl/CronetUploadDataStream;->checkState(I)V
invoke-direct {p0, p1}, Laegon/chrome/net/impl/CronetUploadDataStream;->onError(Ljava/lang/Throwable;)V
monitor-exit v1
return-void
:catchall_c
move-exception v0
monitor-exit v1
:try_end_e
.catchall {:try_start_4 .. :try_end_e} :catchall_c
throw v0
.end method
.method public onReadSucceeded(Z)V
.registers 12
.annotation build Landroid/annotation/SuppressLint;
value = {
"DefaultLocale"
}
.end annotation
const-wide/16 v6, 0x0
iget-object v1, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mLock:Ljava/lang/Object;
monitor-enter v1
const/4 v0, 0x0
:try_start_6
invoke-direct {p0, v0}, Laegon/chrome/net/impl/CronetUploadDataStream;->checkState(I)V
iget-wide v2, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mByteBufferLimit:J
iget-object v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mByteBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->limit()I
move-result v0
int-to-long v4, v0
cmp-long v0, v2, v4
if-eqz v0, :cond_21
new-instance v0, Ljava/lang/IllegalStateException;
const-string v2, "ByteBuffer limit changed"
invoke-direct {v0, v2}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
:catchall_1e
move-exception v0
monitor-exit v1
:try_end_20
.catchall {:try_start_6 .. :try_end_20} :catchall_1e
throw v0
:cond_21
if-eqz p1, :cond_31
:try_start_23
iget-wide v2, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mLength:J
cmp-long v0, v2, v6
if-ltz v0, :cond_31
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v2, "Non-chunked upload can\'t have last chunk"
invoke-direct {v0, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
:cond_31
iget-object v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mByteBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->position()I
move-result v0
iget-wide v2, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mRemainingLength:J
int-to-long v4, v0
sub-long/2addr v2, v4
iput-wide v2, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mRemainingLength:J
iget-wide v2, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mRemainingLength:J
cmp-long v2, v2, v6
if-gez v2, :cond_6d
iget-wide v2, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mLength:J
cmp-long v2, v2, v6
if-ltz v2, :cond_6d
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v2, "Read upload data length %d exceeds expected length %d"
const/4 v3, 0x2
new-array v3, v3, [Ljava/lang/Object;
const/4 v4, 0x0
iget-wide v6, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mLength:J
iget-wide v8, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mRemainingLength:J
sub-long/2addr v6, v8
invoke-static {v6, v7}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v5
aput-object v5, v3, v4
const/4 v4, 0x1
iget-wide v6, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mLength:J
invoke-static {v6, v7}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v5
aput-object v5, v3, v4
invoke-static {v2, v3}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
move-result-object v2
invoke-direct {v0, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
:cond_6d
iget-object v2, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mByteBuffer:Ljava/nio/ByteBuffer;
const/4 v3, 0x0
invoke-virtual {v2, v3}, Ljava/nio/ByteBuffer;->position(I)Ljava/nio/Buffer;
const/4 v2, 0x0
iput-object v2, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mByteBuffer:Ljava/nio/ByteBuffer;
const/4 v2, 0x3
iput v2, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mInWhichUserCallback:I
invoke-direct {p0}, Laegon/chrome/net/impl/CronetUploadDataStream;->destroyAdapterIfPostponed()V
iget-wide v2, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mUploadDataStreamAdapter:J
cmp-long v2, v2, v6
if-nez v2, :cond_84
monitor-exit v1
:goto_83
return-void
:cond_84
iget-wide v2, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mUploadDataStreamAdapter:J
invoke-direct {p0, v2, v3, v0, p1}, Laegon/chrome/net/impl/CronetUploadDataStream;->nativeOnReadSucceeded(JIZ)V
monitor-exit v1
:try_end_8a
.catchall {:try_start_23 .. :try_end_8a} :catchall_1e
goto :goto_83
.end method
.method public onRewindError(Ljava/lang/Exception;)V
.registers 4
iget-object v1, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mLock:Ljava/lang/Object;
monitor-enter v1
const/4 v0, 0x1
:try_start_4
invoke-direct {p0, v0}, Laegon/chrome/net/impl/CronetUploadDataStream;->checkState(I)V
invoke-direct {p0, p1}, Laegon/chrome/net/impl/CronetUploadDataStream;->onError(Ljava/lang/Throwable;)V
monitor-exit v1
return-void
:catchall_c
move-exception v0
monitor-exit v1
:try_end_e
.catchall {:try_start_4 .. :try_end_e} :catchall_c
throw v0
.end method
.method public onRewindSucceeded()V
.registers 7
iget-object v1, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mLock:Ljava/lang/Object;
monitor-enter v1
const/4 v0, 0x1
:try_start_4
invoke-direct {p0, v0}, Laegon/chrome/net/impl/CronetUploadDataStream;->checkState(I)V
const/4 v0, 0x3
iput v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mInWhichUserCallback:I
iget-wide v2, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mLength:J
iput-wide v2, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mRemainingLength:J
iget-wide v2, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mUploadDataStreamAdapter:J
const-wide/16 v4, 0x0
cmp-long v0, v2, v4
if-nez v0, :cond_18
monitor-exit v1
:goto_17
return-void
:cond_18
iget-wide v2, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mUploadDataStreamAdapter:J
invoke-direct {p0, v2, v3}, Laegon/chrome/net/impl/CronetUploadDataStream;->nativeOnRewindSucceeded(J)V
monitor-exit v1
goto :goto_17
:catchall_1f
move-exception v0
monitor-exit v1
:try_end_21
.catchall {:try_start_4 .. :try_end_21} :catchall_1f
throw v0
.end method
.method onUploadDataStreamDestroyed()V
.registers 1
.annotation build Laegon/chrome/base/annotations/CalledByNative;
.end annotation
invoke-direct {p0}, Laegon/chrome/net/impl/CronetUploadDataStream;->destroyAdapter()V
return-void
.end method
.method postTaskToExecutor(Ljava/lang/Runnable;)V
.registers 4
:try_start_0
iget-object v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mExecutor:Ljava/util/concurrent/Executor;
invoke-interface {v0, p1}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V
:try_end_5
.catch Ljava/lang/Throwable; {:try_start_0 .. :try_end_5} :catch_6
:goto_5
return-void
:catch_6
move-exception v0
iget-object v1, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mRequest:Laegon/chrome/net/impl/CronetUrlRequest;
invoke-virtual {v1, v0}, Laegon/chrome/net/impl/CronetUrlRequest;->onUploadException(Ljava/lang/Throwable;)V
goto :goto_5
.end method
.method readData(Ljava/nio/ByteBuffer;)V
.registers 4
.annotation build Laegon/chrome/base/annotations/CalledByNative;
.end annotation
iput-object p1, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mByteBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {p1}, Ljava/nio/ByteBuffer;->limit()I
move-result v0
int-to-long v0, v0
iput-wide v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mByteBufferLimit:J
iget-object v0, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mReadTask:Ljava/lang/Runnable;
invoke-virtual {p0, v0}, Laegon/chrome/net/impl/CronetUploadDataStream;->postTaskToExecutor(Ljava/lang/Runnable;)V
return-void
.end method
.method rewind()V
.registers 2
.annotation build Laegon/chrome/base/annotations/CalledByNative;
.end annotation
new-instance v0, Laegon/chrome/net/impl/CronetUploadDataStream$2;
invoke-direct {v0, p0}, Laegon/chrome/net/impl/CronetUploadDataStream$2;-><init>(Laegon/chrome/net/impl/CronetUploadDataStream;)V
invoke-virtual {p0, v0}, Laegon/chrome/net/impl/CronetUploadDataStream;->postTaskToExecutor(Ljava/lang/Runnable;)V
return-void
.end method
.method setOnDestroyedCallbackForTesting(Ljava/lang/Runnable;)V
.registers 2
.annotation build Laegon/chrome/base/VisibleForTesting;
.end annotation
iput-object p1, p0, Laegon/chrome/net/impl/CronetUploadDataStream;->mOnDestroyedCallbackForTesting:Ljava/lang/Runnable;
return-void
.end method