FileUtils.smali
.class public Laegon/chrome/base/FileUtils;
.super Ljava/lang/Object;
# static fields
.field private static final TAG:Ljava/lang/String; = "FileUtils"
# direct methods
.method private static synthetic $closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
.registers 3
if-eqz p0, :cond_b
:try_start_2
invoke-interface {p1}, Ljava/lang/AutoCloseable;->close()V
:try_end_5
.catch Ljava/lang/Throwable; {:try_start_2 .. :try_end_5} :catch_6
:goto_5
return-void
:catch_6
move-exception v0
invoke-virtual {p0, v0}, Ljava/lang/Throwable;->addSuppressed(Ljava/lang/Throwable;)V
goto :goto_5
:cond_b
invoke-interface {p1}, Ljava/lang/AutoCloseable;->close()V
goto :goto_5
.end method
.method public constructor <init>()V
.registers 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static batchDeleteFiles(Ljava/util/List;)V
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List",
"<",
"Ljava/lang/String;",
">;)V"
}
.end annotation
invoke-interface {p0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_4
:goto_4
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_29
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/String;
invoke-static {v0}, Laegon/chrome/base/ContentUriUtils;->isContentUri(Ljava/lang/String;)Z
move-result v2
if-eqz v2, :cond_1a
invoke-static {v0}, Laegon/chrome/base/ContentUriUtils;->delete(Ljava/lang/String;)Z
goto :goto_4
:cond_1a
new-instance v2, Ljava/io/File;
invoke-direct {v2, v0}, Ljava/io/File;-><init>(Ljava/lang/String;)V
invoke-virtual {v2}, Ljava/io/File;->exists()Z
move-result v0
if-eqz v0, :cond_4
invoke-static {v2}, Laegon/chrome/base/FileUtils;->recursivelyDeleteFile(Ljava/io/File;)Z
goto :goto_4
:cond_29
return-void
.end method
.method public static copyStream(Ljava/io/InputStream;Ljava/io/OutputStream;)V
.registers 5
const/16 v0, 0x2000
new-array v0, v0, [B
:goto_4
invoke-virtual {p0, v0}, Ljava/io/InputStream;->read([B)I
move-result v1
const/4 v2, -0x1
if-eq v1, v2, :cond_10
const/4 v2, 0x0
invoke-virtual {p1, v0, v2, v1}, Ljava/io/OutputStream;->write([BII)V
goto :goto_4
:cond_10
return-void
.end method
.method public static copyStreamToFile(Ljava/io/InputStream;Ljava/io/File;)V
.registers 10
new-instance v0, Ljava/io/File;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {p1}, Ljava/io/File;->getPath()Ljava/lang/String;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, ".tmp"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)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/io/File;-><init>(Ljava/lang/String;)V
new-instance v2, Ljava/io/FileOutputStream;
invoke-direct {v2, v0}, Ljava/io/FileOutputStream;-><init>(Ljava/io/File;)V
const/4 v1, 0x0
:try_start_22
const-string v3, "FileUtils"
const-string v4, "Writing to %s"
const/4 v5, 0x1
new-array v5, v5, [Ljava/lang/Object;
const/4 v6, 0x0
aput-object p1, v5, v6
invoke-static {v3, v4, v5}, Laegon/chrome/base/Log;->i(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
invoke-static {p0, v2}, Laegon/chrome/base/FileUtils;->copyStream(Ljava/io/InputStream;Ljava/io/OutputStream;)V
:try_end_32
.catch Ljava/lang/Throwable; {:try_start_22 .. :try_end_32} :catch_41
.catchall {:try_start_22 .. :try_end_32} :catchall_4c
invoke-static {v1, v2}, Laegon/chrome/base/FileUtils;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
invoke-virtual {v0, p1}, Ljava/io/File;->renameTo(Ljava/io/File;)Z
move-result v0
if-nez v0, :cond_4b
new-instance v0, Ljava/io/IOException;
invoke-direct {v0}, Ljava/io/IOException;-><init>()V
throw v0
:catch_41
move-exception v0
:try_start_42
throw v0
:try_end_43
.catchall {:try_start_42 .. :try_end_43} :catchall_43
:catchall_43
move-exception v1
move-object v7, v1
move-object v1, v0
move-object v0, v7
:goto_47
invoke-static {v1, v2}, Laegon/chrome/base/FileUtils;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
throw v0
:cond_4b
return-void
:catchall_4c
move-exception v0
goto :goto_47
.end method
.method public static extractAsset(Landroid/content/Context;Ljava/lang/String;Ljava/io/File;)Z
.registers 6
:try_start_0
invoke-virtual {p0}, Landroid/content/Context;->getAssets()Landroid/content/res/AssetManager;
move-result-object v0
invoke-virtual {v0, p1}, Landroid/content/res/AssetManager;->open(Ljava/lang/String;)Ljava/io/InputStream;
:try_end_7
.catch Ljava/io/IOException; {:try_start_0 .. :try_end_7} :catch_1c
move-result-object v2
const/4 v1, 0x0
:try_start_9
invoke-static {v2, p2}, Laegon/chrome/base/FileUtils;->copyStreamToFile(Ljava/io/InputStream;Ljava/io/File;)V
:try_end_c
.catch Ljava/lang/Throwable; {:try_start_9 .. :try_end_c} :catch_13
.catchall {:try_start_9 .. :try_end_c} :catchall_15
const/4 v0, 0x1
if-eqz v2, :cond_12
:try_start_f
invoke-static {v1, v2}, Laegon/chrome/base/FileUtils;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
:try_end_12
.catch Ljava/io/IOException; {:try_start_f .. :try_end_12} :catch_1c
:cond_12
:goto_12
return v0
:catch_13
move-exception v1
:try_start_14
throw v1
:try_end_15
.catchall {:try_start_14 .. :try_end_15} :catchall_15
:catchall_15
move-exception v0
if-eqz v2, :cond_1b
:try_start_18
invoke-static {v1, v2}, Laegon/chrome/base/FileUtils;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
:cond_1b
throw v0
:try_end_1c
.catch Ljava/io/IOException; {:try_start_18 .. :try_end_1c} :catch_1c
:catch_1c
move-exception v0
const/4 v0, 0x0
goto :goto_12
.end method
.method public static getExtension(Ljava/lang/String;)Ljava/lang/String;
.registers 3
const/16 v0, 0x2e
invoke-virtual {p0, v0}, Ljava/lang/String;->lastIndexOf(I)I
move-result v0
const/4 v1, -0x1
if-ne v0, v1, :cond_c
const-string v0, ""
:goto_b
return-object v0
:cond_c
add-int/lit8 v0, v0, 0x1
invoke-virtual {p0, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v0
sget-object v1, Ljava/util/Locale;->US:Ljava/util/Locale;
invoke-virtual {v0, v1}, Ljava/lang/String;->toLowerCase(Ljava/util/Locale;)Ljava/lang/String;
move-result-object v0
goto :goto_b
.end method
.method public static getUriForFile(Ljava/io/File;)Landroid/net/Uri;
.registers 6
const/4 v0, 0x0
:try_start_1
invoke-static {p0}, Laegon/chrome/base/ContentUriUtils;->getContentUriFromFile(Ljava/io/File;)Landroid/net/Uri;
:try_end_4
.catch Ljava/lang/IllegalArgumentException; {:try_start_1 .. :try_end_4} :catch_c
move-result-object v0
:goto_5
if-nez v0, :cond_b
invoke-static {p0}, Landroid/net/Uri;->fromFile(Ljava/io/File;)Landroid/net/Uri;
move-result-object v0
:cond_b
return-object v0
:catch_c
move-exception v1
const-string v2, "FileUtils"
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "Could not create content uri: "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
const/4 v3, 0x0
new-array v3, v3, [Ljava/lang/Object;
invoke-static {v2, v1, v3}, Laegon/chrome/base/Log;->e(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
goto :goto_5
.end method
.method public static queryBitmapFromContentProvider(Landroid/content/Context;Landroid/net/Uri;)Landroid/graphics/Bitmap;
.registers 10
.annotation build Landroid/support/annotation/Nullable;
.end annotation
const/4 v6, 0x0
const/4 v0, 0x0
:try_start_2
invoke-virtual {p0}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v1
const-string v2, "r"
invoke-virtual {v1, p1, v2}, Landroid/content/ContentResolver;->openFileDescriptor(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;
:try_end_b
.catch Ljava/io/IOException; {:try_start_2 .. :try_end_b} :catch_57
move-result-object v3
const/4 v2, 0x0
if-nez v3, :cond_30
:try_start_f
const-string v1, "FileUtils"
new-instance v4, Ljava/lang/StringBuilder;
invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
const-string v5, "Null ParcelFileDescriptor from uri "
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v4
invoke-virtual {v4, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v4
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
const/4 v5, 0x0
new-array v5, v5, [Ljava/lang/Object;
invoke-static {v1, v4, v5}, Laegon/chrome/base/Log;->w(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
:try_end_2a
.catch Ljava/lang/Throwable; {:try_start_f .. :try_end_2a} :catch_a1
.catchall {:try_start_f .. :try_end_2a} :catchall_ad
if-eqz v3, :cond_2f
:try_start_2c
invoke-static {v2, v3}, Laegon/chrome/base/FileUtils;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
:try_end_2f
.catch Ljava/io/IOException; {:try_start_2c .. :try_end_2f} :catch_57
:cond_2f
:goto_2f
return-object v0
:cond_30
:try_start_30
invoke-virtual {v3}, Landroid/os/ParcelFileDescriptor;->getFileDescriptor()Ljava/io/FileDescriptor;
move-result-object v1
if-nez v1, :cond_73
const-string v1, "FileUtils"
new-instance v4, Ljava/lang/StringBuilder;
invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
const-string v5, "Null FileDescriptor from uri "
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v4
invoke-virtual {v4, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v4
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
const/4 v5, 0x0
new-array v5, v5, [Ljava/lang/Object;
invoke-static {v1, v4, v5}, Laegon/chrome/base/Log;->w(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
:try_end_51
.catch Ljava/lang/Throwable; {:try_start_30 .. :try_end_51} :catch_a1
.catchall {:try_start_30 .. :try_end_51} :catchall_ad
if-eqz v3, :cond_2f
:try_start_53
invoke-static {v2, v3}, Laegon/chrome/base/FileUtils;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
:try_end_56
.catch Ljava/io/IOException; {:try_start_53 .. :try_end_56} :catch_57
goto :goto_2f
:catch_57
move-exception v1
const-string v1, "FileUtils"
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "IO exception when reading uri "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
new-array v3, v6, [Ljava/lang/Object;
invoke-static {v1, v2, v3}, Laegon/chrome/base/Log;->w(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
goto :goto_2f
:cond_73
:try_start_73
invoke-static {v1}, Landroid/graphics/BitmapFactory;->decodeFileDescriptor(Ljava/io/FileDescriptor;)Landroid/graphics/Bitmap;
move-result-object v1
if-nez v1, :cond_9a
const-string v1, "FileUtils"
new-instance v4, Ljava/lang/StringBuilder;
invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
const-string v5, "Failed to decode image from uri "
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v4
invoke-virtual {v4, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v4
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
const/4 v5, 0x0
new-array v5, v5, [Ljava/lang/Object;
invoke-static {v1, v4, v5}, Laegon/chrome/base/Log;->w(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
:try_end_94
.catch Ljava/lang/Throwable; {:try_start_73 .. :try_end_94} :catch_a1
.catchall {:try_start_73 .. :try_end_94} :catchall_ad
if-eqz v3, :cond_2f
:try_start_96
invoke-static {v2, v3}, Laegon/chrome/base/FileUtils;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
goto :goto_2f
:cond_9a
if-eqz v3, :cond_9f
invoke-static {v2, v3}, Laegon/chrome/base/FileUtils;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
:try_end_9f
.catch Ljava/io/IOException; {:try_start_96 .. :try_end_9f} :catch_57
:cond_9f
move-object v0, v1
goto :goto_2f
:catch_a1
move-exception v1
:try_start_a2
throw v1
:try_end_a3
.catchall {:try_start_a2 .. :try_end_a3} :catchall_a3
:catchall_a3
move-exception v2
move-object v7, v2
move-object v2, v1
move-object v1, v7
:goto_a7
if-eqz v3, :cond_ac
:try_start_a9
invoke-static {v2, v3}, Laegon/chrome/base/FileUtils;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
:cond_ac
throw v1
:try_end_ad
.catch Ljava/io/IOException; {:try_start_a9 .. :try_end_ad} :catch_57
:catchall_ad
move-exception v1
move-object v2, v0
goto :goto_a7
.end method
.method public static readStream(Ljava/io/InputStream;)[B
.registers 2
.annotation build Landroid/support/annotation/NonNull;
.end annotation
new-instance v0, Ljava/io/ByteArrayOutputStream;
invoke-direct {v0}, Ljava/io/ByteArrayOutputStream;-><init>()V
invoke-static {p0, v0}, Laegon/chrome/base/FileUtils;->copyStream(Ljava/io/InputStream;Ljava/io/OutputStream;)V
invoke-virtual {v0}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B
move-result-object v0
return-object v0
.end method
.method public static recursivelyDeleteFile(Ljava/io/File;)Z
.registers 7
const/4 v0, 0x1
const/4 v2, 0x0
invoke-virtual {p0}, Ljava/io/File;->exists()Z
move-result v1
if-nez v1, :cond_9
:goto_8
return v0
:cond_9
invoke-virtual {p0}, Ljava/io/File;->isDirectory()Z
move-result v1
if-eqz v1, :cond_21
invoke-virtual {p0}, Ljava/io/File;->listFiles()[Ljava/io/File;
move-result-object v3
if-eqz v3, :cond_21
array-length v4, v3
move v1, v2
:goto_17
if-ge v1, v4, :cond_21
aget-object v5, v3, v1
invoke-static {v5}, Laegon/chrome/base/FileUtils;->recursivelyDeleteFile(Ljava/io/File;)Z
add-int/lit8 v1, v1, 0x1
goto :goto_17
:cond_21
invoke-virtual {p0}, Ljava/io/File;->delete()Z
move-result v1
if-nez v1, :cond_32
const-string v3, "FileUtils"
const-string v4, "Failed to delete: %s"
new-array v0, v0, [Ljava/lang/Object;
aput-object p0, v0, v2
invoke-static {v3, v4, v0}, Laegon/chrome/base/Log;->e(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
:cond_32
move v0, v1
goto :goto_8
.end method