ACDD.smali

.class public Lorg/acdd/framework/ACDD;
.super Ljava/lang/Object;
.source "ACDD.java"


# static fields
.field private static final TAG:Ljava/lang/String; = "UpgradeUtil"

.field private static instance:Lorg/acdd/framework/ACDD;


# instance fields
.field private crashReporter:Lorg/acdd/android/compat/ICrashReporter;

.field private firstUIActName:Ljava/lang/String;

.field private mActivityCallBack:Lorg/acdd/android/compat/IActivityCallBack;


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

    .prologue
    .line 56
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 59
    const/4 v0, 0x0

    iput-object v0, p0, Lorg/acdd/framework/ACDD;->crashReporter:Lorg/acdd/android/compat/ICrashReporter;

    return-void
.end method

.method public static getInstance()Lorg/acdd/framework/ACDD;
    .registers 2

    .prologue
    .line 69
    sget-object v0, Lorg/acdd/framework/ACDD;->instance:Lorg/acdd/framework/ACDD;

    if-eqz v0, :cond_7

    .line 70
    sget-object v0, Lorg/acdd/framework/ACDD;->instance:Lorg/acdd/framework/ACDD;

    .line 77
    :goto_6
    return-object v0

    .line 72
    :cond_7
    const-class v1, Lorg/acdd/framework/ACDD;

    monitor-enter v1

    .line 73
    :try_start_a
    sget-object v0, Lorg/acdd/framework/ACDD;->instance:Lorg/acdd/framework/ACDD;

    if-nez v0, :cond_15

    .line 74
    new-instance v0, Lorg/acdd/framework/ACDD;

    invoke-direct {v0}, Lorg/acdd/framework/ACDD;-><init>()V

    sput-object v0, Lorg/acdd/framework/ACDD;->instance:Lorg/acdd/framework/ACDD;

    .line 76
    :cond_15
    monitor-exit v1
    :try_end_16
    .catchall {:try_start_a .. :try_end_16} :catchall_19

    .line 77
    sget-object v0, Lorg/acdd/framework/ACDD;->instance:Lorg/acdd/framework/ACDD;

    goto :goto_6

    .line 76
    :catchall_19
    move-exception v0

    :try_start_1a
    monitor-exit v1
    :try_end_1b
    .catchall {:try_start_1a .. :try_end_1b} :catchall_19

    throw v0
.end method

