WXClipboardModule.smali

.class public Lcom/taobao/weex/appfram/clipboard/WXClipboardModule;
.super Lcom/taobao/weex/common/WXModule;
.source "WXClipboardModule.java"

# interfaces
.implements Lcom/taobao/weex/appfram/clipboard/IWXClipboard;


# static fields
.field private static final DATA:Ljava/lang/String; = "data"

.field private static final RESULT:Ljava/lang/String; = "result"

.field private static final RESULT_FAILED:Ljava/lang/String; = "failed"

.field private static final RESULT_OK:Ljava/lang/String; = "success"


# instance fields
.field private final CLIP_KEY:Ljava/lang/String;


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

    .line 42
    invoke-direct {p0}, Lcom/taobao/weex/common/WXModule;-><init>()V

    const-string v0, "WEEX_CLIP_KEY_MAIN"

    .line 44
    iput-object v0, p0, Lcom/taobao/weex/appfram/clipboard/WXClipboardModule;->CLIP_KEY:Ljava/lang/String;

    return-void
.end method

.method private coerceToText(Landroid/content/Context;Landroid/content/ClipData$Item;)Ljava/lang/CharSequence;
    .registers 9
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0,
            0x0
        }
        names = {
            "context",
            "item"
        }
    .end annotation

    .line 92
    invoke-virtual {p2}, Landroid/content/ClipData$Item;->getText()Ljava/lang/CharSequence;

    move-result-object v0

    if-eqz v0, :cond_7

    return-object v0

    .line 98
    :cond_7
    invoke-virtual {p2}, Landroid/content/ClipData$Item;->getUri()Landroid/net/Uri;

    move-result-object v0

    const/4 v1, 0x0

    if-eqz v0, :cond_83

    .line 103
    :try_start_e
    invoke-virtual {p1}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;

    move-result-object p1

    const-string p2, "text/*"

    invoke-virtual {p1, v0, p2, v1}, Landroid/content/ContentResolver;->openTypedAssetFileDescriptor(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/res/AssetFileDescriptor;

    move-result-object p1

    .line 104
    invoke-virtual {p1}, Landroid/content/res/AssetFileDescriptor;->createInputStream()Ljava/io/FileInputStream;

    move-result-object p1
    :try_end_1c
    .catch Ljava/io/FileNotFoundException; {:try_start_e .. :try_end_1c} :catch_75
    .catch Ljava/io/IOException; {:try_start_e .. :try_end_1c} :catch_54
    .catchall {:try_start_e .. :try_end_1c} :catchall_51

    .line 105
    :try_start_1c
    new-instance p2, Ljava/io/InputStreamReader;

    const-string v2, "UTF-8"

    invoke-direct {p2, p1, v2}, Ljava/io/InputStreamReader;-><init>(Ljava/io/InputStream;Ljava/lang/String;)V
    :try_end_23
    .catch Ljava/io/FileNotFoundException; {:try_start_1c .. :try_end_23} :catch_76
    .catch Ljava/io/IOException; {:try_start_1c .. :try_end_23} :catch_4c
    .catchall {:try_start_1c .. :try_end_23} :catchall_4a

    .line 107
    :try_start_23
    new-instance v1, Ljava/lang/StringBuilder;

    const/16 v2, 0x80

    invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(I)V

    const/16 v2, 0x2000

    new-array v2, v2, [C

    .line 110
    :goto_2e
    invoke-virtual {p2, v2}, Ljava/io/InputStreamReader;->read([C)I

    move-result v3

    if-lez v3, :cond_39

    const/4 v4, 0x0

    .line 111
    invoke-virtual {v1, v2, v4, v3}, Ljava/lang/StringBuilder;->append([CII)Ljava/lang/StringBuilder;

    goto :goto_2e

    .line 113
    :cond_39
    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0
    :try_end_3d
    .catch Ljava/io/FileNotFoundException; {:try_start_23 .. :try_end_3d} :catch_48
    .catch Ljava/io/IOException; {:try_start_23 .. :try_end_3d} :catch_46
    .catchall {:try_start_23 .. :try_end_3d} :catchall_68

    .line 122
    :try_start_3d
    invoke-virtual {p2}, Ljava/io/InputStreamReader;->close()V
    :try_end_40
    .catch Ljava/io/IOException; {:try_start_3d .. :try_end_40} :catch_40

    :catch_40
    if-eqz p1, :cond_45

    .line 129
    :try_start_42
    invoke-virtual {p1}, Ljava/io/FileInputStream;->close()V
    :try_end_45
    .catch Ljava/io/IOException; {:try_start_42 .. :try_end_45} :catch_45

    :catch_45
    :cond_45
    return-object v0

    :catch_46
    move-exception v1

    goto :goto_58

    :catch_48
    move-object v1, p2

    goto :goto_76

    :catchall_4a
    move-exception v0

    goto :goto_6a

    :catch_4c
    move-exception p2

    move-object v5, v1

    move-object v1, p2

    move-object p2, v5

    goto :goto_58

    :catchall_51
    move-exception v0

    move-object p1, v1

    goto :goto_6a

    :catch_54
    move-exception p1

    move-object p2, v1

    move-object v1, p1

    move-object p1, p2

    :goto_58
    :try_start_58
    const-string v2, "ClippedData Failure loading text."

    .line 118
    invoke-static {v2, v1}, Lcom/taobao/weex/utils/WXLogUtils;->w(Ljava/lang/String;Ljava/lang/Throwable;)V
    :try_end_5d
    .catchall {:try_start_58 .. :try_end_5d} :catchall_68

    if-eqz p2, :cond_62

    .line 122
    :try_start_5f
    invoke-virtual {p2}, Ljava/io/InputStreamReader;->close()V
    :try_end_62
    .catch Ljava/io/IOException; {:try_start_5f .. :try_end_62} :catch_62

    :catch_62
    :cond_62
    if-eqz p1, :cond_7e

    .line 129
    :goto_64
    :try_start_64
    invoke-virtual {p1}, Ljava/io/FileInputStream;->close()V
    :try_end_67
    .catch Ljava/io/IOException; {:try_start_64 .. :try_end_67} :catch_7e

    goto :goto_7e

    :catchall_68
    move-exception v0

    move-object v1, p2

    :goto_6a
    if-eqz v1, :cond_6f

    .line 122
    :try_start_6c
    invoke-virtual {v1}, Ljava/io/InputStreamReader;->close()V
    :try_end_6f
    .catch Ljava/io/IOException; {:try_start_6c .. :try_end_6f} :catch_6f

    :catch_6f
    :cond_6f
    if-eqz p1, :cond_74

    .line 129
    :try_start_71
    invoke-virtual {p1}, Ljava/io/FileInputStream;->close()V
    :try_end_74
    .catch Ljava/io/IOException; {:try_start_71 .. :try_end_74} :catch_74

    .line 134
    :catch_74
    :cond_74
    throw v0

    :catch_75
    move-object p1, v1

    :catch_76
    :goto_76
    if-eqz v1, :cond_7b

    .line 122
    :try_start_78
    invoke-virtual {v1}, Ljava/io/InputStreamReader;->close()V
    :try_end_7b
    .catch Ljava/io/IOException; {:try_start_78 .. :try_end_7b} :catch_7b

    :catch_7b
    :cond_7b
    if-eqz p1, :cond_7e

    goto :goto_64

    .line 136
    :catch_7e
    :cond_7e
    :goto_7e
    invoke-virtual {v0}, Landroid/net/Uri;->toString()Ljava/lang/String;

    move-result-object p1

    return-object p1

    .line 140
    :cond_83
    invoke-virtual {p2}, Landroid/content/ClipData$Item;->getIntent()Landroid/content/Intent;

    move-result-object p1

    if-eqz p1, :cond_8f

    const/4 p2, 0x1

    .line 142
    invoke-virtual {p1, p2}, Landroid/content/Intent;->toUri(I)Ljava/lang/String;

    move-result-object p1

    return-object p1

    :cond_8f
    return-object v1
.end method


# virtual methods
.method public getString(Lcom/taobao/weex/bridge/JSCallback;)V
    .registers 10
    .annotation runtime Lcom/taobao/weex/annotation/JSMethod;
    .end annotation

    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "callback"
        }
    .end annotation

    .line 68
    iget-object v0, p0, Lcom/taobao/weex/appfram/clipboard/WXClipboardModule;->mWXSDKInstance:Lcom/taobao/weex/WXSDKInstance;

    invoke-virtual {v0}, Lcom/taobao/weex/WXSDKInstance;->getContext()Landroid/content/Context;

    move-result-object v0

    const-string v1, "clipboard"

    .line 69
    invoke-virtual {v0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Landroid/content/ClipboardManager;

    .line 71
    new-instance v2, Ljava/util/HashMap;

    const/4 v3, 0x2

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

    .line 72
    invoke-virtual {v1}, Landroid/content/ClipboardManager;->getPrimaryClip()Landroid/content/ClipData;

    move-result-object v1

    const-string v3, ""

    const-string v4, "data"

    const-string v5, "failed"

    const-string v6, "result"

    if-eqz v1, :cond_3f

    .line 73
    invoke-virtual {v1}, Landroid/content/ClipData;->getItemCount()I

    move-result v7

    if-lez v7, :cond_3f

    const/4 v7, 0x0

    .line 74
    invoke-virtual {v1, v7}, Landroid/content/ClipData;->getItemAt(I)Landroid/content/ClipData$Item;

    move-result-object v1

    .line 75
    invoke-direct {p0, v0, v1}, Lcom/taobao/weex/appfram/clipboard/WXClipboardModule;->coerceToText(Landroid/content/Context;Landroid/content/ClipData$Item;)Ljava/lang/CharSequence;

    move-result-object v0

    if-eqz v0, :cond_35

    const-string v5, "success"

    .line 77
    :cond_35
    invoke-interface {v2, v6, v5}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    if-eqz v0, :cond_3b

    move-object v3, v0

    .line 78
    :cond_3b
    invoke-interface {v2, v4, v3}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    goto :goto_45

    .line 80
    :cond_3f
    invoke-interface {v2, v6, v5}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 81
    invoke-interface {v2, v4, v3}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    :goto_45
    if-eqz p1, :cond_4a

    .line 85
    invoke-interface {p1, v2}, Lcom/taobao/weex/bridge/JSCallback;->invoke(Ljava/lang/Object;)V

    :cond_4a
    return-void
.end method

.method public setString(Ljava/lang/String;)V
    .registers 4
    .annotation runtime Lcom/taobao/weex/annotation/JSMethod;
    .end annotation

    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "text"
        }
    .end annotation

    if-nez p1, :cond_3

    return-void

    .line 59
    :cond_3
    iget-object v0, p0, Lcom/taobao/weex/appfram/clipboard/WXClipboardModule;->mWXSDKInstance:Lcom/taobao/weex/WXSDKInstance;

    invoke-virtual {v0}, Lcom/taobao/weex/WXSDKInstance;->getContext()Landroid/content/Context;

    move-result-object v0

    const-string v1, "clipboard"

    .line 60
    invoke-virtual {v0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/content/ClipboardManager;

    const-string v1, "WEEX_CLIP_KEY_MAIN"

    .line 61
    invoke-static {v1, p1}, Landroid/content/ClipData;->newPlainText(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Landroid/content/ClipData;

    move-result-object p1

    .line 62
    invoke-virtual {v0, p1}, Landroid/content/ClipboardManager;->setPrimaryClip(Landroid/content/ClipData;)V

    return-void
.end method