ViewSnapshot.smali
.class public Lcom/baidu/mobstat/autotrace/ViewSnapshot;
.super Ljava/lang/Object;
.source "SourceFile"
# static fields
.field private static volatile d:I
# instance fields
.field private final a:Lcom/baidu/mobstat/autotrace/t;
.field private final b:Landroid/os/Handler;
.field private c:Ljava/lang/String;
# direct methods
.method static constructor <clinit>()V
.registers 1
.prologue
.line 47
const/4 v0, 0x0
sput v0, Lcom/baidu/mobstat/autotrace/ViewSnapshot;->d:I
return-void
.end method
.method public constructor <init>()V
.registers 3
.prologue
.line 49
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 50
new-instance v0, Landroid/os/Handler;
invoke-static {}, Landroid/os/Looper;->getMainLooper()Landroid/os/Looper;
move-result-object v1
invoke-direct {v0, v1}, Landroid/os/Handler;-><init>(Landroid/os/Looper;)V
iput-object v0, p0, Lcom/baidu/mobstat/autotrace/ViewSnapshot;->b:Landroid/os/Handler;
.line 51
new-instance v0, Lcom/baidu/mobstat/autotrace/t;
invoke-direct {v0}, Lcom/baidu/mobstat/autotrace/t;-><init>()V
iput-object v0, p0, Lcom/baidu/mobstat/autotrace/ViewSnapshot;->a:Lcom/baidu/mobstat/autotrace/t;
.line 52
return-void
.end method
.method private a(Landroid/app/Activity;)Lorg/json/JSONArray;
.registers 5
.prologue
.line 118
new-instance v0, Lorg/json/JSONArray;
invoke-direct {v0}, Lorg/json/JSONArray;-><init>()V
.line 119
invoke-static {p1}, Lcom/baidu/mobstat/autotrace/Utils;->getDecorRootView(Landroid/app/Activity;)Landroid/view/View;
move-result-object v1
.line 120
const-string v2, ""
invoke-direct {p0, p1, v1, v0, v2}, Lcom/baidu/mobstat/autotrace/ViewSnapshot;->a(Landroid/app/Activity;Landroid/view/View;Lorg/json/JSONArray;Ljava/lang/String;)V
.line 121
return-object v0
.end method
.method private a(Landroid/app/Activity;Landroid/view/View;Lorg/json/JSONArray;Ljava/lang/String;)V
.registers 12
.prologue
const/4 v1, 0x0
.line 125
if-nez p2, :cond_4
.line 228
:cond_3
:goto_3
return-void
.line 129
:cond_4
invoke-static {p2}, Lcom/baidu/mobstat/autotrace/Utils;->getVisibleRect(Landroid/view/View;)Landroid/graphics/Rect;
move-result-object v4
.line 131
if-eqz v4, :cond_3
.line 135
invoke-static {p2}, Lcom/baidu/mobstat/autotrace/EditHint;->isEditView(Landroid/view/View;)Z
move-result v0
.line 137
if-nez v0, :cond_3
.line 141
new-instance v5, Lorg/json/JSONObject;
invoke-direct {v5}, Lorg/json/JSONObject;-><init>()V
.line 143
new-instance v2, Lorg/json/JSONArray;
invoke-direct {v2}, Lorg/json/JSONArray;-><init>()V
.line 144
new-instance v3, Lorg/json/JSONObject;
invoke-direct {v3}, Lorg/json/JSONObject;-><init>()V
.line 145
const-string v0, "p"
invoke-virtual {p2}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v6
invoke-virtual {v6}, Ljava/lang/Class;->getSimpleName()Ljava/lang/String;
move-result-object v6
invoke-virtual {v3, v0, v6}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
.line 148
invoke-static {p2}, Lcom/baidu/mobstat/autotrace/Utils;->getViewPagerItemIndex(Landroid/view/View;)Ljava/lang/String;
move-result-object v0
.line 149
invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v6
if-eqz v6, :cond_44
.line 150
invoke-static {p2, p4}, Lcom/baidu/mobstat/autotrace/Utils;->getListItemIndex(Landroid/view/View;Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
.line 151
invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v6
if-eqz v6, :cond_44
.line 152
invoke-static {p2}, Lcom/baidu/mobstat/autotrace/Utils;->getSiblingIndex(Landroid/view/View;)Ljava/lang/String;
move-result-object v0
.line 156
:cond_44
const-string v6, "i"
invoke-virtual {v3, v6, v0}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
.line 158
invoke-static {p2}, Lcom/baidu/mobstat/autotrace/Utils;->getViewRealType(Landroid/view/View;)Ljava/lang/String;
move-result-object v6
.line 159
const-string v0, "t"
invoke-virtual {v3, v0, v6}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
.line 160
invoke-virtual {v2, v3}, Lorg/json/JSONArray;->put(Ljava/lang/Object;)Lorg/json/JSONArray;
.line 161
const-string v0, "path"
invoke-virtual {v5, v0, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
.line 163
const-string v0, "type"
invoke-virtual {v5, v0, v6}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
.line 164
const-string v0, "value"
invoke-static {p2}, Lcom/baidu/mobstat/autotrace/Utils;->getContent(Landroid/view/View;)Ljava/lang/String;
move-result-object v2
invoke-virtual {v5, v0, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
.line 166
new-instance v0, Lorg/json/JSONObject;
invoke-direct {v0}, Lorg/json/JSONObject;-><init>()V
.line 168
const-string v2, "x"
iget v3, v4, Landroid/graphics/Rect;->left:I
int-to-float v3, v3
invoke-static {p1, v3}, Lcom/baidu/mobstat/autotrace/DisplayUtil;->px2dip(Landroid/content/Context;F)I
move-result v3
invoke-virtual {v0, v2, v3}, Lorg/json/JSONObject;->put(Ljava/lang/String;I)Lorg/json/JSONObject;
.line 169
const-string v2, "y"
iget v3, v4, Landroid/graphics/Rect;->top:I
int-to-float v3, v3
invoke-static {p1, v3}, Lcom/baidu/mobstat/autotrace/DisplayUtil;->px2dip(Landroid/content/Context;F)I
move-result v3
invoke-virtual {v0, v2, v3}, Lorg/json/JSONObject;->put(Ljava/lang/String;I)Lorg/json/JSONObject;
.line 170
const-string v2, "w"
invoke-virtual {v4}, Landroid/graphics/Rect;->width()I
move-result v3
int-to-float v3, v3
invoke-static {p1, v3}, Lcom/baidu/mobstat/autotrace/DisplayUtil;->px2dip(Landroid/content/Context;F)I
move-result v3
invoke-virtual {v0, v2, v3}, Lorg/json/JSONObject;->put(Ljava/lang/String;I)Lorg/json/JSONObject;
.line 171
const-string v2, "h"
invoke-virtual {v4}, Landroid/graphics/Rect;->height()I
move-result v3
int-to-float v3, v3
invoke-static {p1, v3}, Lcom/baidu/mobstat/autotrace/DisplayUtil;->px2dip(Landroid/content/Context;F)I
move-result v3
invoke-virtual {v0, v2, v3}, Lorg/json/JSONObject;->put(Ljava/lang/String;I)Lorg/json/JSONObject;
.line 172
const-string v2, "frame"
invoke-virtual {v5, v2, v0}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
.line 174
const-string v0, "alpha"
invoke-static {p2}, Lcom/baidu/mobstat/autotrace/Utils;->getViewTransparency(Landroid/view/View;)I
move-result v2
invoke-virtual {v5, v0, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;I)Lorg/json/JSONObject;
.line 175
const-string v0, "page"
invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v2
invoke-virtual {v5, v0, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
.line 176
const-string v0, "z"
invoke-static {p2}, Lcom/baidu/mobstat/autotrace/Utils;->getViewZ(Landroid/view/View;)F
move-result v2
float-to-double v2, v2
invoke-virtual {v5, v0, v2, v3}, Lorg/json/JSONObject;->put(Ljava/lang/String;D)Lorg/json/JSONObject;
.line 178
instance-of v0, p2, Landroid/webkit/WebView;
if-eqz v0, :cond_104
.line 179
const-string v3, ""
.line 180
const/4 v2, 0x0
move-object v0, p2
.line 182
check-cast v0, Landroid/webkit/WebView;
.line 183
invoke-static {p1, v0, v4}, Lcom/baidu/mobstat/autotrace/WebViewInterface;->getEditViewTree(Landroid/app/Activity;Landroid/webkit/WebView;Landroid/graphics/Rect;)Ljava/lang/String;
move-result-object v0
.line 184
invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v4
if-nez v4, :cond_14b
.line 185
new-instance v3, Lorg/json/JSONObject;
invoke-direct {v3, v0}, Lorg/json/JSONObject;-><init>(Ljava/lang/String;)V
.line 187
const-string v0, "url"
invoke-virtual {v3, v0}, Lorg/json/JSONObject;->optString(Ljava/lang/String;)Ljava/lang/String;
move-result-object v2
.line 188
const-string v0, "objects"
invoke-virtual {v3, v0}, Lorg/json/JSONObject;->optJSONArray(Ljava/lang/String;)Lorg/json/JSONArray;
move-result-object v0
.line 192
:goto_eb
if-nez v0, :cond_f2
.line 193
new-instance v0, Lorg/json/JSONArray;
invoke-direct {v0}, Lorg/json/JSONArray;-><init>()V
.line 195
:cond_f2
const-string v3, "child"
invoke-virtual {v5, v3, v0}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
.line 198
invoke-static {v2}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v0
if-eqz v0, :cond_137
.line 200
const-string v0, "url"
const-string v2, "/"
invoke-virtual {v5, v0, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
.line 206
:cond_104
:goto_104
invoke-static {p2, p4}, Lcom/baidu/mobstat/autotrace/Utils;->isViewEditable(Landroid/view/View;Ljava/lang/String;)Z
move-result v0
.line 207
const-string v2, "edit"
if-eqz v0, :cond_13d
const/4 v0, 0x1
:goto_10d
invoke-virtual {v5, v2, v0}, Lorg/json/JSONObject;->put(Ljava/lang/String;I)Lorg/json/JSONObject;
.line 209
invoke-virtual {p3, v5}, Lorg/json/JSONArray;->put(Ljava/lang/Object;)Lorg/json/JSONArray;
.line 212
instance-of v0, p2, Landroid/webkit/WebView;
if-nez v0, :cond_3
.line 216
instance-of v0, p2, Landroid/view/ViewGroup;
if-eqz v0, :cond_13f
.line 217
check-cast p2, Landroid/view/ViewGroup;
.line 219
new-instance v0, Lorg/json/JSONArray;
invoke-direct {v0}, Lorg/json/JSONArray;-><init>()V
.line 220
const-string v2, "child"
invoke-virtual {v5, v2, v0}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
.line 222
:goto_127
invoke-virtual {p2}, Landroid/view/ViewGroup;->getChildCount()I
move-result v2
if-ge v1, v2, :cond_3
.line 223
invoke-virtual {p2, v1}, Landroid/view/ViewGroup;->getChildAt(I)Landroid/view/View;
move-result-object v2
invoke-direct {p0, p1, v2, v0, v6}, Lcom/baidu/mobstat/autotrace/ViewSnapshot;->a(Landroid/app/Activity;Landroid/view/View;Lorg/json/JSONArray;Ljava/lang/String;)V
.line 222
add-int/lit8 v1, v1, 0x1
goto :goto_127
.line 202
:cond_137
const-string v0, "url"
invoke-virtual {v5, v0, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
goto :goto_104
:cond_13d
move v0, v1
.line 207
goto :goto_10d
.line 226
:cond_13f
const-string v0, "child"
new-instance v1, Lorg/json/JSONArray;
invoke-direct {v1}, Lorg/json/JSONArray;-><init>()V
invoke-virtual {v5, v0, v1}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
goto/16 :goto_3
:cond_14b
move-object v0, v2
move-object v2, v3
goto :goto_eb
.end method
.method public static resetSnapshotCount()V
.registers 1
.prologue
.line 55
const/4 v0, 0x0
sput v0, Lcom/baidu/mobstat/autotrace/ViewSnapshot;->d:I
.line 56
return-void
.end method
# virtual methods
.method public getEditViewData(Landroid/app/Activity;)Lorg/json/JSONObject;
.registers 8
.prologue
.line 59
const/4 v1, 0x0
.line 61
if-nez p1, :cond_5
move-object v0, v1
.line 114
:goto_4
return-object v0
.line 67
:cond_5
:try_start_5
invoke-static {}, Lcom/baidu/mobstat/autotrace/GestureTracker;->isTouched()Z
move-result v0
if-nez v0, :cond_d
move-object v0, v1
.line 68
goto :goto_4
.line 71
:cond_d
sget v0, Lcom/baidu/mobstat/autotrace/ViewSnapshot;->d:I
add-int/lit8 v0, v0, 0x1
sput v0, Lcom/baidu/mobstat/autotrace/ViewSnapshot;->d:I
const/4 v2, 0x3
if-lt v0, v2, :cond_1a
.line 72
const/4 v0, 0x0
invoke-static {v0}, Lcom/baidu/mobstat/autotrace/GestureTracker;->setTouched(Z)V
.line 76
:cond_1a
invoke-virtual {p0, p1}, Lcom/baidu/mobstat/autotrace/ViewSnapshot;->getSnapshot(Landroid/app/Activity;)Landroid/graphics/Bitmap;
move-result-object v2
.line 78
if-nez v2, :cond_22
move-object v0, v1
.line 79
goto :goto_4
.line 83
:cond_22
invoke-direct {p0, p1}, Lcom/baidu/mobstat/autotrace/ViewSnapshot;->a(Landroid/app/Activity;)Lorg/json/JSONArray;
move-result-object v3
.line 84
invoke-virtual {v3}, Lorg/json/JSONArray;->toString()Ljava/lang/String;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/String;->getBytes()[B
move-result-object v0
invoke-static {v0}, Lcom/baidu/mobstat/ct;->a([B)Ljava/lang/String;
move-result-object v0
.line 85
iget-object v4, p0, Lcom/baidu/mobstat/autotrace/ViewSnapshot;->c:Ljava/lang/String;
if-eqz v4, :cond_40
iget-object v4, p0, Lcom/baidu/mobstat/autotrace/ViewSnapshot;->c:Ljava/lang/String;
invoke-virtual {v4, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v4
if-eqz v4, :cond_40
move-object v0, v1
.line 86
goto :goto_4
.line 89
:cond_40
iput-object v0, p0, Lcom/baidu/mobstat/autotrace/ViewSnapshot;->c:Ljava/lang/String;
.line 91
new-instance v0, Lorg/json/JSONObject;
invoke-direct {v0}, Lorg/json/JSONObject;-><init>()V
:try_end_47
.catch Ljava/lang/Throwable; {:try_start_5 .. :try_end_47} :catch_8c
.line 93
:try_start_47
invoke-static {v2}, Lcom/baidu/mobstat/autotrace/Utils;->getBitmapBase64(Landroid/graphics/Bitmap;)Ljava/lang/String;
move-result-object v1
.line 94
const-string v4, "screenshot"
invoke-virtual {v0, v4, v1}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
.line 96
invoke-static {v2}, Lcom/baidu/mobstat/autotrace/Utils;->getBitmapMd5(Landroid/graphics/Bitmap;)Ljava/lang/String;
move-result-object v1
.line 97
const-string v4, "hash"
invoke-virtual {v0, v4, v1}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
.line 99
new-instance v1, Lorg/json/JSONObject;
invoke-direct {v1}, Lorg/json/JSONObject;-><init>()V
.line 104
const-string v4, "w"
invoke-virtual {v2}, Landroid/graphics/Bitmap;->getWidth()I
move-result v5
invoke-virtual {v1, v4, v5}, Lorg/json/JSONObject;->put(Ljava/lang/String;I)Lorg/json/JSONObject;
.line 105
const-string v4, "h"
invoke-virtual {v2}, Landroid/graphics/Bitmap;->getHeight()I
move-result v2
invoke-virtual {v1, v4, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;I)Lorg/json/JSONObject;
.line 106
const-string v2, "screen"
invoke-virtual {v0, v2, v1}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
.line 108
const-string v1, "page"
invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v2
invoke-virtual {v0, v1, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
.line 109
const-string v1, "objects"
invoke-virtual {v0, v1, v3}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
:try_end_87
.catch Ljava/lang/Throwable; {:try_start_47 .. :try_end_87} :catch_89
goto/16 :goto_4
.line 110
:catch_89
move-exception v1
goto/16 :goto_4
:catch_8c
move-exception v0
move-object v0, v1
goto/16 :goto_4
.end method
.method public getSnapshot(Landroid/app/Activity;)Landroid/graphics/Bitmap;
.registers 7
.prologue
.line 231
iget-object v0, p0, Lcom/baidu/mobstat/autotrace/ViewSnapshot;->a:Lcom/baidu/mobstat/autotrace/t;
invoke-virtual {v0, p1}, Lcom/baidu/mobstat/autotrace/t;->a(Landroid/app/Activity;)V
.line 232
new-instance v0, Ljava/util/concurrent/FutureTask;
iget-object v1, p0, Lcom/baidu/mobstat/autotrace/ViewSnapshot;->a:Lcom/baidu/mobstat/autotrace/t;
invoke-direct {v0, v1}, Ljava/util/concurrent/FutureTask;-><init>(Ljava/util/concurrent/Callable;)V
.line 233
iget-object v1, p0, Lcom/baidu/mobstat/autotrace/ViewSnapshot;->b:Landroid/os/Handler;
invoke-virtual {v1, v0}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
.line 235
invoke-static {}, Ljava/util/Collections;->emptyList()Ljava/util/List;
move-result-object v1
.line 237
if-eqz v0, :cond_4d
.line 238
const-wide/16 v2, 0x2
:try_start_19
sget-object v4, Ljava/util/concurrent/TimeUnit;->SECONDS:Ljava/util/concurrent/TimeUnit;
invoke-virtual {v0, v2, v3, v4}, Ljava/util/concurrent/FutureTask;->get(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/util/List;
:try_end_21
.catch Ljava/lang/InterruptedException; {:try_start_19 .. :try_end_21} :catch_2a
.catch Ljava/util/concurrent/TimeoutException; {:try_start_19 .. :try_end_21} :catch_31
.catch Ljava/lang/Exception; {:try_start_19 .. :try_end_21} :catch_38
:goto_21
move-object v1, v0
.line 248
:goto_22
invoke-interface {v1}, Ljava/util/List;->size()I
move-result v0
.line 249
if-nez v0, :cond_3f
.line 250
const/4 v0, 0x0
.line 254
:goto_29
return-object v0
.line 240
:catch_2a
move-exception v0
.line 241
const-string v2, "Screenshot interrupted, no screenshot will be sent."
invoke-static {v2, v0}, Lcom/baidu/mobstat/cw;->b(Ljava/lang/String;Ljava/lang/Throwable;)V
goto :goto_22
.line 242
:catch_31
move-exception v0
.line 243
const-string v2, "Screenshot took more than 2 second to be scheduled and executed. No screenshot will be sent."
invoke-static {v2, v0}, Lcom/baidu/mobstat/cw;->c(Ljava/lang/String;Ljava/lang/Throwable;)V
goto :goto_22
.line 244
:catch_38
move-exception v0
.line 245
const-string v2, "Exception thrown during screenshot attempt"
invoke-static {v2, v0}, Lcom/baidu/mobstat/cw;->d(Ljava/lang/String;Ljava/lang/Throwable;)V
goto :goto_22
.line 253
:cond_3f
const/4 v0, 0x0
invoke-interface {v1, v0}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/baidu/mobstat/autotrace/u;
.line 254
iget-object v0, v0, Lcom/baidu/mobstat/autotrace/u;->c:Lcom/baidu/mobstat/autotrace/s;
invoke-static {v0}, Lcom/baidu/mobstat/autotrace/s;->a(Lcom/baidu/mobstat/autotrace/s;)Landroid/graphics/Bitmap;
move-result-object v0
goto :goto_29
:cond_4d
move-object v0, v1
goto :goto_21
.end method