.method public static getLastPluginFilePath(Ljava/lang/String;)Ljava/lang/String;
    .registers 2

    .prologue
    .line 129
    invoke-static {p0}, Lorg/acdd/framework/Framework;->getLastPluginFilePath(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public static init(Landroid/app/Application;)V
    .registers 5
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/lang/Exception;
        }
    .end annotation

    .prologue
    .line 81
    invoke-virtual {p0}, Landroid/app/Application;->getPackageName()Ljava/lang/String;

    move-result-object v0

    .line 82
    invoke-static {}, Lorg/acdd/hack/ACDDHacks;->defineAndVerify()Z

    .line 83
    const-class v1, Lorg/acdd/framework/ACDD;

    invoke-virtual {v1}, Ljava/lang/Class;->getClassLoader()Ljava/lang/ClassLoader;

    move-result-object v1

    .line 84
    new-instance v2, Lorg/acdd/runtime/DelegateClassLoader;

    invoke-direct {v2, v1}, Lorg/acdd/runtime/DelegateClassLoader;-><init>(Ljava/lang/ClassLoader;)V

    .line 85
    sput-object v1, Lorg/acdd/framework/Framework;->systemClassLoader:Ljava/lang/ClassLoader;

    .line 86
    sput-object v2, Lorg/acdd/runtime/RuntimeVariables;->delegateClassLoader:Lorg/acdd/runtime/DelegateClassLoader;

    .line 87
    sget-object v1, Lorg/acdd/runtime/RuntimeVariables;->delegateResources:Landroid/content/res/Resources;

    if-nez v1, :cond_20

    .line 88
    invoke-static {p0}, Lorg/acdd/framework/ACDD;->initResources(Landroid/app/Application;)Landroid/content/res/Resources;

    move-result-object v1

    sput-object v1, Lorg/acdd/runtime/RuntimeVariables;->delegateResources:Landroid/content/res/Resources;

    .line 90
    :cond_20
    sput-object p0, Lorg/acdd/runtime/RuntimeVariables;->androidApplication:Landroid/app/Application;

    .line 91
    invoke-static {v0, v2}, Lorg/acdd/hack/AndroidHack;->injectClassLoader(Ljava/lang/String;Ljava/lang/ClassLoader;)V

    .line 92
    new-instance v1, Lorg/acdd/runtime/InstrumentationHook;

    .line 93
    invoke-static {}, Lorg/acdd/hack/AndroidHack;->getInstrumentation()Landroid/app/Instrumentation;

    move-result-object v2

    invoke-virtual {p0}, Landroid/app/Application;->getBaseContext()Landroid/content/Context;

    move-result-object v3

    invoke-direct {v1, v2, v3}, Lorg/acdd/runtime/InstrumentationHook;-><init>(Landroid/app/Instrumentation;Landroid/content/Context;)V

    .line 92
    invoke-static {v1}, Lorg/acdd/hack/AndroidHack;->injectInstrumentationHook(Landroid/app/Instrumentation;)V

    .line 94
    invoke-static {p0, v0}, Lorg/acdd/framework/ACDD;->injectApplication(Landroid/app/Application;Ljava/lang/String;)V

    .line 95
    new-instance v0, Lorg/acdd/runtime/BundleLifecycleHandler;

    invoke-direct {v0}, Lorg/acdd/runtime/BundleLifecycleHandler;-><init>()V

    .line 96
    sget-object v1, Lorg/acdd/framework/Framework;->syncBundleListeners:Ljava/util/List;

    invoke-interface {v1, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    .line 97
    new-instance v0, Lorg/acdd/runtime/FrameworkLifecycleHandler;

    invoke-direct {v0}, Lorg/acdd/runtime/FrameworkLifecycleHandler;-><init>()V

    .line 98
    sget-object v1, Lorg/acdd/framework/Framework;->frameworkListeners:Ljava/util/List;

    invoke-interface {v1, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    .line 99
    invoke-static {}, Lorg/acdd/hack/AndroidHack;->hackH()Landroid/os/Handler;

    .line 103
    new-instance v0, Lorg/acdd/framework/ACDD$1;

    const-string v1, "ACDD_hackH"

    invoke-direct {v0, v1}, Lorg/acdd/framework/ACDD$1;-><init>(Ljava/lang/String;)V

    .line 116
    invoke-virtual {v0}, Lorg/acdd/framework/ACDD$1;->start()V

    .line 118
    return-void
.end method

.method private static initResources(Landroid/app/Application;)Landroid/content/res/Resources;
    .registers 3
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/lang/Exception;
        }
    .end annotation

    .prologue
    .line 136
    invoke-virtual {p0}, Landroid/app/Application;->getResources()Landroid/content/res/Resources;

    move-result-object v0

    .line 137
    if-eqz v0, :cond_7

    .line 141
    :goto_6
    return-object v0

    :cond_7
    invoke-virtual {p0}, Landroid/app/Application;->getPackageManager()Landroid/content/pm/PackageManager;

    move-result-object v0

    invoke-virtual {p0}, Landroid/app/Application;->getApplicationInfo()Landroid/content/pm/ApplicationInfo;

    move-result-object v1

    invoke-virtual {v0, v1}, Landroid/content/pm/PackageManager;->getResourcesForApplication(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/Resources;

    move-result-object v0

    goto :goto_6
.end method

.method private static injectApplication(Landroid/app/Application;Ljava/lang/String;)V
    .registers 2
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/lang/Exception;
        }
    .end annotation

    .prologue
    .line 146
    invoke-static {}, Lorg/acdd/hack/ACDDHacks;->defineAndVerify()Z

    .line 147
    invoke-static {p1, p0}, Lorg/acdd/hack/AndroidHack;->injectApplication(Ljava/lang/String;Landroid/app/Application;)V

    .line 148
    return-void
.end method


# virtual methods
.method public addBundleListener(Lorg/osgi/framework/BundleListener;)V
    .registers 2

    .prologue
    .line 307
    invoke-static {p1}, Lorg/acdd/framework/Framework;->addBundleListener(Lorg/osgi/framework/BundleListener;)V

    .line 308
    return-void
.end method

.method public getActivityCallBack()Lorg/acdd/android/compat/IActivityCallBack;
    .registers 2

    .prologue
    .line 389
    iget-object v0, p0, Lorg/acdd/framework/ACDD;->mActivityCallBack:Lorg/acdd/android/compat/IActivityCallBack;

    return-object v0
.end method

.method public getBundle(Ljava/lang/String;)Lorg/osgi/framework/Bundle;
    .registers 3

    .prologue
    .line 163
    invoke-static {p1}, Lorg/acdd/framework/BundleManager;->getBundle(Ljava/lang/String;)Lorg/osgi/framework/Bundle;

    move-result-object v0

    return-object v0
.end method

.method public getBundleClassLoader(Ljava/lang/String;)Ljava/lang/ClassLoader;
    .registers 3

    .prologue
    .line 261
    invoke-static {p1}, Lorg/acdd/framework/BundleManager;->getBundle(Ljava/lang/String;)Lorg/osgi/framework/Bundle;

    move-result-object v0

    .line 262
    if-eqz v0, :cond_d

    .line 263
    check-cast v0, Lorg/acdd/framework/BundleImpl;

    invoke-virtual {v0}, Lorg/acdd/framework/BundleImpl;->getClassLoader()Ljava/lang/ClassLoader;

    move-result-object v0

    .line 265
    :goto_c
    return-object v0

    :cond_d
    const/4 v0, 0x0

    goto :goto_c
.end method

.method public getBundleFile(Ljava/lang/String;)Ljava/io/File;
    .registers 3

    .prologue
    .line 273
    invoke-static {p1}, Lorg/acdd/framework/BundleManager;->getBundle(Ljava/lang/String;)Lorg/osgi/framework/Bundle;

    move-result-object v0

    .line 274
    if-eqz v0, :cond_f

    .line 275
    check-cast v0, Lorg/acdd/framework/BundleImpl;

    iget-object v0, v0, Lorg/acdd/framework/BundleImpl;->archive:Lorg/acdd/framework/bundlestorage/Archive;

    invoke-interface {v0}, Lorg/acdd/framework/bundlestorage/Archive;->getArchiveFile()Ljava/io/File;

    move-result-object v0

    .line 277
    :goto_e
    return-object v0

    :cond_f
    const/4 v0, 0x0

    goto :goto_e
.end method

.method public getBundles()Ljava/util/List;
    .registers 2
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/util/List",
            "<",
            "Lorg/osgi/framework/Bundle;",
            ">;"
        }
    .end annotation

    .prologue
    .line 245
    invoke-static {}, Lorg/acdd/framework/BundleManager;->getBundles()Ljava/util/List;

    move-result-object v0

    return-object v0
