MonitorWebViewClient.smali
.class Lcom/taboola/android/js/MonitorWebViewClient;
.super Landroid/webkit/WebViewClient;
.source "MonitorWebViewClient.java"
# static fields
.field private static final GET_RECOMMENDATION_REQUEST_PATTERN:Ljava/lang/String; = "http://trc.taboola.com/.*/trc/3/json"
.field private static final GET_RECOMMENDATION_REQUEST_PATTERN_HTTPS:Ljava/lang/String; = "https://trc.taboola.com/.*/trc/3/json"
.field private static final MOBILE_LOADER_JS:Ljava/lang/String; = "mobile-loader.js"
.field private static final ONLINE_TEMPLATE_JS:Ljava/lang/String; = "https://cdn.taboola.com/shared/templateJS.html"
.field private static final TRC_PREFIX_HTTP:Ljava/lang/String; = "http://trc.taboola.com"
.field private static final TRC_PREFIX_HTTPS:Ljava/lang/String; = "https://trc.taboola.com"
# direct methods
.method constructor <init>()V
.registers 1
.line 45
invoke-direct {p0}, Landroid/webkit/WebViewClient;-><init>()V
return-void
.end method
.method private static appendQueryToUri(Ljava/lang/String;Ljava/lang/String;)Ljava/net/URI;
.registers 4
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/net/URISyntaxException;,
Ljava/lang/NullPointerException;,
Ljava/lang/AssertionError;
}
.end annotation
.line 131
invoke-static {p1}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v0
if-eqz v0, :cond_c
.line 132
new-instance p1, Ljava/net/URI;
invoke-direct {p1, p0}, Ljava/net/URI;-><init>(Ljava/lang/String;)V
return-object p1
.line 135
:cond_c
new-instance v0, Ljava/net/URI;
invoke-direct {v0, p0}, Ljava/net/URI;-><init>(Ljava/lang/String;)V
invoke-virtual {v0}, Ljava/net/URI;->getQuery()Ljava/lang/String;
move-result-object v0
.line 137
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result p0
if-eqz p0, :cond_26
const-string p0, "?"
goto :goto_28
:cond_26
const-string p0, "&"
:goto_28
invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
.line 138
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string p0, "&="
invoke-static {p1, p0}, Landroid/net/Uri;->encode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object p0
invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
.line 139
new-instance p1, Ljava/net/URI;
invoke-direct {p1, p0}, Ljava/net/URI;-><init>(Ljava/lang/String;)V
return-object p1
.end method
.method private getWebResourceResponse(Ljava/net/URL;)Landroid/util/Pair;
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/net/URL;",
")",
"Landroid/util/Pair<",
"Landroid/webkit/WebResourceResponse;",
"Ljava/net/URL;",
">;"
}
.end annotation
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 144
invoke-virtual {p1}, Ljava/net/URL;->openConnection()Ljava/net/URLConnection;
move-result-object v0
check-cast v0, Ljava/net/HttpURLConnection;
.line 145
invoke-virtual {v0}, Ljava/net/HttpURLConnection;->connect()V
.line 146
new-instance v1, Ljava/io/BufferedInputStream;
invoke-virtual {v0}, Ljava/net/HttpURLConnection;->getInputStream()Ljava/io/InputStream;
move-result-object v0
invoke-direct {v1, v0}, Ljava/io/BufferedInputStream;-><init>(Ljava/io/InputStream;)V
.line 147
new-instance v0, Landroid/webkit/WebResourceResponse;
const-string v2, "text/html"
const-string v3, "UTF-8"
invoke-direct {v0, v2, v3, v1}, Landroid/webkit/WebResourceResponse;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/io/InputStream;)V
.line 148
new-instance v1, Landroid/util/Pair;
invoke-direct {v1, v0, p1}, Landroid/util/Pair;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
return-object v1
.end method
.method private handleUrlParams(Ljava/lang/String;Lcom/taboola/android/monitor/TBUrlParamsChange;)Landroid/util/Pair;
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/String;",
"Lcom/taboola/android/monitor/TBUrlParamsChange;",
")",
"Landroid/util/Pair<",
"Landroid/webkit/WebResourceResponse;",
"Ljava/net/URL;",
">;"
}
.end annotation
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/net/URISyntaxException;,
Ljava/io/IOException;,
Ljava/lang/NullPointerException;,
Ljava/lang/AssertionError;
}
.end annotation
if-eqz p2, :cond_23
.line 123
invoke-virtual {p2}, Lcom/taboola/android/monitor/TBUrlParamsChange;->getParams()Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v0
if-eqz v0, :cond_d
goto :goto_23
.line 126
:cond_d
invoke-virtual {p2}, Lcom/taboola/android/monitor/TBUrlParamsChange;->getParams()Ljava/lang/String;
move-result-object p2
invoke-static {p1, p2}, Lcom/taboola/android/js/MonitorWebViewClient;->appendQueryToUri(Ljava/lang/String;Ljava/lang/String;)Ljava/net/URI;
move-result-object p1
.line 127
new-instance p2, Ljava/net/URL;
invoke-virtual {p1}, Ljava/net/URI;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {p2, p1}, Ljava/net/URL;-><init>(Ljava/lang/String;)V
invoke-direct {p0, p2}, Lcom/taboola/android/js/MonitorWebViewClient;->getWebResourceResponse(Ljava/net/URL;)Landroid/util/Pair;
move-result-object p1
return-object p1
:cond_23
:goto_23
const/4 p1, 0x0
return-object p1
.end method
.method private static needHandleLoaderUrl(Ljava/lang/String;)Z
.registers 2
const-string v0, "mobile-loader.js"
.line 160
invoke-virtual {p0, v0}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z
move-result p0
return p0
.end method
.method private static needHandleOnlineTemplateUrl(Ljava/lang/String;)Z
.registers 2
const-string v0, "https://cdn.taboola.com/shared/templateJS.html"
.line 164
invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result p0
return p0
.end method
.method private static needToAddUrlParams(Ljava/lang/String;)Z
.registers 2
const-string v0, "https://trc.taboola.com/.*/trc/3/json|http://trc.taboola.com/.*/trc/3/json"
.line 168
invoke-static {v0}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;
move-result-object v0
.line 169
invoke-virtual {v0, p0}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
move-result-object p0
.line 170
invoke-virtual {p0}, Ljava/util/regex/Matcher;->lookingAt()Z
move-result p0
return p0
.end method
.method private static needToSendToMonitor(Ljava/lang/String;)Z
.registers 2
const-string v0, "https://trc.taboola.com"
.line 174
invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v0
if-nez v0, :cond_13
const-string v0, "http://trc.taboola.com"
invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result p0
if-eqz p0, :cond_11
goto :goto_13
:cond_11
const/4 p0, 0x0
goto :goto_14
:cond_13
:goto_13
const/4 p0, 0x1
:goto_14
return p0
.end method
# virtual methods
.method public shouldInterceptRequest(Landroid/webkit/WebView;Landroid/webkit/WebResourceRequest;)Landroid/webkit/WebResourceResponse;
.registers 3
.line 156
invoke-interface {p2}, Landroid/webkit/WebResourceRequest;->getUrl()Landroid/net/Uri;
move-result-object p2
invoke-virtual {p2}, Landroid/net/Uri;->toString()Ljava/lang/String;
move-result-object p2
invoke-virtual {p0, p1, p2}, Lcom/taboola/android/js/MonitorWebViewClient;->shouldInterceptRequest(Landroid/webkit/WebView;Ljava/lang/String;)Landroid/webkit/WebResourceResponse;
move-result-object p1
return-object p1
.end method
.method public shouldInterceptRequest(Landroid/webkit/WebView;Ljava/lang/String;)Landroid/webkit/WebResourceResponse;
.registers 9
.line 53
invoke-static {}, Lcom/taboola/android/js/TaboolaJs;->getInstance()Lcom/taboola/android/js/TaboolaJs;
move-result-object v0
const/4 v1, 0x1
invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v1
invoke-virtual {v0, v1}, Lcom/taboola/android/js/TaboolaJs;->getFeature(Ljava/lang/Integer;)Lcom/taboola/android/monitor/TBSdkFeature;
move-result-object v0
check-cast v0, Lcom/taboola/android/monitor/TBMobileLoaderChange;
.line 54
invoke-static {}, Lcom/taboola/android/js/TaboolaJs;->getInstance()Lcom/taboola/android/js/TaboolaJs;
move-result-object v1
const/4 v2, 0x6
invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v2
invoke-virtual {v1, v2}, Lcom/taboola/android/js/TaboolaJs;->getFeature(Ljava/lang/Integer;)Lcom/taboola/android/monitor/TBSdkFeature;
move-result-object v1
check-cast v1, Lcom/taboola/android/monitor/TBOnlineTemplateChange;
.line 56
invoke-static {}, Lcom/taboola/android/js/TaboolaJs;->getInstance()Lcom/taboola/android/js/TaboolaJs;
move-result-object v2
const/4 v3, 0x3
invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v3
invoke-virtual {v2, v3}, Lcom/taboola/android/js/TaboolaJs;->getFeature(Ljava/lang/Integer;)Lcom/taboola/android/monitor/TBSdkFeature;
move-result-object v2
check-cast v2, Lcom/taboola/android/monitor/TBUrlParamsChange;
const/4 v3, 0x0
if-eqz v0, :cond_6c
.line 58
invoke-static {p2}, Lcom/taboola/android/js/MonitorWebViewClient;->needHandleLoaderUrl(Ljava/lang/String;)Z
move-result v4
if-eqz v4, :cond_6c
.line 61
:try_start_36
invoke-virtual {v0}, Lcom/taboola/android/monitor/TBMobileLoaderChange;->getMobileLoaderUrl()Ljava/lang/String;
move-result-object v4
invoke-static {v4}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v4
if-eqz v4, :cond_42
move-object v0, v3
goto :goto_4f
.line 64
:cond_42
new-instance v4, Ljava/net/URL;
invoke-virtual {v0}, Lcom/taboola/android/monitor/TBMobileLoaderChange;->getMobileLoaderUrl()Ljava/lang/String;
move-result-object v0
invoke-direct {v4, v0}, Ljava/net/URL;-><init>(Ljava/lang/String;)V
invoke-direct {p0, v4}, Lcom/taboola/android/js/MonitorWebViewClient;->getWebResourceResponse(Ljava/net/URL;)Landroid/util/Pair;
move-result-object v0
:goto_4f
if-eqz v0, :cond_6c
.line 68
iget-object v4, v0, Landroid/util/Pair;->first:Ljava/lang/Object;
check-cast v4, Landroid/webkit/WebResourceResponse;
:try_end_55
.catch Ljava/lang/Exception; {:try_start_36 .. :try_end_55} :catch_60
.line 69
:try_start_55
iget-object v0, v0, Landroid/util/Pair;->second:Ljava/lang/Object;
check-cast v0, Ljava/net/URL;
invoke-virtual {v0}, Ljava/net/URL;->toString()Ljava/lang/String;
move-result-object p2
:try_end_5d
.catch Ljava/lang/Exception; {:try_start_55 .. :try_end_5d} :catch_5e
goto :goto_6d
:catch_5e
move-exception v0
goto :goto_62
:catch_60
move-exception v0
move-object v4, v3
.line 72
:goto_62
sget-object v5, Lcom/taboola/android/js/TaboolaJs;->TAG:Ljava/lang/String;
invoke-virtual {v0}, Ljava/lang/Exception;->getMessage()Ljava/lang/String;
move-result-object v0
invoke-static {v5, v0}, Lcom/taboola/android/utils/Logger;->e(Ljava/lang/String;Ljava/lang/String;)V
goto :goto_6d
:cond_6c
move-object v4, v3
:goto_6d
if-eqz v1, :cond_aa
.line 76
invoke-static {p2}, Lcom/taboola/android/js/MonitorWebViewClient;->needHandleOnlineTemplateUrl(Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_aa
.line 79
:try_start_75
invoke-virtual {v1}, Lcom/taboola/android/monitor/TBOnlineTemplateChange;->getOnlineTemplateUrl()Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v0
if-eqz v0, :cond_80
goto :goto_8d
.line 82
:cond_80
new-instance v0, Ljava/net/URL;
invoke-virtual {v1}, Lcom/taboola/android/monitor/TBOnlineTemplateChange;->getOnlineTemplateUrl()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/net/URL;-><init>(Ljava/lang/String;)V
invoke-direct {p0, v0}, Lcom/taboola/android/js/MonitorWebViewClient;->getWebResourceResponse(Ljava/net/URL;)Landroid/util/Pair;
move-result-object v3
:goto_8d
if-eqz v3, :cond_aa
.line 86
iget-object v0, v3, Landroid/util/Pair;->first:Ljava/lang/Object;
check-cast v0, Landroid/webkit/WebResourceResponse;
:try_end_93
.catch Ljava/lang/Exception; {:try_start_75 .. :try_end_93} :catch_a0
.line 87
:try_start_93
iget-object v1, v3, Landroid/util/Pair;->second:Ljava/lang/Object;
check-cast v1, Ljava/net/URL;
invoke-virtual {v1}, Ljava/net/URL;->toString()Ljava/lang/String;
move-result-object p2
:try_end_9b
.catch Ljava/lang/Exception; {:try_start_93 .. :try_end_9b} :catch_9d
move-object v4, v0
goto :goto_aa
:catch_9d
move-exception v1
move-object v4, v0
goto :goto_a1
:catch_a0
move-exception v1
.line 90
:goto_a1
sget-object v0, Lcom/taboola/android/js/TaboolaJs;->TAG:Ljava/lang/String;
invoke-virtual {v1}, Ljava/lang/Exception;->getMessage()Ljava/lang/String;
move-result-object v1
invoke-static {v0, v1}, Lcom/taboola/android/utils/Logger;->e(Ljava/lang/String;Ljava/lang/String;)V
:cond_aa
:goto_aa
if-nez v4, :cond_d5
if-eqz v2, :cond_d5
.line 94
invoke-static {p2}, Lcom/taboola/android/js/MonitorWebViewClient;->needToAddUrlParams(Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_d5
.line 96
:try_start_b4
invoke-direct {p0, p2, v2}, Lcom/taboola/android/js/MonitorWebViewClient;->handleUrlParams(Ljava/lang/String;Lcom/taboola/android/monitor/TBUrlParamsChange;)Landroid/util/Pair;
move-result-object v0
if-eqz v0, :cond_d5
.line 98
iget-object v1, v0, Landroid/util/Pair;->first:Ljava/lang/Object;
check-cast v1, Landroid/webkit/WebResourceResponse;
:try_end_be
.catch Ljava/lang/Exception; {:try_start_b4 .. :try_end_be} :catch_cb
.line 99
:try_start_be
iget-object v0, v0, Landroid/util/Pair;->second:Ljava/lang/Object;
check-cast v0, Ljava/net/URL;
invoke-virtual {v0}, Ljava/net/URL;->toString()Ljava/lang/String;
move-result-object p2
:try_end_c6
.catch Ljava/lang/Exception; {:try_start_be .. :try_end_c6} :catch_c8
move-object v4, v1
goto :goto_d5
:catch_c8
move-exception v0
move-object v4, v1
goto :goto_cc
:catch_cb
move-exception v0
.line 102
:goto_cc
sget-object v1, Lcom/taboola/android/js/TaboolaJs;->TAG:Ljava/lang/String;
invoke-virtual {v0}, Ljava/lang/Exception;->getMessage()Ljava/lang/String;
move-result-object v0
invoke-static {v1, v0}, Lcom/taboola/android/utils/Logger;->e(Ljava/lang/String;Ljava/lang/String;)V
.line 106
:cond_d5
:goto_d5
invoke-static {p2}, Lcom/taboola/android/js/MonitorWebViewClient;->needToSendToMonitor(Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_fc
:try_start_db
const-string v0, "UTF-8"
.line 108
invoke-static {p2, v0}, Ljava/net/URLDecoder;->decode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
.line 109
invoke-static {}, Lcom/taboola/android/js/TaboolaJs;->getInstance()Lcom/taboola/android/js/TaboolaJs;
move-result-object v1
new-instance v2, Ljava/util/Date;
invoke-direct {v2}, Ljava/util/Date;-><init>()V
invoke-virtual {v2}, Ljava/util/Date;->getTime()J
move-result-wide v2
invoke-virtual {v1, v2, v3, v0}, Lcom/taboola/android/js/TaboolaJs;->sendUrlToMonitor(JLjava/lang/String;)V
:try_end_f1
.catch Ljava/lang/Exception; {:try_start_db .. :try_end_f1} :catch_f2
goto :goto_fc
:catch_f2
move-exception v0
.line 111
sget-object v1, Lcom/taboola/android/js/TaboolaJs;->TAG:Ljava/lang/String;
invoke-virtual {v0}, Ljava/lang/Exception;->getMessage()Ljava/lang/String;
move-result-object v0
invoke-static {v1, v0}, Lcom/taboola/android/utils/Logger;->e(Ljava/lang/String;Ljava/lang/String;)V
:cond_fc
:goto_fc
if-eqz v4, :cond_ff
return-object v4
.line 119
:cond_ff
invoke-super {p0, p1, p2}, Landroid/webkit/WebViewClient;->shouldInterceptRequest(Landroid/webkit/WebView;Ljava/lang/String;)Landroid/webkit/WebResourceResponse;
move-result-object p1
return-object p1
.end method