StubMainProcProvider.smali
.class public Lorg/acdd/android/proxy/stub/StubMainProcProvider;
.super Landroid/content/ContentProvider;
.source "StubMainProcProvider.java"
# static fields
.field public static final KEY_PKG:Ljava/lang/String; = "pkg"
.field public static final KEY_URI:Ljava/lang/String; = "uri"
.field public static final KEY_WRAPPER_URI:Ljava/lang/String; = "wrapper_uri"
.field public static final TAG:Ljava/lang/String; = "Provider_Runtime"
.field private static sCachedProviders:Ljava/util/Map;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Map",
"<",
"Ljava/lang/String;",
"Landroid/content/ContentProvider;",
">;"
}
.end annotation
.end field
# instance fields
.field private mHandler:Landroid/os/Handler;
# direct methods
.method static constructor <clinit>()V
.registers 1
.prologue
.line 38
new-instance v0, Ljava/util/HashMap;
invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
sput-object v0, Lorg/acdd/android/proxy/stub/StubMainProcProvider;->sCachedProviders:Ljava/util/Map;
return-void
.end method
.method public constructor <init>()V
.registers 3
.prologue
.line 30
invoke-direct {p0}, Landroid/content/ContentProvider;-><init>()V
.line 40
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, Lorg/acdd/android/proxy/stub/StubMainProcProvider;->mHandler:Landroid/os/Handler;
return-void
.end method
.method static synthetic access$000(Lorg/acdd/android/proxy/stub/StubMainProcProvider;Landroid/content/pm/ProviderInfo;Lorg/acdd/framework/BundleImpl;Ljava/lang/String;)V
.registers 4
.prologue
.line 30
invoke-direct {p0, p1, p2, p3}, Lorg/acdd/android/proxy/stub/StubMainProcProvider;->getContentProvider(Landroid/content/pm/ProviderInfo;Lorg/acdd/framework/BundleImpl;Ljava/lang/String;)V
return-void
.end method
.method static synthetic access$100()Ljava/util/Map;
.registers 1
.prologue
.line 30
sget-object v0, Lorg/acdd/android/proxy/stub/StubMainProcProvider;->sCachedProviders:Ljava/util/Map;
return-object v0
.end method
.method private getContentProvider(Landroid/net/Uri;)Landroid/content/ContentProvider;
.registers 12
.prologue
const/4 v1, 0x0
.line 48
const-string/jumbo v0, "uri"
invoke-virtual {p1, v0}, Landroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
move-result-object v0
.line 49
invoke-virtual {v0}, Landroid/net/Uri;->getAuthority()Ljava/lang/String;
move-result-object v3
.line 50
sget-object v0, Lorg/acdd/android/proxy/stub/StubMainProcProvider;->sCachedProviders:Ljava/util/Map;
invoke-interface {v0, v3}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/content/ContentProvider;
.line 51
if-eqz v0, :cond_1b
.line 90
:goto_1a
return-object v0
.line 54
:cond_1b
sget-object v4, Lorg/acdd/android/proxy/stub/StubMainProcProvider;->sCachedProviders:Ljava/util/Map;
monitor-enter v4
.line 55
:try_start_1e
const-string/jumbo v0, "pkg"
invoke-virtual {p1, v0}, Landroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
.line 56
invoke-static {v0}, Lorg/acdd/android/proxy/StubProxyManager;->getBundleImpl(Ljava/lang/String;)Lorg/acdd/framework/BundleImpl;
move-result-object v2
.line 57
if-nez v2, :cond_9f
.line 58
invoke-static {v0}, Lorg/acdd/framework/Framework;->tryLoadBundleInstance(Ljava/lang/String;)Lorg/osgi/framework/Bundle;
move-result-object v0
.line 59
instance-of v5, v0, Lorg/acdd/framework/BundleImpl;
if-eqz v5, :cond_9f
.line 60
check-cast v0, Lorg/acdd/framework/BundleImpl;
.line 63
:goto_35
if-nez v0, :cond_3a
.line 64
monitor-exit v4
move-object v0, v1
goto :goto_1a
.line 67
:cond_3a
const/4 v2, 0x0
invoke-static {v3, v2}, Lorg/acdd/android/proxy/StubProxyManager;->resolveContentProvider(Ljava/lang/String;I)Landroid/content/pm/ProviderInfo;
move-result-object v2
.line 68
if-eqz v2, :cond_9b
.line 69
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/Thread;->getId()J
move-result-wide v6
invoke-static {}, Landroid/os/Looper;->getMainLooper()Landroid/os/Looper;
move-result-object v1
invoke-virtual {v1}, Landroid/os/Looper;->getThread()Ljava/lang/Thread;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/Thread;->getId()J
move-result-wide v8
cmp-long v1, v6, v8
if-nez v1, :cond_69
.line 70
invoke-direct {p0, v2, v0, v3}, Lorg/acdd/android/proxy/stub/StubMainProcProvider;->getContentProvider(Landroid/content/pm/ProviderInfo;Lorg/acdd/framework/BundleImpl;Ljava/lang/String;)V
.line 87
:goto_5c
sget-object v0, Lorg/acdd/android/proxy/stub/StubMainProcProvider;->sCachedProviders:Ljava/util/Map;
invoke-interface {v0, v3}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/content/ContentProvider;
monitor-exit v4
goto :goto_1a
.line 89
:catchall_66
move-exception v0
monitor-exit v4
:try_end_68
.catchall {:try_start_1e .. :try_end_68} :catchall_66
throw v0
.line 72
:cond_69
:try_start_69
iget-object v1, p0, Lorg/acdd/android/proxy/stub/StubMainProcProvider;->mHandler:Landroid/os/Handler;
new-instance v5, Lorg/acdd/android/proxy/stub/StubMainProcProvider$1;
invoke-direct {v5, p0, v2, v0, v3}, Lorg/acdd/android/proxy/stub/StubMainProcProvider$1;-><init>(Lorg/acdd/android/proxy/stub/StubMainProcProvider;Landroid/content/pm/ProviderInfo;Lorg/acdd/framework/BundleImpl;Ljava/lang/String;)V
invoke-virtual {v1, v5}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
:try_end_73
.catchall {:try_start_69 .. :try_end_73} :catchall_66
.line 82
:try_start_73
sget-object v0, Lorg/acdd/android/proxy/stub/StubMainProcProvider;->sCachedProviders:Ljava/util/Map;
invoke-virtual {v0}, Ljava/lang/Object;->wait()V
:try_end_78
.catch Ljava/lang/InterruptedException; {:try_start_73 .. :try_end_78} :catch_79
.catchall {:try_start_73 .. :try_end_78} :catchall_66
goto :goto_5c
.line 83
:catch_79
move-exception v0
.line 84
:try_start_7a
const-string v1, "Provider_Runtime"
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v5
invoke-virtual {v5}, Ljava/lang/Class;->getSimpleName()Ljava/lang/String;
move-result-object v5
invoke-virtual {v2, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
const-string v5, " [getContentProvider] error"
invoke-virtual {v2, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-static {v1, v2, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
goto :goto_5c
.line 89
:cond_9b
monitor-exit v4
:try_end_9c
.catchall {:try_start_7a .. :try_end_9c} :catchall_66
move-object v0, v1
.line 90
goto/16 :goto_1a
:cond_9f
move-object v0, v2
goto :goto_35
.end method
.method private getContentProvider(Landroid/content/pm/ProviderInfo;Lorg/acdd/framework/BundleImpl;Ljava/lang/String;)V
.registers 6
.prologue
.line 95
:try_start_0
invoke-virtual {p2}, Lorg/acdd/framework/BundleImpl;->getClassLoader()Ljava/lang/ClassLoader;
move-result-object v0
iget-object v1, p1, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
invoke-virtual {v0, v1}, Ljava/lang/ClassLoader;->loadClass(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/Class;->newInstance()Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/content/ContentProvider;
.line 96
sget-object v1, Lorg/acdd/runtime/RuntimeVariables;->androidApplication:Landroid/app/Application;
invoke-virtual {v1}, Landroid/app/Application;->getApplicationContext()Landroid/content/Context;
move-result-object v1
invoke-virtual {v0, v1, p1}, Landroid/content/ContentProvider;->attachInfo(Landroid/content/Context;Landroid/content/pm/ProviderInfo;)V
.line 97
sget-object v1, Lorg/acdd/android/proxy/stub/StubMainProcProvider;->sCachedProviders:Ljava/util/Map;
invoke-interface {v1, p3, v0}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
:try_end_1e
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_1e} :catch_1f
.line 100
:goto_1e
return-void
.line 98
:catch_1f
move-exception v0
goto :goto_1e
.end method
# virtual methods
.method public applyBatch(Ljava/util/ArrayList;)[Landroid/content/ContentProviderResult;
.registers 8
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/ArrayList",
"<",
"Landroid/content/ContentProviderOperation;",
">;)[",
"Landroid/content/ContentProviderResult;"
}
.end annotation
.annotation system Ldalvik/annotation/Throws;
value = {
Landroid/content/OperationApplicationException;
}
.end annotation
.prologue
const/4 v5, 0x0
.line 165
:try_start_1
const-class v0, Landroid/content/ContentProviderOperation;
const-string v1, "mUri"
invoke-virtual {v0, v1}, Ljava/lang/Class;->getDeclaredField(Ljava/lang/String;)Ljava/lang/reflect/Field;
move-result-object v1
.line 166
const/4 v0, 0x1
invoke-virtual {v1, v0}, Ljava/lang/reflect/Field;->setAccessible(Z)V
.line 167
invoke-virtual {p1}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
move-result-object v2
:goto_11
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_34
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/content/ContentProviderOperation;
.line 168
invoke-virtual {v0}, Landroid/content/ContentProviderOperation;->getUri()Landroid/net/Uri;
move-result-object v3
const-string/jumbo v4, "uri"
invoke-virtual {v3, v4}, Landroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String;
move-result-object v3
invoke-static {v3}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
move-result-object v3
.line 169
invoke-virtual {v1, v0, v3}, Ljava/lang/reflect/Field;->set(Ljava/lang/Object;Ljava/lang/Object;)V
:try_end_2f
.catch Ljava/lang/Exception; {:try_start_1 .. :try_end_2f} :catch_30
goto :goto_11
.line 171
:catch_30
move-exception v0
.line 172
new-array v0, v5, [Landroid/content/ContentProviderResult;
.line 180
:goto_33
return-object v0
.line 174
:cond_34
invoke-virtual {p1}, Ljava/util/ArrayList;->size()I
move-result v0
if-lez v0, :cond_4f
.line 175
invoke-virtual {p1, v5}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/content/ContentProviderOperation;
invoke-virtual {v0}, Landroid/content/ContentProviderOperation;->getUri()Landroid/net/Uri;
move-result-object v0
invoke-direct {p0, v0}, Lorg/acdd/android/proxy/stub/StubMainProcProvider;->getContentProvider(Landroid/net/Uri;)Landroid/content/ContentProvider;
move-result-object v0
.line 176
if-eqz v0, :cond_4f
.line 177
invoke-virtual {v0, p1}, Landroid/content/ContentProvider;->applyBatch(Ljava/util/ArrayList;)[Landroid/content/ContentProviderResult;
move-result-object v0
goto :goto_33
.line 180
:cond_4f
new-array v0, v5, [Landroid/content/ContentProviderResult;
goto :goto_33
.end method
.method public bulkInsert(Landroid/net/Uri;[Landroid/content/ContentValues;)I
.registers 5
.prologue
.line 154
invoke-direct {p0, p1}, Lorg/acdd/android/proxy/stub/StubMainProcProvider;->getContentProvider(Landroid/net/Uri;)Landroid/content/ContentProvider;
move-result-object v0
.line 155
const-string/jumbo v1, "uri"
invoke-virtual {p1, v1}, Landroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
move-result-object v1
.line 156
if-eqz v0, :cond_16
.line 157
invoke-virtual {v0, v1, p2}, Landroid/content/ContentProvider;->bulkInsert(Landroid/net/Uri;[Landroid/content/ContentValues;)I
move-result v0
.line 159
:goto_15
return v0
:cond_16
const/4 v0, 0x0
goto :goto_15
.end method
.method public call(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;
.registers 6
.prologue
const/4 v0, 0x0
.line 185
if-eqz p3, :cond_c
const-string/jumbo v1, "wrapper_uri"
invoke-virtual {p3, v1}, Landroid/os/Bundle;->getString(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
if-nez v1, :cond_d
.line 193
:cond_c
:goto_c
return-object v0
.line 188
:cond_d
const-string/jumbo v1, "wrapper_uri"
invoke-virtual {p3, v1}, Landroid/os/Bundle;->getString(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
move-result-object v1
.line 189
invoke-direct {p0, v1}, Lorg/acdd/android/proxy/stub/StubMainProcProvider;->getContentProvider(Landroid/net/Uri;)Landroid/content/ContentProvider;
move-result-object v1
.line 190
if-eqz v1, :cond_c
.line 191
invoke-virtual {v1, p1, p2, p3}, Landroid/content/ContentProvider;->call(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;
move-result-object v0
goto :goto_c
.end method
.method public delete(Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I
.registers 6
.prologue
.line 134
invoke-direct {p0, p1}, Lorg/acdd/android/proxy/stub/StubMainProcProvider;->getContentProvider(Landroid/net/Uri;)Landroid/content/ContentProvider;
move-result-object v0
.line 135
const-string/jumbo v1, "uri"
invoke-virtual {p1, v1}, Landroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
move-result-object v1
.line 136
if-eqz v0, :cond_16
.line 137
invoke-virtual {v0, v1, p2, p3}, Landroid/content/ContentProvider;->delete(Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I
move-result v0
.line 139
:goto_15
return v0
:cond_16
const/4 v0, 0x0
goto :goto_15
.end method
.method public getType(Landroid/net/Uri;)Ljava/lang/String;
.registers 4
.prologue
.line 104
invoke-direct {p0, p1}, Lorg/acdd/android/proxy/stub/StubMainProcProvider;->getContentProvider(Landroid/net/Uri;)Landroid/content/ContentProvider;
move-result-object v0
.line 105
const-string/jumbo v1, "uri"
invoke-virtual {p1, v1}, Landroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
move-result-object v1
.line 106
if-eqz v0, :cond_16
.line 107
invoke-virtual {v0, v1}, Landroid/content/ContentProvider;->getType(Landroid/net/Uri;)Ljava/lang/String;
move-result-object v0
.line 109
:goto_15
return-object v0
:cond_16
const/4 v0, 0x0
goto :goto_15
.end method
.method public insert(Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri;
.registers 5
.prologue
.line 124
invoke-direct {p0, p1}, Lorg/acdd/android/proxy/stub/StubMainProcProvider;->getContentProvider(Landroid/net/Uri;)Landroid/content/ContentProvider;
move-result-object v0
.line 125
const-string/jumbo v1, "uri"
invoke-virtual {p1, v1}, Landroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
move-result-object v1
.line 126
if-eqz v0, :cond_15
.line 127
invoke-virtual {v0, v1, p2}, Landroid/content/ContentProvider;->insert(Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri;
move-result-object p1
.line 129
:cond_15
return-object p1
.end method
.method public onCreate()Z
.registers 2
.prologue
.line 44
const/4 v0, 0x1
return v0
.end method
.method public query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
.registers 12
.prologue
.line 114
invoke-direct {p0, p1}, Lorg/acdd/android/proxy/stub/StubMainProcProvider;->getContentProvider(Landroid/net/Uri;)Landroid/content/ContentProvider;
move-result-object v0
.line 115
const-string/jumbo v1, "uri"
invoke-virtual {p1, v1}, Landroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
move-result-object v1
.line 116
if-eqz v0, :cond_1a
move-object v2, p2
move-object v3, p3
move-object v4, p4
move-object v5, p5
.line 117
invoke-virtual/range {v0 .. v5}, Landroid/content/ContentProvider;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
move-result-object v0
.line 119
:goto_19
return-object v0
:cond_1a
const/4 v0, 0x0
goto :goto_19
.end method
.method public update(Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I
.registers 7
.prologue
.line 144
invoke-direct {p0, p1}, Lorg/acdd/android/proxy/stub/StubMainProcProvider;->getContentProvider(Landroid/net/Uri;)Landroid/content/ContentProvider;
move-result-object v0
.line 145
const-string/jumbo v1, "uri"
invoke-virtual {p1, v1}, Landroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
move-result-object v1
.line 146
if-eqz v0, :cond_16
.line 147
invoke-virtual {v0, v1, p2, p3, p4}, Landroid/content/ContentProvider;->update(Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I
move-result v0
.line 149
:goto_15
return v0
:cond_16
const/4 v0, 0x0
goto :goto_15
.end method