.end method

.method public getDelegateClassLoader()Ljava/lang/ClassLoader;
    .registers 2

    .prologue
    .line 253
    sget-object v0, Lorg/acdd/runtime/RuntimeVariables;->delegateClassLoader:Lorg/acdd/runtime/DelegateClassLoader;

    return-object v0
.end method

.method public getFirstUIActName()Ljava/lang/String;
    .registers 2

    .prologue
    .line 381
    iget-object v0, p0, Lorg/acdd/framework/ACDD;->firstUIActName:Ljava/lang/String;

    return-object v0
.end method

.method public installBundle(Ljava/lang/String;Ljava/io/InputStream;)Lorg/osgi/framework/Bundle;
    .registers 4
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lorg/osgi/framework/BundleException;
        }
    .end annotation

    .prologue
    .line 179
    invoke-static {p1, p2}, Lorg/acdd/framework/Framework;->installNewBundle(Ljava/lang/String;Ljava/io/InputStream;)Lorg/osgi/framework/Bundle;

    move-result-object v0

    return-object v0
.end method

.method public reportCrash(Ljava/lang/String;Ljava/lang/Throwable;)V
    .registers 4

    .prologue
    .line 359
    iget-object v0, p0, Lorg/acdd/framework/ACDD;->crashReporter:Lorg/acdd/android/compat/ICrashReporter;

    if-eqz v0, :cond_9

    .line 360
    iget-object v0, p0, Lorg/acdd/framework/ACDD;->crashReporter:Lorg/acdd/android/compat/ICrashReporter;

    invoke-interface {v0, p1, p2}, Lorg/acdd/android/compat/ICrashReporter;->reportCrash(Ljava/lang/String;Ljava/lang/Throwable;)V

    .line 362
    :cond_9
    return-void
.end method

.method public setActivityCallBack(Lorg/acdd/android/compat/IActivityCallBack;)V
    .registers 2

    .prologue
    .line 385
    iput-object p1, p0, Lorg/acdd/framework/ACDD;->mActivityCallBack:Lorg/acdd/android/compat/IActivityCallBack;

    .line 386
    return-void
.end method

.method public setClassNotFoundInterceptorCallback(Lorg/acdd/runtime/ClassNotFoundInterceptorCallback;)V
    .registers 2

    .prologue
    .line 347
    invoke-static {p1}, Lorg/acdd/framework/Framework;->setClassNotFoundCallback(Lorg/acdd/runtime/ClassNotFoundInterceptorCallback;)V

    .line 348
    return-void
.end method

.method public setCrashReporter(Lorg/acdd/android/compat/ICrashReporter;)V
    .registers 2

    .prologue
    .line 355
    iput-object p1, p0, Lorg/acdd/framework/ACDD;->crashReporter:Lorg/acdd/android/compat/ICrashReporter;

    .line 356
    return-void
.end method

.method public setFirstUIActName(Ljava/lang/String;)V
    .registers 3

    .prologue
    .line 365
    sget-boolean v0, Lorg/acdd/android/compat/AppBuildConfig;->ISUIPROCESS:Z

    if-eqz v0, :cond_17

    iget-object v0, p0, Lorg/acdd/framework/ACDD;->firstUIActName:Ljava/lang/String;

    invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

    move-result v0

    if-eqz v0, :cond_17

    .line 366
    iput-object p1, p0, Lorg/acdd/framework/ACDD;->firstUIActName:Ljava/lang/String;

    .line 369
    iget-object v0, p0, Lorg/acdd/framework/ACDD;->mActivityCallBack:Lorg/acdd/android/compat/IActivityCallBack;

    if-eqz v0, :cond_17

    .line 370
    iget-object v0, p0, Lorg/acdd/framework/ACDD;->mActivityCallBack:Lorg/acdd/android/compat/IActivityCallBack;

    invoke-interface {v0}, Lorg/acdd/android/compat/IActivityCallBack;->notifyFirstUIActivityWillStart()V

    .line 375
    :cond_17
    sget-boolean v0, Lorg/acdd/android/compat/AppBuildConfig;->ISUIPROCESS:Z

    if-eqz v0, :cond_24

    iget-object v0, p0, Lorg/acdd/framework/ACDD;->mActivityCallBack:Lorg/acdd/android/compat/IActivityCallBack;

    if-eqz v0, :cond_24

    .line 376
    iget-object v0, p0, Lorg/acdd/framework/ACDD;->mActivityCallBack:Lorg/acdd/android/compat/IActivityCallBack;

    invoke-interface {v0}, Lorg/acdd/android/compat/IActivityCallBack;->notifyAnyUIActivityWillStart()V

    .line 378
    :cond_24
    return-void
.end method

.method public setPluginLoadChecker(Lorg/acdd/android/compat/IPluginLoadChecker;)V
    .registers 2

    .prologue
    .line 125
    invoke-static {p1}, Lorg/acdd/framework/Framework;->setPluginLoadChecker(Lorg/acdd/android/compat/IPluginLoadChecker;)V

    .line 126
    return-void
.end method

.method public setPluginRemoveListener(Lorg/acdd/framework/PluginRemoveListener;)V
    .registers 2

    .prologue
    .line 121
    invoke-static {p1}, Lorg/acdd/framework/Framework;->setPluginRemoveListener(Lorg/acdd/framework/PluginRemoveListener;)V

    .line 122
    return-void
.end method

.method public shutdown()V
    .registers 2
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lorg/osgi/framework/BundleException;
        }
    .end annotation

    .prologue
    .line 159
    const/4 v0, 0x0

    invoke-static {v0}, Lorg/acdd/framework/Framework;->shutdown(Z)V

    .line 160
    return-void
.end method

.method public startup(Ljava/util/Properties;)V
    .registers 2
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lorg/osgi/framework/BundleException;
        }
    .end annotation

    .prologue
    .line 151
    invoke-static {p1}, Lorg/acdd/framework/Framework;->startup(Ljava/util/Properties;)V

    .line 152
    return-void
.end method

.method public updateBundle(Ljava/lang/String;Ljava/io/InputStream;)Lorg/acdd/framework/bundlestorage/BundleArchiveRevision;
    .registers 6
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lorg/osgi/framework/BundleException;
        }
    .end annotation

    .prologue
    .line 188
    invoke-static {p1}, Lorg/acdd/framework/BundleManager;->getBundle(Ljava/lang/String;)Lorg/osgi/framework/Bundle;

    move-result-object v0

    .line 189
    if-eqz v0, :cond_b

    .line 190
    invoke-interface {v0, p2}, Lorg/osgi/framework/Bundle;->update(Ljava/io/InputStream;)Lorg/acdd/framework/bundlestorage/BundleArchiveRevision;

    move-result-object v0

    return-object v0

    .line 192
    :cond_b
    new-instance v0, Lorg/osgi/framework/BundleException;

    new-instance v1, Ljava/lang/StringBuilder;

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

    const-string v2, "Could not update bundle "

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    const-string v2, ", because could not find it"

    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}, Lorg/osgi/framework/BundleException;-><init>(Ljava/lang/String;)V

    throw v0
.end method