--- /home/hans/code/fdroid/data/tmp/org.smssecure.smssecure_123.apk +++ /home/hans/code/fdroid/data/tmp/sigcp_org.smssecure.smssecure_123.apk ├── zipinfo {} │ @@ -1,13 +1,11 @@ │ -Zip file size: 7885540 bytes, number of entries: 2003 │ +Zip file size: 7879841 bytes, number of entries: 2003 │ -rw---- 2.0 fat 208076 bl defN 08-Jan-01 00:00 META-INF/MANIFEST.MF │ -rw---- 2.0 fat 208197 bl defN 08-Jan-01 00:00 META-INF/28969C09.SF │ -rw---- 2.0 fat 1326 bl defN 08-Jan-01 00:00 META-INF/28969C09.RSA │ --rw---- 2.0 fat 44 bl defN 08-Jan-01 00:00 META-INF/services/com.fasterxml.jackson.core.ObjectCodec │ --rw---- 2.0 fat 39 bl defN 08-Jan-01 00:00 META-INF/services/com.fasterxml.jackson.core.JsonFactory │ -rw---- 2.0 fat 41 bl defN 08-Jan-01 00:00 META-INF/buildserverid │ -rw---- 2.0 fat 41 bl defN 08-Jan-01 00:00 META-INF/fdroidserverid │ -rw---- 2.0 fat 24688 bX defN 08-Jan-01 00:00 AndroidManifest.xml │ -rw---- 2.0 fat 4083 bl defN 08-Jan-01 00:00 assets/backward │ -rw---- 2.0 fat 262144 bl defN 08-Jan-01 00:00 assets/databases/apns.db │ -rw---- 1.0 fat 340106 b- stor 08-Jan-01 00:00 assets/emoji-nature.png │ -rw---- 1.0 fat 289380 b- stor 08-Jan-01 00:00 assets/emoji-objects.png │ @@ -1455,16 +1453,16 @@ │ -rw---- 2.0 fat 1432 bl defN 08-Jan-01 00:00 res/xml/preferences_app_protection.xml │ -rw---- 2.0 fat 740 bl defN 08-Jan-01 00:00 res/xml/preferences_appearance.xml │ -rw---- 2.0 fat 1600 bl defN 08-Jan-01 00:00 res/xml/preferences_chats.xml │ -rw---- 2.0 fat 1704 bl defN 08-Jan-01 00:00 res/xml/preferences_manual_mms.xml │ -rw---- 2.0 fat 2276 bl defN 08-Jan-01 00:00 res/xml/preferences_notifications.xml │ -rw---- 2.0 fat 1680 bl defN 08-Jan-01 00:00 res/xml/preferences_sms_mms.xml │ -rw---- 2.0 fat 1968 bl defN 08-Jan-01 00:00 res/xml/recipient_preferences.xml │ --rw---- 1.0 fat 1475916 b- stor 08-Jan-01 00:00 resources.arsc │ --rw---- 2.0 fat 6863844 bl defN 08-Jan-01 00:00 classes.dex │ +-rw---- 1.0 fat 1475108 b- stor 08-Jan-01 00:00 resources.arsc │ +-rw---- 2.0 fat 6864584 bl defN 08-Jan-01 00:00 classes.dex │ -rw---- 2.0 fat 49608 bl defN 08-Jan-01 00:00 org/spongycastle/x509/CertPathReviewerMessages_de.properties │ -rw---- 2.0 fat 42868 bl defN 08-Jan-01 00:00 org/spongycastle/x509/CertPathReviewerMessages.properties │ -rw---- 2.0 fat 343 bl defN 08-Jan-01 00:00 com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LV │ -rw---- 2.0 fat 633 bl defN 08-Jan-01 00:00 com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HK │ -rw---- 2.0 fat 155 bl defN 08-Jan-01 00:00 com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MR │ -rw---- 2.0 fat 410 bl defN 08-Jan-01 00:00 com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VE │ -rw---- 2.0 fat 166 bl defN 08-Jan-01 00:00 com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AD │ @@ -1994,12 +1992,14 @@ │ -rw---- 2.0 fat 405 bl defN 08-Jan-01 00:00 com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_381 │ -rw---- 2.0 fat 392 bl defN 08-Jan-01 00:00 com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_QA │ -rw---- 2.0 fat 300 bl defN 08-Jan-01 00:00 com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TH │ -rw---- 2.0 fat 708 bl defN 08-Jan-01 00:00 com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BE │ -rw---- 2.0 fat 314 bl defN 08-Jan-01 00:00 com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NE │ -rw---- 2.0 fat 201 bl defN 08-Jan-01 00:00 com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CI │ -rw---- 2.0 fat 371 bl defN 08-Jan-01 00:00 com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AD │ +-rw---- 2.0 fat 39 bl defN 08-Jan-01 00:00 META-INF/services/com.fasterxml.jackson.core.JsonFactory │ +-rw---- 2.0 fat 44 bl defN 08-Jan-01 00:00 META-INF/services/com.fasterxml.jackson.core.ObjectCodec │ -rw---- 2.0 fat 135228 bl defN 08-Jan-01 00:00 lib/armeabi-v7a/libcurve25519.so │ -rw---- 2.0 fat 131128 bl defN 08-Jan-01 00:00 lib/armeabi/libcurve25519.so │ -rw---- 2.0 fat 235668 bl defN 08-Jan-01 00:00 lib/mips/libcurve25519.so │ -rw---- 2.0 fat 163904 bl defN 08-Jan-01 00:00 lib/x86/libcurve25519.so │ -2003 files, 13094293 bytes uncompressed, 7512436 bytes compressed: 42.6% │ +2003 files, 13094225 bytes uncompressed, 7512173 bytes compressed: 42.6% ├── smali/android/support/design/R.smali │ @@ -7,10 +7,9 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 9 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 1029 │ return-void │ .end method ├── smali/android/support/v4/preference/PreferenceFragment.smali │ @@ -307,18 +307,20 @@ │ .line 223 │ iget-object v0, p0, Landroid/support/v4/preference/PreferenceFragment;->mPreferenceManager:Landroid/preference/PreferenceManager; │ │ invoke-virtual {p0}, Landroid/support/v4/preference/PreferenceFragment;->getActivity()Landroid/support/v4/app/FragmentActivity; │ │ move-result-object v1 │ │ + .line 224 │ invoke-virtual {p0}, Landroid/support/v4/preference/PreferenceFragment;->getPreferenceScreen()Landroid/preference/PreferenceScreen; │ │ move-result-object v2 │ │ + .line 223 │ invoke-static {v0, v1, p1, v2}, Landroid/support/v4/preference/PreferenceManagerCompat;->inflateFromResource(Landroid/preference/PreferenceManager;Landroid/app/Activity;ILandroid/preference/PreferenceScreen;)Landroid/preference/PreferenceScreen; │ │ move-result-object v0 │ │ invoke-virtual {p0, v0}, Landroid/support/v4/preference/PreferenceFragment;->setPreferenceScreen(Landroid/preference/PreferenceScreen;)V │ │ .line 225 │ @@ -546,14 +548,15 @@ │ .end method │ │ .method public onPreferenceTreeClick(Landroid/preference/PreferenceScreen;Landroid/preference/Preference;)Z │ .locals 1 │ │ .prologue │ .line 233 │ + .line 234 │ invoke-virtual {p0}, Landroid/support/v4/preference/PreferenceFragment;->getActivity()Landroid/support/v4/app/FragmentActivity; │ │ move-result-object v0 │ │ instance-of v0, v0, Landroid/support/v4/preference/PreferenceFragment$OnPreferenceStartFragmentCallback; │ │ if-eqz v0, :cond_0 ├── smali/android/support/v4/preference/PreferenceManagerCompat.smali │ @@ -27,15 +27,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 33 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 42 │ return-void │ .end method │ │ .method static dispatchActivityDestroy(Landroid/preference/PreferenceManager;)V │ .locals 3 │ │ .prologue │ @@ -553,39 +552,41 @@ │ const/4 v1, 0x1 │ │ invoke-virtual {v0, v1}, Ljava/lang/reflect/Field;->setAccessible(Z)V │ │ .line 83 │ if-eqz p1, :cond_0 │ │ - .line 84 │ + .line 85 │ invoke-virtual {v0}, Ljava/lang/reflect/Field;->getType()Ljava/lang/Class; │ │ move-result-object v1 │ │ invoke-virtual {v1}, Ljava/lang/Class;->getClassLoader()Ljava/lang/ClassLoader; │ │ move-result-object v1 │ │ const/4 v2, 0x1 │ │ new-array v2, v2, [Ljava/lang/Class; │ │ const/4 v3, 0x0 │ │ + .line 86 │ invoke-virtual {v0}, Ljava/lang/reflect/Field;->getType()Ljava/lang/Class; │ │ move-result-object v4 │ │ aput-object v4, v2, v3 │ │ new-instance v3, Landroid/support/v4/preference/PreferenceManagerCompat$1; │ │ invoke-direct {v3, p1}, Landroid/support/v4/preference/PreferenceManagerCompat$1;->(Landroid/support/v4/preference/PreferenceManagerCompat$OnPreferenceTreeClickListener;)V │ │ + .line 84 │ invoke-static {v1, v2, v3}, Ljava/lang/reflect/Proxy;->newProxyInstance(Ljava/lang/ClassLoader;[Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object; │ │ move-result-object v1 │ │ .line 96 │ invoke-virtual {v0, p0, v1}, Ljava/lang/reflect/Field;->set(Ljava/lang/Object;Ljava/lang/Object;)V ├── smali/android/support/v4/preferencefragment/R.smali │ @@ -7,10 +7,9 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 9 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 26 │ return-void │ .end method ├── smali/android/support/v7/appcompat/R.smali │ @@ -7,10 +7,9 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 9 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 885 │ return-void │ .end method ├── smali/android/support/v7/gridlayout/R.smali │ @@ -7,10 +7,9 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 9 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 49 │ return-void │ .end method ├── smali/android/support/v7/recyclerview/R.smali │ @@ -7,10 +7,9 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 9 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 22 │ return-void │ .end method ├── smali/com/amulyakhare/textdrawable/TextDrawable.smali │ @@ -344,34 +344,37 @@ │ │ int-to-float v0, v0 │ │ mul-float/2addr v0, v3 │ │ float-to-int v0, v0 │ │ + .line 66 │ invoke-static {p1}, Landroid/graphics/Color;->green(I)I │ │ move-result v1 │ │ int-to-float v1, v1 │ │ mul-float/2addr v1, v3 │ │ float-to-int v1, v1 │ │ + .line 67 │ invoke-static {p1}, Landroid/graphics/Color;->blue(I)I │ │ move-result v2 │ │ int-to-float v2, v2 │ │ mul-float/2addr v2, v3 │ │ float-to-int v2, v2 │ │ + .line 65 │ invoke-static {v0, v1, v2}, Landroid/graphics/Color;->rgb(III)I │ │ move-result v0 │ │ return v0 │ .end method ├── smali/com/astuetz/pagerslidingtabstrip/R.smali │ @@ -7,10 +7,9 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 9 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 44 │ return-void │ .end method ├── smali/com/doomonafireball/betterpickers/R.smali │ @@ -7,10 +7,9 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 9 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 448 │ return-void │ .end method ├── smali/com/melnykov/fab/R.smali │ @@ -7,10 +7,9 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 9 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 48 │ return-void │ .end method ├── smali/com/pnikosis/materialishprogress/R.smali │ @@ -7,10 +7,9 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 9 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 732 │ return-void │ .end method ├── smali/me/relex/circleindicator/R.smali │ @@ -7,10 +7,9 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 9 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 23 │ return-void │ .end method ├── smali/org/smssecure/smssecure/ApplicationContext.smali │ @@ -53,26 +53,29 @@ │ .line 85 │ invoke-static {p0}, Lorg/whispersystems/jobqueue/JobManager;->newBuilder(Landroid/content/Context;)Lorg/whispersystems/jobqueue/JobManager$Builder; │ │ move-result-object v0 │ │ const-string v1, "SilenceJobs" │ │ + .line 86 │ invoke-virtual {v0, v1}, Lorg/whispersystems/jobqueue/JobManager$Builder;->withName(Ljava/lang/String;)Lorg/whispersystems/jobqueue/JobManager$Builder; │ │ move-result-object v0 │ │ + .line 87 │ invoke-virtual {v0, p0}, Lorg/whispersystems/jobqueue/JobManager$Builder;->withDependencyInjector(Lorg/whispersystems/jobqueue/dependencies/DependencyInjector;)Lorg/whispersystems/jobqueue/JobManager$Builder; │ │ move-result-object v0 │ │ new-instance v1, Lorg/smssecure/smssecure/jobs/persistence/EncryptingJobSerializer; │ │ invoke-direct {v1}, Lorg/smssecure/smssecure/jobs/persistence/EncryptingJobSerializer;->()V │ │ + .line 88 │ invoke-virtual {v0, v1}, Lorg/whispersystems/jobqueue/JobManager$Builder;->withJobSerializer(Lorg/whispersystems/jobqueue/persistence/JobSerializer;)Lorg/whispersystems/jobqueue/JobManager$Builder; │ │ move-result-object v0 │ │ const/4 v1, 0x4 │ │ new-array v1, v1, [Lorg/whispersystems/jobqueue/requirements/RequirementProvider; │ @@ -103,24 +106,27 @@ │ │ const/4 v2, 0x3 │ │ iget-object v3, p0, Lorg/smssecure/smssecure/ApplicationContext;->mediaNetworkRequirementProvider:Lorg/smssecure/smssecure/jobs/requirements/MediaNetworkRequirementProvider; │ │ aput-object v3, v1, v2 │ │ + .line 89 │ invoke-virtual {v0, v1}, Lorg/whispersystems/jobqueue/JobManager$Builder;->withRequirementProviders([Lorg/whispersystems/jobqueue/requirements/RequirementProvider;)Lorg/whispersystems/jobqueue/JobManager$Builder; │ │ move-result-object v0 │ │ const/4 v1, 0x5 │ │ + .line 93 │ invoke-virtual {v0, v1}, Lorg/whispersystems/jobqueue/JobManager$Builder;->withConsumerThreads(I)Lorg/whispersystems/jobqueue/JobManager$Builder; │ │ move-result-object v0 │ │ + .line 94 │ invoke-virtual {v0}, Lorg/whispersystems/jobqueue/JobManager$Builder;->build()Lorg/whispersystems/jobqueue/JobManager; │ │ move-result-object v0 │ │ iput-object v0, p0, Lorg/smssecure/smssecure/ApplicationContext;->jobManager:Lorg/whispersystems/jobqueue/JobManager; │ │ .line 95 ├── smali/org/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment.smali │ @@ -7,15 +7,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 138 │ invoke-direct {p0}, Landroid/support/v4/preference/PreferenceFragment;->()V │ │ - .line 188 │ return-void │ .end method │ │ .method private setCategorySummaries()V │ .locals 5 │ │ .prologue │ @@ -26,14 +25,15 @@ │ .line 168 │ const-string v0, "preference_category_sms_mms" │ │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference; │ │ move-result-object v0 │ │ + .line 169 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment;->getActivity()Landroid/support/v4/app/FragmentActivity; │ │ move-result-object v1 │ │ invoke-static {v1}, Lorg/smssecure/smssecure/preferences/SmsMmsPreferenceFragment;->getSummary(Landroid/content/Context;)Ljava/lang/CharSequence; │ │ move-result-object v1 │ @@ -43,14 +43,15 @@ │ .line 170 │ const-string v0, "preference_category_notifications" │ │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference; │ │ move-result-object v0 │ │ + .line 171 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment;->getActivity()Landroid/support/v4/app/FragmentActivity; │ │ move-result-object v1 │ │ invoke-static {v1}, Lorg/smssecure/smssecure/preferences/NotificationsPreferenceFragment;->getSummary(Landroid/content/Context;)Ljava/lang/CharSequence; │ │ move-result-object v1 │ @@ -60,14 +61,15 @@ │ .line 172 │ const-string v0, "preference_category_app_protection" │ │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference; │ │ move-result-object v0 │ │ + .line 173 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment;->getActivity()Landroid/support/v4/app/FragmentActivity; │ │ move-result-object v1 │ │ invoke-static {v1}, Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment;->getSummary(Landroid/content/Context;)Ljava/lang/CharSequence; │ │ move-result-object v1 │ @@ -77,14 +79,15 @@ │ .line 174 │ const-string v0, "preference_category_appearance" │ │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference; │ │ move-result-object v0 │ │ + .line 175 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment;->getActivity()Landroid/support/v4/app/FragmentActivity; │ │ move-result-object v1 │ │ invoke-static {v1}, Lorg/smssecure/smssecure/preferences/AppearancePreferenceFragment;->getSummary(Landroid/content/Context;)Ljava/lang/CharSequence; │ │ move-result-object v1 │ @@ -94,14 +97,15 @@ │ .line 176 │ const-string v0, "preference_category_chats" │ │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference; │ │ move-result-object v0 │ │ + .line 177 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment;->getActivity()Landroid/support/v4/app/FragmentActivity; │ │ move-result-object v1 │ │ invoke-static {v1}, Lorg/smssecure/smssecure/preferences/ChatsPreferenceFragment;->getSummary(Landroid/content/Context;)Ljava/lang/CharSequence; │ │ move-result-object v1 │ @@ -157,14 +161,15 @@ │ :goto_0 │ const-string v1, "preference_about" │ │ invoke-virtual {p0, v1}, Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference; │ │ move-result-object v1 │ │ + .line 185 │ invoke-virtual {v1, v0}, Landroid/preference/Preference;->setSummary(Ljava/lang/CharSequence;)V │ │ .line 186 │ return-void │ │ .line 182 │ :cond_0 │ @@ -229,14 +234,15 @@ │ │ new-instance v2, Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment$CategoryClickListener; │ │ const-string v3, "preference_category_sms_mms" │ │ invoke-direct {v2, p0, v0, v3}, Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment$CategoryClickListener;->(Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment;Lorg/smssecure/smssecure/crypto/MasterSecret;Ljava/lang/String;)V │ │ + .line 147 │ invoke-virtual {v1, v2}, Landroid/preference/Preference;->setOnPreferenceClickListener(Landroid/preference/Preference$OnPreferenceClickListener;)V │ │ .line 148 │ const-string v1, "preference_category_notifications" │ │ invoke-virtual {p0, v1}, Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference; │ │ @@ -244,14 +250,15 @@ │ │ new-instance v2, Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment$CategoryClickListener; │ │ const-string v3, "preference_category_notifications" │ │ invoke-direct {v2, p0, v0, v3}, Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment$CategoryClickListener;->(Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment;Lorg/smssecure/smssecure/crypto/MasterSecret;Ljava/lang/String;)V │ │ + .line 149 │ invoke-virtual {v1, v2}, Landroid/preference/Preference;->setOnPreferenceClickListener(Landroid/preference/Preference$OnPreferenceClickListener;)V │ │ .line 150 │ const-string v1, "preference_category_app_protection" │ │ invoke-virtual {p0, v1}, Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference; │ │ @@ -259,14 +266,15 @@ │ │ new-instance v2, Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment$CategoryClickListener; │ │ const-string v3, "preference_category_app_protection" │ │ invoke-direct {v2, p0, v0, v3}, Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment$CategoryClickListener;->(Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment;Lorg/smssecure/smssecure/crypto/MasterSecret;Ljava/lang/String;)V │ │ + .line 151 │ invoke-virtual {v1, v2}, Landroid/preference/Preference;->setOnPreferenceClickListener(Landroid/preference/Preference$OnPreferenceClickListener;)V │ │ .line 152 │ const-string v1, "preference_category_appearance" │ │ invoke-virtual {p0, v1}, Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference; │ │ @@ -274,14 +282,15 @@ │ │ new-instance v2, Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment$CategoryClickListener; │ │ const-string v3, "preference_category_appearance" │ │ invoke-direct {v2, p0, v0, v3}, Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment$CategoryClickListener;->(Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment;Lorg/smssecure/smssecure/crypto/MasterSecret;Ljava/lang/String;)V │ │ + .line 153 │ invoke-virtual {v1, v2}, Landroid/preference/Preference;->setOnPreferenceClickListener(Landroid/preference/Preference$OnPreferenceClickListener;)V │ │ .line 154 │ const-string v1, "preference_category_chats" │ │ invoke-virtual {p0, v1}, Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference; │ │ @@ -289,14 +298,15 @@ │ │ new-instance v2, Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment$CategoryClickListener; │ │ const-string v3, "preference_category_chats" │ │ invoke-direct {v2, p0, v0, v3}, Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment$CategoryClickListener;->(Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment;Lorg/smssecure/smssecure/crypto/MasterSecret;Ljava/lang/String;)V │ │ + .line 155 │ invoke-virtual {v1, v2}, Landroid/preference/Preference;->setOnPreferenceClickListener(Landroid/preference/Preference$OnPreferenceClickListener;)V │ │ .line 156 │ const-string v1, "preference_category_advanced" │ │ invoke-virtual {p0, v1}, Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference; │ │ @@ -304,14 +314,15 @@ │ │ new-instance v2, Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment$CategoryClickListener; │ │ const-string v3, "preference_category_advanced" │ │ invoke-direct {v2, p0, v0, v3}, Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment$CategoryClickListener;->(Lorg/smssecure/smssecure/ApplicationPreferencesActivity$ApplicationPreferenceFragment;Lorg/smssecure/smssecure/crypto/MasterSecret;Ljava/lang/String;)V │ │ + .line 157 │ invoke-virtual {v1, v2}, Landroid/preference/Preference;->setOnPreferenceClickListener(Landroid/preference/Preference$OnPreferenceClickListener;)V │ │ .line 158 │ return-void │ .end method │ │ .method public onResume()V ├── smali/org/smssecure/smssecure/ApplicationPreferencesActivity.smali │ @@ -66,15 +66,14 @@ │ .line 77 │ new-instance v0, Lorg/smssecure/smssecure/util/DynamicLanguage; │ │ invoke-direct {v0}, Lorg/smssecure/smssecure/util/DynamicLanguage;->()V │ │ iput-object v0, p0, Lorg/smssecure/smssecure/ApplicationPreferencesActivity;->dynamicLanguage:Lorg/smssecure/smssecure/util/DynamicLanguage; │ │ - .line 138 │ return-void │ .end method │ │ │ # virtual methods │ .method protected onActivityResult(IILandroid/content/Intent;)V │ .locals 2 ├── smali/org/smssecure/smssecure/BaseActionBarActivity.smali │ @@ -110,14 +110,15 @@ │ .line 55 │ sget v0, Landroid/os/Build$VERSION;->SDK_INT:I │ │ const/16 v1, 0xe │ │ if-lt v0, v1, :cond_0 │ │ + .line 56 │ invoke-static {p0}, Lorg/smssecure/smssecure/util/SilencePreferences;->isScreenSecurityEnabled(Landroid/content/Context;)Z │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ .line 58 │ @@ -252,14 +253,15 @@ │ │ .prologue │ .line 83 │ invoke-static {p0, p2, p3}, Landroid/support/v4/app/ActivityOptionsCompat;->makeSceneTransitionAnimation(Landroid/app/Activity;Landroid/view/View;Ljava/lang/String;)Landroid/support/v4/app/ActivityOptionsCompat; │ │ move-result-object v0 │ │ + .line 84 │ invoke-virtual {v0}, Landroid/support/v4/app/ActivityOptionsCompat;->toBundle()Landroid/os/Bundle; │ │ move-result-object v0 │ │ .line 85 │ invoke-static {p0, p1, v0}, Landroid/support/v4/app/ActivityCompat;->startActivity(Landroid/app/Activity;Landroid/content/Intent;Landroid/os/Bundle;)V ├── smali/org/smssecure/smssecure/BaseActivity.smali │ @@ -31,14 +31,15 @@ │ │ if-le v0, v1, :cond_1 │ │ const-string v0, "LGE" │ │ sget-object v1, Landroid/os/Build;->MANUFACTURER:Ljava/lang/String; │ │ + .line 28 │ invoke-virtual {v0, v1}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z │ │ move-result v0 │ │ if-nez v0, :cond_0 │ │ const-string v0, "E6710" │ @@ -50,17 +51,19 @@ │ move-result v0 │ │ if-eqz v0, :cond_1 │ │ :cond_0 │ const/4 v0, 0x1 │ │ + .line 26 │ :goto_0 │ return v0 │ │ + .line 28 │ :cond_1 │ const/4 v0, 0x0 │ │ goto :goto_0 │ .end method ├── smali/org/smssecure/smssecure/BlockedContactsActivity$BlockedContactsFragment$BlockedContactAdapter.smali │ @@ -51,13 +51,15 @@ │ │ move-result-object v0 │ │ const v1, 0x7f03001b │ │ const/4 v2, 0x0 │ │ + .line 122 │ invoke-virtual {v0, v1, p3, v2}, Landroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;Z)Landroid/view/View; │ │ move-result-object v0 │ │ + .line 121 │ return-object v0 │ .end method ├── smali/org/smssecure/smssecure/BlockedContactsActivity$BlockedContactsFragment.smali │ @@ -24,15 +24,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 62 │ invoke-direct {p0}, Landroid/support/v4/app/ListFragment;->()V │ │ - .line 113 │ return-void │ .end method │ │ │ # virtual methods │ .method public onActivityCreated(Landroid/os/Bundle;)V │ .locals 1 ├── smali/org/smssecure/smssecure/BlockedContactsActivity.smali │ @@ -27,15 +27,14 @@ │ .line 30 │ new-instance v0, Lorg/smssecure/smssecure/util/DynamicLanguage; │ │ invoke-direct {v0}, Lorg/smssecure/smssecure/util/DynamicLanguage;->()V │ │ iput-object v0, p0, Lorg/smssecure/smssecure/BlockedContactsActivity;->dynamicLanguage:Lorg/smssecure/smssecure/util/DynamicLanguage; │ │ - .line 62 │ return-void │ .end method │ │ │ # virtual methods │ .method public onCreate(Landroid/os/Bundle;Lorg/smssecure/smssecure/crypto/MasterSecret;)V │ .locals 2 ├── smali/org/smssecure/smssecure/ContactSelectionActivity.smali │ @@ -70,15 +70,14 @@ │ .line 55 │ new-instance v0, Lorg/smssecure/smssecure/util/DynamicLanguage; │ │ invoke-direct {v0}, Lorg/smssecure/smssecure/util/DynamicLanguage;->()V │ │ iput-object v0, p0, Lorg/smssecure/smssecure/ContactSelectionActivity;->dynamicLanguage:Lorg/smssecure/smssecure/util/DynamicLanguage; │ │ - .line 190 │ return-void │ .end method │ │ .method static synthetic access$000(Lorg/smssecure/smssecure/ContactSelectionActivity;)Landroid/widget/EditText; │ .locals 1 │ │ .prologue ├── smali/org/smssecure/smssecure/ContactSelectionListFragment$StickyHeaderDecoration.smali │ @@ -159,15 +159,15 @@ │ │ move-result v5 │ │ invoke-static {v5, v8}, Landroid/view/View$MeasureSpec;->makeMeasureSpec(II)I │ │ move-result v5 │ │ - .line 233 │ + .line 234 │ invoke-virtual {p1}, Landroid/support/v7/widget/RecyclerView;->getPaddingLeft()I │ │ move-result v6 │ │ invoke-virtual {p1}, Landroid/support/v7/widget/RecyclerView;->getPaddingRight()I │ │ move-result v7 │ @@ -176,19 +176,20 @@ │ │ invoke-virtual {v1}, Landroid/view/View;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams; │ │ move-result-object v7 │ │ iget v7, v7, Landroid/view/ViewGroup$LayoutParams;->width:I │ │ + .line 233 │ invoke-static {v4, v6, v7}, Landroid/view/ViewGroup;->getChildMeasureSpec(III)I │ │ move-result v4 │ │ - .line 235 │ + .line 236 │ invoke-virtual {p1}, Landroid/support/v7/widget/RecyclerView;->getPaddingTop()I │ │ move-result v6 │ │ invoke-virtual {p1}, Landroid/support/v7/widget/RecyclerView;->getPaddingBottom()I │ │ move-result v7 │ @@ -197,14 +198,15 @@ │ │ invoke-virtual {v1}, Landroid/view/View;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams; │ │ move-result-object v7 │ │ iget v7, v7, Landroid/view/ViewGroup$LayoutParams;->height:I │ │ + .line 235 │ invoke-static {v5, v6, v7}, Landroid/view/ViewGroup;->getChildMeasureSpec(III)I │ │ move-result v5 │ │ .line 238 │ invoke-virtual {v1, v4, v5}, Landroid/view/View;->measure(II)V ├── smali/org/smssecure/smssecure/ContactSelectionListFragment.smali │ @@ -73,15 +73,14 @@ │ invoke-direct {p0}, Landroid/support/v4/app/Fragment;->()V │ │ .line 68 │ const/4 v0, 0x0 │ │ iput-boolean v0, p0, Lorg/smssecure/smssecure/ContactSelectionListFragment;->multi:Z │ │ - .line 322 │ return-void │ .end method │ │ .method static synthetic access$100(Lorg/smssecure/smssecure/ContactSelectionListFragment;)Z │ .locals 1 │ │ .prologue ├── smali/org/smssecure/smssecure/ConversationActivity$1$1.smali │ @@ -70,14 +70,15 @@ │ │ move-result-object v0 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/ConversationActivity$1$1;->this$1:Lorg/smssecure/smssecure/ConversationActivity$1; │ │ iget-object v1, v1, Lorg/smssecure/smssecure/ConversationActivity$1;->this$0:Lorg/smssecure/smssecure/ConversationActivity; │ │ + .line 421 │ # getter for: Lorg/smssecure/smssecure/ConversationActivity;->recipients:Lorg/smssecure/smssecure/recipients/Recipients; │ invoke-static {v1}, Lorg/smssecure/smssecure/ConversationActivity;->access$000(Lorg/smssecure/smssecure/ConversationActivity;)Lorg/smssecure/smssecure/recipients/Recipients; │ │ move-result-object v1 │ │ iget-wide v2, p0, Lorg/smssecure/smssecure/ConversationActivity$1$1;->val$until:J ├── smali/org/smssecure/smssecure/ConversationActivity$19.smali │ @@ -131,26 +131,29 @@ │ │ move-result-object v4 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/ConversationActivity$19;->val$drafts:Lorg/smssecure/smssecure/database/DraftDatabase$Drafts; │ │ iget-object v5, p0, Lorg/smssecure/smssecure/ConversationActivity$19;->this$0:Lorg/smssecure/smssecure/ConversationActivity; │ │ + .line 1033 │ invoke-virtual {v0, v5}, Lorg/smssecure/smssecure/database/DraftDatabase$Drafts;->getUriSnippet(Landroid/content/Context;)Landroid/net/Uri; │ │ move-result-object v5 │ │ + .line 1034 │ invoke-static {}, Ljava/lang/System;->currentTimeMillis()J │ │ move-result-wide v6 │ │ const-wide/16 v8, 0x1b │ │ const/4 v10, 0x1 │ │ + .line 1032 │ invoke-virtual/range {v1 .. v10}, Lorg/smssecure/smssecure/database/ThreadDatabase;->updateSnippet(JLjava/lang/String;Landroid/net/Uri;JJZ)V │ │ .line 1039 │ :cond_1 │ :goto_0 │ invoke-static {v2, v3}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; ├── smali/org/smssecure/smssecure/ConversationActivity$1.smali │ @@ -50,12 +50,13 @@ │ │ invoke-direct {v0, p0, p1, p2}, Lorg/smssecure/smssecure/ConversationActivity$1$1;->(Lorg/smssecure/smssecure/ConversationActivity$1;J)V │ │ const/4 v1, 0x0 │ │ new-array v1, v1, [Ljava/lang/Void; │ │ + .line 425 │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/ConversationActivity$1$1;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 426 │ return-void │ .end method ├── smali/org/smssecure/smssecure/ConversationActivity$23.smali │ @@ -66,14 +66,15 @@ │ │ invoke-static {v0}, Lorg/smssecure/smssecure/database/DatabaseFactory;->getRecipientPreferenceDatabase(Landroid/content/Context;)Lorg/smssecure/smssecure/database/RecipientPreferenceDatabase; │ │ move-result-object v1 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/ConversationActivity$23;->this$0:Lorg/smssecure/smssecure/ConversationActivity; │ │ + .line 1273 │ # getter for: Lorg/smssecure/smssecure/ConversationActivity;->recipients:Lorg/smssecure/smssecure/recipients/Recipients; │ invoke-static {v0}, Lorg/smssecure/smssecure/ConversationActivity;->access$000(Lorg/smssecure/smssecure/ConversationActivity;)Lorg/smssecure/smssecure/recipients/Recipients; │ │ move-result-object v2 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/ConversationActivity$23;->val$subscriptionId:Lorg/whispersystems/libaxolotl/util/guava/Optional; ├── smali/org/smssecure/smssecure/ConversationActivity$2.smali │ @@ -62,14 +62,15 @@ │ │ invoke-static {v0}, Lorg/smssecure/smssecure/database/DatabaseFactory;->getRecipientPreferenceDatabase(Landroid/content/Context;)Lorg/smssecure/smssecure/database/RecipientPreferenceDatabase; │ │ move-result-object v0 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/ConversationActivity$2;->this$0:Lorg/smssecure/smssecure/ConversationActivity; │ │ + .line 441 │ # getter for: Lorg/smssecure/smssecure/ConversationActivity;->recipients:Lorg/smssecure/smssecure/recipients/Recipients; │ invoke-static {v1}, Lorg/smssecure/smssecure/ConversationActivity;->access$000(Lorg/smssecure/smssecure/ConversationActivity;)Lorg/smssecure/smssecure/recipients/Recipients; │ │ move-result-object v1 │ │ const-wide/16 v2, 0x0 ├── smali/org/smssecure/smssecure/ConversationActivity$3$1.smali │ @@ -66,14 +66,15 @@ │ │ move-result-object v0 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/ConversationActivity$3$1;->this$1:Lorg/smssecure/smssecure/ConversationActivity$3; │ │ iget-object v1, v1, Lorg/smssecure/smssecure/ConversationActivity$3;->this$0:Lorg/smssecure/smssecure/ConversationActivity; │ │ + .line 462 │ # getter for: Lorg/smssecure/smssecure/ConversationActivity;->recipients:Lorg/smssecure/smssecure/recipients/Recipients; │ invoke-static {v1}, Lorg/smssecure/smssecure/ConversationActivity;->access$000(Lorg/smssecure/smssecure/ConversationActivity;)Lorg/smssecure/smssecure/recipients/Recipients; │ │ move-result-object v1 │ │ const/4 v2, 0x0 ├── smali/org/smssecure/smssecure/ConversationActivity$3.smali │ @@ -50,12 +50,13 @@ │ .line 458 │ new-instance v0, Lorg/smssecure/smssecure/ConversationActivity$3$1; │ │ invoke-direct {v0, p0}, Lorg/smssecure/smssecure/ConversationActivity$3$1;->(Lorg/smssecure/smssecure/ConversationActivity$3;)V │ │ new-array v1, v1, [Ljava/lang/Void; │ │ + .line 465 │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/ConversationActivity$3$1;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 466 │ return-void │ .end method ├── smali/org/smssecure/smssecure/ConversationActivity$5.smali │ @@ -64,14 +64,15 @@ │ .line 537 │ new-instance v1, Lorg/smssecure/smssecure/sms/OutgoingEndSessionMessage; │ │ new-instance v2, Lorg/smssecure/smssecure/sms/OutgoingTextMessage; │ │ iget-object v3, p0, Lorg/smssecure/smssecure/ConversationActivity$5;->this$0:Lorg/smssecure/smssecure/ConversationActivity; │ │ + .line 538 │ invoke-virtual {v3}, Lorg/smssecure/smssecure/ConversationActivity;->getRecipients()Lorg/smssecure/smssecure/recipients/Recipients; │ │ move-result-object v3 │ │ const-string v4, "TERMINATE" │ │ const/4 v5, -0x1 │ @@ -89,13 +90,14 @@ │ │ new-array v0, v0, [Lorg/smssecure/smssecure/sms/OutgoingEndSessionMessage; │ │ const/4 v3, 0x0 │ │ aput-object v1, v0, v3 │ │ + .line 550 │ invoke-virtual {v2, v0}, Lorg/smssecure/smssecure/ConversationActivity$5$1;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 552 │ :cond_0 │ return-void │ .end method ├── smali/org/smssecure/smssecure/ConversationActivity$6.smali │ @@ -62,14 +62,15 @@ │ │ invoke-static {v0}, Lorg/smssecure/smssecure/database/DatabaseFactory;->getThreadDatabase(Landroid/content/Context;)Lorg/smssecure/smssecure/database/ThreadDatabase; │ │ move-result-object v0 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/ConversationActivity$6;->this$0:Lorg/smssecure/smssecure/ConversationActivity; │ │ + .line 574 │ # getter for: Lorg/smssecure/smssecure/ConversationActivity;->threadId:J │ invoke-static {v1}, Lorg/smssecure/smssecure/ConversationActivity;->access$300(Lorg/smssecure/smssecure/ConversationActivity;)J │ │ move-result-wide v2 │ │ const/4 v1, 0x1 ├── smali/org/smssecure/smssecure/ConversationActivity$7.smali │ @@ -62,14 +62,15 @@ │ │ invoke-static {v0}, Lorg/smssecure/smssecure/database/DatabaseFactory;->getThreadDatabase(Landroid/content/Context;)Lorg/smssecure/smssecure/database/ThreadDatabase; │ │ move-result-object v0 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/ConversationActivity$7;->this$0:Lorg/smssecure/smssecure/ConversationActivity; │ │ + .line 590 │ # getter for: Lorg/smssecure/smssecure/ConversationActivity;->threadId:J │ invoke-static {v1}, Lorg/smssecure/smssecure/ConversationActivity;->access$300(Lorg/smssecure/smssecure/ConversationActivity;)J │ │ move-result-wide v2 │ │ const/4 v1, 0x2 ├── smali/org/smssecure/smssecure/ConversationActivity$RecipientPreferencesTask.smali │ @@ -93,14 +93,15 @@ │ │ invoke-static {v0}, Lorg/smssecure/smssecure/database/DatabaseFactory;->getRecipientPreferenceDatabase(Landroid/content/Context;)Lorg/smssecure/smssecure/database/RecipientPreferenceDatabase; │ │ move-result-object v0 │ │ aget-object v1, p1, v2 │ │ + .line 1396 │ invoke-virtual {v1}, Lorg/smssecure/smssecure/recipients/Recipients;->getIds()[J │ │ move-result-object v1 │ │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/database/RecipientPreferenceDatabase;->getRecipientsPreferences([J)Lorg/whispersystems/libaxolotl/util/guava/Optional; │ │ move-result-object v0 ├── smali/org/smssecure/smssecure/ConversationAdapter.smali │ @@ -83,14 +83,15 @@ │ .line 68 │ new-instance v0, Lorg/smssecure/smssecure/util/LRUCache; │ │ const/16 v1, 0x28 │ │ invoke-direct {v0, v1}, Lorg/smssecure/smssecure/util/LRUCache;->(I)V │ │ + .line 69 │ invoke-static {v0}, Ljava/util/Collections;->synchronizedMap(Ljava/util/Map;)Ljava/util/Map; │ │ move-result-object v0 │ │ iput-object v0, p0, Lorg/smssecure/smssecure/ConversationAdapter;->messageRecordCache:Ljava/util/Map; │ │ .line 75 │ @@ -173,14 +174,15 @@ │ .line 68 │ new-instance v0, Lorg/smssecure/smssecure/util/LRUCache; │ │ const/16 v1, 0x28 │ │ invoke-direct {v0, v1}, Lorg/smssecure/smssecure/util/LRUCache;->(I)V │ │ + .line 69 │ invoke-static {v0}, Ljava/util/Collections;->synchronizedMap(Ljava/util/Map;)Ljava/util/Map; │ │ move-result-object v0 │ │ iput-object v0, p0, Lorg/smssecure/smssecure/ConversationAdapter;->messageRecordCache:Ljava/util/Map; │ │ .line 75 ├── smali/org/smssecure/smssecure/ConversationActivity.smali │ @@ -132,15 +132,14 @@ │ .line 189 │ new-instance v0, Lorg/smssecure/smssecure/util/DynamicLanguage; │ │ invoke-direct {v0}, Lorg/smssecure/smssecure/util/DynamicLanguage;->()V │ │ iput-object v0, p0, Lorg/smssecure/smssecure/ConversationActivity;->dynamicLanguage:Lorg/smssecure/smssecure/util/DynamicLanguage; │ │ - .line 1388 │ return-void │ .end method │ │ .method static synthetic access$000(Lorg/smssecure/smssecure/ConversationActivity;)Lorg/smssecure/smssecure/recipients/Recipients; │ .locals 1 │ │ .prologue │ @@ -889,20 +888,22 @@ │ │ .line 1127 │ :cond_0 │ iget-boolean v1, p0, Lorg/smssecure/smssecure/ConversationActivity;->isEncryptedConversation:Z │ │ if-nez v1, :cond_1 │ │ + .line 1128 │ invoke-static {v0}, Lorg/smssecure/smssecure/protocol/AutoInitiate;->isTaggableMessage(Ljava/lang/String;)Z │ │ move-result v1 │ │ if-eqz v1, :cond_1 │ │ + .line 1129 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/ConversationActivity;->getRecipients()Lorg/smssecure/smssecure/recipients/Recipients; │ │ move-result-object v1 │ │ invoke-static {v1}, Lorg/smssecure/smssecure/protocol/AutoInitiate;->isTaggableDestination(Lorg/smssecure/smssecure/recipients/Recipients;)Z │ │ move-result v1 │ @@ -993,14 +994,15 @@ │ │ invoke-direct {v2, p0, v3}, Lorg/smssecure/smssecure/ConversationActivity$AttachmentTypeListener;->(Lorg/smssecure/smssecure/ConversationActivity;Lorg/smssecure/smssecure/ConversationActivity$1;)V │ │ invoke-virtual {v0, v1, v2}, Landroid/support/v7/app/AlertDialog$Builder;->setAdapter(Landroid/widget/ListAdapter;Landroid/content/DialogInterface$OnClickListener;)Landroid/support/v7/app/AlertDialog$Builder; │ │ move-result-object v0 │ │ + .line 662 │ invoke-virtual {v0}, Landroid/support/v7/app/AlertDialog$Builder;->show()Landroid/support/v7/app/AlertDialog; │ │ .line 666 │ :goto_0 │ return-void │ │ .line 664 │ @@ -1215,14 +1217,15 @@ │ │ const-string v3, "tel:" │ │ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v2 │ │ + .line 602 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/recipients/Recipient;->getNumber()Ljava/lang/String; │ │ move-result-object v3 │ │ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v2 │ @@ -1252,24 +1255,27 @@ │ sget-object v1, Lorg/smssecure/smssecure/ConversationActivity;->TAG:Ljava/lang/String; │ │ invoke-static {v1, v0}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/Throwable;)I │ │ .line 606 │ const v0, 0x7f08002f │ │ + .line 607 │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/ConversationActivity;->getString(I)Ljava/lang/String; │ │ move-result-object v0 │ │ const v1, 0x7f08003a │ │ + .line 608 │ invoke-virtual {p0, v1}, Lorg/smssecure/smssecure/ConversationActivity;->getString(I)Ljava/lang/String; │ │ move-result-object v1 │ │ + .line 606 │ invoke-static {p0, v0, v1}, Lorg/smssecure/smssecure/util/Dialogs;->showAlertDialog(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)V │ │ goto :goto_0 │ .end method │ │ .method private handleDisplayGroupRecipients()V │ .locals 2 │ @@ -1316,14 +1322,15 @@ │ │ invoke-direct {v0, p0}, Lorg/smssecure/smssecure/ConversationActivity$6;->(Lorg/smssecure/smssecure/ConversationActivity;)V │ │ const/4 v1, 0x0 │ │ new-array v1, v1, [Ljava/lang/Void; │ │ + .line 577 │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/ConversationActivity$6;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 579 │ :cond_0 │ return-void │ .end method │ │ @@ -1355,14 +1362,15 @@ │ │ invoke-direct {v0, p0}, Lorg/smssecure/smssecure/ConversationActivity$7;->(Lorg/smssecure/smssecure/ConversationActivity;)V │ │ const/4 v1, 0x0 │ │ new-array v1, v1, [Ljava/lang/Void; │ │ + .line 593 │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/ConversationActivity$7;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 595 │ :cond_0 │ return-void │ .end method │ │ @@ -1507,14 +1515,15 @@ │ │ move-result-object v0 │ │ invoke-static {p0, v0, v5}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast; │ │ move-result-object v0 │ │ + .line 483 │ invoke-virtual {v0}, Landroid/widget/Toast;->show()V │ │ .line 523 │ :goto_0 │ return-void │ │ .line 487 │ @@ -1542,14 +1551,15 @@ │ │ move-result-object v0 │ │ invoke-static {p0, v0, v5}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast; │ │ move-result-object v0 │ │ + .line 489 │ invoke-virtual {v0}, Landroid/widget/Toast;->show()V │ │ goto :goto_0 │ │ .line 493 │ :cond_1 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/ConversationActivity;->getRecipients()Lorg/smssecure/smssecure/recipients/Recipients; │ @@ -1674,42 +1684,47 @@ │ .line 449 │ new-instance v0, Landroid/support/v7/app/AlertDialog$Builder; │ │ invoke-direct {v0, p0}, Landroid/support/v7/app/AlertDialog$Builder;->(Landroid/content/Context;)V │ │ const v1, 0x7f080183 │ │ + .line 450 │ invoke-virtual {v0, v1}, Landroid/support/v7/app/AlertDialog$Builder;->setTitle(I)Landroid/support/v7/app/AlertDialog$Builder; │ │ move-result-object v0 │ │ const v1, 0x7f08017d │ │ + .line 451 │ invoke-virtual {v0, v1}, Landroid/support/v7/app/AlertDialog$Builder;->setMessage(I)Landroid/support/v7/app/AlertDialog$Builder; │ │ move-result-object v0 │ │ const/high16 v1, 0x1040000 │ │ const/4 v2, 0x0 │ │ + .line 452 │ invoke-virtual {v0, v1, v2}, Landroid/support/v7/app/AlertDialog$Builder;->setNegativeButton(ILandroid/content/DialogInterface$OnClickListener;)Landroid/support/v7/app/AlertDialog$Builder; │ │ move-result-object v0 │ │ const v1, 0x7f080182 │ │ new-instance v2, Lorg/smssecure/smssecure/ConversationActivity$3; │ │ invoke-direct {v2, p0}, Lorg/smssecure/smssecure/ConversationActivity$3;->(Lorg/smssecure/smssecure/ConversationActivity;)V │ │ + .line 453 │ invoke-virtual {v0, v1, v2}, Landroid/support/v7/app/AlertDialog$Builder;->setPositiveButton(ILandroid/content/DialogInterface$OnClickListener;)Landroid/support/v7/app/AlertDialog$Builder; │ │ move-result-object v0 │ │ + .line 467 │ invoke-virtual {v0}, Landroid/support/v7/app/AlertDialog$Builder;->show()Landroid/support/v7/app/AlertDialog; │ │ .line 468 │ return-void │ .end method │ │ .method private handleUnmuteNotifications()V │ @@ -1728,14 +1743,15 @@ │ │ invoke-direct {v0, p0}, Lorg/smssecure/smssecure/ConversationActivity$2;->(Lorg/smssecure/smssecure/ConversationActivity;)V │ │ const/4 v1, 0x0 │ │ new-array v1, v1, [Ljava/lang/Void; │ │ + .line 445 │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/ConversationActivity$2;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 446 │ return-void │ .end method │ │ .method private handleVerifyIdentity()V │ @@ -1896,14 +1912,15 @@ │ │ invoke-direct {v0, p0}, Lorg/smssecure/smssecure/ConversationActivity$9;->(Lorg/smssecure/smssecure/ConversationActivity;)V │ │ const/4 v1, 0x0 │ │ new-array v1, v1, [Ljava/lang/Void; │ │ + .line 728 │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/ConversationActivity$9;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 729 │ return-void │ .end method │ │ .method private initializeEnabledCheck()V │ @@ -1956,14 +1973,15 @@ │ │ invoke-direct {v0, p0}, Lorg/smssecure/smssecure/ConversationActivity$10;->(Lorg/smssecure/smssecure/ConversationActivity;)V │ │ const/4 v1, 0x0 │ │ new-array v1, v1, [Ljava/lang/Void; │ │ + .line 781 │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/ConversationActivity$10;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 782 │ return-void │ .end method │ │ .method private initializeReceivers()V │ @@ -2699,14 +2717,15 @@ │ .line 1105 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/ConversationActivity;->getRecipients()Lorg/smssecure/smssecure/recipients/Recipients; │ │ move-result-object v0 │ │ if-eqz v0, :cond_1 │ │ + .line 1106 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/ConversationActivity;->getRecipients()Lorg/smssecure/smssecure/recipients/Recipients; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Lorg/smssecure/smssecure/recipients/Recipients;->isSingleRecipient()Z │ │ move-result v0 │ @@ -2722,17 +2741,19 @@ │ move-result v0 │ │ if-eqz v0, :cond_1 │ │ :cond_0 │ const/4 v0, 0x1 │ │ + .line 1105 │ :goto_0 │ return v0 │ │ + .line 1106 │ :cond_1 │ const/4 v0, 0x0 │ │ goto :goto_0 │ .end method │ │ .method private isPushGroupConversation()Z │ @@ -2822,14 +2843,15 @@ │ │ new-array v1, v1, [Ljava/lang/Long; │ │ const/4 v2, 0x0 │ │ iget-wide v4, p0, Lorg/smssecure/smssecure/ConversationActivity;->threadId:J │ │ + .line 1148 │ invoke-static {v4, v5}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; │ │ move-result-object v3 │ │ aput-object v3, v1, v2 │ │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/ConversationActivity$20;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ @@ -2856,14 +2878,15 @@ │ │ invoke-direct {v0, p0, p1}, Lorg/smssecure/smssecure/ConversationActivity$23;->(Lorg/smssecure/smssecure/ConversationActivity;Lorg/whispersystems/libaxolotl/util/guava/Optional;)V │ │ const/4 v1, 0x0 │ │ new-array v1, v1, [Ljava/lang/Void; │ │ + .line 1276 │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/ConversationActivity$23;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 1277 │ return-void │ .end method │ │ .method private selectContactInfo(Lorg/smssecure/smssecure/contacts/ContactAccessor$ContactData;)V │ @@ -3014,22 +3037,25 @@ │ .line 1206 │ new-instance v0, Lorg/smssecure/smssecure/mms/OutgoingMediaMessage; │ │ iget-object v1, p0, Lorg/smssecure/smssecure/ConversationActivity;->recipients:Lorg/smssecure/smssecure/recipients/Recipients; │ │ iget-object v2, p0, Lorg/smssecure/smssecure/ConversationActivity;->attachmentManager:Lorg/smssecure/smssecure/mms/AttachmentManager; │ │ + .line 1207 │ invoke-virtual {v2}, Lorg/smssecure/smssecure/mms/AttachmentManager;->buildSlideDeck()Lorg/smssecure/smssecure/mms/SlideDeck; │ │ move-result-object v2 │ │ + .line 1208 │ invoke-direct {p0}, Lorg/smssecure/smssecure/ConversationActivity;->getMessage()Ljava/lang/String; │ │ move-result-object v3 │ │ + .line 1209 │ invoke-static {}, Ljava/lang/System;->currentTimeMillis()J │ │ move-result-wide v4 │ │ iget v7, p0, Lorg/smssecure/smssecure/ConversationActivity;->distributionType:I │ │ move v6, p2 │ @@ -3072,14 +3098,15 @@ │ │ new-array v2, v2, [Lorg/smssecure/smssecure/mms/OutgoingMediaMessage; │ │ const/4 v3, 0x0 │ │ aput-object v0, v2, v3 │ │ + .line 1230 │ invoke-virtual {v1, v2}, Lorg/smssecure/smssecure/ConversationActivity$21;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 1231 │ return-void │ .end method │ │ .method private sendMessage()V │ @@ -3206,14 +3233,15 @@ │ │ const/4 v2, 0x1 │ │ invoke-static {p0, v1, v2}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast; │ │ move-result-object v1 │ │ + .line 1193 │ invoke-virtual {v1}, Landroid/widget/Toast;->show()V │ │ .line 1194 │ sget-object v1, Lorg/smssecure/smssecure/ConversationActivity;->TAG:Ljava/lang/String; │ │ invoke-static {v1, v0}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/Throwable;)I │ │ @@ -3258,14 +3286,15 @@ │ │ const/4 v2, 0x0 │ │ invoke-static {p0, v1, v2}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast; │ │ move-result-object v1 │ │ + .line 1197 │ invoke-virtual {v1}, Landroid/widget/Toast;->show()V │ │ .line 1198 │ sget-object v1, Lorg/smssecure/smssecure/ConversationActivity;->TAG:Ljava/lang/String; │ │ invoke-static {v1, v0}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/Throwable;)I │ │ @@ -3365,14 +3394,15 @@ │ │ new-array v1, v1, [Lorg/smssecure/smssecure/sms/OutgoingTextMessage; │ │ const/4 v3, 0x0 │ │ aput-object v0, v1, v3 │ │ + .line 1257 │ invoke-virtual {v2, v1}, Lorg/smssecure/smssecure/ConversationActivity$22;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 1258 │ return-void │ │ .line 1242 │ :cond_0 │ @@ -3573,14 +3603,15 @@ │ │ move-result-object v0 │ │ if-eqz v0, :cond_0 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/ConversationActivity;->recipients:Lorg/smssecure/smssecure/recipients/Recipients; │ │ + .line 759 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/recipients/Recipients;->getPrimaryRecipient()Lorg/smssecure/smssecure/recipients/Recipient; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Lorg/smssecure/smssecure/recipients/Recipient;->getContactUri()Landroid/net/Uri; │ │ move-result-object v0 │ @@ -4083,18 +4114,20 @@ │ │ new-instance v1, Lorg/smssecure/smssecure/ConversationFragment; │ │ invoke-direct {v1}, Lorg/smssecure/smssecure/ConversationFragment;->()V │ │ iget-object v2, p0, Lorg/smssecure/smssecure/ConversationActivity;->dynamicLanguage:Lorg/smssecure/smssecure/util/DynamicLanguage; │ │ + .line 206 │ invoke-virtual {v2}, Lorg/smssecure/smssecure/util/DynamicLanguage;->getCurrentLocale()Ljava/util/Locale; │ │ move-result-object v2 │ │ + .line 205 │ invoke-virtual {p0, v0, v1, p2, v2}, Lorg/smssecure/smssecure/ConversationActivity;->initFragment(ILandroid/support/v4/app/Fragment;Lorg/smssecure/smssecure/crypto/MasterSecret;Ljava/util/Locale;)Landroid/support/v4/app/Fragment; │ │ move-result-object v0 │ │ check-cast v0, Lorg/smssecure/smssecure/ConversationFragment; │ │ iput-object v0, p0, Lorg/smssecure/smssecure/ConversationActivity;->fragment:Lorg/smssecure/smssecure/ConversationFragment; │ @@ -4619,14 +4652,15 @@ │ │ invoke-interface {p1, v0}, Landroid/view/Menu;->findItem(I)Landroid/view/MenuItem; │ │ move-result-object v0 │ │ const v1, 0x7f080216 │ │ + .line 358 │ invoke-interface {v0, v1}, Landroid/view/MenuItem;->setTitle(I)Landroid/view/MenuItem; │ │ .line 360 │ :cond_3 │ invoke-super {p0, p1}, Lorg/smssecure/smssecure/PassphraseRequiredActionBarActivity;->onPrepareOptionsMenu(Landroid/view/Menu;)Z │ │ .line 361 │ @@ -4857,14 +4891,15 @@ │ │ const/4 v1, 0x1 │ │ new-array v1, v1, [Ljava/lang/Long; │ │ const/4 v2, 0x0 │ │ + .line 1047 │ invoke-static {v6, v7}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; │ │ move-result-object v3 │ │ aput-object v3, v1, v2 │ │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/ConversationActivity$19;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; ├── smali/org/smssecure/smssecure/ConversationFragment$4.smali │ @@ -54,14 +54,15 @@ │ │ invoke-direct {v0, p0, v1, v2, v3}, Lorg/smssecure/smssecure/ConversationFragment$4$1;->(Lorg/smssecure/smssecure/ConversationFragment$4;Landroid/content/Context;II)V │ │ iget-object v1, p0, Lorg/smssecure/smssecure/ConversationFragment$4;->val$messageRecords:Ljava/util/Set; │ │ iget-object v2, p0, Lorg/smssecure/smssecure/ConversationFragment$4;->val$messageRecords:Ljava/util/Set; │ │ + .line 296 │ invoke-interface {v2}, Ljava/util/Set;->size()I │ │ move-result v2 │ │ new-array v2, v2, [Lorg/smssecure/smssecure/database/model/MessageRecord; │ │ invoke-interface {v1, v2}, Ljava/util/Set;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; ├── smali/org/smssecure/smssecure/ConversationFragment$6.smali │ @@ -154,25 +154,28 @@ │ │ invoke-virtual {v0}, Lorg/smssecure/smssecure/ConversationFragment;->getActivity()Landroid/support/v4/app/FragmentActivity; │ │ move-result-object v0 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/ConversationFragment$6;->this$0:Lorg/smssecure/smssecure/ConversationFragment; │ │ + .line 352 │ invoke-virtual {v1}, Lorg/smssecure/smssecure/ConversationFragment;->getResources()Landroid/content/res/Resources; │ │ move-result-object v1 │ │ const v2, 0x7f090006 │ │ invoke-virtual {v1, v2, v4}, Landroid/content/res/Resources;->getQuantityString(II)Ljava/lang/String; │ │ move-result-object v1 │ │ + .line 351 │ invoke-static {v0, v1, v4}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast; │ │ move-result-object v0 │ │ + .line 353 │ invoke-virtual {v0}, Landroid/widget/Toast;->show()V │ │ goto :goto_0 │ .end method ├── smali/org/smssecure/smssecure/ConversationItem$3.smali │ @@ -126,22 +126,24 @@ │ │ move-result-object v0 │ │ invoke-static {v0}, Lorg/smssecure/smssecure/ApplicationContext;->getInstance(Landroid/content/Context;)Lorg/smssecure/smssecure/ApplicationContext; │ │ move-result-object v0 │ │ + .line 645 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/ApplicationContext;->getJobManager()Lorg/whispersystems/jobqueue/JobManager; │ │ move-result-object v0 │ │ new-instance v1, Lorg/smssecure/smssecure/jobs/MmsSendJob; │ │ iget-object v2, p0, Lorg/smssecure/smssecure/ConversationItem$3;->this$0:Lorg/smssecure/smssecure/ConversationItem; │ │ + .line 646 │ # getter for: Lorg/smssecure/smssecure/ConversationItem;->context:Landroid/content/Context; │ invoke-static {v2}, Lorg/smssecure/smssecure/ConversationItem;->access$500(Lorg/smssecure/smssecure/ConversationItem;)Landroid/content/Context; │ │ move-result-object v2 │ │ iget-object v3, p0, Lorg/smssecure/smssecure/ConversationItem$3;->this$0:Lorg/smssecure/smssecure/ConversationItem; │ │ @@ -240,22 +242,24 @@ │ │ move-result-object v0 │ │ invoke-static {v0}, Lorg/smssecure/smssecure/ApplicationContext;->getInstance(Landroid/content/Context;)Lorg/smssecure/smssecure/ApplicationContext; │ │ move-result-object v0 │ │ + .line 656 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/ApplicationContext;->getJobManager()Lorg/whispersystems/jobqueue/JobManager; │ │ move-result-object v0 │ │ new-instance v1, Lorg/smssecure/smssecure/jobs/SmsSendJob; │ │ iget-object v2, p0, Lorg/smssecure/smssecure/ConversationItem$3;->this$0:Lorg/smssecure/smssecure/ConversationItem; │ │ + .line 657 │ # getter for: Lorg/smssecure/smssecure/ConversationItem;->context:Landroid/content/Context; │ invoke-static {v2}, Lorg/smssecure/smssecure/ConversationItem;->access$500(Lorg/smssecure/smssecure/ConversationItem;)Landroid/content/Context; │ │ move-result-object v2 │ │ iget-object v3, p0, Lorg/smssecure/smssecure/ConversationItem$3;->this$0:Lorg/smssecure/smssecure/ConversationItem; │ │ @@ -266,14 +270,15 @@ │ │ invoke-virtual {v3}, Lorg/smssecure/smssecure/database/model/MessageRecord;->getId()J │ │ move-result-wide v4 │ │ iget-object v3, p0, Lorg/smssecure/smssecure/ConversationItem$3;->this$0:Lorg/smssecure/smssecure/ConversationItem; │ │ + .line 658 │ # getter for: Lorg/smssecure/smssecure/ConversationItem;->messageRecord:Lorg/smssecure/smssecure/database/model/MessageRecord; │ invoke-static {v3}, Lorg/smssecure/smssecure/ConversationItem;->access$700(Lorg/smssecure/smssecure/ConversationItem;)Lorg/smssecure/smssecure/database/model/MessageRecord; │ │ move-result-object v3 │ │ invoke-virtual {v3}, Lorg/smssecure/smssecure/database/model/MessageRecord;->getIndividualRecipient()Lorg/smssecure/smssecure/recipients/Recipient; │ │ @@ -281,11 +286,12 @@ │ │ invoke-virtual {v3}, Lorg/smssecure/smssecure/recipients/Recipient;->getNumber()Ljava/lang/String; │ │ move-result-object v3 │ │ invoke-direct {v1, v2, v4, v5, v3}, Lorg/smssecure/smssecure/jobs/SmsSendJob;->(Landroid/content/Context;JLjava/lang/String;)V │ │ + .line 657 │ invoke-virtual {v0, v1}, Lorg/whispersystems/jobqueue/JobManager;->add(Lorg/whispersystems/jobqueue/Job;)V │ │ goto :goto_0 │ .end method ├── smali/org/smssecure/smssecure/ConversationItem$AttachmentDownloadClickListener.smali │ @@ -58,18 +58,20 @@ │ │ move-result-object v1 │ │ invoke-virtual {v1}, Lorg/smssecure/smssecure/database/model/MessageRecord;->getId()J │ │ move-result-wide v2 │ │ + .line 496 │ invoke-virtual {p2}, Lorg/smssecure/smssecure/mms/Slide;->asAttachment()Lorg/smssecure/smssecure/attachments/Attachment; │ │ move-result-object v1 │ │ const/4 v4, 0x1 │ │ + .line 495 │ invoke-virtual {v0, v2, v3, v1, v4}, Lorg/smssecure/smssecure/database/AttachmentDatabase;->setTransferState(JLorg/smssecure/smssecure/attachments/Attachment;I)V │ │ .line 498 │ return-void │ .end method ├── smali/org/smssecure/smssecure/ConversationItem$ClickListener.smali │ @@ -207,40 +207,43 @@ │ │ move-result v0 │ │ if-eqz v0, :cond_4 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/ConversationItem$ClickListener;->this$0:Lorg/smssecure/smssecure/ConversationItem; │ │ + .line 601 │ # getter for: Lorg/smssecure/smssecure/ConversationItem;->messageRecord:Lorg/smssecure/smssecure/database/model/MessageRecord; │ invoke-static {v0}, Lorg/smssecure/smssecure/ConversationItem;->access$700(Lorg/smssecure/smssecure/ConversationItem;)Lorg/smssecure/smssecure/database/model/MessageRecord; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Lorg/smssecure/smssecure/database/model/MessageRecord;->isOutgoing()Z │ │ move-result v0 │ │ if-nez v0, :cond_4 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/ConversationItem$ClickListener;->this$0:Lorg/smssecure/smssecure/ConversationItem; │ │ + .line 602 │ # getter for: Lorg/smssecure/smssecure/ConversationItem;->messageRecord:Lorg/smssecure/smssecure/database/model/MessageRecord; │ invoke-static {v0}, Lorg/smssecure/smssecure/ConversationItem;->access$700(Lorg/smssecure/smssecure/ConversationItem;)Lorg/smssecure/smssecure/database/model/MessageRecord; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Lorg/smssecure/smssecure/database/model/MessageRecord;->isProcessedKeyExchange()Z │ │ move-result v0 │ │ if-nez v0, :cond_4 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/ConversationItem$ClickListener;->this$0:Lorg/smssecure/smssecure/ConversationItem; │ │ + .line 603 │ # getter for: Lorg/smssecure/smssecure/ConversationItem;->messageRecord:Lorg/smssecure/smssecure/database/model/MessageRecord; │ invoke-static {v0}, Lorg/smssecure/smssecure/ConversationItem;->access$700(Lorg/smssecure/smssecure/ConversationItem;)Lorg/smssecure/smssecure/database/model/MessageRecord; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Lorg/smssecure/smssecure/database/model/MessageRecord;->isStaleKeyExchange()Z ├── smali/org/smssecure/smssecure/ConversationItem$MmsDownloadClickListener.smali │ @@ -115,22 +115,24 @@ │ │ move-result-object v0 │ │ invoke-static {v0}, Lorg/smssecure/smssecure/ApplicationContext;->getInstance(Landroid/content/Context;)Lorg/smssecure/smssecure/ApplicationContext; │ │ move-result-object v0 │ │ + .line 553 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/ApplicationContext;->getJobManager()Lorg/whispersystems/jobqueue/JobManager; │ │ move-result-object v7 │ │ new-instance v0, Lorg/smssecure/smssecure/jobs/MmsDownloadJob; │ │ iget-object v1, p0, Lorg/smssecure/smssecure/ConversationItem$MmsDownloadClickListener;->this$0:Lorg/smssecure/smssecure/ConversationItem; │ │ + .line 554 │ # getter for: Lorg/smssecure/smssecure/ConversationItem;->context:Landroid/content/Context; │ invoke-static {v1}, Lorg/smssecure/smssecure/ConversationItem;->access$500(Lorg/smssecure/smssecure/ConversationItem;)Landroid/content/Context; │ │ move-result-object v1 │ │ iget-object v2, p0, Lorg/smssecure/smssecure/ConversationItem$MmsDownloadClickListener;->this$0:Lorg/smssecure/smssecure/ConversationItem; │ │ @@ -141,23 +143,25 @@ │ │ invoke-virtual {v2}, Lorg/smssecure/smssecure/database/model/MessageRecord;->getId()J │ │ move-result-wide v2 │ │ iget-object v4, p0, Lorg/smssecure/smssecure/ConversationItem$MmsDownloadClickListener;->this$0:Lorg/smssecure/smssecure/ConversationItem; │ │ + .line 555 │ # getter for: Lorg/smssecure/smssecure/ConversationItem;->messageRecord:Lorg/smssecure/smssecure/database/model/MessageRecord; │ invoke-static {v4}, Lorg/smssecure/smssecure/ConversationItem;->access$700(Lorg/smssecure/smssecure/ConversationItem;)Lorg/smssecure/smssecure/database/model/MessageRecord; │ │ move-result-object v4 │ │ invoke-virtual {v4}, Lorg/smssecure/smssecure/database/model/MessageRecord;->getThreadId()J │ │ move-result-wide v4 │ │ invoke-direct/range {v0 .. v6}, Lorg/smssecure/smssecure/jobs/MmsDownloadJob;->(Landroid/content/Context;JJZ)V │ │ + .line 554 │ invoke-virtual {v7, v0}, Lorg/whispersystems/jobqueue/JobManager;->add(Lorg/whispersystems/jobqueue/Job;)V │ │ .line 556 │ return-void │ .end method ├── smali/org/smssecure/smssecure/ConversationFragment.smali │ @@ -82,15 +82,14 @@ │ .line 80 │ new-instance v0, Lorg/smssecure/smssecure/ConversationFragment$ConversationFragmentItemClickListener; │ │ invoke-direct {v0, p0, v1}, Lorg/smssecure/smssecure/ConversationFragment$ConversationFragmentItemClickListener;->(Lorg/smssecure/smssecure/ConversationFragment;Lorg/smssecure/smssecure/ConversationFragment$1;)V │ │ iput-object v0, p0, Lorg/smssecure/smssecure/ConversationFragment;->selectionClickListener:Lorg/smssecure/smssecure/ConversationAdapter$ItemClickListener; │ │ - .line 410 │ return-void │ .end method │ │ .method static synthetic access$1000(Lorg/smssecure/smssecure/ConversationFragment;)Lorg/smssecure/smssecure/ConversationAdapter; │ .locals 1 │ │ .prologue │ @@ -753,14 +752,15 @@ │ │ new-array v0, v0, [Lorg/smssecure/smssecure/database/model/MessageRecord; │ │ const/4 v2, 0x0 │ │ aput-object p1, v0, v2 │ │ + .line 336 │ invoke-virtual {v1, v0}, Lorg/smssecure/smssecure/ConversationFragment$5;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 337 │ return-void │ .end method │ │ .method private handleSaveAttachment(Lorg/smssecure/smssecure/database/model/MediaMmsMessageRecord;)V │ @@ -1027,30 +1027,33 @@ │ │ invoke-virtual {v0}, Lorg/smssecure/smssecure/database/model/MessageRecord;->isMms()Z │ │ move-result v4 │ │ if-eqz v4, :cond_2 │ │ + .line 191 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/database/model/MessageRecord;->isMmsNotification()Z │ │ move-result v4 │ │ if-nez v4, :cond_2 │ │ check-cast v0, Lorg/smssecure/smssecure/database/model/MediaMmsMessageRecord; │ │ + .line 192 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/database/model/MediaMmsMessageRecord;->containsMediaSlide()Z │ │ move-result v0 │ │ if-eqz v0, :cond_2 │ │ move v0, v1 │ │ + .line 190 │ :goto_1 │ invoke-interface {v3, v0}, Landroid/view/MenuItem;->setVisible(Z)Landroid/view/MenuItem; │ │ .line 194 │ invoke-interface {p1, v6}, Landroid/view/Menu;->findItem(I)Landroid/view/MenuItem; │ │ move-result-object v0 │ @@ -1074,15 +1077,15 @@ │ invoke-interface {v0, v1}, Landroid/view/MenuItem;->setVisible(Z)Landroid/view/MenuItem; │ │ goto :goto_0 │ │ :cond_2 │ move v0, v2 │ │ - .line 190 │ + .line 192 │ goto :goto_1 │ .end method │ │ │ # virtual methods │ .method public onActivityCreated(Landroid/os/Bundle;)V │ .locals 0 ├── smali/org/smssecure/smssecure/ConversationItem$ThumbnailClickListener.smali │ @@ -224,14 +224,15 @@ │ │ invoke-static {v0}, Lorg/smssecure/smssecure/MediaPreviewActivity;->isContentTypeSupported(Ljava/lang/String;)Z │ │ move-result v0 │ │ if-eqz v0, :cond_3 │ │ + .line 519 │ invoke-virtual {p2}, Lorg/smssecure/smssecure/mms/Slide;->getThumbnailUri()Landroid/net/Uri; │ │ move-result-object v0 │ │ if-eqz v0, :cond_3 │ │ .line 521 ├── smali/org/smssecure/smssecure/ConversationItem.smali │ @@ -299,24 +299,26 @@ │ .line 428 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/database/model/MessageRecord;->isOutgoing()Z │ │ move-result v0 │ │ if-nez v0, :cond_0 │ │ + .line 429 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/database/model/MessageRecord;->getRecipients()Lorg/smssecure/smssecure/recipients/Recipients; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Lorg/smssecure/smssecure/recipients/Recipients;->isSingleRecipient()Z │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ + .line 430 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/database/model/MessageRecord;->isSecure()Z │ │ move-result v0 │ │ if-nez v0, :cond_0 │ │ .line 432 │ @@ -351,28 +353,30 @@ │ .line 440 │ iget-boolean v0, p0, Lorg/smssecure/smssecure/ConversationItem;->groupThread:Z │ │ if-nez v0, :cond_0 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/ConversationItem;->context:Landroid/content/Context; │ │ + .line 441 │ invoke-virtual {v2}, Lorg/smssecure/smssecure/recipients/Recipient;->getNumber()Ljava/lang/String; │ │ move-result-object v1 │ │ invoke-static {v0, v1}, Lorg/smssecure/smssecure/util/TelephonyUtil;->isMyPhoneNumber(Landroid/content/Context;Ljava/lang/String;)Z │ │ move-result v0 │ │ if-nez v0, :cond_0 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/ConversationItem;->context:Landroid/content/Context; │ │ iget-object v1, p0, Lorg/smssecure/smssecure/ConversationItem;->masterSecret:Lorg/smssecure/smssecure/crypto/MasterSecret; │ │ + .line 442 │ invoke-static/range {v0 .. v5}, Lorg/smssecure/smssecure/protocol/AutoInitiate;->isValidAutoInitiateSituation(Landroid/content/Context;Lorg/smssecure/smssecure/crypto/MasterSecret;Lorg/smssecure/smssecure/recipients/Recipient;Ljava/lang/String;J)Z │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ .line 444 │ @@ -550,37 +554,41 @@ │ .line 247 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/database/model/MessageRecord;->isMms()Z │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ + .line 248 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/database/model/MessageRecord;->isMmsNotification()Z │ │ move-result v0 │ │ if-nez v0, :cond_0 │ │ check-cast p1, Lorg/smssecure/smssecure/database/model/MediaMmsMessageRecord; │ │ + .line 249 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/database/model/MediaMmsMessageRecord;->getSlideDeck()Lorg/smssecure/smssecure/mms/SlideDeck; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Lorg/smssecure/smssecure/mms/SlideDeck;->getAudioSlide()Lorg/smssecure/smssecure/mms/AudioSlide; │ │ move-result-object v0 │ │ if-eqz v0, :cond_0 │ │ const/4 v0, 0x1 │ │ + .line 247 │ :goto_0 │ return v0 │ │ + .line 249 │ :cond_0 │ const/4 v0, 0x0 │ │ goto :goto_0 │ .end method │ │ .method private hasThumbnail(Lorg/smssecure/smssecure/database/model/MessageRecord;)Z │ @@ -590,37 +598,41 @@ │ .line 253 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/database/model/MessageRecord;->isMms()Z │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ + .line 254 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/database/model/MessageRecord;->isMmsNotification()Z │ │ move-result v0 │ │ if-nez v0, :cond_0 │ │ check-cast p1, Lorg/smssecure/smssecure/database/model/MediaMmsMessageRecord; │ │ + .line 255 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/database/model/MediaMmsMessageRecord;->getSlideDeck()Lorg/smssecure/smssecure/mms/SlideDeck; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Lorg/smssecure/smssecure/mms/SlideDeck;->getThumbnailSlide()Lorg/smssecure/smssecure/mms/Slide; │ │ move-result-object v0 │ │ if-eqz v0, :cond_0 │ │ const/4 v0, 0x1 │ │ + .line 253 │ :goto_0 │ return v0 │ │ + .line 255 │ :cond_0 │ const/4 v0, 0x0 │ │ goto :goto_0 │ .end method │ │ .method private initializeAttributes()V │ @@ -1278,22 +1290,24 @@ │ .line 291 │ iget-object v1, p0, Lorg/smssecure/smssecure/ConversationItem;->mediaThumbnail:Lorg/smssecure/smssecure/components/ThumbnailView; │ │ iget-object v2, p0, Lorg/smssecure/smssecure/ConversationItem;->masterSecret:Lorg/smssecure/smssecure/crypto/MasterSecret; │ │ check-cast p1, Lorg/smssecure/smssecure/database/model/MediaMmsMessageRecord; │ │ + .line 292 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/database/model/MediaMmsMessageRecord;->getSlideDeck()Lorg/smssecure/smssecure/mms/SlideDeck; │ │ move-result-object v3 │ │ invoke-virtual {v3}, Lorg/smssecure/smssecure/mms/SlideDeck;->getThumbnailSlide()Lorg/smssecure/smssecure/mms/Slide; │ │ move-result-object v3 │ │ + .line 291 │ invoke-virtual {v1, v2, v3, v0}, Lorg/smssecure/smssecure/components/ThumbnailView;->setImageResource(Lorg/smssecure/smssecure/crypto/MasterSecret;Lorg/smssecure/smssecure/mms/Slide;Z)V │ │ .line 294 │ iget-object v0, p0, Lorg/smssecure/smssecure/ConversationItem;->bodyText:Landroid/widget/TextView; │ │ new-instance v1, Landroid/widget/LinearLayout$LayoutParams; │ │ @@ -1425,24 +1439,26 @@ │ │ invoke-virtual {v0, v1}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v0 │ │ new-array v1, v4, [Ljava/lang/Object; │ │ + .line 402 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/database/model/NotificationMmsMessageRecord;->getMessageSize()J │ │ move-result-wide v2 │ │ invoke-static {v2, v3}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; │ │ move-result-object v2 │ │ aput-object v2, v1, v6 │ │ + .line 401 │ invoke-static {v0, v1}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v0 │ │ .line 403 │ iget-object v1, p0, Lorg/smssecure/smssecure/ConversationItem;->context:Landroid/content/Context; │ │ @@ -1450,28 +1466,32 @@ │ │ invoke-virtual {v1, v2}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v1 │ │ new-array v2, v4, [Ljava/lang/Object; │ │ + .line 404 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/ConversationItem;->getContext()Landroid/content/Context; │ │ move-result-object v3 │ │ + .line 405 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/database/model/NotificationMmsMessageRecord;->getExpiration()J │ │ move-result-wide v4 │ │ + .line 404 │ invoke-static {v3, v4, v5, v6}, Lorg/smssecure/smssecure/util/DateUtils;->getRelativeTimeSpanString(Landroid/content/Context;JZ)Ljava/lang/CharSequence; │ │ move-result-object v3 │ │ aput-object v3, v2, v6 │ │ + .line 403 │ invoke-static {v1, v2}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v1 │ │ .line 408 │ iget-object v2, p0, Lorg/smssecure/smssecure/ConversationItem;->dateText:Landroid/widget/TextView; │ │ @@ -1929,39 +1949,43 @@ │ │ invoke-interface {v0}, Ljava/util/Set;->isEmpty()Z │ │ move-result v0 │ │ if-eqz v0, :cond_2 │ │ + .line 387 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/database/model/MessageRecord;->isFailed()Z │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ invoke-virtual {p1}, Lorg/smssecure/smssecure/database/model/MessageRecord;->isMmsNotification()Z │ │ move-result v0 │ │ if-eqz v0, :cond_1 │ │ + .line 388 │ :cond_0 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/database/model/MessageRecord;->isKeyExchange()Z │ │ move-result v0 │ │ if-eqz v0, :cond_2 │ │ :cond_1 │ const/4 v0, 0x1 │ │ + .line 386 │ :goto_0 │ return v0 │ │ + .line 388 │ :cond_2 │ const/4 v0, 0x0 │ │ goto :goto_0 │ .end method ├── smali/org/smssecure/smssecure/ConversationListActivity.smali │ @@ -178,14 +178,15 @@ │ │ invoke-direct {v0, p0}, Lorg/smssecure/smssecure/ConversationListActivity$3;->(Lorg/smssecure/smssecure/ConversationListActivity;)V │ │ const/4 v1, 0x0 │ │ new-array v1, v1, [Ljava/lang/Void; │ │ + .line 204 │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/ConversationListActivity$3;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 205 │ return-void │ .end method │ │ .method private handleMyIdentity()V ├── smali/org/smssecure/smssecure/ConversationListArchiveActivity.smali │ @@ -67,22 +67,24 @@ │ │ new-instance v2, Lorg/smssecure/smssecure/ConversationListFragment; │ │ invoke-direct {v2}, Lorg/smssecure/smssecure/ConversationListFragment;->()V │ │ iget-object v0, p0, Lorg/smssecure/smssecure/ConversationListArchiveActivity;->dynamicLanguage:Lorg/smssecure/smssecure/util/DynamicLanguage; │ │ + .line 34 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/util/DynamicLanguage;->getCurrentLocale()Ljava/util/Locale; │ │ move-result-object v4 │ │ move-object v0, p0 │ │ move-object v3, p2 │ │ + .line 33 │ invoke-virtual/range {v0 .. v5}, Lorg/smssecure/smssecure/ConversationListArchiveActivity;->initFragment(ILandroid/support/v4/app/Fragment;Lorg/smssecure/smssecure/crypto/MasterSecret;Ljava/util/Locale;Landroid/os/Bundle;)Landroid/support/v4/app/Fragment; │ │ .line 35 │ return-void │ .end method │ │ .method public onCreateConversation(JLorg/smssecure/smssecure/recipients/Recipients;I)V ├── smali/org/smssecure/smssecure/ConversationListFragment$4$1.smali │ @@ -179,42 +179,45 @@ │ │ move-result-object v0 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/ConversationListFragment$4$1;->this$1:Lorg/smssecure/smssecure/ConversationListFragment$4; │ │ iget-object v1, v1, Lorg/smssecure/smssecure/ConversationListFragment$4;->this$0:Lorg/smssecure/smssecure/ConversationListFragment; │ │ + .line 252 │ invoke-virtual {v1}, Lorg/smssecure/smssecure/ConversationListFragment;->getActivity()Landroid/support/v4/app/FragmentActivity; │ │ move-result-object v1 │ │ const v2, 0x7f080052 │ │ invoke-virtual {v1, v2}, Landroid/support/v4/app/FragmentActivity;->getString(I)Ljava/lang/String; │ │ move-result-object v1 │ │ iget-object v2, p0, Lorg/smssecure/smssecure/ConversationListFragment$4$1;->this$1:Lorg/smssecure/smssecure/ConversationListFragment$4; │ │ iget-object v2, v2, Lorg/smssecure/smssecure/ConversationListFragment$4;->this$0:Lorg/smssecure/smssecure/ConversationListFragment; │ │ + .line 253 │ invoke-virtual {v2}, Lorg/smssecure/smssecure/ConversationListFragment;->getActivity()Landroid/support/v4/app/FragmentActivity; │ │ move-result-object v2 │ │ const v3, 0x7f0801e1 │ │ invoke-virtual {v2, v3}, Landroid/support/v4/app/FragmentActivity;->getString(I)Ljava/lang/String; │ │ move-result-object v2 │ │ const/4 v3, 0x1 │ │ const/4 v4, 0x0 │ │ + .line 251 │ invoke-static {v0, v1, v2, v3, v4}, Landroid/app/ProgressDialog;->show(Landroid/content/Context;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ZZ)Landroid/app/ProgressDialog; │ │ move-result-object v0 │ │ iput-object v0, p0, Lorg/smssecure/smssecure/ConversationListFragment$4$1;->dialog:Landroid/app/ProgressDialog; │ │ .line 255 ├── smali/org/smssecure/smssecure/ConversationListFragment$4.smali │ @@ -38,14 +38,15 @@ │ .line 242 │ iget-object v0, p0, Lorg/smssecure/smssecure/ConversationListFragment$4;->this$0:Lorg/smssecure/smssecure/ConversationListFragment; │ │ invoke-virtual {v0}, Lorg/smssecure/smssecure/ConversationListFragment;->getListAdapter()Lorg/smssecure/smssecure/ConversationListAdapter; │ │ move-result-object v0 │ │ + .line 243 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/ConversationListAdapter;->getBatchSelections()Ljava/util/Set; │ │ move-result-object v0 │ │ .line 245 │ invoke-interface {v0}, Ljava/util/Set;->isEmpty()Z │ │ @@ -58,13 +59,14 @@ │ │ invoke-direct {v1, p0, v0}, Lorg/smssecure/smssecure/ConversationListFragment$4$1;->(Lorg/smssecure/smssecure/ConversationListFragment$4;Ljava/util/Set;)V │ │ const/4 v0, 0x0 │ │ new-array v0, v0, [Ljava/lang/Void; │ │ + .line 272 │ invoke-virtual {v1, v0}, Lorg/smssecure/smssecure/ConversationListFragment$4$1;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 274 │ :cond_0 │ return-void │ .end method ├── smali/org/smssecure/smssecure/ConversationListFragment$ArchiveListenerCallback.smali │ @@ -138,27 +138,29 @@ │ │ invoke-virtual {v7}, Landroid/view/View;->getTop()I │ │ move-result v0 │ │ int-to-float v2, v0 │ │ + .line 497 │ invoke-virtual {v7}, Landroid/view/View;->getBottom()I │ │ move-result v0 │ │ int-to-float v4, v0 │ │ move-object v0, p1 │ │ move v3, p4 │ │ + .line 496 │ invoke-virtual/range {v0 .. v5}, Landroid/graphics/Canvas;->drawRect(FFFFLandroid/graphics/Paint;)V │ │ - .line 499 │ + .line 500 │ invoke-virtual {v7}, Landroid/view/View;->getLeft()I │ │ move-result v0 │ │ int-to-float v0, v0 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/ConversationListFragment$ArchiveListenerCallback;->this$0:Lorg/smssecure/smssecure/ConversationListFragment; │ @@ -171,14 +173,15 @@ │ │ invoke-virtual {v1, v2}, Landroid/content/res/Resources;->getDimension(I)F │ │ move-result v1 │ │ add-float/2addr v0, v1 │ │ + .line 501 │ invoke-virtual {v7}, Landroid/view/View;->getTop()I │ │ move-result v1 │ │ int-to-float v1, v1 │ │ invoke-virtual {v7}, Landroid/view/View;->getBottom()I │ @@ -205,14 +208,15 @@ │ │ const/high16 v3, 0x40000000 # 2.0f │ │ div-float/2addr v2, v3 │ │ add-float/2addr v1, v2 │ │ + .line 499 │ invoke-virtual {p1, v6, v0, v1, v5}, Landroid/graphics/Canvas;->drawBitmap(Landroid/graphics/Bitmap;FFLandroid/graphics/Paint;)V │ │ .line 505 │ :cond_0 │ sget v0, Landroid/os/Build$VERSION;->SDK_INT:I │ │ const/16 v1, 0xb │ @@ -335,14 +339,15 @@ │ │ invoke-virtual {v1}, Lorg/smssecure/smssecure/ConversationListFragment;->getView()Landroid/view/View; │ │ move-result-object v2 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/ConversationListFragment$ArchiveListenerCallback;->this$0:Lorg/smssecure/smssecure/ConversationListFragment; │ │ + .line 432 │ invoke-virtual {v1}, Lorg/smssecure/smssecure/ConversationListFragment;->getResources()Landroid/content/res/Resources; │ │ move-result-object v1 │ │ const v3, 0x7f09000d │ │ new-array v4, v11, [Ljava/lang/Object; │ @@ -355,20 +360,22 @@ │ │ invoke-virtual {v1, v3, v11, v4}, Landroid/content/res/Resources;->getQuantityString(II[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v3 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/ConversationListFragment$ArchiveListenerCallback;->this$0:Lorg/smssecure/smssecure/ConversationListFragment; │ │ + .line 433 │ invoke-virtual {v1, v7}, Lorg/smssecure/smssecure/ConversationListFragment;->getString(I)Ljava/lang/String; │ │ move-result-object v4 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/ConversationListFragment$ArchiveListenerCallback;->this$0:Lorg/smssecure/smssecure/ConversationListFragment; │ │ + .line 434 │ invoke-virtual {v1}, Lorg/smssecure/smssecure/ConversationListFragment;->getResources()Landroid/content/res/Resources; │ │ move-result-object v1 │ │ invoke-virtual {v1, v12}, Landroid/content/res/Resources;->getColor(I)I │ │ move-result v5 │ @@ -377,14 +384,15 @@ │ │ move v7, v6 │ │ invoke-direct/range {v0 .. v9}, Lorg/smssecure/smssecure/ConversationListFragment$ArchiveListenerCallback$1;->(Lorg/smssecure/smssecure/ConversationListFragment$ArchiveListenerCallback;Landroid/view/View;Ljava/lang/String;Ljava/lang/String;IIZJ)V │ │ new-array v1, v11, [Ljava/lang/Long; │ │ + .line 446 │ invoke-static {v8, v9}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; │ │ move-result-object v2 │ │ aput-object v2, v1, v6 │ │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/ConversationListFragment$ArchiveListenerCallback$1;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ @@ -401,14 +409,15 @@ │ │ invoke-virtual {v1}, Lorg/smssecure/smssecure/ConversationListFragment;->getView()Landroid/view/View; │ │ move-result-object v2 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/ConversationListFragment$ArchiveListenerCallback;->this$0:Lorg/smssecure/smssecure/ConversationListFragment; │ │ + .line 449 │ invoke-virtual {v1}, Lorg/smssecure/smssecure/ConversationListFragment;->getResources()Landroid/content/res/Resources; │ │ move-result-object v1 │ │ const v3, 0x7f09000b │ │ new-array v4, v11, [Ljava/lang/Object; │ @@ -421,20 +430,22 @@ │ │ invoke-virtual {v1, v3, v11, v4}, Landroid/content/res/Resources;->getQuantityString(II[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v3 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/ConversationListFragment$ArchiveListenerCallback;->this$0:Lorg/smssecure/smssecure/ConversationListFragment; │ │ + .line 450 │ invoke-virtual {v1, v7}, Lorg/smssecure/smssecure/ConversationListFragment;->getString(I)Ljava/lang/String; │ │ move-result-object v4 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/ConversationListFragment$ArchiveListenerCallback;->this$0:Lorg/smssecure/smssecure/ConversationListFragment; │ │ + .line 451 │ invoke-virtual {v1}, Lorg/smssecure/smssecure/ConversationListFragment;->getResources()Landroid/content/res/Resources; │ │ move-result-object v1 │ │ invoke-virtual {v1, v12}, Landroid/content/res/Resources;->getColor(I)I │ │ move-result v5 │ @@ -443,14 +454,15 @@ │ │ move v7, v6 │ │ invoke-direct/range {v0 .. v10}, Lorg/smssecure/smssecure/ConversationListFragment$ArchiveListenerCallback$2;->(Lorg/smssecure/smssecure/ConversationListFragment$ArchiveListenerCallback;Landroid/view/View;Ljava/lang/String;Ljava/lang/String;IIZJZ)V │ │ new-array v1, v11, [Ljava/lang/Long; │ │ + .line 473 │ invoke-static {v8, v9}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; │ │ move-result-object v2 │ │ aput-object v2, v1, v6 │ │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/ConversationListFragment$ArchiveListenerCallback$2;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; ├── smali/org/smssecure/smssecure/ConversationListFragment.smali │ @@ -53,15 +53,14 @@ │ invoke-direct {p0}, Landroid/support/v4/app/Fragment;->()V │ │ .line 88 │ const-string v0, "" │ │ iput-object v0, p0, Lorg/smssecure/smssecure/ConversationListFragment;->queryFilter:Ljava/lang/String; │ │ - .line 398 │ return-void │ .end method │ │ .method static synthetic access$000(Lorg/smssecure/smssecure/ConversationListFragment;)Lorg/smssecure/smssecure/crypto/MasterSecret; │ .locals 1 │ │ .prologue │ @@ -168,18 +167,20 @@ │ │ invoke-virtual {p0}, Lorg/smssecure/smssecure/ConversationListFragment;->getView()Landroid/view/View; │ │ move-result-object v2 │ │ const v1, 0x7f0801e2 │ │ + .line 196 │ invoke-virtual {p0, v1}, Lorg/smssecure/smssecure/ConversationListFragment;->getString(I)Ljava/lang/String; │ │ move-result-object v4 │ │ + .line 197 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/ConversationListFragment;->getResources()Landroid/content/res/Resources; │ │ move-result-object v1 │ │ const v5, 0x7f0e000d │ │ invoke-virtual {v1, v5}, Landroid/content/res/Resources;->getColor(I)I │ @@ -188,14 +189,15 @@ │ │ move-object v1, p0 │ │ invoke-direct/range {v0 .. v9}, Lorg/smssecure/smssecure/ConversationListFragment$3;->(Lorg/smssecure/smssecure/ConversationListFragment;Landroid/view/View;Ljava/lang/String;Ljava/lang/String;IIZLjava/util/Set;Z)V │ │ new-array v1, v6, [Ljava/lang/Void; │ │ + .line 226 │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/ConversationListFragment$3;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 227 │ return-void │ │ .line 190 │ :cond_0 │ @@ -265,20 +267,22 @@ │ │ move-result-object v2 │ │ const v3, 0x7f09000c │ │ new-array v4, v6, [Ljava/lang/Object; │ │ + .line 234 │ invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v5 │ │ aput-object v5, v4, v7 │ │ + .line 233 │ invoke-virtual {v2, v3, v0, v4}, Landroid/content/res/Resources;->getQuantityString(II[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v2 │ │ invoke-virtual {v1, v2}, Landroid/support/v7/app/AlertDialog$Builder;->setTitle(Ljava/lang/CharSequence;)Landroid/support/v7/app/AlertDialog$Builder; │ │ .line 235 │ @@ -290,20 +294,22 @@ │ │ move-result-object v2 │ │ const v3, 0x7f09000e │ │ new-array v4, v6, [Ljava/lang/Object; │ │ + .line 236 │ invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v5 │ │ aput-object v5, v4, v7 │ │ + .line 235 │ invoke-virtual {v2, v3, v0, v4}, Landroid/content/res/Resources;->getQuantityString(II[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v0 │ │ invoke-virtual {v1, v0}, Landroid/support/v7/app/AlertDialog$Builder;->setMessage(Ljava/lang/CharSequence;)Landroid/support/v7/app/AlertDialog$Builder; │ │ .line 237 │ @@ -350,14 +356,15 @@ │ │ const/4 v2, 0x1 │ │ new-array v2, v2, [Ljava/lang/Object; │ │ const/4 v3, 0x0 │ │ + .line 284 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/ConversationListFragment;->getListAdapter()Lorg/smssecure/smssecure/ConversationListAdapter; │ │ move-result-object v4 │ │ invoke-virtual {v4}, Lorg/smssecure/smssecure/ConversationListAdapter;->getBatchSelections()Ljava/util/Set; │ │ move-result-object v4 │ @@ -368,14 +375,15 @@ │ │ invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v4 │ │ aput-object v4, v2, v3 │ │ + .line 283 │ invoke-virtual {p0, v1, v2}, Lorg/smssecure/smssecure/ConversationListFragment;->getString(I[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v1 │ │ invoke-virtual {v0, v1}, Landroid/support/v7/view/ActionMode;->setSubtitle(Ljava/lang/CharSequence;)V │ │ .line 285 │ @@ -436,14 +444,15 @@ │ │ const/4 v1, 0x1 │ │ new-array v1, v1, [Landroid/content/Context; │ │ const/4 v2, 0x0 │ │ + .line 175 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/ConversationListFragment;->getActivity()Landroid/support/v4/app/FragmentActivity; │ │ move-result-object v3 │ │ aput-object v3, v1, v2 │ │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/ConversationListFragment$2;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ @@ -871,14 +880,15 @@ │ │ new-array v2, v2, [I │ │ const v3, 0x1010451 │ │ aput v3, v2, v4 │ │ + .line 389 │ invoke-virtual {v1, v2}, Landroid/content/res/Resources$Theme;->obtainStyledAttributes([I)Landroid/content/res/TypedArray; │ │ move-result-object v1 │ │ .line 390 │ const/high16 v2, -0x1000000 │ │ @@ -928,18 +938,20 @@ │ │ move-result-wide v0 │ │ invoke-virtual {p1}, Lorg/smssecure/smssecure/ConversationListItem;->getRecipients()Lorg/smssecure/smssecure/recipients/Recipients; │ │ move-result-object v2 │ │ + .line 310 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/ConversationListItem;->getDistributionType()I │ │ move-result v3 │ │ + .line 309 │ invoke-direct {p0, v0, v1, v2, v3}, Lorg/smssecure/smssecure/ConversationListFragment;->handleCreateConversation(JLorg/smssecure/smssecure/recipients/Recipients;I)V │ │ .line 324 │ :goto_0 │ return-void │ │ .line 312 │ @@ -989,28 +1001,30 @@ │ │ const/4 v3, 0x1 │ │ new-array v3, v3, [Ljava/lang/Object; │ │ const/4 v4, 0x0 │ │ + .line 319 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/ConversationListAdapter;->getBatchSelections()Ljava/util/Set; │ │ move-result-object v5 │ │ invoke-interface {v5}, Ljava/util/Set;->size()I │ │ move-result v5 │ │ invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v5 │ │ aput-object v5, v3, v4 │ │ + .line 318 │ invoke-virtual {p0, v2, v3}, Lorg/smssecure/smssecure/ConversationListFragment;->getString(I[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v2 │ │ invoke-virtual {v1, v2}, Landroid/support/v7/view/ActionMode;->setSubtitle(Ljava/lang/CharSequence;)V │ │ goto :goto_1 ├── smali/org/smssecure/smssecure/ConversationListItem$ThumbnailPositioner.smali │ @@ -72,14 +72,15 @@ │ │ move-result v1 │ │ if-nez v1, :cond_1 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/ConversationListItem$ThumbnailPositioner;->archivedView:Landroid/view/View; │ │ + .line 261 │ invoke-virtual {v1}, Landroid/view/View;->getWidth()I │ │ move-result v1 │ │ iget-object v2, p0, Lorg/smssecure/smssecure/ConversationListItem$ThumbnailPositioner;->deliveryStatusView:Landroid/view/View; │ │ invoke-virtual {v2}, Landroid/view/View;->getWidth()I ├── smali/org/smssecure/smssecure/ConversationListItem.smali │ @@ -272,14 +272,15 @@ │ │ invoke-virtual {v0}, Landroid/graphics/drawable/Drawable;->mutate()Landroid/graphics/drawable/Drawable; │ │ move-result-object v0 │ │ check-cast v0, Landroid/graphics/drawable/RippleDrawable; │ │ + .line 226 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/recipients/Recipients;->getColor()Lorg/smssecure/smssecure/color/MaterialColor; │ │ move-result-object v1 │ │ invoke-virtual {p0}, Lorg/smssecure/smssecure/ConversationListItem;->getContext()Landroid/content/Context; │ │ move-result-object v2 ├── smali/org/smssecure/smssecure/ConversationTitleView.smali │ @@ -168,14 +168,15 @@ │ │ invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z │ │ move-result v0 │ │ if-nez v0, :cond_2 │ │ + .line 75 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/recipients/Recipient;->getName()Ljava/lang/String; │ │ move-result-object v0 │ │ .line 78 │ :goto_1 │ iget-object v1, p0, Lorg/smssecure/smssecure/ConversationTitleView;->title:Landroid/widget/TextView; │ @@ -190,15 +191,15 @@ │ .line 80 │ iget-object v0, p0, Lorg/smssecure/smssecure/ConversationTitleView;->subtitle:Landroid/widget/TextView; │ │ invoke-virtual {v0, v2}, Landroid/widget/TextView;->setVisibility(I)V │ │ goto :goto_0 │ │ - .line 74 │ + .line 76 │ :cond_2 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/ConversationTitleView;->getContext()Landroid/content/Context; │ │ move-result-object v0 │ │ const v1, 0x7f08003f ├── smali/org/smssecure/smssecure/ConversationUpdateItem.smali │ @@ -282,24 +282,26 @@ │ │ new-array v2, v2, [J │ │ const/4 v3, 0x0 │ │ iget-object v4, p0, Lorg/smssecure/smssecure/ConversationUpdateItem;->messageRecord:Lorg/smssecure/smssecure/database/model/MessageRecord; │ │ + .line 101 │ invoke-virtual {v4}, Lorg/smssecure/smssecure/database/model/MessageRecord;->getIndividualRecipient()Lorg/smssecure/smssecure/recipients/Recipient; │ │ move-result-object v4 │ │ invoke-virtual {v4}, Lorg/smssecure/smssecure/recipients/Recipient;->getRecipientId()J │ │ move-result-wide v4 │ │ aput-wide v4, v2, v3 │ │ + .line 100 │ invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;[J)Landroid/content/Intent; │ │ .line 103 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/ConversationUpdateItem;->getContext()Landroid/content/Context; │ │ move-result-object v1 ├── smali/org/smssecure/smssecure/CountrySelectionFragment.smali │ @@ -33,15 +33,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 23 │ invoke-direct {p0}, Landroid/support/v4/app/ListFragment;->()V │ │ - .line 83 │ return-void │ .end method │ │ │ # virtual methods │ .method public onActivityCreated(Landroid/os/Bundle;)V │ .locals 3 │ @@ -186,14 +185,15 @@ │ │ move-result-object v1 │ │ check-cast v1, Ljava/lang/String; │ │ const-string v3, "country_code" │ │ + .line 52 │ invoke-interface {v0, v3}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Ljava/lang/String; │ │ const/4 v3, 0x1 │ @@ -202,14 +202,15 @@ │ │ move-result-object v0 │ │ invoke-static {v0}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I │ │ move-result v0 │ │ + .line 51 │ invoke-interface {v2, v1, v0}, Lorg/smssecure/smssecure/CountrySelectionFragment$CountrySelectedListener;->countrySelected(Ljava/lang/String;I)V │ │ .line 54 │ :cond_0 │ return-void │ .end method ├── smali/org/smssecure/smssecure/DatabaseMigrationActivity.smali │ @@ -59,15 +59,14 @@ │ iput-object v0, p0, Lorg/smssecure/smssecure/DatabaseMigrationActivity;->completedReceiver:Landroid/content/BroadcastReceiver; │ │ .line 39 │ const/4 v0, 0x0 │ │ iput-boolean v0, p0, Lorg/smssecure/smssecure/DatabaseMigrationActivity;->isVisible:Z │ │ - .line 187 │ return-void │ .end method │ │ .method static synthetic access$300(Lorg/smssecure/smssecure/DatabaseMigrationActivity;)Landroid/widget/LinearLayout; │ .locals 1 │ │ .prologue ├── smali/org/smssecure/smssecure/DatabaseUpgradeActivity$DatabaseUpgradeTask.smali │ @@ -91,14 +91,15 @@ │ │ invoke-static {v3}, Lorg/smssecure/smssecure/database/DatabaseFactory;->getInstance(Landroid/content/Context;)Lorg/smssecure/smssecure/database/DatabaseFactory; │ │ move-result-object v3 │ │ iget-object v4, p0, Lorg/smssecure/smssecure/DatabaseUpgradeActivity$DatabaseUpgradeTask;->this$0:Lorg/smssecure/smssecure/DatabaseUpgradeActivity; │ │ + .line 161 │ # getter for: Lorg/smssecure/smssecure/DatabaseUpgradeActivity;->masterSecret:Lorg/smssecure/smssecure/crypto/MasterSecret; │ invoke-static {v4}, Lorg/smssecure/smssecure/DatabaseUpgradeActivity;->access$000(Lorg/smssecure/smssecure/DatabaseUpgradeActivity;)Lorg/smssecure/smssecure/crypto/MasterSecret; │ │ move-result-object v4 │ │ aget-object v5, p1, v1 │ │ @@ -256,22 +257,24 @@ │ │ move-result-object v3 │ │ invoke-static {v3}, Lorg/smssecure/smssecure/ApplicationContext;->getInstance(Landroid/content/Context;)Lorg/smssecure/smssecure/ApplicationContext; │ │ move-result-object v3 │ │ + .line 197 │ invoke-virtual {v3}, Lorg/smssecure/smssecure/ApplicationContext;->getJobManager()Lorg/whispersystems/jobqueue/JobManager; │ │ move-result-object v3 │ │ new-instance v4, Lorg/smssecure/smssecure/jobs/SmsDecryptJob; │ │ iget-object v5, p0, Lorg/smssecure/smssecure/DatabaseUpgradeActivity$DatabaseUpgradeTask;->this$0:Lorg/smssecure/smssecure/DatabaseUpgradeActivity; │ │ + .line 198 │ invoke-virtual {v5}, Lorg/smssecure/smssecure/DatabaseUpgradeActivity;->getApplicationContext()Landroid/content/Context; │ │ move-result-object v5 │ │ invoke-virtual {v0}, Lorg/smssecure/smssecure/database/model/SmsMessageRecord;->getId()J │ │ move-result-wide v6 │ @@ -341,22 +344,24 @@ │ .line 222 │ iget-object v0, p0, Lorg/smssecure/smssecure/DatabaseUpgradeActivity$DatabaseUpgradeTask;->this$0:Lorg/smssecure/smssecure/DatabaseUpgradeActivity; │ │ invoke-static {v0}, Lorg/smssecure/smssecure/ApplicationContext;->getInstance(Landroid/content/Context;)Lorg/smssecure/smssecure/ApplicationContext; │ │ move-result-object v0 │ │ + .line 223 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/ApplicationContext;->getJobManager()Lorg/whispersystems/jobqueue/JobManager; │ │ move-result-object v0 │ │ new-instance v1, Lorg/whispersystems/jobqueue/EncryptionKeys; │ │ iget-object v2, p0, Lorg/smssecure/smssecure/DatabaseUpgradeActivity$DatabaseUpgradeTask;->this$0:Lorg/smssecure/smssecure/DatabaseUpgradeActivity; │ │ + .line 224 │ # getter for: Lorg/smssecure/smssecure/DatabaseUpgradeActivity;->masterSecret:Lorg/smssecure/smssecure/crypto/MasterSecret; │ invoke-static {v2}, Lorg/smssecure/smssecure/DatabaseUpgradeActivity;->access$000(Lorg/smssecure/smssecure/DatabaseUpgradeActivity;)Lorg/smssecure/smssecure/crypto/MasterSecret; │ │ move-result-object v2 │ │ invoke-static {v2}, Lorg/smssecure/smssecure/util/ParcelUtil;->serialize(Landroid/os/Parcelable;)[B ├── smali/org/smssecure/smssecure/DatabaseUpgradeActivity.smali │ @@ -65,15 +65,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 50 │ invoke-direct {p0}, Lorg/smssecure/smssecure/BaseActivity;->()V │ │ - .line 143 │ return-void │ .end method │ │ .method static synthetic access$000(Lorg/smssecure/smssecure/DatabaseUpgradeActivity;)Lorg/smssecure/smssecure/crypto/MasterSecret; │ .locals 1 │ │ .prologue │ @@ -264,14 +263,15 @@ │ │ invoke-direct {v0, p0, p1, p2}, Lorg/smssecure/smssecure/DatabaseUpgradeActivity$2;->(Lorg/smssecure/smssecure/DatabaseUpgradeActivity;Landroid/content/Context;Lorg/smssecure/smssecure/crypto/MasterSecret;)V │ │ const/4 v1, 0x0 │ │ new-array v1, v1, [Ljava/lang/Void; │ │ + .line 136 │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/DatabaseUpgradeActivity$2;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 137 │ return-void │ .end method │ │ │ @@ -342,14 +342,15 @@ │ │ const/4 v0, 0x1 │ │ new-array v0, v0, [Ljava/lang/Integer; │ │ const/4 v1, 0x0 │ │ + .line 87 │ invoke-static {p0}, Lorg/smssecure/smssecure/util/VersionTracker;->getLastSeenVersion(Landroid/content/Context;)I │ │ move-result v3 │ │ invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v3 │ @@ -367,22 +368,24 @@ │ invoke-static {p0}, Lorg/smssecure/smssecure/util/VersionTracker;->updateLastSeenVersion(Landroid/content/Context;)V │ │ .line 90 │ invoke-static {p0}, Lorg/smssecure/smssecure/ApplicationContext;->getInstance(Landroid/content/Context;)Lorg/smssecure/smssecure/ApplicationContext; │ │ move-result-object v0 │ │ + .line 91 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/ApplicationContext;->getJobManager()Lorg/whispersystems/jobqueue/JobManager; │ │ move-result-object v0 │ │ new-instance v1, Lorg/whispersystems/jobqueue/EncryptionKeys; │ │ iget-object v2, p0, Lorg/smssecure/smssecure/DatabaseUpgradeActivity;->masterSecret:Lorg/smssecure/smssecure/crypto/MasterSecret; │ │ + .line 92 │ invoke-static {v2}, Lorg/smssecure/smssecure/util/ParcelUtil;->serialize(Landroid/os/Parcelable;)[B │ │ move-result-object v2 │ │ invoke-direct {v1, v2}, Lorg/whispersystems/jobqueue/EncryptionKeys;->([B)V │ │ invoke-virtual {v0, v1}, Lorg/whispersystems/jobqueue/JobManager;->setEncryptionKeys(Lorg/whispersystems/jobqueue/EncryptionKeys;)V ├── smali/org/smssecure/smssecure/ExportFragment$ExportEncryptedTask.smali │ @@ -166,54 +166,63 @@ │ │ goto :goto_0 │ │ .line 176 │ :pswitch_0 │ const v1, 0x7f0801eb │ │ + .line 177 │ invoke-virtual {v0, v1}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v1 │ │ + .line 176 │ invoke-static {v0, v1, v2}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast; │ │ move-result-object v0 │ │ + .line 178 │ invoke-virtual {v0}, Landroid/widget/Toast;->show()V │ │ goto :goto_0 │ │ .line 166 │ :pswitch_1 │ const v1, 0x7f0801e7 │ │ + .line 167 │ invoke-virtual {v0, v1}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v1 │ │ + .line 166 │ invoke-static {v0, v1, v2}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast; │ │ move-result-object v0 │ │ + .line 168 │ invoke-virtual {v0}, Landroid/widget/Toast;->show()V │ │ goto :goto_0 │ │ .line 171 │ :pswitch_2 │ const v1, 0x7f0801e8 │ │ + .line 172 │ invoke-virtual {v0, v1}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v1 │ │ + .line 171 │ invoke-static {v0, v1, v2}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast; │ │ move-result-object v0 │ │ + .line 173 │ invoke-virtual {v0}, Landroid/widget/Toast;->show()V │ │ goto :goto_0 │ │ .line 164 │ :pswitch_data_0 │ .packed-switch 0x0 │ @@ -244,40 +253,43 @@ │ │ invoke-virtual {v0}, Lorg/smssecure/smssecure/ExportFragment;->getActivity()Landroid/support/v4/app/FragmentActivity; │ │ move-result-object v0 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/ExportFragment$ExportEncryptedTask;->this$0:Lorg/smssecure/smssecure/ExportFragment; │ │ + .line 151 │ invoke-virtual {v1}, Lorg/smssecure/smssecure/ExportFragment;->getActivity()Landroid/support/v4/app/FragmentActivity; │ │ move-result-object v1 │ │ const v2, 0x7f08005e │ │ invoke-virtual {v1, v2}, Landroid/support/v4/app/FragmentActivity;->getString(I)Ljava/lang/String; │ │ move-result-object v1 │ │ iget-object v2, p0, Lorg/smssecure/smssecure/ExportFragment$ExportEncryptedTask;->this$0:Lorg/smssecure/smssecure/ExportFragment; │ │ + .line 152 │ invoke-virtual {v2}, Lorg/smssecure/smssecure/ExportFragment;->getActivity()Landroid/support/v4/app/FragmentActivity; │ │ move-result-object v2 │ │ const v3, 0x7f0801ec │ │ invoke-virtual {v2, v3}, Landroid/support/v4/app/FragmentActivity;->getString(I)Ljava/lang/String; │ │ move-result-object v2 │ │ const/4 v3, 0x1 │ │ const/4 v4, 0x0 │ │ + .line 150 │ invoke-static {v0, v1, v2, v3, v4}, Landroid/app/ProgressDialog;->show(Landroid/content/Context;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ZZ)Landroid/app/ProgressDialog; │ │ move-result-object v0 │ │ iput-object v0, p0, Lorg/smssecure/smssecure/ExportFragment$ExportEncryptedTask;->dialog:Landroid/app/ProgressDialog; │ │ .line 154 ├── smali/org/smssecure/smssecure/ExportFragment$ExportPlaintextTask.smali │ @@ -174,54 +174,63 @@ │ │ goto :goto_0 │ │ .line 137 │ :pswitch_0 │ const v1, 0x7f0801eb │ │ + .line 138 │ invoke-virtual {v0, v1}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v1 │ │ + .line 137 │ invoke-static {v0, v1, v2}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast; │ │ move-result-object v0 │ │ + .line 139 │ invoke-virtual {v0}, Landroid/widget/Toast;->show()V │ │ goto :goto_0 │ │ .line 127 │ :pswitch_1 │ const v1, 0x7f0801e7 │ │ + .line 128 │ invoke-virtual {v0, v1}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v1 │ │ + .line 127 │ invoke-static {v0, v1, v2}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast; │ │ move-result-object v0 │ │ + .line 129 │ invoke-virtual {v0}, Landroid/widget/Toast;->show()V │ │ goto :goto_0 │ │ .line 132 │ :pswitch_2 │ const v1, 0x7f0801e8 │ │ + .line 133 │ invoke-virtual {v0, v1}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v1 │ │ + .line 132 │ invoke-static {v0, v1, v2}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast; │ │ move-result-object v0 │ │ + .line 134 │ invoke-virtual {v0}, Landroid/widget/Toast;->show()V │ │ goto :goto_0 │ │ .line 125 │ :pswitch_data_0 │ .packed-switch 0x0 │ @@ -252,40 +261,43 @@ │ │ invoke-virtual {v0}, Lorg/smssecure/smssecure/ExportFragment;->getActivity()Landroid/support/v4/app/FragmentActivity; │ │ move-result-object v0 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/ExportFragment$ExportPlaintextTask;->this$0:Lorg/smssecure/smssecure/ExportFragment; │ │ + .line 96 │ invoke-virtual {v1}, Lorg/smssecure/smssecure/ExportFragment;->getActivity()Landroid/support/v4/app/FragmentActivity; │ │ move-result-object v1 │ │ const v2, 0x7f08005e │ │ invoke-virtual {v1, v2}, Landroid/support/v4/app/FragmentActivity;->getString(I)Ljava/lang/String; │ │ move-result-object v1 │ │ iget-object v2, p0, Lorg/smssecure/smssecure/ExportFragment$ExportPlaintextTask;->this$0:Lorg/smssecure/smssecure/ExportFragment; │ │ + .line 97 │ invoke-virtual {v2}, Lorg/smssecure/smssecure/ExportFragment;->getActivity()Landroid/support/v4/app/FragmentActivity; │ │ move-result-object v2 │ │ const v3, 0x7f0801ed │ │ invoke-virtual {v2, v3}, Landroid/support/v4/app/FragmentActivity;->getString(I)Ljava/lang/String; │ │ move-result-object v2 │ │ const/4 v3, 0x1 │ │ const/4 v4, 0x0 │ │ + .line 95 │ invoke-static {v0, v1, v2, v3, v4}, Landroid/app/ProgressDialog;->show(Landroid/content/Context;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ZZ)Landroid/app/ProgressDialog; │ │ move-result-object v0 │ │ iput-object v0, p0, Lorg/smssecure/smssecure/ExportFragment$ExportPlaintextTask;->dialog:Landroid/app/ProgressDialog; │ │ .line 99 ├── smali/org/smssecure/smssecure/ExportFragment.smali │ @@ -19,15 +19,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 25 │ invoke-direct {p0}, Landroid/support/v4/app/Fragment;->()V │ │ - .line 145 │ return-void │ .end method │ │ .method static synthetic access$000(Lorg/smssecure/smssecure/ExportFragment;)V │ .locals 0 │ │ .prologue ├── smali/org/smssecure/smssecure/GroupCreateActivity.smali │ @@ -90,15 +90,14 @@ │ iput-object v0, p0, Lorg/smssecure/smssecure/GroupCreateActivity;->groupRecipient:Lorg/smssecure/smssecure/recipients/Recipient; │ │ .line 83 │ const-wide/16 v0, -0x1 │ │ iput-wide v0, p0, Lorg/smssecure/smssecure/GroupCreateActivity;->groupThread:J │ │ - .line 258 │ return-void │ .end method │ │ .method static synthetic access$000(Lorg/smssecure/smssecure/GroupCreateActivity;Lorg/smssecure/smssecure/recipients/Recipient;)V │ .locals 0 │ │ .prologue │ @@ -327,18 +326,20 @@ │ .line 233 │ invoke-static {p0}, Lorg/smssecure/smssecure/database/DatabaseFactory;->getThreadDatabase(Landroid/content/Context;)Lorg/smssecure/smssecure/database/ThreadDatabase; │ │ move-result-object v1 │ │ const/4 v2, 0x2 │ │ + .line 234 │ invoke-virtual {v1, v0, v2}, Lorg/smssecure/smssecure/database/ThreadDatabase;->getThreadIdFor(Lorg/smssecure/smssecure/recipients/Recipients;I)J │ │ move-result-wide v0 │ │ + .line 233 │ return-wide v0 │ .end method │ │ .method private handleGroupCreate()V │ .locals 4 │ │ .prologue ├── smali/org/smssecure/smssecure/GroupMembersDialog$GroupMembersOnClickListener.smali │ @@ -55,22 +55,24 @@ │ .line 83 │ iget-object v1, p0, Lorg/smssecure/smssecure/GroupMembersDialog$GroupMembersOnClickListener;->context:Landroid/content/Context; │ │ new-instance v2, Landroid/graphics/Rect; │ │ invoke-direct {v2, v3, v3, v3, v3}, Landroid/graphics/Rect;->(IIII)V │ │ + .line 84 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/recipients/Recipient;->getContactUri()Landroid/net/Uri; │ │ move-result-object v0 │ │ const/4 v3, 0x3 │ │ const/4 v4, 0x0 │ │ + .line 83 │ invoke-static {v1, v2, v0, v3, v4}, Landroid/provider/ContactsContract$QuickContact;->showQuickContact(Landroid/content/Context;Landroid/graphics/Rect;Landroid/net/Uri;I[Ljava/lang/String;)V │ │ .line 92 │ :goto_0 │ return-void │ │ .line 87 ├── smali/org/smssecure/smssecure/GroupMembersDialog.smali │ @@ -139,14 +139,15 @@ │ .line 44 │ iget-object v1, p0, Lorg/smssecure/smssecure/GroupMembersDialog;->context:Landroid/content/Context; │ │ invoke-static {v1}, Lorg/smssecure/smssecure/database/DatabaseFactory;->getGroupDatabase(Landroid/content/Context;)Lorg/smssecure/smssecure/database/GroupDatabase; │ │ move-result-object v1 │ │ + .line 45 │ invoke-static {v0}, Lorg/smssecure/smssecure/util/GroupUtil;->getDecodedId(Ljava/lang/String;)[B │ │ move-result-object v0 │ │ const/4 v2, 0x1 │ │ invoke-virtual {v1, v0, v2}, Lorg/smssecure/smssecure/database/GroupDatabase;->getGroupMembers([BZ)Lorg/smssecure/smssecure/recipients/Recipients; ├── smali/org/smssecure/smssecure/ImageMediaAdapter$OnMediaClickListener.smali │ @@ -89,20 +89,22 @@ │ # invokes: Lorg/smssecure/smssecure/ImageMediaAdapter;->getContext()Landroid/content/Context; │ invoke-static {v1}, Lorg/smssecure/smssecure/ImageMediaAdapter;->access$200(Lorg/smssecure/smssecure/ImageMediaAdapter;)Landroid/content/Context; │ │ move-result-object v1 │ │ iget-object v2, p0, Lorg/smssecure/smssecure/ImageMediaAdapter$OnMediaClickListener;->imageRecord:Lorg/smssecure/smssecure/database/ImageDatabase$ImageRecord; │ │ + .line 93 │ invoke-virtual {v2}, Lorg/smssecure/smssecure/database/ImageDatabase$ImageRecord;->getAddress()Ljava/lang/String; │ │ move-result-object v2 │ │ const/4 v3, 0x1 │ │ + .line 92 │ invoke-static {v1, v2, v3}, Lorg/smssecure/smssecure/recipients/RecipientFactory;->getRecipientsFromString(Landroid/content/Context;Ljava/lang/String;Z)Lorg/smssecure/smssecure/recipients/Recipients; │ │ move-result-object v1 │ │ .line 95 │ if-eqz v1, :cond_0 ├── smali/org/smssecure/smssecure/ImportExportActivity.smali │ @@ -24,15 +24,14 @@ │ .line 23 │ new-instance v0, Lorg/smssecure/smssecure/util/DynamicTheme; │ │ invoke-direct {v0}, Lorg/smssecure/smssecure/util/DynamicTheme;->()V │ │ iput-object v0, p0, Lorg/smssecure/smssecure/ImportExportActivity;->dynamicTheme:Lorg/smssecure/smssecure/util/DynamicTheme; │ │ - .line 92 │ return-void │ .end method │ │ .method static synthetic access$000(Lorg/smssecure/smssecure/ImportExportActivity;)Landroid/support/v4/view/ViewPager; │ .locals 1 │ │ .prologue ├── smali/org/smssecure/smssecure/ImportFragment.smali │ @@ -21,15 +21,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 28 │ invoke-direct {p0}, Landroid/support/v4/app/Fragment;->()V │ │ - .line 189 │ return-void │ .end method │ │ .method static synthetic access$000(Lorg/smssecure/smssecure/ImportFragment;)V │ .locals 0 │ │ .prologue ├── smali/org/smssecure/smssecure/ImportFragment$ImportEncryptedBackupTask.smali │ @@ -187,38 +187,44 @@ │ │ goto :goto_0 │ │ .line 210 │ :pswitch_1 │ const v1, 0x7f080070 │ │ + .line 211 │ invoke-virtual {v0, v1}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v1 │ │ + .line 210 │ invoke-static {v0, v1, v2}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast; │ │ move-result-object v0 │ │ + .line 212 │ invoke-virtual {v0}, Landroid/widget/Toast;->show()V │ │ goto :goto_0 │ │ .line 215 │ :pswitch_2 │ const v1, 0x7f080069 │ │ + .line 216 │ invoke-virtual {v0, v1}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v1 │ │ + .line 215 │ invoke-static {v0, v1, v2}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast; │ │ move-result-object v0 │ │ + .line 217 │ invoke-virtual {v0}, Landroid/widget/Toast;->show()V │ │ goto :goto_0 │ │ .line 208 │ nop │ │ @@ -253,40 +259,43 @@ │ │ invoke-virtual {v1}, Lorg/smssecure/smssecure/ImportFragment;->getActivity()Landroid/support/v4/app/FragmentActivity; │ │ move-result-object v1 │ │ iget-object v2, p0, Lorg/smssecure/smssecure/ImportFragment$ImportEncryptedBackupTask;->this$0:Lorg/smssecure/smssecure/ImportFragment; │ │ + .line 194 │ invoke-virtual {v2}, Lorg/smssecure/smssecure/ImportFragment;->getActivity()Landroid/support/v4/app/FragmentActivity; │ │ move-result-object v2 │ │ const v3, 0x7f08006f │ │ invoke-virtual {v2, v3}, Landroid/support/v4/app/FragmentActivity;->getString(I)Ljava/lang/String; │ │ move-result-object v2 │ │ iget-object v3, p0, Lorg/smssecure/smssecure/ImportFragment$ImportEncryptedBackupTask;->this$0:Lorg/smssecure/smssecure/ImportFragment; │ │ + .line 195 │ invoke-virtual {v3}, Lorg/smssecure/smssecure/ImportFragment;->getActivity()Landroid/support/v4/app/FragmentActivity; │ │ move-result-object v3 │ │ const v4, 0x7f0801f2 │ │ invoke-virtual {v3, v4}, Landroid/support/v4/app/FragmentActivity;->getString(I)Ljava/lang/String; │ │ move-result-object v3 │ │ const/4 v4, 0x1 │ │ const/4 v5, 0x0 │ │ + .line 193 │ invoke-static {v1, v2, v3, v4, v5}, Landroid/app/ProgressDialog;->show(Landroid/content/Context;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ZZ)Landroid/app/ProgressDialog; │ │ move-result-object v1 │ │ # setter for: Lorg/smssecure/smssecure/ImportFragment;->progressDialog:Landroid/app/ProgressDialog; │ invoke-static {v0, v1}, Lorg/smssecure/smssecure/ImportFragment;->access$602(Lorg/smssecure/smssecure/ImportFragment;Landroid/app/ProgressDialog;)Landroid/app/ProgressDialog; ├── smali/org/smssecure/smssecure/ImportFragment$ImportPlaintextBackupTask.smali │ @@ -182,54 +182,63 @@ │ │ goto :goto_0 │ │ .line 167 │ :pswitch_0 │ const v1, 0x7f08006b │ │ + .line 168 │ invoke-virtual {v0, v1}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v1 │ │ + .line 167 │ invoke-static {v0, v1, v2}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast; │ │ move-result-object v0 │ │ + .line 169 │ invoke-virtual {v0}, Landroid/widget/Toast;->show()V │ │ goto :goto_0 │ │ .line 157 │ :pswitch_1 │ const v1, 0x7f080071 │ │ + .line 158 │ invoke-virtual {v0, v1}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v1 │ │ + .line 157 │ invoke-static {v0, v1, v2}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast; │ │ move-result-object v0 │ │ + .line 159 │ invoke-virtual {v0}, Landroid/widget/Toast;->show()V │ │ goto :goto_0 │ │ .line 162 │ :pswitch_2 │ const v1, 0x7f080069 │ │ + .line 163 │ invoke-virtual {v0, v1}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v1 │ │ + .line 162 │ invoke-static {v0, v1, v2}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast; │ │ move-result-object v0 │ │ + .line 164 │ invoke-virtual {v0}, Landroid/widget/Toast;->show()V │ │ goto :goto_0 │ │ .line 155 │ :pswitch_data_0 │ .packed-switch 0x0 │ @@ -262,40 +271,43 @@ │ │ invoke-virtual {v1}, Lorg/smssecure/smssecure/ImportFragment;->getActivity()Landroid/support/v4/app/FragmentActivity; │ │ move-result-object v1 │ │ iget-object v2, p0, Lorg/smssecure/smssecure/ImportFragment$ImportPlaintextBackupTask;->this$0:Lorg/smssecure/smssecure/ImportFragment; │ │ + .line 141 │ invoke-virtual {v2}, Lorg/smssecure/smssecure/ImportFragment;->getActivity()Landroid/support/v4/app/FragmentActivity; │ │ move-result-object v2 │ │ const v3, 0x7f08006f │ │ invoke-virtual {v2, v3}, Landroid/support/v4/app/FragmentActivity;->getString(I)Ljava/lang/String; │ │ move-result-object v2 │ │ iget-object v3, p0, Lorg/smssecure/smssecure/ImportFragment$ImportPlaintextBackupTask;->this$0:Lorg/smssecure/smssecure/ImportFragment; │ │ + .line 142 │ invoke-virtual {v3}, Lorg/smssecure/smssecure/ImportFragment;->getActivity()Landroid/support/v4/app/FragmentActivity; │ │ move-result-object v3 │ │ const v4, 0x7f08006d │ │ invoke-virtual {v3, v4}, Landroid/support/v4/app/FragmentActivity;->getString(I)Ljava/lang/String; │ │ move-result-object v3 │ │ const/4 v4, 0x1 │ │ const/4 v5, 0x0 │ │ + .line 140 │ invoke-static {v1, v2, v3, v4, v5}, Landroid/app/ProgressDialog;->show(Landroid/content/Context;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ZZ)Landroid/app/ProgressDialog; │ │ move-result-object v1 │ │ # setter for: Lorg/smssecure/smssecure/ImportFragment;->progressDialog:Landroid/app/ProgressDialog; │ invoke-static {v0, v1}, Lorg/smssecure/smssecure/ImportFragment;->access$602(Lorg/smssecure/smssecure/ImportFragment;Landroid/app/ProgressDialog;)Landroid/app/ProgressDialog; ├── smali/org/smssecure/smssecure/IntroScreenActivity$IntroScreen$1.smali │ @@ -33,52 +33,58 @@ │ │ const v1, 0x7f020143 │ │ const v2, 0x7f0801fa │ │ const v3, 0x7f0801f6 │ │ + .line 46 │ invoke-static {v1, v2, v3}, Lorg/smssecure/smssecure/BasicIntroFragment;->newInstance(III)Lorg/smssecure/smssecure/BasicIntroFragment; │ │ move-result-object v1 │ │ invoke-direct {v0, v4, v1}, Lorg/smssecure/smssecure/IntroPagerAdapter$IntroPage;->(ILandroid/support/v4/app/Fragment;)V │ │ + .line 45 │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/IntroScreenActivity$IntroScreen$1;->add(Ljava/lang/Object;)Z │ │ .line 49 │ new-instance v0, Lorg/smssecure/smssecure/IntroPagerAdapter$IntroPage; │ │ const v1, 0x7f020145 │ │ const v2, 0x7f0801f4 │ │ const v3, 0x7f0801f5 │ │ + .line 50 │ invoke-static {v1, v2, v3}, Lorg/smssecure/smssecure/BasicIntroFragment;->newInstance(III)Lorg/smssecure/smssecure/BasicIntroFragment; │ │ move-result-object v1 │ │ invoke-direct {v0, v4, v1}, Lorg/smssecure/smssecure/IntroPagerAdapter$IntroPage;->(ILandroid/support/v4/app/Fragment;)V │ │ + .line 49 │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/IntroScreenActivity$IntroScreen$1;->add(Ljava/lang/Object;)Z │ │ .line 53 │ new-instance v0, Lorg/smssecure/smssecure/IntroPagerAdapter$IntroPage; │ │ const v1, 0x7f020144 │ │ const v2, 0x7f0801f8 │ │ const v3, 0x7f0801f9 │ │ + .line 54 │ invoke-static {v1, v2, v3}, Lorg/smssecure/smssecure/BasicIntroFragment;->newInstance(III)Lorg/smssecure/smssecure/BasicIntroFragment; │ │ move-result-object v1 │ │ invoke-direct {v0, v4, v1}, Lorg/smssecure/smssecure/IntroPagerAdapter$IntroPage;->(ILandroid/support/v4/app/Fragment;)V │ │ + .line 53 │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/IntroScreenActivity$IntroScreen$1;->add(Ljava/lang/Object;)Z │ │ .line 57 │ return-void │ .end method ├── smali/org/smssecure/smssecure/IntroScreenActivity$AppUpgradeReceiver.smali │ @@ -31,14 +31,15 @@ │ │ invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ + .line 185 │ invoke-virtual {p2}, Landroid/content/Intent;->getData()Landroid/net/Uri; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Landroid/net/Uri;->getSchemeSpecificPart()Ljava/lang/String; │ │ move-result-object v0 │ @@ -98,18 +99,20 @@ │ .line 191 │ new-instance v1, Landroid/support/v4/app/NotificationCompat$Builder; │ │ invoke-direct {v1, p1}, Landroid/support/v4/app/NotificationCompat$Builder;->(Landroid/content/Context;)V │ │ const v2, 0x7f02011c │ │ + .line 192 │ invoke-virtual {v1, v2}, Landroid/support/v4/app/NotificationCompat$Builder;->setSmallIcon(I)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v1 │ │ + .line 193 │ invoke-virtual {p1}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; │ │ move-result-object v2 │ │ const v3, 0x7f0e015e │ │ invoke-virtual {v2, v3}, Landroid/content/res/Resources;->getColor(I)I │ @@ -118,70 +121,77 @@ │ │ invoke-virtual {v1, v2}, Landroid/support/v4/app/NotificationCompat$Builder;->setColor(I)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v1 │ │ const v2, 0x7f0801fa │ │ + .line 194 │ invoke-virtual {p1, v2}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v2 │ │ invoke-virtual {v1, v2}, Landroid/support/v4/app/NotificationCompat$Builder;->setContentTitle(Ljava/lang/CharSequence;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v1 │ │ const v2, 0x7f0801f7 │ │ + .line 195 │ invoke-virtual {p1, v2}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v2 │ │ invoke-virtual {v1, v2}, Landroid/support/v4/app/NotificationCompat$Builder;->setContentText(Ljava/lang/CharSequence;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v1 │ │ new-instance v2, Landroid/support/v4/app/NotificationCompat$BigTextStyle; │ │ invoke-direct {v2}, Landroid/support/v4/app/NotificationCompat$BigTextStyle;->()V │ │ const v3, 0x7f0801fb │ │ + .line 196 │ invoke-virtual {p1, v3}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v3 │ │ invoke-virtual {v2, v3}, Landroid/support/v4/app/NotificationCompat$BigTextStyle;->bigText(Ljava/lang/CharSequence;)Landroid/support/v4/app/NotificationCompat$BigTextStyle; │ │ move-result-object v2 │ │ invoke-virtual {v1, v2}, Landroid/support/v4/app/NotificationCompat$Builder;->setStyle(Landroid/support/v4/app/NotificationCompat$Style;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v1 │ │ + .line 197 │ invoke-virtual {v1, v4}, Landroid/support/v4/app/NotificationCompat$Builder;->setAutoCancel(Z)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v1 │ │ + .line 198 │ invoke-virtual {v1, v4}, Landroid/support/v4/app/NotificationCompat$Builder;->setVisibility(I)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v1 │ │ const/4 v2, 0x0 │ │ const/high16 v3, 0x8000000 │ │ + .line 199 │ invoke-static {p1, v2, v0, v3}, Landroid/app/PendingIntent;->getActivity(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent; │ │ move-result-object v0 │ │ invoke-virtual {v1, v0}, Landroid/support/v4/app/NotificationCompat$Builder;->setContentIntent(Landroid/app/PendingIntent;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ move-result-object v0 │ │ + .line 202 │ invoke-virtual {v0}, Landroid/support/v4/app/NotificationCompat$Builder;->build()Landroid/app/Notification; │ │ move-result-object v0 │ │ .line 203 │ invoke-static {p1}, Lorg/smssecure/smssecure/util/ServiceUtil;->getNotificationManager(Landroid/content/Context;)Landroid/app/NotificationManager; ├── smali/org/smssecure/smssecure/IntroScreenActivity.smali │ @@ -29,15 +29,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 37 │ invoke-direct {p0}, Lorg/smssecure/smssecure/BaseActionBarActivity;->()V │ │ - .line 181 │ return-void │ .end method │ │ .method static synthetic access$000()Ljava/lang/String; │ .locals 1 │ │ .prologue ├── smali/org/smssecure/smssecure/KeyScanningActivity.smali │ @@ -214,14 +214,15 @@ │ │ const/4 v1, 0x1 │ │ invoke-static {p0, v0, v1}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast; │ │ move-result-object v0 │ │ + .line 101 │ invoke-virtual {v0}, Landroid/widget/Toast;->show()V │ │ goto :goto_0 │ .end method │ │ .method public onOptionsItemSelected(Landroid/view/MenuItem;)Z │ .locals 2 ├── smali/org/smssecure/smssecure/IntroScreenActivity$OnPageChangeListener.smali │ @@ -68,36 +68,39 @@ │ rem-int/2addr v0, v1 │ │ .line 173 │ iget-object v1, p0, Lorg/smssecure/smssecure/IntroScreenActivity$OnPageChangeListener;->evaluator:Lcom/nineoldandroids/animation/ArgbEvaluator; │ │ iget-object v2, p0, Lorg/smssecure/smssecure/IntroScreenActivity$OnPageChangeListener;->introScreen:Lorg/smssecure/smssecure/IntroScreenActivity$IntroScreen; │ │ + .line 174 │ invoke-virtual {v2, p1}, Lorg/smssecure/smssecure/IntroScreenActivity$IntroScreen;->getPage(I)Lorg/smssecure/smssecure/IntroPagerAdapter$IntroPage; │ │ move-result-object v2 │ │ iget v2, v2, Lorg/smssecure/smssecure/IntroPagerAdapter$IntroPage;->backgroundColor:I │ │ invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v2 │ │ iget-object v3, p0, Lorg/smssecure/smssecure/IntroScreenActivity$OnPageChangeListener;->introScreen:Lorg/smssecure/smssecure/IntroScreenActivity$IntroScreen; │ │ + .line 175 │ invoke-virtual {v3, v0}, Lorg/smssecure/smssecure/IntroScreenActivity$IntroScreen;->getPage(I)Lorg/smssecure/smssecure/IntroPagerAdapter$IntroPage; │ │ move-result-object v0 │ │ iget v0, v0, Lorg/smssecure/smssecure/IntroPagerAdapter$IntroPage;->backgroundColor:I │ │ invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v0 │ │ + .line 173 │ invoke-virtual {v1, p2, v2, v0}, Lcom/nineoldandroids/animation/ArgbEvaluator;->evaluate(FLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Ljava/lang/Integer; │ │ invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I ├── smali/org/smssecure/smssecure/Manifest.smali │ @@ -7,10 +7,9 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 10 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 11 │ return-void │ .end method ├── smali/org/smssecure/smssecure/MediaOverviewActivity$2$1.smali │ @@ -123,24 +123,27 @@ │ │ move-result-object v4 │ │ invoke-virtual {v4}, Lorg/smssecure/smssecure/attachments/Attachment;->getDataUri()Landroid/net/Uri; │ │ move-result-object v4 │ │ + .line 166 │ invoke-virtual {v2}, Lorg/smssecure/smssecure/database/ImageDatabase$ImageRecord;->getContentType()Ljava/lang/String; │ │ move-result-object v5 │ │ + .line 167 │ invoke-virtual {v2}, Lorg/smssecure/smssecure/database/ImageDatabase$ImageRecord;->getDate()J │ │ move-result-wide v6 │ │ invoke-direct {v3, v4, v5, v6, v7}, Lorg/smssecure/smssecure/util/SaveAttachmentTask$Attachment;->(Landroid/net/Uri;Ljava/lang/String;J)V │ │ + .line 165 │ invoke-interface {v1, v3}, Ljava/util/List;->add(Ljava/lang/Object;)Z │ │ goto :goto_0 │ │ .line 170 │ :cond_0 │ return-object v1 ├── smali/org/smssecure/smssecure/MediaOverviewActivity$2.smali │ @@ -50,12 +50,13 @@ │ │ invoke-direct {v0, p0, v1, v2, v3}, Lorg/smssecure/smssecure/MediaOverviewActivity$2$1;->(Lorg/smssecure/smssecure/MediaOverviewActivity$2;Landroid/content/Context;II)V │ │ const/4 v1, 0x0 │ │ new-array v1, v1, [Ljava/lang/Void; │ │ + .line 180 │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/MediaOverviewActivity$2$1;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 181 │ return-void │ .end method ├── smali/org/smssecure/smssecure/MediaOverviewActivity.smali │ @@ -69,15 +69,14 @@ │ .line 64 │ new-instance v0, Lorg/smssecure/smssecure/util/DynamicLanguage; │ │ invoke-direct {v0}, Lorg/smssecure/smssecure/util/DynamicLanguage;->()V │ │ iput-object v0, p0, Lorg/smssecure/smssecure/MediaOverviewActivity;->dynamicLanguage:Lorg/smssecure/smssecure/util/DynamicLanguage; │ │ - .line 228 │ return-void │ .end method │ │ .method static synthetic access$000(Lorg/smssecure/smssecure/MediaOverviewActivity;)V │ .locals 0 │ │ .prologue │ @@ -118,36 +117,39 @@ │ │ iget-object v0, p0, Lorg/smssecure/smssecure/MediaOverviewActivity;->recipient:Lorg/smssecure/smssecure/recipients/Recipient; │ │ if-nez v0, :cond_0 │ │ const v0, 0x7f080011 │ │ + .line 117 │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/MediaOverviewActivity;->getString(I)Ljava/lang/String; │ │ move-result-object v0 │ │ + .line 116 │ :goto_0 │ invoke-virtual {v1, v0}, Landroid/support/v7/app/ActionBar;->setTitle(Ljava/lang/CharSequence;)V │ │ .line 119 │ return-void │ │ - .line 116 │ + .line 117 │ :cond_0 │ const v0, 0x7f080012 │ │ const/4 v2, 0x1 │ │ new-array v2, v2, [Ljava/lang/Object; │ │ const/4 v3, 0x0 │ │ iget-object v4, p0, Lorg/smssecure/smssecure/MediaOverviewActivity;->recipient:Lorg/smssecure/smssecure/recipients/Recipient; │ │ + .line 118 │ invoke-virtual {v4}, Lorg/smssecure/smssecure/recipients/Recipient;->toShortString()Ljava/lang/String; │ │ move-result-object v4 │ │ aput-object v4, v2, v3 │ │ invoke-virtual {p0, v0, v2}, Lorg/smssecure/smssecure/MediaOverviewActivity;->getString(I[Ljava/lang/Object;)Ljava/lang/String; │ @@ -282,22 +284,24 @@ │ .line 152 │ new-instance v0, Lorg/smssecure/smssecure/MediaOverviewActivity$2; │ │ invoke-direct {v0, p0, p0}, Lorg/smssecure/smssecure/MediaOverviewActivity$2;->(Lorg/smssecure/smssecure/MediaOverviewActivity;Landroid/content/Context;)V │ │ iget-object v1, p0, Lorg/smssecure/smssecure/MediaOverviewActivity;->gridView:Landroid/support/v7/widget/RecyclerView; │ │ + .line 182 │ invoke-virtual {v1}, Landroid/support/v7/widget/RecyclerView;->getAdapter()Landroid/support/v7/widget/RecyclerView$Adapter; │ │ move-result-object v1 │ │ invoke-virtual {v1}, Landroid/support/v7/widget/RecyclerView$Adapter;->getItemCount()I │ │ move-result v1 │ │ + .line 152 │ invoke-static {p0, v0, v1}, Lorg/smssecure/smssecure/util/SaveAttachmentTask;->showWarningDialog(Landroid/content/Context;Landroid/content/DialogInterface$OnClickListener;I)V │ │ .line 183 │ return-void │ .end method │ │ .method private setFullscreenIfPossible()V ├── smali/org/smssecure/smssecure/MediaPreviewActivity.smali │ @@ -131,20 +131,22 @@ │ cmp-long v0, v0, v2 │ │ if-lez v0, :cond_0 │ │ .line 97 │ iget-wide v0, p0, Lorg/smssecure/smssecure/MediaPreviewActivity;->date:J │ │ + .line 98 │ invoke-static {}, Ljava/lang/System;->currentTimeMillis()J │ │ move-result-wide v2 │ │ const-wide/32 v4, 0xea60 │ │ + .line 97 │ invoke-static/range {v0 .. v5}, Lorg/smssecure/smssecure/util/DateUtils;->getRelativeTimeSpanString(JJJ)Ljava/lang/CharSequence; │ │ move-result-object v0 │ │ .line 103 │ :goto_0 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/MediaPreviewActivity;->getSupportActionBar()Landroid/support/v7/app/ActionBar; │ @@ -180,14 +182,15 @@ │ │ goto :goto_0 │ │ .line 103 │ :cond_1 │ iget-object v1, p0, Lorg/smssecure/smssecure/MediaPreviewActivity;->recipient:Lorg/smssecure/smssecure/recipients/Recipient; │ │ + .line 104 │ invoke-virtual {v1}, Lorg/smssecure/smssecure/recipients/Recipient;->toShortString()Ljava/lang/String; │ │ move-result-object v1 │ │ goto :goto_1 │ .end method ├── smali/org/smssecure/smssecure/MessageDetailsActivity.smali │ @@ -100,15 +100,14 @@ │ .line 91 │ new-instance v0, Lorg/smssecure/smssecure/util/DynamicLanguage; │ │ invoke-direct {v0}, Lorg/smssecure/smssecure/util/DynamicLanguage;->()V │ │ iput-object v0, p0, Lorg/smssecure/smssecure/MessageDetailsActivity;->dynamicLanguage:Lorg/smssecure/smssecure/util/DynamicLanguage; │ │ - .line 290 │ return-void │ .end method │ │ .method static synthetic access$000(Lorg/smssecure/smssecure/MessageDetailsActivity;Lorg/smssecure/smssecure/color/MaterialColor;)V │ .locals 0 │ │ .prologue │ @@ -1087,28 +1086,30 @@ │ │ const-string v2, "type" │ │ invoke-virtual {v1, v2}, Landroid/content/Intent;->getStringExtra(Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v1 │ │ + .line 265 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/MessageDetailsActivity;->getIntent()Landroid/content/Intent; │ │ move-result-object v2 │ │ const-string v3, "message_id" │ │ const-wide/16 v4, -0x1 │ │ invoke-virtual {v2, v3, v4, v5}, Landroid/content/Intent;->getLongExtra(Ljava/lang/String;J)J │ │ move-result-wide v2 │ │ invoke-direct {v0, p0, v1, v2, v3}, Lorg/smssecure/smssecure/database/loaders/MessageDetailsLoader;->(Landroid/content/Context;Ljava/lang/String;J)V │ │ + .line 264 │ return-object v0 │ .end method │ │ .method public onLoadFinished(Landroid/support/v4/content/Loader;Landroid/database/Cursor;)V │ .locals 2 │ .annotation system Ldalvik/annotation/Signature; │ value = { ├── smali/org/smssecure/smssecure/MessageDetailsActivity$MessageRecipientAsyncTask.smali │ @@ -171,14 +171,15 @@ │ move-result-object v0 │ │ .line 326 │ invoke-static {v1}, Lorg/smssecure/smssecure/database/DatabaseFactory;->getGroupDatabase(Landroid/content/Context;)Lorg/smssecure/smssecure/database/GroupDatabase; │ │ move-result-object v1 │ │ + .line 327 │ invoke-static {v0}, Lorg/smssecure/smssecure/util/GroupUtil;->getDecodedId(Ljava/lang/String;)[B │ │ move-result-object v0 │ │ const/4 v2, 0x0 │ │ invoke-virtual {v1, v0, v2}, Lorg/smssecure/smssecure/database/GroupDatabase;->getGroupMembers([BZ)Lorg/smssecure/smssecure/recipients/Recipients; ├── smali/org/smssecure/smssecure/PanicResponderActivity.smali │ @@ -87,22 +87,24 @@ │ invoke-virtual {v0, p0}, Linfo/guardianproject/trustedintents/TrustedIntents;->getIntentFromTrustedSender(Landroid/app/Activity;)Landroid/content/Intent; │ │ move-result-object v0 │ │ .line 32 │ if-eqz v0, :cond_0 │ │ + .line 33 │ invoke-static {p0}, Lorg/smssecure/smssecure/util/SilencePreferences;->isPasswordDisabled(Landroid/content/Context;)Z │ │ move-result v1 │ │ if-nez v1, :cond_0 │ │ const-string v1, "info.guardianproject.panic.action.TRIGGER" │ │ + .line 34 │ invoke-virtual {v0}, Landroid/content/Intent;->getAction()Ljava/lang/String; │ │ move-result-object v0 │ │ invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z │ │ move-result v0 ├── smali/org/smssecure/smssecure/PassphraseChangeActivity.smali │ @@ -37,15 +37,14 @@ │ .line 45 │ new-instance v0, Lorg/smssecure/smssecure/util/DynamicLanguage; │ │ invoke-direct {v0}, Lorg/smssecure/smssecure/util/DynamicLanguage;->()V │ │ iput-object v0, p0, Lorg/smssecure/smssecure/PassphraseChangeActivity;->dynamicLanguage:Lorg/smssecure/smssecure/util/DynamicLanguage; │ │ - .line 144 │ return-void │ .end method │ │ .method static synthetic access$200(Lorg/smssecure/smssecure/PassphraseChangeActivity;)V │ .locals 0 │ │ .prologue ├── smali/org/smssecure/smssecure/PassphrasePromptActivity$PassphraseActionListener.smali │ @@ -47,14 +47,15 @@ │ const/4 v1, 0x6 │ │ if-eq p2, v1, :cond_1 │ │ :cond_0 │ if-eqz p3, :cond_3 │ │ + .line 162 │ invoke-virtual {p3}, Landroid/view/KeyEvent;->getAction()I │ │ move-result v1 │ │ if-nez v1, :cond_3 │ │ if-nez p2, :cond_3 ├── smali/org/smssecure/smssecure/PassphrasePromptActivity.smali │ @@ -35,15 +35,14 @@ │ .line 54 │ new-instance v0, Lorg/smssecure/smssecure/util/DynamicLanguage; │ │ invoke-direct {v0}, Lorg/smssecure/smssecure/util/DynamicLanguage;->()V │ │ iput-object v0, p0, Lorg/smssecure/smssecure/PassphrasePromptActivity;->dynamicLanguage:Lorg/smssecure/smssecure/util/DynamicLanguage; │ │ - .line 192 │ return-void │ .end method │ │ .method static synthetic access$400(Lorg/smssecure/smssecure/PassphrasePromptActivity;)V │ .locals 0 │ │ .prologue │ @@ -163,18 +162,20 @@ │ invoke-virtual {v0, v1}, Landroid/widget/EditText;->setText(Ljava/lang/CharSequence;)V │ │ .line 118 │ iget-object v0, p0, Lorg/smssecure/smssecure/PassphrasePromptActivity;->passphraseText:Landroid/widget/EditText; │ │ const v1, 0x7f080099 │ │ + .line 119 │ invoke-virtual {p0, v1}, Lorg/smssecure/smssecure/PassphrasePromptActivity;->getString(I)Ljava/lang/String; │ │ move-result-object v1 │ │ + .line 118 │ invoke-virtual {v0, v1}, Landroid/widget/EditText;->setError(Ljava/lang/CharSequence;)V │ │ goto :goto_1 │ .end method │ │ .method private initializeResources()V │ .locals 7 ├── smali/org/smssecure/smssecure/PassphraseRequiredActionBarActivity.smali │ @@ -530,18 +530,20 @@ │ │ move-result-object v0 │ │ invoke-virtual {v0}, Landroid/support/v4/app/FragmentManager;->beginTransaction()Landroid/support/v4/app/FragmentTransaction; │ │ move-result-object v0 │ │ + .line 114 │ invoke-virtual {v0, p1, p2}, Landroid/support/v4/app/FragmentTransaction;->replace(ILandroid/support/v4/app/Fragment;)Landroid/support/v4/app/FragmentTransaction; │ │ move-result-object v0 │ │ + .line 115 │ invoke-virtual {v0}, Landroid/support/v4/app/FragmentTransaction;->commit()I │ │ .line 116 │ return-object p2 │ .end method │ │ .method protected final onCreate(Landroid/os/Bundle;)V ├── smali/org/smssecure/smssecure/R.smali │ @@ -7,10 +7,9 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 10 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 5867 │ return-void │ .end method ├── smali/org/smssecure/smssecure/ReceiveKeyDialog$AcceptListener$1.smali │ @@ -82,14 +82,15 @@ │ # getter for: Lorg/smssecure/smssecure/ReceiveKeyDialog$AcceptListener;->masterSecret:Lorg/smssecure/smssecure/crypto/MasterSecret; │ invoke-static {v3}, Lorg/smssecure/smssecure/ReceiveKeyDialog$AcceptListener;->access$300(Lorg/smssecure/smssecure/ReceiveKeyDialog$AcceptListener;)Lorg/smssecure/smssecure/crypto/MasterSecret; │ │ move-result-object v3 │ │ iget-object v4, p0, Lorg/smssecure/smssecure/ReceiveKeyDialog$AcceptListener$1;->this$1:Lorg/smssecure/smssecure/ReceiveKeyDialog$AcceptListener; │ │ + .line 200 │ # getter for: Lorg/smssecure/smssecure/ReceiveKeyDialog$AcceptListener;->messageRecord:Lorg/smssecure/smssecure/database/model/MessageRecord; │ invoke-static {v4}, Lorg/smssecure/smssecure/ReceiveKeyDialog$AcceptListener;->access$400(Lorg/smssecure/smssecure/ReceiveKeyDialog$AcceptListener;)Lorg/smssecure/smssecure/database/model/MessageRecord; │ │ move-result-object v4 │ │ invoke-virtual {v4}, Lorg/smssecure/smssecure/database/model/MessageRecord;->getIndividualRecipient()Lorg/smssecure/smssecure/recipients/Recipient; │ │ @@ -97,19 +98,21 @@ │ │ invoke-virtual {v4}, Lorg/smssecure/smssecure/recipients/Recipient;->getRecipientId()J │ │ move-result-wide v4 │ │ iget-object v6, p0, Lorg/smssecure/smssecure/ReceiveKeyDialog$AcceptListener$1;->this$1:Lorg/smssecure/smssecure/ReceiveKeyDialog$AcceptListener; │ │ + .line 201 │ # getter for: Lorg/smssecure/smssecure/ReceiveKeyDialog$AcceptListener;->identityKey:Lorg/whispersystems/libaxolotl/IdentityKey; │ invoke-static {v6}, Lorg/smssecure/smssecure/ReceiveKeyDialog$AcceptListener;->access$500(Lorg/smssecure/smssecure/ReceiveKeyDialog$AcceptListener;)Lorg/whispersystems/libaxolotl/IdentityKey; │ │ move-result-object v6 │ │ + .line 199 │ invoke-virtual {v1, v3, v4, v5, v6}, Lorg/smssecure/smssecure/database/IdentityDatabase;->saveIdentity(Lorg/smssecure/smssecure/crypto/MasterSecret;JLorg/whispersystems/libaxolotl/IdentityKey;)V │ │ .line 203 │ iget-object v1, p0, Lorg/smssecure/smssecure/ReceiveKeyDialog$AcceptListener$1;->this$1:Lorg/smssecure/smssecure/ReceiveKeyDialog$AcceptListener; │ │ # getter for: Lorg/smssecure/smssecure/ReceiveKeyDialog$AcceptListener;->message:Lorg/smssecure/smssecure/sms/IncomingKeyExchangeMessage; │ invoke-static {v1}, Lorg/smssecure/smssecure/ReceiveKeyDialog$AcceptListener;->access$600(Lorg/smssecure/smssecure/ReceiveKeyDialog$AcceptListener;)Lorg/smssecure/smssecure/sms/IncomingKeyExchangeMessage; │ @@ -152,22 +155,24 @@ │ │ move-result-object v1 │ │ invoke-static {v1}, Lorg/smssecure/smssecure/ApplicationContext;->getInstance(Landroid/content/Context;)Lorg/smssecure/smssecure/ApplicationContext; │ │ move-result-object v1 │ │ + .line 207 │ invoke-virtual {v1}, Lorg/smssecure/smssecure/ApplicationContext;->getJobManager()Lorg/whispersystems/jobqueue/JobManager; │ │ move-result-object v1 │ │ new-instance v2, Lorg/smssecure/smssecure/jobs/SmsDecryptJob; │ │ iget-object v3, p0, Lorg/smssecure/smssecure/ReceiveKeyDialog$AcceptListener$1;->this$1:Lorg/smssecure/smssecure/ReceiveKeyDialog$AcceptListener; │ │ + .line 208 │ # getter for: Lorg/smssecure/smssecure/ReceiveKeyDialog$AcceptListener;->messageRecord:Lorg/smssecure/smssecure/database/model/MessageRecord; │ invoke-static {v3}, Lorg/smssecure/smssecure/ReceiveKeyDialog$AcceptListener;->access$400(Lorg/smssecure/smssecure/ReceiveKeyDialog$AcceptListener;)Lorg/smssecure/smssecure/database/model/MessageRecord; │ │ move-result-object v3 │ │ invoke-virtual {v3}, Lorg/smssecure/smssecure/database/model/MessageRecord;->getId()J ├── smali/org/smssecure/smssecure/ReceiveKeyDialog$AcceptListener.smali │ @@ -105,14 +105,15 @@ │ .line 191 │ new-instance v0, Lorg/smssecure/smssecure/ReceiveKeyDialog$AcceptListener$1; │ │ invoke-direct {v0, p0}, Lorg/smssecure/smssecure/ReceiveKeyDialog$AcceptListener$1;->(Lorg/smssecure/smssecure/ReceiveKeyDialog$AcceptListener;)V │ │ new-array v1, v2, [Ljava/lang/Void; │ │ + .line 212 │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/ReceiveKeyDialog$AcceptListener$1;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 214 │ iget-object v0, p0, Lorg/smssecure/smssecure/ReceiveKeyDialog$AcceptListener;->this$0:Lorg/smssecure/smssecure/ReceiveKeyDialog; │ │ # getter for: Lorg/smssecure/smssecure/ReceiveKeyDialog;->callback:Landroid/content/DialogInterface$OnClickListener; │ invoke-static {v0}, Lorg/smssecure/smssecure/ReceiveKeyDialog;->access$200(Lorg/smssecure/smssecure/ReceiveKeyDialog;)Landroid/content/DialogInterface$OnClickListener; ├── smali/org/smssecure/smssecure/ReceiveKeyDialog.smali │ @@ -111,17 +111,17 @@ │ return-void │ │ .line 82 │ :cond_0 │ invoke-direct {p0, p3, v5}, Lorg/smssecure/smssecure/ReceiveKeyDialog;->setUntrustedText(Lorg/smssecure/smssecure/database/model/MessageRecord;Lorg/whispersystems/libaxolotl/IdentityKey;)V │ :try_end_0 │ .catch Lorg/whispersystems/libaxolotl/InvalidKeyException; {:try_start_0 .. :try_end_0} :catch_0 │ - .catch Lorg/whispersystems/libaxolotl/InvalidVersionException; {:try_start_0 .. :try_end_0} :catch_3 │ - .catch Lorg/whispersystems/libaxolotl/InvalidMessageException; {:try_start_0 .. :try_end_0} :catch_2 │ - .catch Lorg/whispersystems/libaxolotl/LegacyMessageException; {:try_start_0 .. :try_end_0} :catch_1 │ + .catch Lorg/whispersystems/libaxolotl/InvalidVersionException; {:try_start_0 .. :try_end_0} :catch_1 │ + .catch Lorg/whispersystems/libaxolotl/InvalidMessageException; {:try_start_0 .. :try_end_0} :catch_3 │ + .catch Lorg/whispersystems/libaxolotl/LegacyMessageException; {:try_start_0 .. :try_end_0} :catch_2 │ │ goto :goto_0 │ │ .line 88 │ :catch_0 │ move-exception v0 │ │ @@ -279,22 +279,25 @@ │ │ move-result-object v0 │ │ invoke-virtual {v0}, Lorg/smssecure/smssecure/recipients/Recipient;->getNumber()Ljava/lang/String; │ │ move-result-object v2 │ │ + .line 134 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/database/model/MessageRecord;->getRecipientDeviceId()I │ │ move-result v3 │ │ + .line 135 │ invoke-static {}, Ljava/lang/System;->currentTimeMillis()J │ │ move-result-wide v4 │ │ + .line 136 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/database/model/MessageRecord;->getBody()Lorg/smssecure/smssecure/database/model/DisplayRecord$Body; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Lorg/smssecure/smssecure/database/model/DisplayRecord$Body;->getBody()Ljava/lang/String; │ │ move-result-object v6 │ @@ -406,14 +409,15 @@ │ │ const-string v3, " " │ │ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v2 │ │ + .line 108 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/ReceiveKeyDialog;->getContext()Landroid/content/Context; │ │ move-result-object v3 │ │ const v4, 0x7f08002a │ │ invoke-virtual {v3, v4}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ @@ -431,26 +435,29 @@ │ invoke-direct {v1, v2}, Landroid/text/SpannableString;->(Ljava/lang/CharSequence;)V │ │ .line 109 │ new-instance v2, Lorg/smssecure/smssecure/ReceiveKeyDialog$1; │ │ invoke-direct {v2, p0, p1, p2}, Lorg/smssecure/smssecure/ReceiveKeyDialog$1;->(Lorg/smssecure/smssecure/ReceiveKeyDialog;Lorg/smssecure/smssecure/database/model/MessageRecord;Lorg/whispersystems/libaxolotl/IdentityKey;)V │ │ + .line 117 │ invoke-virtual {v0}, Ljava/lang/String;->length()I │ │ move-result v0 │ │ add-int/lit8 v0, v0, 0x1 │ │ + .line 118 │ invoke-virtual {v1}, Landroid/text/SpannableString;->length()I │ │ move-result v3 │ │ const/16 v4, 0x21 │ │ + .line 109 │ invoke-virtual {v1, v2, v0, v3, v4}, Landroid/text/SpannableString;->setSpan(Ljava/lang/Object;III)V │ │ .line 120 │ invoke-virtual {p0, v1}, Lorg/smssecure/smssecure/ReceiveKeyDialog;->setMessage(Ljava/lang/CharSequence;)V │ │ .line 121 │ return-void │ @@ -481,14 +488,15 @@ │ │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/ReceiveKeyDialog;->findViewById(I)Landroid/view/View; │ │ move-result-object v0 │ │ check-cast v0, Landroid/widget/TextView; │ │ + .line 98 │ invoke-static {}, Landroid/text/method/LinkMovementMethod;->getInstance()Landroid/text/method/MovementMethod; │ │ move-result-object v1 │ │ invoke-virtual {v0, v1}, Landroid/widget/TextView;->setMovementMethod(Landroid/text/method/MovementMethod;)V │ │ .line 99 ├── smali/org/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment.smali │ @@ -23,15 +23,14 @@ │ .line 151 │ new-instance v0, Landroid/os/Handler; │ │ invoke-direct {v0}, Landroid/os/Handler;->()V │ │ iput-object v0, p0, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment;->handler:Landroid/os/Handler; │ │ - .line 356 │ return-void │ .end method │ │ .method static synthetic access$600(Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment;Lorg/smssecure/smssecure/recipients/Recipients;)V │ .locals 0 │ │ .prologue │ @@ -315,26 +314,28 @@ │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment;->addPreferencesFromResource(I)V │ │ .line 161 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment;->getActivity()Landroid/support/v4/app/FragmentActivity; │ │ move-result-object v0 │ │ + .line 162 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment;->getArguments()Landroid/os/Bundle; │ │ move-result-object v1 │ │ const-string v2, "recipient_ids" │ │ invoke-virtual {v1, v2}, Landroid/os/Bundle;->getLongArray(Ljava/lang/String;)[J │ │ move-result-object v1 │ │ const/4 v2, 0x1 │ │ + .line 161 │ invoke-static {v0, v1, v2}, Lorg/smssecure/smssecure/recipients/RecipientFactory;->getRecipientsForIds(Landroid/content/Context;[JZ)Lorg/smssecure/smssecure/recipients/Recipients; │ │ move-result-object v0 │ │ iput-object v0, p0, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment;->recipients:Lorg/smssecure/smssecure/recipients/Recipients; │ │ .line 165 │ @@ -349,66 +350,71 @@ │ │ move-result-object v0 │ │ new-instance v1, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$RingtoneChangeListener; │ │ invoke-direct {v1, p0, v3}, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$RingtoneChangeListener;->(Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment;Lorg/smssecure/smssecure/RecipientPreferenceActivity$1;)V │ │ + .line 167 │ invoke-virtual {v0, v1}, Landroid/preference/Preference;->setOnPreferenceChangeListener(Landroid/preference/Preference$OnPreferenceChangeListener;)V │ │ .line 168 │ const-string v0, "pref_key_recipient_vibrate" │ │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference; │ │ move-result-object v0 │ │ new-instance v1, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$VibrateChangeListener; │ │ invoke-direct {v1, p0, v3}, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$VibrateChangeListener;->(Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment;Lorg/smssecure/smssecure/RecipientPreferenceActivity$1;)V │ │ + .line 169 │ invoke-virtual {v0, v1}, Landroid/preference/Preference;->setOnPreferenceChangeListener(Landroid/preference/Preference$OnPreferenceChangeListener;)V │ │ .line 170 │ const-string v0, "pref_key_recipient_mute" │ │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference; │ │ move-result-object v0 │ │ new-instance v1, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$MuteClickedListener; │ │ invoke-direct {v1, p0, v3}, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$MuteClickedListener;->(Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment;Lorg/smssecure/smssecure/RecipientPreferenceActivity$1;)V │ │ + .line 171 │ invoke-virtual {v0, v1}, Landroid/preference/Preference;->setOnPreferenceClickListener(Landroid/preference/Preference$OnPreferenceClickListener;)V │ │ .line 172 │ const-string v0, "pref_key_recipient_block" │ │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference; │ │ move-result-object v0 │ │ new-instance v1, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$BlockClickedListener; │ │ invoke-direct {v1, p0, v3}, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$BlockClickedListener;->(Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment;Lorg/smssecure/smssecure/RecipientPreferenceActivity$1;)V │ │ + .line 173 │ invoke-virtual {v0, v1}, Landroid/preference/Preference;->setOnPreferenceClickListener(Landroid/preference/Preference$OnPreferenceClickListener;)V │ │ .line 174 │ const-string v0, "pref_key_recipient_color" │ │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference; │ │ move-result-object v0 │ │ new-instance v1, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$ColorChangeListener; │ │ invoke-direct {v1, p0, v3}, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$ColorChangeListener;->(Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment;Lorg/smssecure/smssecure/RecipientPreferenceActivity$1;)V │ │ + .line 175 │ invoke-virtual {v0, v1}, Landroid/preference/Preference;->setOnPreferenceChangeListener(Landroid/preference/Preference$OnPreferenceChangeListener;)V │ │ .line 176 │ return-void │ .end method │ │ .method public onDestroy()V ├── smali/org/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$BlockClickedListener$3.smali │ @@ -78,14 +78,15 @@ │ │ move-result-object v0 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$BlockClickedListener$3;->val$recipients:Lorg/smssecure/smssecure/recipients/Recipients; │ │ iget-boolean v2, p0, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$BlockClickedListener$3;->val$blocked:Z │ │ + .line 400 │ invoke-virtual {v0, v1, v2}, Lorg/smssecure/smssecure/database/RecipientPreferenceDatabase;->setBlocked(Lorg/smssecure/smssecure/recipients/Recipients;Z)V │ │ .line 401 │ const/4 v0, 0x0 │ │ return-object v0 │ .end method ├── smali/org/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$BlockClickedListener.smali │ @@ -56,48 +56,54 @@ │ │ move-result-object v1 │ │ invoke-direct {v0, v1}, Landroid/support/v7/app/AlertDialog$Builder;->(Landroid/content/Context;)V │ │ const v1, 0x7f08017f │ │ + .line 367 │ invoke-virtual {v0, v1}, Landroid/support/v7/app/AlertDialog$Builder;->setTitle(I)Landroid/support/v7/app/AlertDialog$Builder; │ │ move-result-object v0 │ │ const v1, 0x7f080184 │ │ + .line 368 │ invoke-virtual {v0, v1}, Landroid/support/v7/app/AlertDialog$Builder;->setMessage(I)Landroid/support/v7/app/AlertDialog$Builder; │ │ move-result-object v0 │ │ const/4 v1, 0x1 │ │ + .line 369 │ invoke-virtual {v0, v1}, Landroid/support/v7/app/AlertDialog$Builder;->setCancelable(Z)Landroid/support/v7/app/AlertDialog$Builder; │ │ move-result-object v0 │ │ const/high16 v1, 0x1040000 │ │ const/4 v2, 0x0 │ │ + .line 370 │ invoke-virtual {v0, v1, v2}, Landroid/support/v7/app/AlertDialog$Builder;->setNegativeButton(ILandroid/content/DialogInterface$OnClickListener;)Landroid/support/v7/app/AlertDialog$Builder; │ │ move-result-object v0 │ │ const v1, 0x7f08017e │ │ new-instance v2, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$BlockClickedListener$1; │ │ invoke-direct {v2, p0}, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$BlockClickedListener$1;->(Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$BlockClickedListener;)V │ │ + .line 371 │ invoke-virtual {v0, v1, v2}, Landroid/support/v7/app/AlertDialog$Builder;->setPositiveButton(ILandroid/content/DialogInterface$OnClickListener;)Landroid/support/v7/app/AlertDialog$Builder; │ │ move-result-object v0 │ │ + .line 376 │ invoke-virtual {v0}, Landroid/support/v7/app/AlertDialog$Builder;->show()Landroid/support/v7/app/AlertDialog; │ │ .line 377 │ return-void │ .end method │ │ .method private handleUnblock()V │ @@ -113,48 +119,54 @@ │ │ move-result-object v1 │ │ invoke-direct {v0, v1}, Landroid/support/v7/app/AlertDialog$Builder;->(Landroid/content/Context;)V │ │ const v1, 0x7f080183 │ │ + .line 381 │ invoke-virtual {v0, v1}, Landroid/support/v7/app/AlertDialog$Builder;->setTitle(I)Landroid/support/v7/app/AlertDialog$Builder; │ │ move-result-object v0 │ │ const v1, 0x7f08017d │ │ + .line 382 │ invoke-virtual {v0, v1}, Landroid/support/v7/app/AlertDialog$Builder;->setMessage(I)Landroid/support/v7/app/AlertDialog$Builder; │ │ move-result-object v0 │ │ const/4 v1, 0x1 │ │ + .line 383 │ invoke-virtual {v0, v1}, Landroid/support/v7/app/AlertDialog$Builder;->setCancelable(Z)Landroid/support/v7/app/AlertDialog$Builder; │ │ move-result-object v0 │ │ const/high16 v1, 0x1040000 │ │ const/4 v2, 0x0 │ │ + .line 384 │ invoke-virtual {v0, v1, v2}, Landroid/support/v7/app/AlertDialog$Builder;->setNegativeButton(ILandroid/content/DialogInterface$OnClickListener;)Landroid/support/v7/app/AlertDialog$Builder; │ │ move-result-object v0 │ │ const v1, 0x7f080182 │ │ new-instance v2, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$BlockClickedListener$2; │ │ invoke-direct {v2, p0}, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$BlockClickedListener$2;->(Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$BlockClickedListener;)V │ │ + .line 385 │ invoke-virtual {v0, v1, v2}, Landroid/support/v7/app/AlertDialog$Builder;->setPositiveButton(ILandroid/content/DialogInterface$OnClickListener;)Landroid/support/v7/app/AlertDialog$Builder; │ │ move-result-object v0 │ │ + .line 390 │ invoke-virtual {v0}, Landroid/support/v7/app/AlertDialog$Builder;->show()Landroid/support/v7/app/AlertDialog; │ │ .line 391 │ return-void │ .end method │ │ .method private setBlocked(Lorg/smssecure/smssecure/recipients/Recipients;Z)V │ @@ -169,14 +181,15 @@ │ │ invoke-direct {v0, p0, p1, p2}, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$BlockClickedListener$3;->(Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$BlockClickedListener;Lorg/smssecure/smssecure/recipients/Recipients;Z)V │ │ const/4 v1, 0x0 │ │ new-array v1, v1, [Ljava/lang/Void; │ │ + .line 403 │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$BlockClickedListener$3;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 404 │ return-void │ .end method ├── smali/org/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$ColorChangeListener$1.smali │ @@ -74,14 +74,15 @@ │ │ move-result-object v0 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$ColorChangeListener$1;->this$1:Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$ColorChangeListener; │ │ iget-object v1, v1, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$ColorChangeListener;->this$0:Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment; │ │ + .line 309 │ # getter for: Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment;->recipients:Lorg/smssecure/smssecure/recipients/Recipients; │ invoke-static {v1}, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment;->access$700(Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment;)Lorg/smssecure/smssecure/recipients/Recipients; │ │ move-result-object v1 │ │ iget-object v2, p0, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$ColorChangeListener$1;->val$selectedColor:Lorg/smssecure/smssecure/color/MaterialColor; ├── smali/org/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$ColorChangeListener.smali │ @@ -110,11 +110,12 @@ │ │ invoke-direct {v1, p0, v0}, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$ColorChangeListener$1;->(Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$ColorChangeListener;Lorg/smssecure/smssecure/color/MaterialColor;)V │ │ const/4 v0, 0x0 │ │ new-array v0, v0, [Ljava/lang/Void; │ │ + .line 312 │ invoke-virtual {v1, v0}, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$ColorChangeListener$1;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ goto :goto_0 │ .end method ├── smali/org/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$MuteClickedListener.smali │ @@ -109,14 +109,15 @@ │ │ invoke-direct {v0, p0, p1, p2, p3}, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$MuteClickedListener$2;->(Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$MuteClickedListener;Lorg/smssecure/smssecure/recipients/Recipients;J)V │ │ const/4 v1, 0x0 │ │ new-array v1, v1, [Ljava/lang/Void; │ │ + .line 352 │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$MuteClickedListener$2;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 353 │ return-void │ .end method ├── smali/org/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$MuteClickedListener$2.smali │ @@ -78,14 +78,15 @@ │ │ move-result-object v0 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$MuteClickedListener$2;->val$recipients:Lorg/smssecure/smssecure/recipients/Recipients; │ │ iget-wide v2, p0, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$MuteClickedListener$2;->val$until:J │ │ + .line 349 │ invoke-virtual {v0, v1, v2, v3}, Lorg/smssecure/smssecure/database/RecipientPreferenceDatabase;->setMuted(Lorg/smssecure/smssecure/recipients/Recipients;J)V │ │ .line 350 │ const/4 v0, 0x0 │ │ return-object v0 │ .end method ├── smali/org/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$RingtoneChangeListener.smali │ @@ -85,14 +85,15 @@ │ │ const/4 v2, 0x1 │ │ new-array v2, v2, [Landroid/net/Uri; │ │ aput-object v0, v2, v3 │ │ + .line 265 │ invoke-virtual {v1, v2}, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$RingtoneChangeListener$1;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 267 │ return v3 │ │ .line 253 │ :cond_1 ├── smali/org/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$VibrateChangeListener$1.smali │ @@ -74,14 +74,15 @@ │ │ move-result-object v0 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$VibrateChangeListener$1;->this$1:Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$VibrateChangeListener; │ │ iget-object v1, v1, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$VibrateChangeListener;->this$0:Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment; │ │ + .line 283 │ # getter for: Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment;->recipients:Lorg/smssecure/smssecure/recipients/Recipients; │ invoke-static {v1}, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment;->access$700(Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment;)Lorg/smssecure/smssecure/recipients/Recipients; │ │ move-result-object v1 │ │ iget-object v2, p0, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$VibrateChangeListener$1;->val$vibrateState:Lorg/smssecure/smssecure/database/RecipientPreferenceDatabase$VibrateState; ├── smali/org/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$VibrateChangeListener.smali │ @@ -66,12 +66,13 @@ │ .line 279 │ new-instance v1, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$VibrateChangeListener$1; │ │ invoke-direct {v1, p0, v0}, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$VibrateChangeListener$1;->(Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$VibrateChangeListener;Lorg/smssecure/smssecure/database/RecipientPreferenceDatabase$VibrateState;)V │ │ new-array v0, v2, [Ljava/lang/Void; │ │ + .line 286 │ invoke-virtual {v1, v0}, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$VibrateChangeListener$1;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 288 │ return v2 │ .end method ├── smali/org/smssecure/smssecure/RecipientPreferenceActivity.smali │ @@ -70,15 +70,14 @@ │ .line 54 │ new-instance v0, Lorg/smssecure/smssecure/util/DynamicLanguage; │ │ invoke-direct {v0}, Lorg/smssecure/smssecure/util/DynamicLanguage;->()V │ │ iput-object v0, p0, Lorg/smssecure/smssecure/RecipientPreferenceActivity;->dynamicLanguage:Lorg/smssecure/smssecure/util/DynamicLanguage; │ │ - .line 146 │ return-void │ .end method │ │ .method static synthetic access$000(Lorg/smssecure/smssecure/RecipientPreferenceActivity;Lorg/smssecure/smssecure/recipients/Recipients;)V │ .locals 0 │ │ .prologue ├── smali/org/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$RingtoneChangeListener$1.smali │ @@ -70,14 +70,15 @@ │ │ move-result-object v0 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$RingtoneChangeListener$1;->this$1:Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$RingtoneChangeListener; │ │ iget-object v1, v1, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment$RingtoneChangeListener;->this$0:Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment; │ │ + .line 262 │ # getter for: Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment;->recipients:Lorg/smssecure/smssecure/recipients/Recipients; │ invoke-static {v1}, Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment;->access$700(Lorg/smssecure/smssecure/RecipientPreferenceActivity$RecipientPreferenceFragment;)Lorg/smssecure/smssecure/recipients/Recipients; │ │ move-result-object v1 │ │ const/4 v2, 0x0 ├── smali/org/smssecure/smssecure/ShareActivity.smali │ @@ -62,15 +62,14 @@ │ .line 57 │ new-instance v0, Lorg/smssecure/smssecure/util/DynamicLanguage; │ │ invoke-direct {v0}, Lorg/smssecure/smssecure/util/DynamicLanguage;->()V │ │ iput-object v0, p0, Lorg/smssecure/smssecure/ShareActivity;->dynamicLanguage:Lorg/smssecure/smssecure/util/DynamicLanguage; │ │ - .line 186 │ return-void │ .end method │ │ .method static synthetic access$000(Lorg/smssecure/smssecure/ShareActivity;)Lorg/smssecure/smssecure/crypto/MasterSecret; │ .locals 1 │ │ .prologue ├── smali/org/smssecure/smssecure/ShareFragment.smali │ @@ -28,15 +28,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 41 │ invoke-direct {p0}, Landroid/support/v4/app/ListFragment;->()V │ │ - .line 106 │ return-void │ .end method │ │ .method private handleCreateConversation(JLorg/smssecure/smssecure/recipients/Recipients;I)V │ .locals 1 │ │ .prologue │ @@ -227,18 +226,20 @@ │ │ move-result-wide v0 │ │ invoke-virtual {p2}, Lorg/smssecure/smssecure/ShareListItem;->getRecipients()Lorg/smssecure/smssecure/recipients/Recipients; │ │ move-result-object v2 │ │ + .line 77 │ invoke-virtual {p2}, Lorg/smssecure/smssecure/ShareListItem;->getDistributionType()I │ │ move-result v3 │ │ + .line 76 │ invoke-direct {p0, v0, v1, v2, v3}, Lorg/smssecure/smssecure/ShareFragment;->handleCreateConversation(JLorg/smssecure/smssecure/recipients/Recipients;I)V │ │ .line 79 │ :cond_0 │ return-void │ .end method ├── smali/org/smssecure/smssecure/SmsSendtoActivity.smali │ @@ -27,15 +27,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 19 │ invoke-direct {p0}, Landroid/app/Activity;->()V │ │ - .line 89 │ return-void │ .end method │ │ .method private getDestinationForSendTo(Landroid/content/Intent;)Lorg/smssecure/smssecure/SmsSendtoActivity$DestinationAndBody; │ .locals 4 │ │ .prologue │ @@ -48,22 +47,24 @@ │ │ invoke-virtual {v1}, Landroid/net/Uri;->getSchemeSpecificPart()Ljava/lang/String; │ │ move-result-object v1 │ │ const-string v2, "sms_body" │ │ + .line 60 │ invoke-virtual {p1, v2}, Landroid/content/Intent;->getStringExtra(Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v2 │ │ const/4 v3, 0x0 │ │ invoke-direct {v0, v1, v2, v3}, Lorg/smssecure/smssecure/SmsSendtoActivity$DestinationAndBody;->(Ljava/lang/String;Ljava/lang/String;Lorg/smssecure/smssecure/SmsSendtoActivity$1;)V │ │ + .line 59 │ return-object v0 │ .end method │ │ .method private getDestinationForSyncAdapter(Landroid/content/Intent;)Lorg/smssecure/smssecure/SmsSendtoActivity$DestinationAndBody; │ .locals 7 │ │ .prologue │ @@ -126,19 +127,19 @@ │ .catchall {:try_start_1 .. :try_end_1} :catchall_1 │ │ .line 85 │ if-eqz v1, :cond_0 │ │ invoke-interface {v1}, Landroid/database/Cursor;->close()V │ │ + .line 83 │ :cond_0 │ :goto_0 │ return-object v0 │ │ - .line 83 │ :cond_1 │ :try_start_2 │ new-instance v0, Lorg/smssecure/smssecure/SmsSendtoActivity$DestinationAndBody; │ │ const-string v2, "" │ │ const-string v3, "" ├── smali/org/smssecure/smssecure/TransportOption.smali │ @@ -41,14 +41,15 @@ │ │ # direct methods │ .method public constructor (Lorg/smssecure/smssecure/TransportOption$Type;IILjava/lang/String;Ljava/lang/String;Lorg/smssecure/smssecure/util/CharacterCalculator;)V │ .locals 9 │ │ .prologue │ .line 35 │ + .line 36 │ invoke-static {}, Lorg/whispersystems/libaxolotl/util/guava/Optional;->absent()Lorg/whispersystems/libaxolotl/util/guava/Optional; │ │ move-result-object v7 │ │ invoke-static {}, Lorg/whispersystems/libaxolotl/util/guava/Optional;->absent()Lorg/whispersystems/libaxolotl/util/guava/Optional; │ │ move-result-object v8 │ @@ -63,14 +64,15 @@ │ │ move-object v4, p4 │ │ move-object v5, p5 │ │ move-object v6, p6 │ │ + .line 35 │ invoke-direct/range {v0 .. v8}, Lorg/smssecure/smssecure/TransportOption;->(Lorg/smssecure/smssecure/TransportOption$Type;IILjava/lang/String;Ljava/lang/String;Lorg/smssecure/smssecure/util/CharacterCalculator;Lorg/whispersystems/libaxolotl/util/guava/Optional;Lorg/whispersystems/libaxolotl/util/guava/Optional;)V │ │ .line 37 │ return-void │ .end method │ │ .method public constructor (Lorg/smssecure/smssecure/TransportOption$Type;IILjava/lang/String;Ljava/lang/String;Lorg/smssecure/smssecure/util/CharacterCalculator;Lorg/whispersystems/libaxolotl/util/guava/Optional;Lorg/whispersystems/libaxolotl/util/guava/Optional;)V ├── smali/org/smssecure/smssecure/TransportOptions.smali │ @@ -267,22 +267,24 @@ │ move-object v1, v0 │ │ check-cast v1, Lorg/smssecure/smssecure/util/dualsim/SubscriptionInfoCompat; │ │ .line 172 │ new-instance v0, Lorg/smssecure/smssecure/TransportOption; │ │ + .line 178 │ invoke-virtual {v1}, Lorg/smssecure/smssecure/util/dualsim/SubscriptionInfoCompat;->getDisplayName()Ljava/lang/CharSequence; │ │ move-result-object v2 │ │ invoke-static {v2}, Lorg/whispersystems/libaxolotl/util/guava/Optional;->of(Ljava/lang/Object;)Lorg/whispersystems/libaxolotl/util/guava/Optional; │ │ move-result-object v7 │ │ + .line 179 │ invoke-virtual {v1}, Lorg/smssecure/smssecure/util/dualsim/SubscriptionInfoCompat;->getSubscriptionId()I │ │ move-result v1 │ │ invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v1 │ @@ -301,14 +303,15 @@ │ │ move-object/from16 v5, p5 │ │ move-object/from16 v6, p6 │ │ invoke-direct/range {v0 .. v8}, Lorg/smssecure/smssecure/TransportOption;->(Lorg/smssecure/smssecure/TransportOption$Type;IILjava/lang/String;Ljava/lang/String;Lorg/smssecure/smssecure/util/CharacterCalculator;Lorg/whispersystems/libaxolotl/util/guava/Optional;Lorg/whispersystems/libaxolotl/util/guava/Optional;)V │ │ + .line 172 │ invoke-interface {v9, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z │ │ goto :goto_0 │ .end method │ │ .method private initializeAvailableTransports(Z)Ljava/util/List; │ .locals 10 │ @@ -340,87 +343,95 @@ │ if-eqz p1, :cond_0 │ │ .line 126 │ sget-object v1, Lorg/smssecure/smssecure/TransportOption$Type;->INSECURE_SMS:Lorg/smssecure/smssecure/TransportOption$Type; │ │ iget-object v0, p0, Lorg/smssecure/smssecure/TransportOptions;->context:Landroid/content/Context; │ │ + .line 127 │ invoke-virtual {v0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; │ │ move-result-object v0 │ │ invoke-virtual {v0, v3}, Landroid/content/res/Resources;->getColor(I)I │ │ move-result v3 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/TransportOptions;->context:Landroid/content/Context; │ │ const v4, 0x7f08003b │ │ + .line 128 │ invoke-virtual {v0, v4}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v4 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/TransportOptions;->context:Landroid/content/Context; │ │ const v5, 0x7f0800bf │ │ + .line 129 │ invoke-virtual {v0, v5}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v5 │ │ new-instance v6, Lorg/smssecure/smssecure/util/MmsCharacterCalculator; │ │ invoke-direct {v6}, Lorg/smssecure/smssecure/util/MmsCharacterCalculator;->()V │ │ move-object v0, p0 │ │ + .line 126 │ invoke-direct/range {v0 .. v6}, Lorg/smssecure/smssecure/TransportOptions;->getTransportOptionsForSimCards(Lorg/smssecure/smssecure/TransportOption$Type;IILjava/lang/String;Ljava/lang/String;Lorg/smssecure/smssecure/util/CharacterCalculator;)Ljava/util/List; │ │ move-result-object v0 │ │ invoke-interface {v7, v0}, Ljava/util/List;->addAll(Ljava/util/Collection;)Z │ │ .line 131 │ sget-object v1, Lorg/smssecure/smssecure/TransportOption$Type;->SECURE_SMS:Lorg/smssecure/smssecure/TransportOption$Type; │ │ iget-object v0, p0, Lorg/smssecure/smssecure/TransportOptions;->context:Landroid/content/Context; │ │ + .line 132 │ invoke-virtual {v0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; │ │ move-result-object v0 │ │ invoke-virtual {v0, v9}, Landroid/content/res/Resources;->getColor(I)I │ │ move-result v3 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/TransportOptions;->context:Landroid/content/Context; │ │ const v2, 0x7f08003d │ │ + .line 133 │ invoke-virtual {v0, v2}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v4 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/TransportOptions;->context:Landroid/content/Context; │ │ const v2, 0x7f0800c0 │ │ + .line 134 │ invoke-virtual {v0, v2}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v5 │ │ new-instance v6, Lorg/smssecure/smssecure/util/MmsCharacterCalculator; │ │ invoke-direct {v6}, Lorg/smssecure/smssecure/util/MmsCharacterCalculator;->()V │ │ move-object v0, p0 │ │ move v2, v8 │ │ + .line 131 │ invoke-direct/range {v0 .. v6}, Lorg/smssecure/smssecure/TransportOptions;->getTransportOptionsForSimCards(Lorg/smssecure/smssecure/TransportOption$Type;IILjava/lang/String;Ljava/lang/String;Lorg/smssecure/smssecure/util/CharacterCalculator;)Ljava/util/List; │ │ move-result-object v0 │ │ invoke-interface {v7, v0}, Ljava/util/List;->addAll(Ljava/util/Collection;)Z │ │ .line 149 │ @@ -429,87 +440,95 @@ │ │ .line 137 │ :cond_0 │ sget-object v1, Lorg/smssecure/smssecure/TransportOption$Type;->INSECURE_SMS:Lorg/smssecure/smssecure/TransportOption$Type; │ │ iget-object v0, p0, Lorg/smssecure/smssecure/TransportOptions;->context:Landroid/content/Context; │ │ + .line 138 │ invoke-virtual {v0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; │ │ move-result-object v0 │ │ invoke-virtual {v0, v3}, Landroid/content/res/Resources;->getColor(I)I │ │ move-result v3 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/TransportOptions;->context:Landroid/content/Context; │ │ const v4, 0x7f08003c │ │ + .line 139 │ invoke-virtual {v0, v4}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v4 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/TransportOptions;->context:Landroid/content/Context; │ │ const v5, 0x7f0800c1 │ │ + .line 140 │ invoke-virtual {v0, v5}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v5 │ │ new-instance v6, Lorg/smssecure/smssecure/util/SmsCharacterCalculator; │ │ invoke-direct {v6}, Lorg/smssecure/smssecure/util/SmsCharacterCalculator;->()V │ │ move-object v0, p0 │ │ + .line 137 │ invoke-direct/range {v0 .. v6}, Lorg/smssecure/smssecure/TransportOptions;->getTransportOptionsForSimCards(Lorg/smssecure/smssecure/TransportOption$Type;IILjava/lang/String;Ljava/lang/String;Lorg/smssecure/smssecure/util/CharacterCalculator;)Ljava/util/List; │ │ move-result-object v0 │ │ invoke-interface {v7, v0}, Ljava/util/List;->addAll(Ljava/util/Collection;)Z │ │ .line 142 │ sget-object v1, Lorg/smssecure/smssecure/TransportOption$Type;->SECURE_SMS:Lorg/smssecure/smssecure/TransportOption$Type; │ │ iget-object v0, p0, Lorg/smssecure/smssecure/TransportOptions;->context:Landroid/content/Context; │ │ + .line 143 │ invoke-virtual {v0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; │ │ move-result-object v0 │ │ invoke-virtual {v0, v9}, Landroid/content/res/Resources;->getColor(I)I │ │ move-result v3 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/TransportOptions;->context:Landroid/content/Context; │ │ const v2, 0x7f08003e │ │ + .line 144 │ invoke-virtual {v0, v2}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v4 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/TransportOptions;->context:Landroid/content/Context; │ │ const v2, 0x7f0800c2 │ │ + .line 145 │ invoke-virtual {v0, v2}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v5 │ │ new-instance v6, Lorg/smssecure/smssecure/util/EncryptedSmsCharacterCalculator; │ │ invoke-direct {v6}, Lorg/smssecure/smssecure/util/EncryptedSmsCharacterCalculator;->()V │ │ move-object v0, p0 │ │ move v2, v8 │ │ + .line 142 │ invoke-direct/range {v0 .. v6}, Lorg/smssecure/smssecure/TransportOptions;->getTransportOptionsForSimCards(Lorg/smssecure/smssecure/TransportOption$Type;IILjava/lang/String;Ljava/lang/String;Lorg/smssecure/smssecure/util/CharacterCalculator;)Ljava/util/List; │ │ move-result-object v0 │ │ invoke-interface {v7, v0}, Ljava/util/List;->addAll(Ljava/util/Collection;)Z │ │ goto :goto_0 │ @@ -766,14 +785,15 @@ │ │ iget-object v3, p0, Lorg/smssecure/smssecure/TransportOptions;->defaultTransportType:Lorg/smssecure/smssecure/TransportOption$Type; │ │ if-ne v1, v3, :cond_1 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/TransportOptions;->defaultSubscriptionId:Lorg/whispersystems/libaxolotl/util/guava/Optional; │ │ + .line 87 │ invoke-virtual {v1}, Lorg/whispersystems/libaxolotl/util/guava/Optional;->get()Ljava/lang/Object; │ │ move-result-object v1 │ │ check-cast v1, Ljava/lang/Integer; │ │ invoke-virtual {v1}, Ljava/lang/Integer;->intValue()I ├── smali/org/smssecure/smssecure/VerifyIdentityActivity.smali │ @@ -304,14 +304,15 @@ │ │ const/4 v1, 0x1 │ │ invoke-static {p0, v0, v1}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast; │ │ move-result-object v0 │ │ + .line 94 │ invoke-virtual {v0}, Landroid/widget/Toast;->show()V │ │ .line 99 │ :goto_0 │ return-void │ │ .line 98 │ @@ -342,14 +343,15 @@ │ │ const/4 v1, 0x1 │ │ invoke-static {p0, v0, v1}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast; │ │ move-result-object v0 │ │ + .line 107 │ invoke-virtual {v0}, Landroid/widget/Toast;->show()V │ │ .line 111 │ :goto_0 │ return-void │ │ .line 109 ├── smali/org/smssecure/smssecure/ViewLocalIdentityActivity.smali │ @@ -25,35 +25,39 @@ │ │ move-result-object v0 │ │ const-string v1, "identity_key" │ │ new-instance v2, Lorg/smssecure/smssecure/crypto/IdentityKeyParcelable; │ │ + .line 40 │ invoke-static {p0}, Lorg/smssecure/smssecure/crypto/IdentityKeyUtil;->getIdentityKey(Landroid/content/Context;)Lorg/whispersystems/libaxolotl/IdentityKey; │ │ move-result-object v3 │ │ invoke-direct {v2, v3}, Lorg/smssecure/smssecure/crypto/IdentityKeyParcelable;->(Lorg/whispersystems/libaxolotl/IdentityKey;)V │ │ + .line 39 │ invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Landroid/os/Parcelable;)Landroid/content/Intent; │ │ .line 41 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/ViewLocalIdentityActivity;->getIntent()Landroid/content/Intent; │ │ move-result-object v0 │ │ const-string v1, "title" │ │ const v2, 0x7f08020c │ │ + .line 42 │ invoke-virtual {p0, v2}, Lorg/smssecure/smssecure/ViewLocalIdentityActivity;->getString(I)Ljava/lang/String; │ │ move-result-object v2 │ │ + .line 41 │ invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent; │ │ .line 43 │ invoke-super {p0, p1, p2}, Lorg/smssecure/smssecure/ViewIdentityActivity;->onCreate(Landroid/os/Bundle;Lorg/smssecure/smssecure/crypto/MasterSecret;)V │ │ .line 44 │ return-void ├── smali/org/smssecure/smssecure/attachments/DatabaseAttachment.smali │ @@ -61,25 +61,28 @@ │ │ check-cast p1, Lorg/smssecure/smssecure/attachments/DatabaseAttachment; │ │ iget-object v0, p1, Lorg/smssecure/smssecure/attachments/DatabaseAttachment;->attachmentId:Lorg/smssecure/smssecure/attachments/AttachmentId; │ │ iget-object v1, p0, Lorg/smssecure/smssecure/attachments/DatabaseAttachment;->attachmentId:Lorg/smssecure/smssecure/attachments/AttachmentId; │ │ + .line 44 │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/attachments/AttachmentId;->equals(Ljava/lang/Object;)Z │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ const/4 v0, 0x1 │ │ + .line 42 │ :goto_0 │ return v0 │ │ + .line 44 │ :cond_0 │ const/4 v0, 0x0 │ │ goto :goto_0 │ .end method │ │ .method public getAttachmentId()Lorg/smssecure/smssecure/attachments/AttachmentId; ├── smali/org/smssecure/smssecure/audio/AudioAttachmentServer$StreamToMediaPlayerTask.smali │ @@ -200,22 +200,24 @@ │ │ invoke-virtual {v3}, Ljava/lang/String;->toLowerCase()Ljava/lang/String; │ │ move-result-object v3 │ │ add-int/lit8 v2, v2, 0x1 │ │ + .line 312 │ invoke-virtual {v0, v2}, Ljava/lang/String;->substring(I)Ljava/lang/String; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Ljava/lang/String;->trim()Ljava/lang/String; │ │ move-result-object v0 │ │ + .line 311 │ invoke-virtual {p4, v3, v0}, Ljava/util/Properties;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ │ .line 313 │ :cond_3 │ invoke-virtual {p1}, Ljava/io/BufferedReader;->readLine()Ljava/lang/String; │ │ move-result-object v0 │ @@ -258,26 +260,28 @@ │ │ const-string v3, "SERVER INTERNAL ERROR: IOException: " │ │ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v2 │ │ + .line 320 │ invoke-virtual {v0}, Ljava/io/IOException;->getMessage()Ljava/lang/String; │ │ move-result-object v0 │ │ invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v0 │ │ + .line 319 │ invoke-static {v1, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I │ │ goto/16 :goto_0 │ .end method │ │ .method private decodeParms(Ljava/lang/String;Ljava/util/Properties;)V │ .locals 4 │ @@ -340,22 +344,24 @@ │ │ invoke-virtual {v3}, Ljava/lang/String;->trim()Ljava/lang/String; │ │ move-result-object v3 │ │ add-int/lit8 v2, v2, 0x1 │ │ + .line 342 │ invoke-virtual {v1, v2}, Ljava/lang/String;->substring(I)Ljava/lang/String; │ │ move-result-object v1 │ │ invoke-direct {p0, v1}, Lorg/smssecure/smssecure/audio/AudioAttachmentServer$StreamToMediaPlayerTask;->decodePercent(Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v1 │ │ + .line 341 │ invoke-virtual {p2, v3, v1}, Ljava/util/Properties;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ │ goto :goto_0 │ .end method │ │ .method private decodePercent(Ljava/lang/String;)Ljava/lang/String; │ .locals 4 │ @@ -431,21 +437,23 @@ │ │ .line 360 │ :sswitch_1 │ add-int/lit8 v2, v0, 0x1 │ │ add-int/lit8 v3, v0, 0x3 │ │ + .line 361 │ :try_start_1 │ invoke-virtual {p1, v2, v3}, Ljava/lang/String;->substring(II)Ljava/lang/String; │ │ move-result-object v2 │ │ const/16 v3, 0x10 │ │ + .line 360 │ invoke-static {v2, v3}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;I)I │ │ move-result v2 │ │ int-to-char v2, v2 │ │ invoke-virtual {v1, v2}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer; ├── smali/org/smssecure/smssecure/audio/AudioSlidePlayer.smali │ @@ -418,14 +418,15 @@ │ │ invoke-static {v2, v3}, Ljava/lang/Double;->valueOf(D)Ljava/lang/Double; │ │ move-result-object v1 │ │ iget-object v2, p0, Lorg/smssecure/smssecure/audio/AudioSlidePlayer;->mediaPlayer:Landroid/media/MediaPlayer; │ │ + .line 159 │ invoke-virtual {v2}, Landroid/media/MediaPlayer;->getCurrentPosition()I │ │ move-result v2 │ │ invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v2 ├── smali/org/smssecure/smssecure/color/MaterialColor.smali │ @@ -864,62 +864,67 @@ │ │ invoke-virtual {v0, v1}, Landroid/content/res/Resources;->getColor(I)I │ │ move-result v0 │ │ if-eq v0, p2, :cond_0 │ │ + .line 89 │ invoke-virtual {p1}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; │ │ move-result-object v0 │ │ iget v1, p0, Lorg/smssecure/smssecure/color/MaterialColor;->conversationColorLight:I │ │ invoke-virtual {v0, v1}, Landroid/content/res/Resources;->getColor(I)I │ │ move-result v0 │ │ if-eq v0, p2, :cond_0 │ │ + .line 90 │ invoke-virtual {p1}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; │ │ move-result-object v0 │ │ iget v1, p0, Lorg/smssecure/smssecure/color/MaterialColor;->actionBarColorDark:I │ │ invoke-virtual {v0, v1}, Landroid/content/res/Resources;->getColor(I)I │ │ move-result v0 │ │ if-eq v0, p2, :cond_0 │ │ + .line 91 │ invoke-virtual {p1}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; │ │ move-result-object v0 │ │ iget v1, p0, Lorg/smssecure/smssecure/color/MaterialColor;->actionBarColorLight:I │ │ invoke-virtual {v0, v1}, Landroid/content/res/Resources;->getColor(I)I │ │ move-result v0 │ │ if-eq v0, p2, :cond_0 │ │ + .line 92 │ invoke-virtual {p1}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; │ │ move-result-object v0 │ │ iget v1, p0, Lorg/smssecure/smssecure/color/MaterialColor;->statusBarColorLight:I │ │ invoke-virtual {v0, v1}, Landroid/content/res/Resources;->getColor(I)I │ │ move-result v0 │ │ if-eq v0, p2, :cond_0 │ │ + .line 93 │ invoke-virtual {p1}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; │ │ move-result-object v0 │ │ iget v1, p0, Lorg/smssecure/smssecure/color/MaterialColor;->statusBarColorDark:I │ │ invoke-virtual {v0, v1}, Landroid/content/res/Resources;->getColor(I)I │ @@ -927,17 +932,19 @@ │ move-result v0 │ │ if-ne v0, p2, :cond_1 │ │ :cond_0 │ const/4 v0, 0x1 │ │ + .line 88 │ :goto_0 │ return v0 │ │ + .line 93 │ :cond_1 │ const/4 v0, 0x0 │ │ goto :goto_0 │ .end method │ │ .method public serialize()Ljava/lang/String; ├── smali/org/smssecure/smssecure/color/MaterialColors.smali │ @@ -129,10 +129,9 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 11 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 38 │ return-void │ .end method ├── smali/org/smssecure/smssecure/components/AudioView.smali │ @@ -481,38 +481,41 @@ │ │ const/4 v2, 0x2 │ │ new-array v2, v2, [Ljava/lang/Object; │ │ sget-object v3, Ljava/util/concurrent/TimeUnit;->MILLISECONDS:Ljava/util/concurrent/TimeUnit; │ │ + .line 135 │ invoke-virtual {v3, p3, p4}, Ljava/util/concurrent/TimeUnit;->toMinutes(J)J │ │ move-result-wide v4 │ │ invoke-static {v4, v5}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; │ │ move-result-object v3 │ │ aput-object v3, v2, v6 │ │ const/4 v3, 0x1 │ │ sget-object v4, Ljava/util/concurrent/TimeUnit;->MILLISECONDS:Ljava/util/concurrent/TimeUnit; │ │ + .line 136 │ invoke-virtual {v4, p3, p4}, Ljava/util/concurrent/TimeUnit;->toSeconds(J)J │ │ move-result-wide v4 │ │ invoke-static {v4, v5}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; │ │ move-result-object v4 │ │ aput-object v4, v2, v3 │ │ + .line 134 │ invoke-static {v1, v2}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v1 │ │ invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V │ │ .line 140 ├── smali/org/smssecure/smssecure/components/AvatarImageView$BadgeResolutionTask.smali │ @@ -74,26 +74,28 @@ │ │ iget-object v0, p0, Lorg/smssecure/smssecure/components/AvatarImageView$BadgeResolutionTask;->context:Landroid/content/Context; │ │ iget-object v2, p0, Lorg/smssecure/smssecure/components/AvatarImageView$BadgeResolutionTask;->masterSecret:Lorg/smssecure/smssecure/crypto/MasterSecret; │ │ aget-object v3, p1, v1 │ │ + .line 105 │ invoke-virtual {v3}, Lorg/smssecure/smssecure/recipients/Recipients;->getPrimaryRecipient()Lorg/smssecure/smssecure/recipients/Recipient; │ │ move-result-object v3 │ │ invoke-static {v0, v2, v3}, Lorg/smssecure/smssecure/crypto/SessionUtil;->hasSession(Landroid/content/Context;Lorg/smssecure/smssecure/crypto/MasterSecret;Lorg/smssecure/smssecure/recipients/Recipient;)Z │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ const/4 v0, 0x1 │ │ + .line 104 │ :goto_0 │ invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; │ │ move-result-object v0 │ │ .line 106 │ new-instance v2, Landroid/support/v4/util/Pair; │ @@ -103,15 +105,15 @@ │ invoke-direct {v2, v1, v0}, Landroid/support/v4/util/Pair;->(Ljava/lang/Object;Ljava/lang/Object;)V │ │ return-object v2 │ │ :cond_0 │ move v0, v1 │ │ - .line 104 │ + .line 105 │ goto :goto_0 │ .end method │ │ .method protected bridge synthetic doInBackground([Ljava/lang/Object;)Ljava/lang/Object; │ .locals 1 │ │ .prologue │ @@ -167,26 +169,28 @@ │ │ new-array v1, v1, [Landroid/graphics/drawable/Drawable; │ │ const/4 v2, 0x0 │ │ iget-object v3, p0, Lorg/smssecure/smssecure/components/AvatarImageView$BadgeResolutionTask;->this$0:Lorg/smssecure/smssecure/components/AvatarImageView; │ │ + .line 113 │ invoke-virtual {v3}, Lorg/smssecure/smssecure/components/AvatarImageView;->getDrawable()Landroid/graphics/drawable/Drawable; │ │ move-result-object v3 │ │ aput-object v3, v1, v2 │ │ const/4 v2, 0x1 │ │ iget-object v3, p0, Lorg/smssecure/smssecure/components/AvatarImageView$BadgeResolutionTask;->context:Landroid/content/Context; │ │ const v4, 0x7f020041 │ │ + .line 114 │ invoke-static {v3, v4}, Landroid/support/v4/content/ContextCompat;->getDrawable(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable; │ │ move-result-object v3 │ │ aput-object v3, v1, v2 │ │ invoke-direct {v0, v1}, Landroid/graphics/drawable/LayerDrawable;->([Landroid/graphics/drawable/Drawable;)V ├── smali/org/smssecure/smssecure/components/ComposeText.smali │ @@ -44,18 +44,20 @@ │ .end method │ │ .method private ellipsizeToWidth(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; │ .locals 3 │ │ .prologue │ .line 55 │ + .line 56 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/components/ComposeText;->getPaint()Landroid/text/TextPaint; │ │ move-result-object v0 │ │ + .line 57 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/components/ComposeText;->getWidth()I │ │ move-result v1 │ │ invoke-virtual {p0}, Lorg/smssecure/smssecure/components/ComposeText;->getPaddingLeft()I │ │ move-result v2 │ @@ -68,14 +70,15 @@ │ │ sub-int/2addr v1, v2 │ │ int-to-float v1, v1 │ │ sget-object v2, Landroid/text/TextUtils$TruncateAt;->END:Landroid/text/TextUtils$TruncateAt; │ │ + .line 55 │ invoke-static {p1, v0, v1, v2}, Landroid/text/TextUtils;->ellipsize(Ljava/lang/CharSequence;Landroid/text/TextPaint;FLandroid/text/TextUtils$TruncateAt;)Ljava/lang/CharSequence; │ │ move-result-object v0 │ │ return-object v0 │ .end method │ │ @@ -204,28 +207,31 @@ │ │ invoke-virtual {v0, v1}, Landroid/text/SpannableStringBuilder;->append(Ljava/lang/CharSequence;)Landroid/text/SpannableStringBuilder; │ │ move-result-object v0 │ │ const-string v1, "\n" │ │ + .line 46 │ invoke-virtual {v0, v1}, Landroid/text/SpannableStringBuilder;->append(Ljava/lang/CharSequence;)Landroid/text/SpannableStringBuilder; │ │ move-result-object v0 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/components/ComposeText;->subHint:Landroid/text/SpannableString; │ │ + .line 47 │ invoke-direct {p0, v1}, Lorg/smssecure/smssecure/components/ComposeText;->ellipsizeToWidth(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; │ │ move-result-object v1 │ │ invoke-virtual {v0, v1}, Landroid/text/SpannableStringBuilder;->append(Ljava/lang/CharSequence;)Landroid/text/SpannableStringBuilder; │ │ move-result-object v0 │ │ + .line 45 │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/components/ComposeText;->setHint(Ljava/lang/CharSequence;)V │ │ .line 52 │ :cond_0 │ :goto_0 │ return-void │ │ @@ -314,28 +320,31 @@ │ │ invoke-virtual {v0, v1}, Landroid/text/SpannableStringBuilder;->append(Ljava/lang/CharSequence;)Landroid/text/SpannableStringBuilder; │ │ move-result-object v0 │ │ const-string v1, "\n" │ │ + .line 74 │ invoke-virtual {v0, v1}, Landroid/text/SpannableStringBuilder;->append(Ljava/lang/CharSequence;)Landroid/text/SpannableStringBuilder; │ │ move-result-object v0 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/components/ComposeText;->subHint:Landroid/text/SpannableString; │ │ + .line 75 │ invoke-direct {p0, v1}, Lorg/smssecure/smssecure/components/ComposeText;->ellipsizeToWidth(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; │ │ move-result-object v1 │ │ invoke-virtual {v0, v1}, Landroid/text/SpannableStringBuilder;->append(Ljava/lang/CharSequence;)Landroid/text/SpannableStringBuilder; │ │ move-result-object v0 │ │ + .line 73 │ invoke-super {p0, v0}, Lorg/smssecure/smssecure/components/emoji/EmojiEditText;->setHint(Ljava/lang/CharSequence;)V │ │ .line 79 │ :goto_1 │ return-void │ │ .line 69 │ @@ -459,24 +468,26 @@ │ invoke-virtual {p0, v1}, Lorg/smssecure/smssecure/components/ComposeText;->setImeOptions(I)V │ │ .line 117 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/TransportOption;->getComposeHint()Ljava/lang/String; │ │ move-result-object v1 │ │ + .line 118 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/TransportOption;->getSimName()Lorg/whispersystems/libaxolotl/util/guava/Optional; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Lorg/whispersystems/libaxolotl/util/guava/Optional;->isPresent()Z │ │ move-result v0 │ │ if-eqz v0, :cond_4 │ │ + .line 119 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/components/ComposeText;->getContext()Landroid/content/Context; │ │ move-result-object v0 │ │ const v2, 0x7f080217 │ │ const/4 v3, 0x1 │ @@ -493,14 +504,15 @@ │ │ aput-object v4, v3, v6 │ │ invoke-virtual {v0, v2, v3}, Landroid/content/Context;->getString(I[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v0 │ │ + .line 117 │ :goto_4 │ invoke-virtual {p0, v1, v0}, Lorg/smssecure/smssecure/components/ComposeText;->setHint(Ljava/lang/String;Ljava/lang/CharSequence;)V │ │ .line 121 │ return-void │ │ .line 101 │ @@ -530,10 +542,10 @@ │ or-int/2addr v1, v3 │ │ goto :goto_3 │ │ :cond_4 │ move-object v0, v2 │ │ - .line 117 │ + .line 119 │ goto :goto_4 │ .end method ├── smali/org/smssecure/smssecure/components/CustomDefaultPreference.smali │ @@ -313,24 +313,26 @@ │ │ move-result-object v0 │ │ const v1, 0x7f080055 │ │ new-array v2, v2, [Ljava/lang/Object; │ │ + .line 76 │ invoke-direct {p0}, Lorg/smssecure/smssecure/components/CustomDefaultPreference;->getCustomValue()Ljava/lang/String; │ │ move-result-object v3 │ │ invoke-direct {p0, v3}, Lorg/smssecure/smssecure/components/CustomDefaultPreference;->getPrettyPrintValue(Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v3 │ │ aput-object v3, v2, v4 │ │ + .line 75 │ invoke-virtual {v0, v1, v2}, Landroid/content/Context;->getString(I[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v0 │ │ .line 78 │ :goto_0 │ return-object v0 │ @@ -340,24 +342,26 @@ │ │ move-result-object v0 │ │ const v1, 0x7f080056 │ │ new-array v2, v2, [Ljava/lang/Object; │ │ + .line 79 │ invoke-direct {p0}, Lorg/smssecure/smssecure/components/CustomDefaultPreference;->getDefaultValue()Ljava/lang/String; │ │ move-result-object v3 │ │ invoke-direct {p0, v3}, Lorg/smssecure/smssecure/components/CustomDefaultPreference;->getPrettyPrintValue(Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v3 │ │ aput-object v3, v2, v4 │ │ + .line 78 │ invoke-virtual {v0, v1, v2}, Landroid/content/Context;->getString(I[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v0 │ │ goto :goto_0 │ .end method ├── smali/org/smssecure/smssecure/components/InputAwareLayout.smali │ @@ -76,14 +76,15 @@ │ │ move-result-object v0 │ │ invoke-static {v0}, Lorg/smssecure/smssecure/util/ServiceUtil;->getInputMethodManager(Landroid/content/Context;)Landroid/view/inputmethod/InputMethodManager; │ │ move-result-object v0 │ │ + .line 84 │ invoke-virtual {p1}, Landroid/widget/EditText;->getWindowToken()Landroid/os/IBinder; │ │ move-result-object v1 │ │ const/4 v2, 0x0 │ │ invoke-virtual {v0, v1, v2}, Landroid/view/inputmethod/InputMethodManager;->hideSoftInputFromWindow(Landroid/os/IBinder;I)Z ├── smali/org/smssecure/smssecure/components/KeyboardAwareLinearLayout.smali │ @@ -285,14 +285,15 @@ │ │ move-result-object v0 │ │ const-string v1, "keyboard_height_portrait" │ │ iget v2, p0, Lorg/smssecure/smssecure/components/KeyboardAwareLinearLayout;->defaultCustomKeyboardSize:I │ │ + .line 169 │ invoke-interface {v0, v1, v2}, Landroid/content/SharedPreferences;->getInt(Ljava/lang/String;I)I │ │ move-result v0 │ │ .line 170 │ iget v1, p0, Lorg/smssecure/smssecure/components/KeyboardAwareLinearLayout;->minCustomKeyboardSize:I │ │ @@ -497,14 +498,15 @@ │ │ move-result-object v0 │ │ invoke-static {v0}, Landroid/preference/PreferenceManager;->getDefaultSharedPreferences(Landroid/content/Context;)Landroid/content/SharedPreferences; │ │ move-result-object v0 │ │ + .line 175 │ invoke-interface {v0}, Landroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor; │ │ move-result-object v0 │ │ const-string v1, "keyboard_height_portrait" │ │ invoke-interface {v0, v1, p1}, Landroid/content/SharedPreferences$Editor;->putInt(Ljava/lang/String;I)Landroid/content/SharedPreferences$Editor; ├── smali/org/smssecure/smssecure/components/RecyclerViewFastScroller.smali │ @@ -583,14 +583,15 @@ │ │ sub-float/2addr v3, v4 │ │ cmpg-float v2, v2, v3 │ │ if-ltz v2, :cond_0 │ │ + .line 95 │ invoke-virtual {p1}, Landroid/view/MotionEvent;->getY()F │ │ move-result v2 │ │ iget-object v3, p0, Lorg/smssecure/smssecure/components/RecyclerViewFastScroller;->handle:Landroid/view/View; │ │ invoke-static {v3}, Lorg/smssecure/smssecure/util/ViewUtil;->getY(Landroid/view/View;)F │ @@ -607,14 +608,15 @@ │ │ sub-float/2addr v3, v4 │ │ cmpg-float v2, v2, v3 │ │ if-ltz v2, :cond_0 │ │ + .line 96 │ invoke-virtual {p1}, Landroid/view/MotionEvent;->getY()F │ │ move-result v2 │ │ iget-object v3, p0, Lorg/smssecure/smssecure/components/RecyclerViewFastScroller;->handle:Landroid/view/View; │ │ invoke-static {v3}, Lorg/smssecure/smssecure/util/ViewUtil;->getY(Landroid/view/View;)F ├── smali/org/smssecure/smssecure/components/RepeatableImageKey$Repeater.smali │ @@ -53,25 +53,27 @@ │ │ sget v0, Landroid/os/Build$VERSION;->SDK_INT:I │ │ const/16 v1, 0xc │ │ if-lt v0, v1, :cond_0 │ │ + .line 68 │ invoke-static {}, Landroid/view/ViewConfiguration;->getKeyRepeatDelay()I │ │ move-result v0 │ │ int-to-long v0, v0 │ │ + .line 67 │ :goto_0 │ invoke-virtual {v2, p0, v0, v1}, Lorg/smssecure/smssecure/components/RepeatableImageKey;->postDelayed(Ljava/lang/Runnable;J)Z │ │ .line 70 │ return-void │ │ - .line 67 │ + .line 68 │ :cond_0 │ const-wide/16 v0, 0x32 │ │ goto :goto_0 │ .end method ├── smali/org/smssecure/smssecure/components/RepeatableImageKey$RepeaterTouchListener.smali │ @@ -64,33 +64,35 @@ │ │ sget v0, Landroid/os/Build$VERSION;->SDK_INT:I │ │ const/16 v1, 0xc │ │ if-lt v0, v1, :cond_0 │ │ + .line 86 │ invoke-static {}, Landroid/view/ViewConfiguration;->getKeyRepeatTimeout()I │ │ move-result v0 │ │ int-to-long v0, v0 │ │ + .line 85 │ :goto_1 │ invoke-virtual {p1, v2, v0, v1}, Landroid/view/View;->postDelayed(Ljava/lang/Runnable;J)Z │ │ .line 88 │ iget-object v0, p0, Lorg/smssecure/smssecure/components/RepeatableImageKey$RepeaterTouchListener;->this$0:Lorg/smssecure/smssecure/components/RepeatableImageKey; │ │ const/4 v1, 0x3 │ │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/components/RepeatableImageKey;->performHapticFeedback(I)Z │ │ goto :goto_0 │ │ - .line 85 │ + .line 87 │ :cond_0 │ invoke-static {}, Landroid/view/ViewConfiguration;->getLongPressTimeout()I │ │ move-result v0 │ │ int-to-long v0, v0 ├── smali/org/smssecure/smssecure/components/ThumbnailView$ThumbnailClickDispatcher.smali │ @@ -47,23 +47,25 @@ │ │ move-result-object v0 │ │ if-eqz v0, :cond_1 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/components/ThumbnailView$ThumbnailClickDispatcher;->this$0:Lorg/smssecure/smssecure/components/ThumbnailView; │ │ + .line 181 │ # getter for: Lorg/smssecure/smssecure/components/ThumbnailView;->slide:Lorg/smssecure/smssecure/mms/Slide; │ invoke-static {v0}, Lorg/smssecure/smssecure/components/ThumbnailView;->access$300(Lorg/smssecure/smssecure/components/ThumbnailView;)Lorg/smssecure/smssecure/mms/Slide; │ │ move-result-object v0 │ │ if-eqz v0, :cond_1 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/components/ThumbnailView$ThumbnailClickDispatcher;->this$0:Lorg/smssecure/smssecure/components/ThumbnailView; │ │ + .line 182 │ # getter for: Lorg/smssecure/smssecure/components/ThumbnailView;->slide:Lorg/smssecure/smssecure/mms/Slide; │ invoke-static {v0}, Lorg/smssecure/smssecure/components/ThumbnailView;->access$300(Lorg/smssecure/smssecure/components/ThumbnailView;)Lorg/smssecure/smssecure/mms/Slide; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Lorg/smssecure/smssecure/mms/Slide;->asAttachment()Lorg/smssecure/smssecure/attachments/Attachment; │ │ @@ -73,14 +75,15 @@ │ │ move-result-object v0 │ │ if-eqz v0, :cond_1 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/components/ThumbnailView$ThumbnailClickDispatcher;->this$0:Lorg/smssecure/smssecure/components/ThumbnailView; │ │ + .line 183 │ # getter for: Lorg/smssecure/smssecure/components/ThumbnailView;->slide:Lorg/smssecure/smssecure/mms/Slide; │ invoke-static {v0}, Lorg/smssecure/smssecure/components/ThumbnailView;->access$300(Lorg/smssecure/smssecure/components/ThumbnailView;)Lorg/smssecure/smssecure/mms/Slide; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Lorg/smssecure/smssecure/mms/Slide;->getTransferState()J ├── smali/org/smssecure/smssecure/components/ThumbnailView.smali │ @@ -240,22 +240,25 @@ │ │ move-result-object v1 │ │ invoke-virtual {v0, v1}, Lcom/bumptech/glide/RequestManager;->load(Ljava/lang/Integer;)Lcom/bumptech/glide/DrawableTypeRequest; │ │ move-result-object v0 │ │ + .line 173 │ invoke-virtual {v0}, Lcom/bumptech/glide/DrawableTypeRequest;->asBitmap()Lcom/bumptech/glide/BitmapTypeRequest; │ │ move-result-object v0 │ │ + .line 174 │ invoke-virtual {v0}, Lcom/bumptech/glide/BitmapTypeRequest;->fitCenter()Lcom/bumptech/glide/BitmapRequestBuilder; │ │ move-result-object v0 │ │ + .line 172 │ return-object v0 │ .end method │ │ .method private buildThumbnailGlideRequest(Lorg/smssecure/smssecure/mms/Slide;Lorg/smssecure/smssecure/crypto/MasterSecret;)Lcom/bumptech/glide/GenericRequestBuilder; │ .locals 8 │ │ .prologue │ @@ -278,24 +281,26 @@ │ │ invoke-direct {v1, p2, v2}, Lorg/smssecure/smssecure/mms/DecryptableStreamUriLoader$DecryptableUri;->(Lorg/smssecure/smssecure/crypto/MasterSecret;Landroid/net/Uri;)V │ │ invoke-virtual {v0, v1}, Lcom/bumptech/glide/RequestManager;->load(Ljava/lang/Object;)Lcom/bumptech/glide/DrawableTypeRequest; │ │ move-result-object v0 │ │ + .line 164 │ invoke-virtual {v0}, Lcom/bumptech/glide/DrawableTypeRequest;->crossFade()Lcom/bumptech/glide/DrawableRequestBuilder; │ │ move-result-object v0 │ │ new-array v1, v7, [Lcom/bumptech/glide/load/resource/bitmap/BitmapTransformation; │ │ const/4 v2, 0x0 │ │ new-instance v3, Lorg/smssecure/smssecure/mms/RoundedCorners; │ │ + .line 165 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/components/ThumbnailView;->getContext()Landroid/content/Context; │ │ move-result-object v4 │ │ iget v5, p0, Lorg/smssecure/smssecure/components/ThumbnailView;->radius:I │ │ iget v6, p0, Lorg/smssecure/smssecure/components/ThumbnailView;->backgroundColorHint:I │ @@ -388,14 +393,15 @@ │ │ sget v0, Landroid/os/Build$VERSION;->SDK_INT:I │ │ const/16 v1, 0x11 │ │ if-lt v0, v1, :cond_0 │ │ + .line 158 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/components/ThumbnailView;->getContext()Landroid/content/Context; │ │ move-result-object v0 │ │ check-cast v0, Landroid/app/Activity; │ │ invoke-virtual {v0}, Landroid/app/Activity;->isDestroyed()Z │ @@ -403,17 +409,19 @@ │ move-result v0 │ │ if-nez v0, :cond_1 │ │ :cond_0 │ const/4 v0, 0x1 │ │ + .line 156 │ :goto_0 │ return v0 │ │ + .line 158 │ :cond_1 │ const/4 v0, 0x0 │ │ goto :goto_0 │ .end method │ │ │ @@ -580,24 +588,26 @@ │ │ invoke-direct {v1, p1, p2}, Lorg/smssecure/smssecure/mms/DecryptableStreamUriLoader$DecryptableUri;->(Lorg/smssecure/smssecure/crypto/MasterSecret;Landroid/net/Uri;)V │ │ invoke-virtual {v0, v1}, Lcom/bumptech/glide/RequestManager;->load(Ljava/lang/Object;)Lcom/bumptech/glide/DrawableTypeRequest; │ │ move-result-object v0 │ │ + .line 130 │ invoke-virtual {v0}, Lcom/bumptech/glide/DrawableTypeRequest;->crossFade()Lcom/bumptech/glide/DrawableRequestBuilder; │ │ move-result-object v0 │ │ new-array v1, v7, [Lcom/bumptech/glide/load/resource/bitmap/BitmapTransformation; │ │ const/4 v2, 0x0 │ │ new-instance v3, Lorg/smssecure/smssecure/mms/RoundedCorners; │ │ + .line 131 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/components/ThumbnailView;->getContext()Landroid/content/Context; │ │ move-result-object v4 │ │ iget v5, p0, Lorg/smssecure/smssecure/components/ThumbnailView;->radius:I │ │ iget v6, p0, Lorg/smssecure/smssecure/components/ThumbnailView;->backgroundColorHint:I │ @@ -608,14 +618,15 @@ │ │ invoke-virtual {v0, v1}, Lcom/bumptech/glide/DrawableRequestBuilder;->transform([Lcom/bumptech/glide/load/resource/bitmap/BitmapTransformation;)Lcom/bumptech/glide/DrawableRequestBuilder; │ │ move-result-object v0 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/components/ThumbnailView;->image:Landroid/widget/ImageView; │ │ + .line 132 │ invoke-virtual {v0, v1}, Lcom/bumptech/glide/DrawableRequestBuilder;->into(Landroid/widget/ImageView;)Lcom/bumptech/glide/request/target/Target; │ │ .line 133 │ return-void │ .end method │ │ .method public setImageResource(Lorg/smssecure/smssecure/crypto/MasterSecret;Lorg/smssecure/smssecure/mms/Slide;Z)V │ @@ -757,26 +768,28 @@ │ │ const-string v2, ", progress " │ │ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v1 │ │ + .line 117 │ invoke-virtual {p2}, Lorg/smssecure/smssecure/mms/Slide;->getTransferState()J │ │ move-result-wide v2 │ │ invoke-virtual {v1, v2, v3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder; │ │ move-result-object v1 │ │ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v1 │ │ + .line 116 │ invoke-static {v0, v1}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I │ │ .line 119 │ iput-object p2, p0, Lorg/smssecure/smssecure/components/ThumbnailView;->slide:Lorg/smssecure/smssecure/mms/Slide; │ │ .line 121 │ invoke-virtual {p2}, Lorg/smssecure/smssecure/mms/Slide;->getThumbnailUri()Landroid/net/Uri; ├── smali/org/smssecure/smssecure/components/ZoomingImageView.smali │ @@ -87,28 +87,32 @@ │ │ move-result-object v0 │ │ new-instance v1, Lorg/smssecure/smssecure/mms/DecryptableStreamUriLoader$DecryptableUri; │ │ invoke-direct {v1, p1, p2}, Lorg/smssecure/smssecure/mms/DecryptableStreamUriLoader$DecryptableUri;->(Lorg/smssecure/smssecure/crypto/MasterSecret;Landroid/net/Uri;)V │ │ + .line 36 │ invoke-virtual {v0, v1}, Lcom/bumptech/glide/RequestManager;->load(Ljava/lang/Object;)Lcom/bumptech/glide/DrawableTypeRequest; │ │ move-result-object v0 │ │ + .line 37 │ invoke-virtual {v0}, Lcom/bumptech/glide/DrawableTypeRequest;->dontTransform()Lcom/bumptech/glide/DrawableRequestBuilder; │ │ move-result-object v0 │ │ + .line 38 │ invoke-virtual {v0}, Lcom/bumptech/glide/DrawableRequestBuilder;->dontAnimate()Lcom/bumptech/glide/DrawableRequestBuilder; │ │ move-result-object v0 │ │ new-instance v1, Lorg/smssecure/smssecure/components/ZoomingImageView$1; │ │ invoke-direct {v1, p0, p0}, Lorg/smssecure/smssecure/components/ZoomingImageView$1;->(Lorg/smssecure/smssecure/components/ZoomingImageView;Landroid/widget/ImageView;)V │ │ + .line 39 │ invoke-virtual {v0, v1}, Lcom/bumptech/glide/DrawableRequestBuilder;->into(Lcom/bumptech/glide/request/target/Target;)Lcom/bumptech/glide/request/target/Target; │ │ .line 45 │ return-void │ .end method ├── smali/org/smssecure/smssecure/components/emoji/EmojiProvider$EmojiDrawable.smali │ @@ -95,14 +95,15 @@ │ │ mul-float/2addr v5, v6 │ │ int-to-float v6, v0 │ │ iget-object v7, p0, Lorg/smssecure/smssecure/components/emoji/EmojiProvider$EmojiDrawable;->this$0:Lorg/smssecure/smssecure/components/emoji/EmojiProvider; │ │ + .line 156 │ # getter for: Lorg/smssecure/smssecure/components/emoji/EmojiProvider;->verticalPad:F │ invoke-static {v7}, Lorg/smssecure/smssecure/components/emoji/EmojiProvider;->access$200(Lorg/smssecure/smssecure/components/emoji/EmojiProvider;)F │ │ move-result v7 │ │ mul-float/2addr v6, v7 │ │ @@ -128,36 +129,40 @@ │ │ mul-float/2addr v6, v7 │ │ int-to-float v0, v0 │ │ iget-object v7, p0, Lorg/smssecure/smssecure/components/emoji/EmojiProvider$EmojiDrawable;->this$0:Lorg/smssecure/smssecure/components/emoji/EmojiProvider; │ │ + .line 158 │ # getter for: Lorg/smssecure/smssecure/components/emoji/EmojiProvider;->verticalPad:F │ invoke-static {v7}, Lorg/smssecure/smssecure/components/emoji/EmojiProvider;->access$200(Lorg/smssecure/smssecure/components/emoji/EmojiProvider;)F │ │ move-result v7 │ │ mul-float/2addr v0, v7 │ │ add-float/2addr v0, v6 │ │ float-to-int v0, v0 │ │ invoke-direct {v3, v4, v5, v1, v0}, Landroid/graphics/Rect;->(IIII)V │ │ + .line 159 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/components/emoji/EmojiProvider$EmojiDrawable;->getBounds()Landroid/graphics/Rect; │ │ move-result-object v0 │ │ + .line 160 │ # getter for: Lorg/smssecure/smssecure/components/emoji/EmojiProvider;->paint:Landroid/graphics/Paint; │ invoke-static {}, Lorg/smssecure/smssecure/components/emoji/EmojiProvider;->access$300()Landroid/graphics/Paint; │ │ move-result-object v1 │ │ + .line 154 │ invoke-virtual {p1, v2, v3, v0, v1}, Landroid/graphics/Canvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Paint;)V │ │ goto :goto_0 │ .end method │ │ .method public getIntrinsicHeight()I │ .locals 1 ├── smali/org/smssecure/smssecure/components/emoji/EmojiProvider$EmojiPageBitmap.smali │ @@ -180,14 +180,15 @@ │ │ invoke-direct {v0, p0}, Lorg/smssecure/smssecure/components/emoji/EmojiProvider$EmojiPageBitmap$2;->(Lorg/smssecure/smssecure/components/emoji/EmojiProvider$EmojiPageBitmap;)V │ │ const/4 v1, 0x0 │ │ new-array v1, v1, [Ljava/lang/Void; │ │ + .line 240 │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/components/emoji/EmojiProvider$EmojiPageBitmap$2;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 242 │ iget-object v0, p0, Lorg/smssecure/smssecure/components/emoji/EmojiProvider$EmojiPageBitmap;->task:Lorg/smssecure/smssecure/util/ListenableFutureTask; │ │ goto :goto_0 │ .end method │ @@ -244,33 +245,36 @@ │ │ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v1 │ │ iget-object v2, p0, Lorg/smssecure/smssecure/components/emoji/EmojiProvider$EmojiPageBitmap;->model:Lorg/smssecure/smssecure/components/emoji/EmojiPageModel; │ │ + .line 250 │ invoke-interface {v2}, Lorg/smssecure/smssecure/components/emoji/EmojiPageModel;->getSprite()Ljava/lang/String; │ │ move-result-object v2 │ │ 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 │ │ iget-object v2, p0, Lorg/smssecure/smssecure/components/emoji/EmojiProvider$EmojiPageBitmap;->this$0:Lorg/smssecure/smssecure/components/emoji/EmojiProvider; │ │ + .line 251 │ # getter for: Lorg/smssecure/smssecure/components/emoji/EmojiProvider;->decodeScale:F │ invoke-static {v2}, Lorg/smssecure/smssecure/components/emoji/EmojiProvider;->access$800(Lorg/smssecure/smssecure/components/emoji/EmojiProvider;)F │ │ move-result v2 │ │ + .line 249 │ invoke-static {v0, v1, v2}, Lorg/smssecure/smssecure/util/BitmapUtil;->createScaledBitmap(Landroid/content/Context;Ljava/lang/Object;F)Landroid/graphics/Bitmap; │ │ move-result-object v0 │ │ .line 252 │ new-instance v1, Ljava/lang/ref/SoftReference; ├── smali/org/smssecure/smssecure/components/emoji/EmojiSpan.smali │ @@ -49,14 +49,15 @@ │ │ invoke-static {v1}, Ljava/lang/Math;->abs(I)I │ │ move-result v1 │ │ add-int/2addr v0, v1 │ │ + .line 19 │ :goto_0 │ iput v0, p0, Lorg/smssecure/smssecure/components/emoji/EmojiSpan;->size:I │ │ .line 20 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/components/emoji/EmojiSpan;->getDrawable()Landroid/graphics/drawable/Drawable; │ │ move-result-object v0 │ @@ -66,15 +67,15 @@ │ iget v2, p0, Lorg/smssecure/smssecure/components/emoji/EmojiSpan;->size:I │ │ invoke-virtual {v0, v3, v3, v1, v2}, Landroid/graphics/drawable/Drawable;->setBounds(IIII)V │ │ .line 21 │ return-void │ │ - .line 18 │ + .line 19 │ :cond_0 │ invoke-virtual {p2}, Landroid/widget/TextView;->getResources()Landroid/content/res/Resources; │ │ move-result-object v0 │ │ const v1, 0x7f0a007e ├── smali/org/smssecure/smssecure/components/emoji/EmojiTextView.smali │ @@ -117,26 +117,28 @@ │ │ sget-object v3, Landroid/text/TextUtils$TruncateAt;->END:Landroid/text/TextUtils$TruncateAt; │ │ if-ne v1, v3, :cond_1 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/components/emoji/EmojiTextView;->source:Ljava/lang/CharSequence; │ │ + .line 50 │ invoke-static {v1}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z │ │ move-result v1 │ │ if-nez v1, :cond_1 │ │ const/high16 v1, -0x80000000 │ │ if-eq v0, v1, :cond_0 │ │ if-ne v0, v8, :cond_1 │ │ + .line 52 │ :cond_0 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/components/emoji/EmojiTextView;->getPaint()Landroid/text/TextPaint; │ │ move-result-object v0 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/components/emoji/EmojiTextView;->source:Ljava/lang/CharSequence; │ │ @@ -183,22 +185,24 @@ │ │ iget v2, v0, Landroid/graphics/Paint$FontMetricsInt;->top:I │ │ iget v0, v0, Landroid/graphics/Paint$FontMetricsInt;->bottom:I │ │ sub-int v0, v2, v0 │ │ + .line 57 │ invoke-static {v0}, Ljava/lang/Math;->abs(I)I │ │ move-result v0 │ │ invoke-static {v0, v8}, Landroid/view/View$MeasureSpec;->makeMeasureSpec(II)I │ │ move-result v0 │ │ + .line 56 │ invoke-super {p0, v1, v0}, Landroid/support/v7/widget/AppCompatTextView;->onMeasure(II)V │ │ .line 62 │ :goto_0 │ return-void │ │ .line 59 ├── smali/org/smssecure/smssecure/components/emoji/EmojiView.smali │ @@ -101,38 +101,42 @@ │ .line 45 │ iget-object v0, p0, Lorg/smssecure/smssecure/components/emoji/EmojiView;->drawable:Landroid/graphics/drawable/Drawable; │ │ invoke-virtual {p0}, Lorg/smssecure/smssecure/components/emoji/EmojiView;->getPaddingLeft()I │ │ move-result v1 │ │ + .line 46 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/components/emoji/EmojiView;->getPaddingTop()I │ │ move-result v2 │ │ + .line 47 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/components/emoji/EmojiView;->getWidth()I │ │ move-result v3 │ │ invoke-virtual {p0}, Lorg/smssecure/smssecure/components/emoji/EmojiView;->getPaddingRight()I │ │ move-result v4 │ │ sub-int/2addr v3, v4 │ │ + .line 48 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/components/emoji/EmojiView;->getHeight()I │ │ move-result v4 │ │ invoke-virtual {p0}, Lorg/smssecure/smssecure/components/emoji/EmojiView;->getPaddingBottom()I │ │ move-result v5 │ │ sub-int/2addr v4, v5 │ │ + .line 45 │ invoke-virtual {v0, v1, v2, v3, v4}, Landroid/graphics/drawable/Drawable;->setBounds(IIII)V │ │ .line 49 │ iget-object v0, p0, Lorg/smssecure/smssecure/components/emoji/EmojiView;->drawable:Landroid/graphics/drawable/Drawable; │ │ invoke-virtual {v0, p0}, Landroid/graphics/drawable/Drawable;->setCallback(Landroid/graphics/drawable/Drawable$Callback;)V │ │ @@ -241,14 +245,15 @@ │ │ iget-object v4, p0, Lorg/smssecure/smssecure/components/emoji/EmojiView;->emoji:Ljava/lang/String; │ │ invoke-virtual {v3, v4}, Landroid/graphics/Paint;->measureText(Ljava/lang/String;)F │ │ move-result v3 │ │ + .line 60 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/components/emoji/EmojiView;->getWidth()I │ │ move-result v4 │ │ invoke-virtual {p0}, Lorg/smssecure/smssecure/components/emoji/EmojiView;->getPaddingLeft()I │ │ move-result v5 │ @@ -348,14 +353,15 @@ │ │ invoke-static {v0}, Lorg/smssecure/smssecure/components/emoji/EmojiProvider;->getInstance(Landroid/content/Context;)Lorg/smssecure/smssecure/components/emoji/EmojiProvider; │ │ move-result-object v0 │ │ const/4 v1, 0x0 │ │ + .line 35 │ invoke-static {p1, v1}, Ljava/lang/Character;->codePointAt(Ljava/lang/CharSequence;I)I │ │ move-result v1 │ │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/components/emoji/EmojiProvider;->getEmojiDrawable(I)Landroid/graphics/drawable/Drawable; │ │ move-result-object v0 ├── smali/org/smssecure/smssecure/components/emoji/RecentEmojiPageModel$1.smali │ @@ -79,18 +79,20 @@ │ │ invoke-interface {v1}, Landroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor; │ │ move-result-object v1 │ │ const-string v2, "pref_recent_emoji2" │ │ + .line 84 │ invoke-interface {v1, v2, v0}, Landroid/content/SharedPreferences$Editor;->putString(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SharedPreferences$Editor; │ │ move-result-object v0 │ │ + .line 85 │ invoke-interface {v0}, Landroid/content/SharedPreferences$Editor;->apply()V │ :try_end_0 │ .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0 │ │ .line 90 │ :goto_0 │ const/4 v0, 0x0 ├── smali/org/smssecure/smssecure/components/emoji/RecentEmojiPageModel.smali │ @@ -121,14 +121,15 @@ │ │ move-result-object v1 │ │ const-class v2, Ljava/util/LinkedHashSet; │ │ const-class v3, Ljava/lang/String; │ │ + .line 37 │ invoke-virtual {v1, v2, v3}, Lcom/fasterxml/jackson/databind/type/TypeFactory;->constructCollectionType(Ljava/lang/Class;Ljava/lang/Class;)Lcom/fasterxml/jackson/databind/type/CollectionType; │ │ move-result-object v1 │ │ .line 38 │ invoke-static {}, Lorg/smssecure/smssecure/util/JsonUtils;->getMapper()Lcom/fasterxml/jackson/databind/ObjectMapper; │ │ @@ -362,12 +363,13 @@ │ │ invoke-direct {v1, p0, v0}, Lorg/smssecure/smssecure/components/emoji/RecentEmojiPageModel$1;->(Lorg/smssecure/smssecure/components/emoji/RecentEmojiPageModel;Ljava/util/LinkedHashSet;)V │ │ const/4 v0, 0x0 │ │ new-array v0, v0, [Ljava/lang/Void; │ │ + .line 92 │ invoke-virtual {v1, v0}, Lorg/smssecure/smssecure/components/emoji/RecentEmojiPageModel$1;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 93 │ return-void │ .end method ├── smali/org/smssecure/smssecure/components/reminder/DefaultSmsReminder.smali │ @@ -16,24 +16,27 @@ │ │ invoke-virtual {p1, v0}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v0 │ │ const v1, 0x7f080240 │ │ + .line 20 │ invoke-virtual {p1, v1}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v1 │ │ const v2, 0x7f08023f │ │ + .line 21 │ invoke-virtual {p1, v2}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v2 │ │ + .line 19 │ invoke-direct {p0, v0, v1, v2}, Lorg/smssecure/smssecure/components/reminder/Reminder;->(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)V │ │ .line 23 │ new-instance v0, Lorg/smssecure/smssecure/components/reminder/DefaultSmsReminder$1; │ │ invoke-direct {v0, p0, p1}, Lorg/smssecure/smssecure/components/reminder/DefaultSmsReminder$1;->(Lorg/smssecure/smssecure/components/reminder/DefaultSmsReminder;Landroid/content/Context;)V ├── smali/org/smssecure/smssecure/components/reminder/StoreRatingReminder.smali │ @@ -35,24 +35,27 @@ │ │ invoke-virtual {p1, v0}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v0 │ │ const v1, 0x7f08023d │ │ + .line 24 │ invoke-virtual {p1, v1}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v1 │ │ const v2, 0x7f08023c │ │ + .line 25 │ invoke-virtual {p1, v2}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v2 │ │ + .line 23 │ invoke-direct {p0, v0, v1, v2}, Lorg/smssecure/smssecure/components/reminder/Reminder;->(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)V │ │ .line 27 │ new-instance v0, Lorg/smssecure/smssecure/components/reminder/StoreRatingReminder$1; │ │ invoke-direct {v0, p0, p1}, Lorg/smssecure/smssecure/components/reminder/StoreRatingReminder$1;->(Lorg/smssecure/smssecure/components/reminder/StoreRatingReminder;Landroid/content/Context;)V │ │ @@ -77,14 +80,15 @@ │ .prologue │ .line 66 │ :try_start_0 │ invoke-virtual {p0}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager; │ │ move-result-object v0 │ │ + .line 67 │ invoke-virtual {p0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; │ │ move-result-object v1 │ │ const/4 v2, 0x0 │ │ invoke-virtual {v0, v1, v2}, Landroid/content/pm/PackageManager;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo; │ @@ -198,14 +202,15 @@ │ .line 60 │ const-wide/16 v6, 0x7 │ │ cmp-long v1, v2, v6 │ │ if-ltz v1, :cond_0 │ │ + .line 61 │ invoke-static {}, Ljava/lang/System;->currentTimeMillis()J │ │ move-result-wide v2 │ │ cmp-long v1, v2, v4 │ │ if-ltz v1, :cond_0 ├── smali/org/smssecure/smssecure/components/reminder/SystemSmsImportReminder.smali │ @@ -13,24 +13,27 @@ │ │ invoke-virtual {p1, v0}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v0 │ │ const v1, 0x7f080242 │ │ + .line 18 │ invoke-virtual {p1, v1}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v1 │ │ const v2, 0x7f080241 │ │ + .line 19 │ invoke-virtual {p1, v2}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v2 │ │ + .line 17 │ invoke-direct {p0, v0, v1, v2}, Lorg/smssecure/smssecure/components/reminder/Reminder;->(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)V │ │ .line 21 │ new-instance v0, Lorg/smssecure/smssecure/components/reminder/SystemSmsImportReminder$1; │ │ invoke-direct {v0, p0, p1, p2}, Lorg/smssecure/smssecure/components/reminder/SystemSmsImportReminder$1;->(Lorg/smssecure/smssecure/components/reminder/SystemSmsImportReminder;Landroid/content/Context;Lorg/smssecure/smssecure/crypto/MasterSecret;)V ├── smali/org/smssecure/smssecure/contacts/ContactAccessor.smali │ @@ -27,15 +27,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 53 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 184 │ return-void │ .end method │ │ .method private getContactData(Landroid/content/Context;Ljava/lang/String;J)Lorg/smssecure/smssecure/contacts/ContactAccessor$ContactData; │ .locals 17 │ │ .prologue │ @@ -366,26 +365,28 @@ │ │ new-array v4, v4, [Ljava/lang/Object; │ │ const-string v5, "data2" │ │ aput-object v5, v4, v9 │ │ + .line 264 │ invoke-static {v10}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v5 │ │ aput-object v5, v4, v11 │ │ const-string v5, "data2" │ │ aput-object v5, v4, v10 │ │ const/16 v5, 0x11 │ │ + .line 266 │ invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v5 │ │ aput-object v5, v4, v8 │ │ const/4 v5, 0x4 │ @@ -394,20 +395,22 @@ │ │ aput-object v8, v4, v5 │ │ const/4 v5, 0x5 │ │ const/16 v8, 0x14 │ │ + .line 268 │ invoke-static {v8}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v8 │ │ aput-object v8, v4, v5 │ │ + .line 262 │ invoke-static {v0, v4}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ │ .line 270 │ const-string v5, "times_contacted DESC,display_name,is_super_primary DESC,data2" │ │ move-object v0, p2 │ │ @@ -655,18 +658,20 @@ │ :try_start_0 │ invoke-virtual {p1}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver; │ │ move-result-object v0 │ │ sget-object v1, Landroid/provider/ContactsContract$CommonDataKinds$Phone;->CONTENT_FILTER_URI:Landroid/net/Uri; │ │ + .line 116 │ invoke-static {p2}, Landroid/net/Uri;->encode(Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v2 │ │ + .line 115 │ invoke-static {v1, v2}, Landroid/net/Uri;->withAppendedPath(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri; │ │ move-result-object v1 │ │ const/4 v2, 0x0 │ │ const/4 v3, 0x0 ├── smali/org/smssecure/smssecure/contacts/ContactSelectionListAdapter.smali │ @@ -366,14 +366,15 @@ │ │ move-result-object v7 │ │ invoke-static {v7, v0, v1}, Landroid/provider/ContactsContract$CommonDataKinds$Phone;->getTypeLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence; │ │ move-result-object v0 │ │ + .line 127 │ invoke-interface {v0}, Ljava/lang/CharSequence;->toString()Ljava/lang/String; │ │ move-result-object v7 │ │ .line 129 │ if-ne v4, v8, :cond_0 │ │ @@ -426,14 +427,15 @@ │ │ .line 129 │ :cond_0 │ iget-object v0, p0, Lorg/smssecure/smssecure/contacts/ContactSelectionListAdapter;->drawables:Landroid/content/res/TypedArray; │ │ const/high16 v1, -0x1000000 │ │ + .line 130 │ invoke-virtual {v0, v8, v1}, Landroid/content/res/TypedArray;->getColor(II)I │ │ move-result v8 │ │ goto :goto_0 │ .end method ├── smali/org/smssecure/smssecure/contacts/ContactSelectionListItem.smali │ @@ -370,14 +370,15 @@ │ │ move-result-object v0 │ │ if-eqz v0, :cond_2 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/contacts/ContactSelectionListItem;->recipients:Lorg/smssecure/smssecure/recipients/Recipients; │ │ + .line 61 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/recipients/Recipients;->getPrimaryRecipient()Lorg/smssecure/smssecure/recipients/Recipient; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Lorg/smssecure/smssecure/recipients/Recipient;->getName()Ljava/lang/String; │ │ move-result-object v0 ├── smali/org/smssecure/smssecure/contacts/ContactsDatabase.smali │ @@ -132,32 +132,35 @@ │ │ move-result-object v2 │ │ aput-object v2, v1, v5 │ │ aput-object p1, v1, v6 │ │ + .line 143 │ invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v2 │ │ aput-object v2, v1, v7 │ │ const-string v2, "\u21e2" │ │ aput-object v2, v1, v8 │ │ const/4 v2, 0x5 │ │ + .line 144 │ invoke-static {v6}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v3 │ │ aput-object v3, v1, v2 │ │ + .line 142 │ invoke-virtual {v0, v1}, Landroid/database/MatrixCursor;->addRow([Ljava/lang/Object;)V │ │ .line 146 │ return-object v0 │ .end method │ │ .method public querySilenceContacts(Ljava/lang/String;)Landroid/database/Cursor; │ @@ -239,36 +242,39 @@ │ │ aput-object v3, v2, v9 │ │ new-instance v3, Landroid/util/Pair; │ │ const-string v4, "number_type" │ │ + .line 135 │ invoke-static {v9}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v5 │ │ invoke-direct {v3, v4, v5}, Landroid/util/Pair;->(Ljava/lang/Object;Ljava/lang/Object;)V │ │ aput-object v3, v2, v10 │ │ new-instance v3, Landroid/util/Pair; │ │ const-string v4, "contact_type" │ │ + .line 136 │ invoke-static {v10}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v5 │ │ invoke-direct {v3, v4, v5}, Landroid/util/Pair;->(Ljava/lang/Object;Ljava/lang/Object;)V │ │ aput-object v3, v2, v11 │ │ invoke-direct {v1, v0, v6, v2}, Lorg/smssecure/smssecure/contacts/ContactsDatabase$ProjectionMappingCursor;->(Landroid/database/Cursor;Ljava/util/Map;[Landroid/util/Pair;)V │ │ + .line 133 │ return-object v1 │ │ .line 125 │ :cond_0 │ iget-object v0, p0, Lorg/smssecure/smssecure/contacts/ContactsDatabase;->context:Landroid/content/Context; │ │ invoke-virtual {v0}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver; │ @@ -433,24 +439,26 @@ │ │ new-array v2, v9, [Landroid/util/Pair; │ │ new-instance v3, Landroid/util/Pair; │ │ const-string v4, "contact_type" │ │ + .line 100 │ invoke-static {v8}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v5 │ │ invoke-direct {v3, v4, v5}, Landroid/util/Pair;->(Ljava/lang/Object;Ljava/lang/Object;)V │ │ aput-object v3, v2, v8 │ │ invoke-direct {v1, v0, v6, v2}, Lorg/smssecure/smssecure/contacts/ContactsDatabase$ProjectionMappingCursor;->(Landroid/database/Cursor;Ljava/util/Map;[Landroid/util/Pair;)V │ │ + .line 99 │ return-object v1 │ │ .line 70 │ :cond_0 │ sget-object v0, Landroid/provider/ContactsContract$CommonDataKinds$Phone;->CONTENT_URI:Landroid/net/Uri; │ │ goto :goto_0 ├── smali/org/smssecure/smssecure/contacts/RecipientsAdapter.smali │ @@ -415,14 +415,15 @@ │ │ move-result-object v0 │ │ const-string v2, "," │ │ const-string v4, " " │ │ + .line 79 │ invoke-virtual {v0, v2, v4}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; │ │ move-result-object v0 │ │ goto :goto_1 │ │ .line 91 ├── smali/org/smssecure/smssecure/contacts/avatars/BitmapContactPhoto.smali │ @@ -50,19 +50,22 @@ │ │ invoke-static {v0}, Lcom/makeramen/roundedimageview/RoundedDrawable;->fromBitmap(Landroid/graphics/Bitmap;)Lcom/makeramen/roundedimageview/RoundedDrawable; │ │ move-result-object v0 │ │ sget-object v1, Landroid/widget/ImageView$ScaleType;->CENTER_CROP:Landroid/widget/ImageView$ScaleType; │ │ + .line 26 │ invoke-virtual {v0, v1}, Lcom/makeramen/roundedimageview/RoundedDrawable;->setScaleType(Landroid/widget/ImageView$ScaleType;)Lcom/makeramen/roundedimageview/RoundedDrawable; │ │ move-result-object v0 │ │ const/4 v1, 0x1 │ │ + .line 27 │ invoke-virtual {v0, v1}, Lcom/makeramen/roundedimageview/RoundedDrawable;->setOval(Z)Lcom/makeramen/roundedimageview/RoundedDrawable; │ │ move-result-object v0 │ │ + .line 25 │ return-object v0 │ .end method ├── smali/org/smssecure/smssecure/contacts/avatars/ContactPhotoFactory.smali │ @@ -55,22 +55,24 @@ │ │ move-result-object v1 │ │ new-instance v2, Lorg/smssecure/smssecure/mms/ContactPhotoUriLoader$ContactPhotoUri; │ │ invoke-direct {v2, p1}, Lorg/smssecure/smssecure/mms/ContactPhotoUriLoader$ContactPhotoUri;->(Landroid/net/Uri;)V │ │ + .line 44 │ invoke-virtual {v1, v2}, Lcom/bumptech/glide/RequestManager;->load(Ljava/lang/Object;)Lcom/bumptech/glide/DrawableTypeRequest; │ │ move-result-object v1 │ │ invoke-virtual {v1}, Lcom/bumptech/glide/DrawableTypeRequest;->asBitmap()Lcom/bumptech/glide/BitmapTypeRequest; │ │ move-result-object v1 │ │ + .line 45 │ invoke-virtual {v1}, Lcom/bumptech/glide/BitmapTypeRequest;->centerCrop()Lcom/bumptech/glide/BitmapRequestBuilder; │ │ move-result-object v1 │ │ invoke-virtual {v1, v0, v0}, Lcom/bumptech/glide/BitmapRequestBuilder;->into(II)Lcom/bumptech/glide/request/FutureTarget; │ │ move-result-object v0 ├── smali/org/smssecure/smssecure/contacts/avatars/GeneratedContactPhoto.smali │ @@ -100,57 +100,66 @@ │ move-result v0 │ │ .line 30 │ invoke-static {}, Lcom/amulyakhare/textdrawable/TextDrawable;->builder()Lcom/amulyakhare/textdrawable/TextDrawable$IShapeBuilder; │ │ move-result-object v2 │ │ + .line 31 │ invoke-interface {v2}, Lcom/amulyakhare/textdrawable/TextDrawable$IShapeBuilder;->beginConfig()Lcom/amulyakhare/textdrawable/TextDrawable$IConfigBuilder; │ │ move-result-object v2 │ │ + .line 32 │ invoke-interface {v2, v0}, Lcom/amulyakhare/textdrawable/TextDrawable$IConfigBuilder;->width(I)Lcom/amulyakhare/textdrawable/TextDrawable$IConfigBuilder; │ │ move-result-object v2 │ │ + .line 33 │ invoke-interface {v2, v0}, Lcom/amulyakhare/textdrawable/TextDrawable$IConfigBuilder;->height(I)Lcom/amulyakhare/textdrawable/TextDrawable$IConfigBuilder; │ │ move-result-object v2 │ │ if-eqz p3, :cond_0 │ │ move v0, p2 │ │ + .line 34 │ :goto_0 │ invoke-interface {v2, v0}, Lcom/amulyakhare/textdrawable/TextDrawable$IConfigBuilder;->textColor(I)Lcom/amulyakhare/textdrawable/TextDrawable$IConfigBuilder; │ │ move-result-object v0 │ │ + .line 35 │ invoke-interface {v0}, Lcom/amulyakhare/textdrawable/TextDrawable$IConfigBuilder;->endConfig()Lcom/amulyakhare/textdrawable/TextDrawable$IShapeBuilder; │ │ move-result-object v0 │ │ iget-object v2, p0, Lorg/smssecure/smssecure/contacts/avatars/GeneratedContactPhoto;->name:Ljava/lang/String; │ │ + .line 36 │ invoke-direct {p0, v2}, Lorg/smssecure/smssecure/contacts/avatars/GeneratedContactPhoto;->getCharacter(Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v2 │ │ if-eqz p3, :cond_1 │ │ :goto_1 │ invoke-interface {v0, v2, v1}, Lcom/amulyakhare/textdrawable/TextDrawable$IShapeBuilder;->buildRound(Ljava/lang/String;I)Lcom/amulyakhare/textdrawable/TextDrawable; │ │ move-result-object v0 │ │ + .line 30 │ return-object v0 │ │ :cond_0 │ move v0, v1 │ │ + .line 33 │ goto :goto_0 │ │ :cond_1 │ move v1, p2 │ │ + .line 36 │ goto :goto_1 │ .end method ├── smali/org/smssecure/smssecure/crypto/AsymmetricMasterCipher.smali │ @@ -238,16 +238,16 @@ │ move-result-object v0 │ │ .line 75 │ new-instance v1, Ljava/lang/String; │ │ invoke-direct {v1, v0}, Ljava/lang/String;->([B)V │ :try_end_0 │ - .catch Lorg/whispersystems/libaxolotl/InvalidKeyException; {:try_start_0 .. :try_end_0} :catch_1 │ - .catch Lorg/whispersystems/libaxolotl/InvalidMessageException; {:try_start_0 .. :try_end_0} :catch_0 │ + .catch Lorg/whispersystems/libaxolotl/InvalidKeyException; {:try_start_0 .. :try_end_0} :catch_0 │ + .catch Lorg/whispersystems/libaxolotl/InvalidMessageException; {:try_start_0 .. :try_end_0} :catch_1 │ │ return-object v1 │ │ .line 76 │ :catch_0 │ move-exception v0 ├── smali/org/smssecure/smssecure/crypto/IdentityKeyUtil.smali │ @@ -280,33 +280,37 @@ │ .method public static hasCurve25519IdentityKeys(Landroid/content/Context;)Z │ .locals 1 │ │ .prologue │ .line 98 │ const-string v0, "pref_identity_public_curve25519" │ │ + .line 99 │ invoke-static {p0, v0}, Lorg/smssecure/smssecure/crypto/IdentityKeyUtil;->retrieve(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v0 │ │ if-eqz v0, :cond_0 │ │ const-string v0, "pref_identity_private_curve25519" │ │ + .line 100 │ invoke-static {p0, v0}, Lorg/smssecure/smssecure/crypto/IdentityKeyUtil;->retrieve(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v0 │ │ if-eqz v0, :cond_0 │ │ const/4 v0, 0x1 │ │ + .line 98 │ :goto_0 │ return v0 │ │ + .line 100 │ :cond_0 │ const/4 v0, 0x0 │ │ goto :goto_0 │ .end method │ │ .method public static hasIdentityKey(Landroid/content/Context;)Z │ @@ -321,30 +325,33 @@ │ invoke-virtual {p0, v1, v0}, Landroid/content/Context;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences; │ │ move-result-object v1 │ │ .line 49 │ const-string v2, "pref_identity_public_curve25519" │ │ + .line 50 │ invoke-interface {v1, v2}, Landroid/content/SharedPreferences;->contains(Ljava/lang/String;)Z │ │ move-result v2 │ │ if-eqz v2, :cond_0 │ │ const-string v2, "pref_identity_private_curve25519" │ │ + .line 51 │ invoke-interface {v1, v2}, Landroid/content/SharedPreferences;->contains(Ljava/lang/String;)Z │ │ move-result v1 │ │ if-eqz v1, :cond_0 │ │ const/4 v0, 0x1 │ │ + .line 49 │ :cond_0 │ return v0 │ .end method │ │ .method public static retrieve(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String; │ .locals 2 ├── smali/org/smssecure/smssecure/crypto/DecryptingPartInputStream.smali │ @@ -73,16 +73,16 @@ │ │ invoke-direct {v0, v1}, Ljava/io/FileNotFoundException;->(Ljava/lang/String;)V │ │ throw v0 │ :try_end_0 │ .catch Ljava/security/InvalidKeyException; {:try_start_0 .. :try_end_0} :catch_0 │ .catch Ljava/security/NoSuchAlgorithmException; {:try_start_0 .. :try_end_0} :catch_3 │ - .catch Ljava/security/InvalidAlgorithmParameterException; {:try_start_0 .. :try_end_0} :catch_4 │ - .catch Ljavax/crypto/NoSuchPaddingException; {:try_start_0 .. :try_end_0} :catch_1 │ + .catch Ljava/security/InvalidAlgorithmParameterException; {:try_start_0 .. :try_end_0} :catch_1 │ + .catch Ljavax/crypto/NoSuchPaddingException; {:try_start_0 .. :try_end_0} :catch_4 │ .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_2 │ │ .line 72 │ :catch_0 │ move-exception v0 │ │ .line 73 │ @@ -158,16 +158,16 @@ │ .line 71 │ const-wide/16 v0, 0x0 │ │ iput-wide v0, p0, Lorg/smssecure/smssecure/crypto/DecryptingPartInputStream;->totalRead:J │ :try_end_1 │ .catch Ljava/security/InvalidKeyException; {:try_start_1 .. :try_end_1} :catch_0 │ .catch Ljava/security/NoSuchAlgorithmException; {:try_start_1 .. :try_end_1} :catch_3 │ - .catch Ljava/security/InvalidAlgorithmParameterException; {:try_start_1 .. :try_end_1} :catch_4 │ - .catch Ljavax/crypto/NoSuchPaddingException; {:try_start_1 .. :try_end_1} :catch_1 │ + .catch Ljava/security/InvalidAlgorithmParameterException; {:try_start_1 .. :try_end_1} :catch_1 │ + .catch Ljavax/crypto/NoSuchPaddingException; {:try_start_1 .. :try_end_1} :catch_4 │ .catch Ljava/io/IOException; {:try_start_1 .. :try_end_1} :catch_2 │ │ .line 81 │ return-void │ │ .line 75 │ :catch_1 ├── smali/org/smssecure/smssecure/crypto/KeyExchangeInitiator.smali │ @@ -163,14 +163,15 @@ │ invoke-direct {v4, p0, p1}, Lorg/smssecure/smssecure/crypto/storage/SilenceIdentityKeyStore;->(Landroid/content/Context;Lorg/smssecure/smssecure/crypto/MasterSecret;)V │ │ .line 72 │ new-instance v0, Lorg/whispersystems/libaxolotl/SessionBuilder; │ │ new-instance v5, Lorg/whispersystems/libaxolotl/AxolotlAddress; │ │ + .line 73 │ invoke-virtual {v6}, Lorg/smssecure/smssecure/recipients/Recipient;->getNumber()Ljava/lang/String; │ │ move-result-object v6 │ │ const/4 v7, 0x1 │ │ invoke-direct {v5, v6, v7}, Lorg/whispersystems/libaxolotl/AxolotlAddress;->(Ljava/lang/String;I)V ├── smali/org/smssecure/smssecure/crypto/MasterCipher.smali │ @@ -48,16 +48,16 @@ │ │ invoke-static {v0}, Ljavax/crypto/Mac;->getInstance(Ljava/lang/String;)Ljavax/crypto/Mac; │ │ move-result-object v0 │ │ iput-object v0, p0, Lorg/smssecure/smssecure/crypto/MasterCipher;->hmac:Ljavax/crypto/Mac; │ :try_end_0 │ - .catch Ljavax/crypto/NoSuchPaddingException; {:try_start_0 .. :try_end_0} :catch_0 │ - .catch Ljava/security/NoSuchAlgorithmException; {:try_start_0 .. :try_end_0} :catch_1 │ + .catch Ljavax/crypto/NoSuchPaddingException; {:try_start_0 .. :try_end_0} :catch_1 │ + .catch Ljava/security/NoSuchAlgorithmException; {:try_start_0 .. :try_end_0} :catch_0 │ │ .line 72 │ return-void │ │ .line 69 │ :catch_0 │ move-exception v0 ├── smali/org/smssecure/smssecure/crypto/MasterSecretUtil.smali │ @@ -65,24 +65,26 @@ │ │ move-result-object v2 │ │ aput-object v2, v0, v1 │ │ const/4 v1, 0x1 │ │ + .line 69 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/crypto/MasterSecret;->getMacKey()Ljavax/crypto/spec/SecretKeySpec; │ │ move-result-object v2 │ │ invoke-virtual {v2}, Ljavax/crypto/spec/SecretKeySpec;->getEncoded()[B │ │ move-result-object v2 │ │ aput-object v2, v0, v1 │ │ + .line 68 │ invoke-static {v0}, Lorg/smssecure/smssecure/util/Util;->combine([[B)[B │ │ move-result-object v0 │ │ .line 71 │ invoke-static {}, Lorg/smssecure/smssecure/crypto/MasterSecretUtil;->generateSalt()[B │ │ @@ -644,16 +646,16 @@ │ │ .line 146 │ :cond_0 │ new-instance v2, Lorg/smssecure/smssecure/crypto/AsymmetricMasterSecret; │ │ invoke-direct {v2, v1, v0}, Lorg/smssecure/smssecure/crypto/AsymmetricMasterSecret;->(Lorg/whispersystems/libaxolotl/ecc/ECPublicKey;Lorg/whispersystems/libaxolotl/ecc/ECPrivateKey;)V │ :try_end_0 │ - .catch Lorg/whispersystems/libaxolotl/InvalidKeyException; {:try_start_0 .. :try_end_0} :catch_1 │ - .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0 │ + .catch Lorg/whispersystems/libaxolotl/InvalidKeyException; {:try_start_0 .. :try_end_0} :catch_0 │ + .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_1 │ │ return-object v2 │ │ .line 147 │ :catch_0 │ move-exception v0 │ │ @@ -1088,22 +1090,25 @@ │ │ const/4 v1, 0x0 │ │ invoke-virtual {p0, v0, v1}, Landroid/content/Context;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences; │ │ move-result-object v0 │ │ + .line 201 │ invoke-interface {v0}, Landroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor; │ │ move-result-object v0 │ │ + .line 202 │ invoke-interface {v0, p1, p2}, Landroid/content/SharedPreferences$Editor;->putInt(Ljava/lang/String;I)Landroid/content/SharedPreferences$Editor; │ │ move-result-object v0 │ │ + .line 203 │ invoke-interface {v0}, Landroid/content/SharedPreferences$Editor;->commit()Z │ │ move-result v0 │ │ if-nez v0, :cond_0 │ │ .line 205 │ @@ -1129,22 +1134,25 @@ │ │ const/4 v1, 0x0 │ │ invoke-virtual {p0, v0, v1}, Landroid/content/Context;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences; │ │ move-result-object v0 │ │ + .line 221 │ invoke-interface {v0}, Landroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor; │ │ move-result-object v0 │ │ + .line 222 │ invoke-interface {v0, p1, p2}, Landroid/content/SharedPreferences$Editor;->putBoolean(Ljava/lang/String;Z)Landroid/content/SharedPreferences$Editor; │ │ move-result-object v0 │ │ + .line 223 │ invoke-interface {v0}, Landroid/content/SharedPreferences$Editor;->commit()Z │ │ move-result v0 │ │ if-nez v0, :cond_0 │ │ .line 225 │ @@ -1170,26 +1178,29 @@ │ │ const/4 v1, 0x0 │ │ invoke-virtual {p0, v0, v1}, Landroid/content/Context;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences; │ │ move-result-object v0 │ │ + .line 211 │ invoke-interface {v0}, Landroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor; │ │ move-result-object v0 │ │ + .line 212 │ invoke-static {p2}, Lorg/smssecure/smssecure/util/Base64;->encodeBytes([B)Ljava/lang/String; │ │ move-result-object v1 │ │ invoke-interface {v0, p1, v1}, Landroid/content/SharedPreferences$Editor;->putString(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SharedPreferences$Editor; │ │ move-result-object v0 │ │ + .line 213 │ invoke-interface {v0}, Landroid/content/SharedPreferences$Editor;->commit()Z │ │ move-result v0 │ │ if-nez v0, :cond_0 │ │ .line 215 ├── smali/org/smssecure/smssecure/crypto/PRNGFixes.smali │ @@ -12,21 +12,22 @@ │ │ │ # direct methods │ .method static constructor ()V │ .locals 1 │ │ .prologue │ - .line 52 │ + .line 53 │ invoke-static {}, Lorg/smssecure/smssecure/crypto/PRNGFixes;->getBuildFingerprintAndDeviceSerial()[B │ │ move-result-object v0 │ │ sput-object v0, Lorg/smssecure/smssecure/crypto/PRNGFixes;->BUILD_FINGERPRINT_AND_DEVICE_SERIAL:[B │ │ + .line 52 │ return-void │ .end method │ │ .method private constructor ()V │ .locals 0 │ │ .prologue │ @@ -107,26 +108,28 @@ │ │ const/4 v3, 0x0 │ │ const-class v4, [B │ │ aput-object v4, v2, v3 │ │ + .line 84 │ invoke-virtual {v0, v1, v2}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; │ │ move-result-object v0 │ │ const/4 v1, 0x0 │ │ const/4 v2, 0x1 │ │ new-array v2, v2, [Ljava/lang/Object; │ │ const/4 v3, 0x0 │ │ + .line 85 │ invoke-static {}, Lorg/smssecure/smssecure/crypto/PRNGFixes;->generateSeed()[B │ │ move-result-object v4 │ │ aput-object v4, v2, v3 │ │ invoke-virtual {v0, v1, v2}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; │ @@ -152,14 +155,15 @@ │ │ const/4 v3, 0x1 │ │ sget-object v4, Ljava/lang/Long;->TYPE:Ljava/lang/Class; │ │ aput-object v4, v2, v3 │ │ + .line 90 │ invoke-virtual {v0, v1, v2}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; │ │ move-result-object v0 │ │ const/4 v1, 0x0 │ │ const/4 v2, 0x2 │ @@ -172,26 +176,28 @@ │ │ aput-object v4, v2, v3 │ │ const/4 v3, 0x1 │ │ const/16 v4, 0x400 │ │ + .line 91 │ invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v4 │ │ aput-object v4, v2, v3 │ │ invoke-virtual {v0, v1, v2}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Ljava/lang/Integer; │ │ + .line 88 │ invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I │ │ move-result v0 │ │ .line 92 │ if-eq v0, v5, :cond_0 │ │ @@ -433,14 +439,15 @@ │ :cond_0 │ return-void │ │ .line 118 │ :cond_1 │ const-string v0, "SecureRandom.SHA1PRNG" │ │ + .line 119 │ invoke-static {v0}, Ljava/security/Security;->getProviders(Ljava/lang/String;)[Ljava/security/Provider; │ │ move-result-object v0 │ │ .line 120 │ if-eqz v0, :cond_2 │ │ @@ -450,18 +457,20 @@ │ │ const-class v1, Lorg/smssecure/smssecure/crypto/PRNGFixes$LinuxPRNGSecureRandomProvider; │ │ const/4 v2, 0x0 │ │ aget-object v0, v0, v2 │ │ + .line 123 │ invoke-virtual {v0}, Ljava/lang/Object;->getClass()Ljava/lang/Class; │ │ move-result-object v0 │ │ + .line 122 │ invoke-virtual {v1, v0}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z │ │ move-result v0 │ │ if-nez v0, :cond_3 │ │ .line 124 │ @@ -477,22 +486,24 @@ │ new-instance v0, Ljava/security/SecureRandom; │ │ invoke-direct {v0}, Ljava/security/SecureRandom;->()V │ │ .line 131 │ const-class v1, Lorg/smssecure/smssecure/crypto/PRNGFixes$LinuxPRNGSecureRandomProvider; │ │ + .line 132 │ invoke-virtual {v0}, Ljava/security/SecureRandom;->getProvider()Ljava/security/Provider; │ │ move-result-object v2 │ │ invoke-virtual {v2}, Ljava/lang/Object;->getClass()Ljava/lang/Class; │ │ move-result-object v2 │ │ + .line 131 │ invoke-virtual {v1, v2}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z │ │ move-result v1 │ │ if-nez v1, :cond_4 │ │ .line 133 │ @@ -504,14 +515,15 @@ │ │ const-string v3, "new SecureRandom() backed by wrong Provider: " │ │ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v2 │ │ + .line 135 │ invoke-virtual {v0}, Ljava/security/SecureRandom;->getProvider()Ljava/security/Provider; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Ljava/lang/Object;->getClass()Ljava/lang/Class; │ │ move-result-object v0 │ @@ -538,22 +550,24 @@ │ .catch Ljava/security/NoSuchAlgorithmException; {:try_start_0 .. :try_end_0} :catch_0 │ │ move-result-object v0 │ │ .line 144 │ const-class v1, Lorg/smssecure/smssecure/crypto/PRNGFixes$LinuxPRNGSecureRandomProvider; │ │ + .line 145 │ invoke-virtual {v0}, Ljava/security/SecureRandom;->getProvider()Ljava/security/Provider; │ │ move-result-object v2 │ │ invoke-virtual {v2}, Ljava/lang/Object;->getClass()Ljava/lang/Class; │ │ move-result-object v2 │ │ + .line 144 │ invoke-virtual {v1, v2}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z │ │ move-result v1 │ │ if-nez v1, :cond_0 │ │ .line 146 │ @@ -565,14 +579,15 @@ │ │ const-string v3, "SecureRandom.getInstance(\"SHA1PRNG\") backed by wrong Provider: " │ │ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v2 │ │ + .line 148 │ invoke-virtual {v0}, Ljava/security/SecureRandom;->getProvider()Ljava/security/Provider; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Ljava/lang/Object;->getClass()Ljava/lang/Class; │ │ move-result-object v0 ├── smali/org/smssecure/smssecure/crypto/PreKeyUtil.smali │ @@ -11,15 +11,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 47 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 196 │ return-void │ .end method │ │ .method public static generateLastResortKey(Landroid/content/Context;Lorg/smssecure/smssecure/crypto/MasterSecret;)Lorg/whispersystems/libaxolotl/state/PreKeyRecord; │ .locals 4 │ │ .prologue ├── smali/org/smssecure/smssecure/crypto/SmsCipher.smali │ @@ -101,16 +101,16 @@ │ │ new-instance v2, Ljava/lang/String; │ │ invoke-direct {v2, v0}, Ljava/lang/String;->([B)V │ │ invoke-direct {v1, p2, v2}, Lorg/smssecure/smssecure/sms/IncomingEncryptedMessage;->(Lorg/smssecure/smssecure/sms/IncomingTextMessage;Ljava/lang/String;)V │ :try_end_0 │ - .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_1 │ - .catch Lorg/whispersystems/libaxolotl/InvalidKeyException; {:try_start_0 .. :try_end_0} :catch_2 │ + .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_2 │ + .catch Lorg/whispersystems/libaxolotl/InvalidKeyException; {:try_start_0 .. :try_end_0} :catch_1 │ .catch Lorg/whispersystems/libaxolotl/InvalidKeyIdException; {:try_start_0 .. :try_end_0} :catch_0 │ │ return-object v1 │ │ .line 80 │ :catch_0 │ move-exception v0 │ @@ -482,16 +482,16 @@ │ │ invoke-virtual {p2}, Lorg/smssecure/smssecure/sms/IncomingKeyExchangeMessage;->getSubscriptionId()I │ │ move-result v2 │ │ invoke-direct {v0, v1, v3, v2}, Lorg/smssecure/smssecure/sms/OutgoingKeyExchangeMessage;->(Lorg/smssecure/smssecure/recipients/Recipients;Ljava/lang/String;I)V │ :try_end_0 │ - .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0 │ - .catch Lorg/whispersystems/libaxolotl/InvalidKeyException; {:try_start_0 .. :try_end_0} :catch_1 │ + .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_1 │ + .catch Lorg/whispersystems/libaxolotl/InvalidKeyException; {:try_start_0 .. :try_end_0} :catch_0 │ │ .line 120 │ :goto_0 │ return-object v0 │ │ :cond_0 │ const/4 v0, 0x0 ├── smali/org/smssecure/smssecure/crypto/storage/SilencePreKeyStore.smali │ @@ -471,16 +471,16 @@ │ │ invoke-direct {p0, v2}, Lorg/smssecure/smssecure/crypto/storage/SilencePreKeyStore;->loadSerializedRecord(Ljava/io/File;)[B │ │ move-result-object v2 │ │ invoke-direct {v0, v2}, Lorg/whispersystems/libaxolotl/state/PreKeyRecord;->([B)V │ :try_end_0 │ - .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_1 │ - .catch Lorg/whispersystems/libaxolotl/InvalidMessageException; {:try_start_0 .. :try_end_0} :catch_0 │ + .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0 │ + .catch Lorg/whispersystems/libaxolotl/InvalidMessageException; {:try_start_0 .. :try_end_0} :catch_1 │ .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ │ :try_start_1 │ monitor-exit v1 │ │ return-object v0 │ │ @@ -542,16 +542,16 @@ │ │ invoke-direct {p0, v2}, Lorg/smssecure/smssecure/crypto/storage/SilencePreKeyStore;->loadSerializedRecord(Ljava/io/File;)[B │ │ move-result-object v2 │ │ invoke-direct {v0, v2}, Lorg/whispersystems/libaxolotl/state/SignedPreKeyRecord;->([B)V │ :try_end_0 │ - .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_1 │ - .catch Lorg/whispersystems/libaxolotl/InvalidMessageException; {:try_start_0 .. :try_end_0} :catch_0 │ + .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0 │ + .catch Lorg/whispersystems/libaxolotl/InvalidMessageException; {:try_start_0 .. :try_end_0} :catch_1 │ .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ │ :try_start_1 │ monitor-exit v1 │ │ return-object v0 │ │ @@ -644,16 +644,16 @@ │ │ move-result-object v0 │ │ invoke-direct {v6, v0}, Lorg/whispersystems/libaxolotl/state/SignedPreKeyRecord;->([B)V │ │ invoke-interface {v3, v6}, Ljava/util/List;->add(Ljava/lang/Object;)Z │ :try_end_1 │ - .catch Ljava/io/IOException; {:try_start_1 .. :try_end_1} :catch_1 │ - .catch Lorg/whispersystems/libaxolotl/InvalidMessageException; {:try_start_1 .. :try_end_1} :catch_0 │ + .catch Ljava/io/IOException; {:try_start_1 .. :try_end_1} :catch_0 │ + .catch Lorg/whispersystems/libaxolotl/InvalidMessageException; {:try_start_1 .. :try_end_1} :catch_1 │ .catchall {:try_start_1 .. :try_end_1} :catchall_0 │ │ .line 73 │ :goto_1 │ add-int/lit8 v0, v1, 0x1 │ │ move v1, v0 ├── smali/org/smssecure/smssecure/crypto/storage/SilenceSessionStore.smali │ @@ -147,14 +147,15 @@ │ │ move-result-object v1 │ │ invoke-static {v0, v1, v4}, Lorg/smssecure/smssecure/recipients/RecipientFactory;->getRecipientsFromString(Landroid/content/Context;Ljava/lang/String;Z)Lorg/smssecure/smssecure/recipients/Recipients; │ │ move-result-object v0 │ │ + .line 163 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/recipients/Recipients;->getPrimaryRecipient()Lorg/smssecure/smssecure/recipients/Recipient; │ │ move-result-object v0 │ │ .line 164 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/recipients/Recipient;->getRecipientId()J │ │ @@ -331,14 +332,15 @@ │ │ invoke-virtual {v0}, Ljava/io/File;->exists()Z │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ + .line 101 │ invoke-virtual {p0, p1}, Lorg/smssecure/smssecure/crypto/storage/SilenceSessionStore;->loadSession(Lorg/whispersystems/libaxolotl/AxolotlAddress;)Lorg/whispersystems/libaxolotl/state/SessionRecord; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Lorg/whispersystems/libaxolotl/state/SessionRecord;->getSessionState()Lorg/whispersystems/libaxolotl/state/SessionState; │ │ move-result-object v0 │ @@ -347,17 +349,19 @@ │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ const/4 v0, 0x1 │ │ + .line 100 │ :goto_0 │ return v0 │ │ + .line 101 │ :cond_0 │ const/4 v0, 0x0 │ │ goto :goto_0 │ .end method │ │ .method public deleteAllSessions(Ljava/lang/String;)V ├── smali/org/smssecure/smssecure/crypto/storage/SilenceIdentityKeyStore.smali │ @@ -88,18 +88,20 @@ │ │ invoke-static {v2}, Lorg/smssecure/smssecure/database/DatabaseFactory;->getIdentityDatabase(Landroid/content/Context;)Lorg/smssecure/smssecure/database/IdentityDatabase; │ │ move-result-object v2 │ │ iget-object v3, p0, Lorg/smssecure/smssecure/crypto/storage/SilenceIdentityKeyStore;->masterSecret:Lorg/smssecure/smssecure/crypto/MasterSecret; │ │ + .line 44 │ invoke-virtual {v2, v3, v0, v1, p2}, Lorg/smssecure/smssecure/database/IdentityDatabase;->isValidIdentity(Lorg/smssecure/smssecure/crypto/MasterSecret;JLorg/whispersystems/libaxolotl/IdentityKey;)Z │ │ move-result v0 │ │ + .line 43 │ return v0 │ .end method │ │ .method public saveIdentity(Ljava/lang/String;Lorg/whispersystems/libaxolotl/IdentityKey;)V │ .locals 4 │ │ .prologue ├── smali/org/smssecure/smssecure/database/ApnDatabase.smali │ @@ -451,15 +451,15 @@ │ const-string v1, "mccmnc was null, returning null" │ │ invoke-static {v0, v1}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I │ │ .line 119 │ sget-object v0, Lorg/smssecure/smssecure/mms/LegacyMmsConnection$Apn;->EMPTY:Lorg/smssecure/smssecure/mms/LegacyMmsConnection$Apn; │ │ - .line 158 │ + .line 156 │ :cond_0 │ :goto_0 │ return-object v0 │ │ .line 125 │ :cond_1 │ if-eqz p2, :cond_4 │ @@ -548,14 +548,15 @@ │ │ move-result v0 │ │ if-lt v0, v11, :cond_3 │ │ const-string v0, "type" │ │ + .line 141 │ invoke-interface {v6, v0}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v0 │ │ invoke-interface {v6, v0}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; │ │ move-result-object v0 │ @@ -584,44 +585,48 @@ │ │ invoke-interface {v6, v1}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; │ │ move-result-object v1 │ │ const-string v2, "mmsproxy" │ │ + .line 145 │ invoke-interface {v6, v2}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v2 │ │ invoke-interface {v6, v2}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; │ │ move-result-object v2 │ │ const-string v3, "mmsport" │ │ + .line 146 │ invoke-interface {v6, v3}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v3 │ │ invoke-interface {v6, v3}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; │ │ move-result-object v3 │ │ const-string v4, "user" │ │ + .line 147 │ invoke-interface {v6, v4}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v4 │ │ invoke-interface {v6, v4}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; │ │ move-result-object v4 │ │ const-string v5, "password" │ │ + .line 148 │ invoke-interface {v6, v5}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v5 │ │ invoke-interface {v6, v5}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; │ │ move-result-object v5 │ @@ -721,15 +726,15 @@ │ move-result-object v6 │ │ goto/16 :goto_1 │ │ :cond_5 │ move v0, v9 │ │ - .line 140 │ + .line 141 │ goto/16 :goto_2 │ │ .line 154 │ :cond_6 │ :try_start_3 │ sget-object v0, Lorg/smssecure/smssecure/database/ApnDatabase;->TAG:Ljava/lang/String; │ │ @@ -797,38 +802,43 @@ │ move-result-object v2 │ │ .line 178 │ new-instance v0, Lorg/smssecure/smssecure/mms/LegacyMmsConnection$Apn; │ │ iget-object v3, p0, Lorg/smssecure/smssecure/database/ApnDatabase;->context:Landroid/content/Context; │ │ + .line 179 │ invoke-static {v3}, Lorg/smssecure/smssecure/util/SilencePreferences;->getUseCustomMmsc(Landroid/content/Context;)Z │ │ move-result v3 │ │ iget-object v4, p0, Lorg/smssecure/smssecure/database/ApnDatabase;->context:Landroid/content/Context; │ │ + .line 180 │ invoke-static {v4}, Lorg/smssecure/smssecure/util/SilencePreferences;->getUseCustomMmscProxy(Landroid/content/Context;)Z │ │ move-result v4 │ │ iget-object v5, p0, Lorg/smssecure/smssecure/database/ApnDatabase;->context:Landroid/content/Context; │ │ + .line 181 │ invoke-static {v5}, Lorg/smssecure/smssecure/util/SilencePreferences;->getUseCustomMmscProxyPort(Landroid/content/Context;)Z │ │ move-result v5 │ │ iget-object v6, p0, Lorg/smssecure/smssecure/database/ApnDatabase;->context:Landroid/content/Context; │ │ + .line 182 │ invoke-static {v6}, Lorg/smssecure/smssecure/util/SilencePreferences;->getUseCustomMmscUsername(Landroid/content/Context;)Z │ │ move-result v6 │ │ iget-object v7, p0, Lorg/smssecure/smssecure/database/ApnDatabase;->context:Landroid/content/Context; │ │ + .line 183 │ invoke-static {v7}, Lorg/smssecure/smssecure/util/SilencePreferences;->getUseCustomMmscPassword(Landroid/content/Context;)Z │ │ move-result v7 │ │ invoke-direct/range {v0 .. v7}, Lorg/smssecure/smssecure/mms/LegacyMmsConnection$Apn;->(Lorg/smssecure/smssecure/mms/LegacyMmsConnection$Apn;Lorg/smssecure/smssecure/mms/LegacyMmsConnection$Apn;ZZZZZ)V │ │ .line 185 ├── smali/org/smssecure/smssecure/database/AttachmentDatabase.smali │ @@ -251,14 +251,15 @@ │ │ .line 386 │ invoke-interface {v1}, Landroid/database/Cursor;->close()V │ │ :cond_0 │ move-object v0, v8 │ │ + .line 382 │ :cond_1 │ :goto_0 │ return-object v0 │ │ .line 380 │ :cond_2 │ :try_start_2 │ @@ -288,14 +289,15 @@ │ │ .line 386 │ invoke-interface {v1}, Landroid/database/Cursor;->close()V │ │ :cond_4 │ move-object v0, v8 │ │ + .line 382 │ goto :goto_0 │ │ .line 385 │ :catchall_0 │ move-exception v0 │ │ :goto_1 │ @@ -1021,36 +1023,39 @@ │ │ invoke-interface {p1, v2}, Landroid/database/Cursor;->getLong(I)J │ │ move-result-wide v2 │ │ const-string v4, "unique_id" │ │ + .line 432 │ invoke-interface {p1, v4}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v4 │ │ invoke-interface {p1, v4}, Landroid/database/Cursor;->getLong(I)J │ │ move-result-wide v4 │ │ invoke-direct {v1, v2, v3, v4, v5}, Lorg/smssecure/smssecure/attachments/AttachmentId;->(JJ)V │ │ const-string v2, "mid" │ │ + .line 433 │ invoke-interface {p1, v2}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v2 │ │ invoke-interface {p1, v2}, Landroid/database/Cursor;->getLong(I)J │ │ move-result-wide v2 │ │ const-string v4, "_data" │ │ + .line 434 │ invoke-interface {p1, v4}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v4 │ │ invoke-interface {p1, v4}, Landroid/database/Cursor;->isNull(I)Z │ │ move-result v4 │ @@ -1058,76 +1063,84 @@ │ if-nez v4, :cond_0 │ │ const/4 v4, 0x1 │ │ :goto_0 │ const-string v5, "ct" │ │ + .line 435 │ invoke-interface {p1, v5}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v5 │ │ invoke-interface {p1, v5}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; │ │ move-result-object v5 │ │ const-string v6, "pending_push" │ │ + .line 436 │ invoke-interface {p1, v6}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v6 │ │ invoke-interface {p1, v6}, Landroid/database/Cursor;->getInt(I)I │ │ move-result v6 │ │ const-string v7, "data_size" │ │ + .line 437 │ invoke-interface {p1, v7}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v7 │ │ invoke-interface {p1, v7}, Landroid/database/Cursor;->getLong(I)J │ │ move-result-wide v7 │ │ const-string v9, "cl" │ │ + .line 438 │ invoke-interface {p1, v9}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v9 │ │ invoke-interface {p1, v9}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; │ │ move-result-object v9 │ │ const-string v10, "cd" │ │ + .line 439 │ invoke-interface {p1, v10}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v10 │ │ invoke-interface {p1, v10}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; │ │ move-result-object v10 │ │ const-string v11, "name" │ │ + .line 440 │ invoke-interface {p1, v11}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v11 │ │ invoke-interface {p1, v11}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; │ │ move-result-object v11 │ │ invoke-direct/range {v0 .. v11}, Lorg/smssecure/smssecure/attachments/DatabaseAttachment;->(Lorg/smssecure/smssecure/attachments/AttachmentId;JZLjava/lang/String;IJLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V │ │ + .line 431 │ return-object v0 │ │ + .line 434 │ :cond_0 │ const/4 v4, 0x0 │ │ goto :goto_0 │ .end method │ │ .method public getAttachment(Lorg/smssecure/smssecure/attachments/AttachmentId;)Lorg/smssecure/smssecure/attachments/DatabaseAttachment; │ @@ -1185,28 +1198,30 @@ │ │ .line 164 │ if-eqz v1, :cond_0 │ │ .line 165 │ invoke-interface {v1}, Landroid/database/Cursor;->close()V │ │ + .line 161 │ :cond_0 │ :goto_0 │ return-object v0 │ │ .line 164 │ :cond_1 │ if-eqz v1, :cond_2 │ │ .line 165 │ invoke-interface {v1}, Landroid/database/Cursor;->close()V │ │ :cond_2 │ move-object v0, v8 │ │ + .line 161 │ goto :goto_0 │ │ .line 164 │ :catchall_0 │ move-exception v0 │ │ :goto_1 │ @@ -1386,14 +1401,15 @@ │ .line 184 │ :cond_1 │ if-eqz v1, :cond_2 │ │ .line 185 │ invoke-interface {v1}, Landroid/database/Cursor;->close()V │ │ + .line 182 │ :cond_2 │ return-object v9 │ │ .line 184 │ :catchall_1 │ move-exception v0 │ │ @@ -2262,44 +2278,52 @@ │ .line 311 │ new-instance v1, Lorg/smssecure/smssecure/attachments/DatabaseAttachment; │ │ invoke-virtual {p2}, Lorg/smssecure/smssecure/attachments/DatabaseAttachment;->getAttachmentId()Lorg/smssecure/smssecure/attachments/AttachmentId; │ │ move-result-object v2 │ │ + .line 312 │ invoke-virtual {p2}, Lorg/smssecure/smssecure/attachments/DatabaseAttachment;->getMmsId()J │ │ move-result-wide v3 │ │ + .line 313 │ invoke-virtual {p2}, Lorg/smssecure/smssecure/attachments/DatabaseAttachment;->hasData()Z │ │ move-result v5 │ │ + .line 314 │ invoke-virtual/range {p3 .. p3}, Lorg/smssecure/smssecure/mms/MediaStream;->getMimeType()Ljava/lang/String; │ │ move-result-object v6 │ │ + .line 315 │ invoke-virtual {p2}, Lorg/smssecure/smssecure/attachments/DatabaseAttachment;->getTransferState()I │ │ move-result v7 │ │ + .line 317 │ invoke-virtual {p2}, Lorg/smssecure/smssecure/attachments/DatabaseAttachment;->getLocation()Ljava/lang/String; │ │ move-result-object v10 │ │ + .line 318 │ invoke-virtual {p2}, Lorg/smssecure/smssecure/attachments/DatabaseAttachment;->getKey()Ljava/lang/String; │ │ move-result-object v11 │ │ + .line 319 │ invoke-virtual {p2}, Lorg/smssecure/smssecure/attachments/DatabaseAttachment;->getRelay()Ljava/lang/String; │ │ move-result-object v12 │ │ invoke-direct/range {v1 .. v12}, Lorg/smssecure/smssecure/attachments/DatabaseAttachment;->(Lorg/smssecure/smssecure/attachments/AttachmentId;JZLjava/lang/String;IJLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V │ │ + .line 311 │ return-object v1 │ .end method │ │ .method updateAttachmentThumbnail(Lorg/smssecure/smssecure/crypto/MasterSecret;Lorg/smssecure/smssecure/attachments/AttachmentId;Ljava/io/InputStream;F)V │ .locals 5 │ .annotation system Ldalvik/annotation/Throws; │ value = { ├── smali/org/smssecure/smssecure/database/CanonicalAddressDatabase.smali │ @@ -384,14 +384,15 @@ │ │ .line 222 │ if-eqz v4, :cond_1 │ │ .line 223 │ invoke-interface {v4}, Landroid/database/Cursor;->close()V │ │ + .line 219 │ :cond_1 │ :goto_1 │ return-wide v0 │ │ .line 200 │ :cond_2 │ :try_start_2 │ @@ -490,14 +491,15 @@ │ │ .line 223 │ invoke-interface {v4}, Landroid/database/Cursor;->close()V │ │ :cond_5 │ move-wide v0, v2 │ │ + .line 219 │ goto :goto_1 │ │ .line 222 │ :catchall_0 │ move-exception v0 │ │ move-object v1, v8 │ @@ -661,15 +663,15 @@ │ move-result-object v0 │ │ check-cast v0, Ljava/lang/String; │ │ .line 115 │ if-eqz v0, :cond_1 │ │ - .line 139 │ + .line 135 │ :cond_0 │ :goto_0 │ return-object v0 │ │ .line 121 │ :cond_1 │ :try_start_0 ├── smali/org/smssecure/smssecure/database/CursorRecyclerViewAdapter.smali │ @@ -329,44 +329,49 @@ │ :cond_0 │ iget-object v0, p0, Lorg/smssecure/smssecure/database/CursorRecyclerViewAdapter;->cursor:Landroid/database/Cursor; │ │ invoke-interface {v0}, Landroid/database/Cursor;->getCount()I │ │ move-result v3 │ │ + .line 119 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/database/CursorRecyclerViewAdapter;->hasHeaderView()Z │ │ move-result v0 │ │ if-eqz v0, :cond_1 │ │ move v0, v1 │ │ :goto_1 │ add-int/2addr v0, v3 │ │ + .line 120 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/database/CursorRecyclerViewAdapter;->hasFooterView()Z │ │ move-result v3 │ │ if-eqz v3, :cond_2 │ │ :goto_2 │ add-int v2, v0, v1 │ │ + .line 118 │ goto :goto_0 │ │ :cond_1 │ move v0, v2 │ │ + .line 119 │ goto :goto_1 │ │ :cond_2 │ move v1, v2 │ │ + .line 120 │ goto :goto_2 │ .end method │ │ .method public final getItemId(I)J │ .locals 4 │ │ .prologue ├── smali/org/smssecure/smssecure/database/DatabaseFactory$DatabaseHelper.smali │ @@ -570,14 +570,15 @@ │ │ const/4 v8, 0x0 │ │ new-instance v9, Ljava/lang/StringBuilder; │ │ invoke-direct {v9}, Ljava/lang/StringBuilder;->()V │ │ + .line 589 │ invoke-virtual {v1}, Ljava/lang/String;->length()I │ │ move-result v10 │ │ add-int/lit8 v10, v10, 0x1 │ │ invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ @@ -620,14 +621,15 @@ │ │ invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v9 │ │ aput-object v9, v7, v8 │ │ + .line 588 │ invoke-virtual {p1, v6, v7}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;[Ljava/lang/Object;)V │ │ .line 593 │ const-string v6, "UPDATE sms SET body = substr(body, ?), type = type | ? WHERE body LIKE ?" │ │ const/4 v7, 0x3 │ │ @@ -635,14 +637,15 @@ │ │ const/4 v8, 0x0 │ │ new-instance v9, Ljava/lang/StringBuilder; │ │ invoke-direct {v9}, Ljava/lang/StringBuilder;->()V │ │ + .line 594 │ invoke-virtual {v3}, Ljava/lang/String;->length()I │ │ move-result v10 │ │ add-int/lit8 v10, v10, 0x1 │ │ invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ @@ -685,14 +688,15 @@ │ │ invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v9 │ │ aput-object v9, v7, v8 │ │ + .line 593 │ invoke-virtual {p1, v6, v7}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;[Ljava/lang/Object;)V │ │ .line 598 │ const-string v6, "UPDATE sms SET body = substr(body, ?), type = type | ? WHERE body LIKE ?" │ │ const/4 v7, 0x3 │ │ @@ -700,14 +704,15 @@ │ │ const/4 v8, 0x0 │ │ new-instance v9, Ljava/lang/StringBuilder; │ │ invoke-direct {v9}, Ljava/lang/StringBuilder;->()V │ │ + .line 599 │ invoke-virtual {v2}, Ljava/lang/String;->length()I │ │ move-result v10 │ │ add-int/lit8 v10, v10, 0x1 │ │ invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ @@ -750,14 +755,15 @@ │ │ invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v9 │ │ aput-object v9, v7, v8 │ │ + .line 598 │ invoke-virtual {p1, v6, v7}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;[Ljava/lang/Object;)V │ │ .line 603 │ const-string v6, "UPDATE sms SET body = substr(body, ?), type = type | ? WHERE body LIKE ?" │ │ const/4 v7, 0x3 │ │ @@ -765,14 +771,15 @@ │ │ const/4 v8, 0x0 │ │ new-instance v9, Ljava/lang/StringBuilder; │ │ invoke-direct {v9}, Ljava/lang/StringBuilder;->()V │ │ + .line 604 │ invoke-virtual {v0}, Ljava/lang/String;->length()I │ │ move-result v10 │ │ add-int/lit8 v10, v10, 0x1 │ │ invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ @@ -815,14 +822,15 @@ │ │ invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v9 │ │ aput-object v9, v7, v8 │ │ + .line 603 │ invoke-virtual {p1, v6, v7}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;[Ljava/lang/Object;)V │ │ .line 608 │ const-string v6, "UPDATE sms SET body = substr(body, ?), type = type | ? WHERE body LIKE ?" │ │ const/4 v7, 0x3 │ │ @@ -830,14 +838,15 @@ │ │ const/4 v8, 0x0 │ │ new-instance v9, Ljava/lang/StringBuilder; │ │ invoke-direct {v9}, Ljava/lang/StringBuilder;->()V │ │ + .line 609 │ invoke-virtual {v4}, Ljava/lang/String;->length()I │ │ move-result v10 │ │ add-int/lit8 v10, v10, 0x1 │ │ invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ @@ -880,14 +889,15 @@ │ │ invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v9 │ │ aput-object v9, v7, v8 │ │ + .line 608 │ invoke-virtual {p1, v6, v7}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;[Ljava/lang/Object;)V │ │ .line 613 │ const-string v6, "UPDATE sms SET body = substr(body, ?), type = type | ? WHERE body LIKE ?" │ │ const/4 v7, 0x3 │ │ @@ -895,14 +905,15 @@ │ │ const/4 v8, 0x0 │ │ new-instance v9, Ljava/lang/StringBuilder; │ │ invoke-direct {v9}, Ljava/lang/StringBuilder;->()V │ │ + .line 614 │ invoke-virtual {v5}, Ljava/lang/String;->length()I │ │ move-result v10 │ │ add-int/lit8 v10, v10, 0x1 │ │ invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ @@ -945,14 +956,15 @@ │ │ invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v9 │ │ aput-object v9, v7, v8 │ │ + .line 613 │ invoke-virtual {p1, v6, v7}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;[Ljava/lang/Object;)V │ │ .line 620 │ const-string v6, "UPDATE mms SET msg_box = ? WHERE msg_box = ?" │ │ const/4 v7, 0x2 │ │ @@ -1175,14 +1187,15 @@ │ │ const/4 v8, 0x0 │ │ new-instance v9, Ljava/lang/StringBuilder; │ │ invoke-direct {v9}, Ljava/lang/StringBuilder;->()V │ │ + .line 638 │ invoke-virtual {v1}, Ljava/lang/String;->length()I │ │ move-result v10 │ │ add-int/lit8 v10, v10, 0x1 │ │ invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ @@ -1225,14 +1238,15 @@ │ │ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v1 │ │ aput-object v1, v7, v8 │ │ + .line 636 │ invoke-virtual {p1, v6, v7}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;[Ljava/lang/Object;)V │ │ .line 642 │ const-string v1, "UPDATE thread SET snippet = substr(snippet, ?), snippet_type = ? WHERE snippet LIKE ?" │ │ const/4 v6, 0x3 │ │ @@ -1240,14 +1254,15 @@ │ │ const/4 v7, 0x0 │ │ new-instance v8, Ljava/lang/StringBuilder; │ │ invoke-direct {v8}, Ljava/lang/StringBuilder;->()V │ │ + .line 644 │ invoke-virtual {v3}, Ljava/lang/String;->length()I │ │ move-result v9 │ │ add-int/lit8 v9, v9, 0x1 │ │ invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ @@ -1290,14 +1305,15 @@ │ │ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v3 │ │ aput-object v3, v6, v7 │ │ + .line 642 │ invoke-virtual {p1, v1, v6}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;[Ljava/lang/Object;)V │ │ .line 648 │ const-string v1, "UPDATE thread SET snippet = substr(snippet, ?), snippet_type = ? WHERE snippet LIKE ?" │ │ const/4 v3, 0x3 │ │ @@ -1305,14 +1321,15 @@ │ │ const/4 v6, 0x0 │ │ new-instance v7, Ljava/lang/StringBuilder; │ │ invoke-direct {v7}, Ljava/lang/StringBuilder;->()V │ │ + .line 650 │ invoke-virtual {v2}, Ljava/lang/String;->length()I │ │ move-result v8 │ │ add-int/lit8 v8, v8, 0x1 │ │ invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ @@ -1355,14 +1372,15 @@ │ │ invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v2 │ │ aput-object v2, v3, v6 │ │ + .line 648 │ invoke-virtual {p1, v1, v3}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;[Ljava/lang/Object;)V │ │ .line 654 │ const-string v1, "UPDATE thread SET snippet = substr(snippet, ?), snippet_type = ? WHERE snippet LIKE ?" │ │ const/4 v2, 0x3 │ │ @@ -1370,14 +1388,15 @@ │ │ const/4 v3, 0x0 │ │ new-instance v6, Ljava/lang/StringBuilder; │ │ invoke-direct {v6}, Ljava/lang/StringBuilder;->()V │ │ + .line 656 │ invoke-virtual {v0}, Ljava/lang/String;->length()I │ │ move-result v7 │ │ add-int/lit8 v7, v7, 0x1 │ │ invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ @@ -1420,14 +1439,15 @@ │ │ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v0 │ │ aput-object v0, v2, v3 │ │ + .line 654 │ invoke-virtual {p1, v1, v2}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;[Ljava/lang/Object;)V │ │ .line 660 │ const-string v0, "UPDATE thread SET snippet = substr(snippet, ?), snippet_type = ? WHERE snippet LIKE ?" │ │ const/4 v1, 0x3 │ │ @@ -1435,14 +1455,15 @@ │ │ const/4 v2, 0x0 │ │ new-instance v3, Ljava/lang/StringBuilder; │ │ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V │ │ + .line 662 │ invoke-virtual {v5}, Ljava/lang/String;->length()I │ │ move-result v6 │ │ add-int/lit8 v6, v6, 0x1 │ │ invoke-virtual {v3, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ @@ -1485,14 +1506,15 @@ │ │ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v3 │ │ aput-object v3, v1, v2 │ │ + .line 660 │ invoke-virtual {p1, v0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;[Ljava/lang/Object;)V │ │ .line 666 │ const-string v0, "UPDATE thread SET snippet = substr(snippet, ?), snippet_type = ? WHERE snippet LIKE ?" │ │ const/4 v1, 0x3 │ │ @@ -1500,14 +1522,15 @@ │ │ const/4 v2, 0x0 │ │ new-instance v3, Ljava/lang/StringBuilder; │ │ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V │ │ + .line 668 │ invoke-virtual {v4}, Ljava/lang/String;->length()I │ │ move-result v5 │ │ add-int/lit8 v5, v5, 0x1 │ │ invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ @@ -1550,14 +1573,15 @@ │ │ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v3 │ │ aput-object v3, v1, v2 │ │ + .line 666 │ invoke-virtual {p1, v0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;[Ljava/lang/Object;)V │ │ .line 673 │ :cond_4 │ const/4 v0, 0x7 │ │ if-ge p2, v0, :cond_5 ├── smali/org/smssecure/smssecure/database/DatabaseFactory.smali │ @@ -2024,20 +2024,22 @@ │ :cond_16 │ invoke-static {v5}, Lws/com/google/android/mms/ContentType;->isAudioType(Ljava/lang/String;)Z │ │ move-result v7 │ │ if-nez v7, :cond_17 │ │ + .line 394 │ invoke-static {v5}, Lws/com/google/android/mms/ContentType;->isImageType(Ljava/lang/String;)Z │ │ move-result v7 │ │ if-nez v7, :cond_17 │ │ + .line 395 │ invoke-static {v5}, Lws/com/google/android/mms/ContentType;->isVideoType(Ljava/lang/String;)Z │ │ move-result v5 │ │ if-eqz v5, :cond_11 │ │ .line 397 │ @@ -2451,26 +2453,28 @@ │ │ new-array v6, v6, [Ljava/lang/String; │ │ const/4 v7, 0x0 │ │ const-wide/32 v8, -0x1000000 │ │ + .line 461 │ invoke-static {v8, v9}, Ljava/lang/String;->valueOf(J)Ljava/lang/String; │ │ move-result-object v8 │ │ aput-object v8, v6, v7 │ │ const/4 v7, 0x0 │ │ const/4 v8, 0x0 │ │ const/4 v9, 0x0 │ │ + .line 458 │ invoke-virtual/range {v2 .. v9}, Landroid/database/sqlite/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; │ :try_end_6 │ .catchall {:try_start_6 .. :try_end_6} :catchall_1 │ │ move-result-object v3 │ │ .line 464 │ @@ -2538,20 +2542,22 @@ │ │ const/4 v9, 0x1 │ │ new-array v9, v9, [Ljava/lang/String; │ │ const/4 v10, 0x0 │ │ + .line 476 │ invoke-static {v4, v5}, Ljava/lang/String;->valueOf(J)Ljava/lang/String; │ │ move-result-object v4 │ │ aput-object v4, v9, v10 │ │ + .line 475 │ invoke-virtual {v2, v6, v7, v8, v9}, Landroid/database/sqlite/SQLiteDatabase;->update(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I │ :try_end_7 │ .catchall {:try_start_7 .. :try_end_7} :catchall_0 │ │ goto :goto_e │ │ .line 479 ├── smali/org/smssecure/smssecure/database/DraftDatabase.smali │ @@ -180,20 +180,22 @@ │ │ invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ │ const-string v5, "thread_id" │ │ + .line 64 │ invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ │ const-string v5, " = ?" │ │ + .line 65 │ invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ .line 67 │ invoke-static {v6, v7}, Ljava/lang/String;->valueOf(J)Ljava/lang/String; │ │ move-result-object v0 │ │ @@ -345,20 +347,22 @@ │ .line 91 │ new-instance v3, Lorg/smssecure/smssecure/database/DraftDatabase$Draft; │ │ invoke-virtual {p1, v0}, Lorg/smssecure/smssecure/crypto/MasterCipher;->decryptBody(Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v0 │ │ + .line 92 │ invoke-virtual {p1, v2}, Lorg/smssecure/smssecure/crypto/MasterCipher;->decryptBody(Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v2 │ │ invoke-direct {v3, v0, v2}, Lorg/smssecure/smssecure/database/DraftDatabase$Draft;->(Ljava/lang/String;Ljava/lang/String;)V │ │ + .line 91 │ invoke-interface {v9, v3}, Ljava/util/List;->add(Ljava/lang/Object;)Z │ :try_end_2 │ .catch Lorg/whispersystems/libaxolotl/InvalidMessageException; {:try_start_2 .. :try_end_2} :catch_0 │ .catchall {:try_start_2 .. :try_end_2} :catchall_0 │ │ goto :goto_0 │ │ @@ -392,14 +396,15 @@ │ .line 100 │ :cond_1 │ if-eqz v1, :cond_2 │ │ .line 101 │ invoke-interface {v1}, Landroid/database/Cursor;->close()V │ │ + .line 98 │ :cond_2 │ return-object v9 │ │ .line 100 │ :catchall_1 │ move-exception v0 ├── smali/org/smssecure/smssecure/database/EncryptingSmsDatabase$PlaintextCache.smali │ @@ -29,20 +29,22 @@ │ .line 186 │ new-instance v0, Lorg/smssecure/smssecure/util/LRUCache; │ │ const/16 v1, 0x7d0 │ │ invoke-direct {v0, v1}, Lorg/smssecure/smssecure/util/LRUCache;->(I)V │ │ + .line 187 │ invoke-static {v0}, Ljava/util/Collections;->synchronizedMap(Ljava/util/Map;)Ljava/util/Map; │ │ move-result-object v0 │ │ sput-object v0, Lorg/smssecure/smssecure/database/EncryptingSmsDatabase$PlaintextCache;->decryptedBodyCache:Ljava/util/Map; │ │ + .line 186 │ return-void │ .end method │ │ .method private constructor ()V │ .locals 0 │ │ .prologue ├── smali/org/smssecure/smssecure/database/GroupDatabase$Reader.smali │ @@ -89,112 +89,120 @@ │ │ iget-object v0, p0, Lorg/smssecure/smssecure/database/GroupDatabase$Reader;->cursor:Landroid/database/Cursor; │ │ iget-object v3, p0, Lorg/smssecure/smssecure/database/GroupDatabase$Reader;->cursor:Landroid/database/Cursor; │ │ const-string v4, "title" │ │ + .line 238 │ invoke-interface {v3, v4}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v3 │ │ invoke-interface {v0, v3}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; │ │ move-result-object v3 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/database/GroupDatabase$Reader;->cursor:Landroid/database/Cursor; │ │ iget-object v4, p0, Lorg/smssecure/smssecure/database/GroupDatabase$Reader;->cursor:Landroid/database/Cursor; │ │ const-string v5, "members" │ │ + .line 239 │ invoke-interface {v4, v5}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v4 │ │ invoke-interface {v0, v4}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; │ │ move-result-object v4 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/database/GroupDatabase$Reader;->cursor:Landroid/database/Cursor; │ │ iget-object v5, p0, Lorg/smssecure/smssecure/database/GroupDatabase$Reader;->cursor:Landroid/database/Cursor; │ │ const-string v6, "avatar" │ │ + .line 240 │ invoke-interface {v5, v6}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v5 │ │ invoke-interface {v0, v5}, Landroid/database/Cursor;->getBlob(I)[B │ │ move-result-object v5 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/database/GroupDatabase$Reader;->cursor:Landroid/database/Cursor; │ │ iget-object v6, p0, Lorg/smssecure/smssecure/database/GroupDatabase$Reader;->cursor:Landroid/database/Cursor; │ │ const-string v7, "avatar_id" │ │ + .line 241 │ invoke-interface {v6, v7}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v6 │ │ invoke-interface {v0, v6}, Landroid/database/Cursor;->getLong(I)J │ │ move-result-wide v6 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/database/GroupDatabase$Reader;->cursor:Landroid/database/Cursor; │ │ iget-object v8, p0, Lorg/smssecure/smssecure/database/GroupDatabase$Reader;->cursor:Landroid/database/Cursor; │ │ const-string v9, "avatar_key" │ │ + .line 242 │ invoke-interface {v8, v9}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v8 │ │ invoke-interface {v0, v8}, Landroid/database/Cursor;->getBlob(I)[B │ │ move-result-object v8 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/database/GroupDatabase$Reader;->cursor:Landroid/database/Cursor; │ │ iget-object v9, p0, Lorg/smssecure/smssecure/database/GroupDatabase$Reader;->cursor:Landroid/database/Cursor; │ │ const-string v10, "avatar_content_type" │ │ + .line 243 │ invoke-interface {v9, v10}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v9 │ │ invoke-interface {v0, v9}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; │ │ move-result-object v9 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/database/GroupDatabase$Reader;->cursor:Landroid/database/Cursor; │ │ iget-object v10, p0, Lorg/smssecure/smssecure/database/GroupDatabase$Reader;->cursor:Landroid/database/Cursor; │ │ const-string v12, "avatar_relay" │ │ + .line 244 │ invoke-interface {v10, v12}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v10 │ │ invoke-interface {v0, v10}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; │ │ move-result-object v10 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/database/GroupDatabase$Reader;->cursor:Landroid/database/Cursor; │ │ iget-object v12, p0, Lorg/smssecure/smssecure/database/GroupDatabase$Reader;->cursor:Landroid/database/Cursor; │ │ const-string v13, "active" │ │ + .line 245 │ invoke-interface {v12, v13}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v12 │ │ invoke-interface {v0, v12}, Landroid/database/Cursor;->getInt(I)I │ │ move-result v0 ├── smali/org/smssecure/smssecure/database/GroupDatabase.smali │ @@ -118,26 +118,28 @@ │ │ const/4 v4, 0x1 │ │ new-array v4, v4, [Ljava/lang/String; │ │ const/4 v5, 0x0 │ │ + .line 182 │ invoke-static {p1}, Lorg/smssecure/smssecure/util/GroupUtil;->getEncodedId([B)Ljava/lang/String; │ │ move-result-object v6 │ │ aput-object v6, v4, v5 │ │ const/4 v5, 0x0 │ │ const/4 v6, 0x0 │ │ const/4 v7, 0x0 │ │ + .line 180 │ invoke-virtual/range {v0 .. v7}, Landroid/database/sqlite/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; │ :try_end_0 │ .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ │ move-result-object v1 │ │ .line 185 │ @@ -171,19 +173,19 @@ │ │ .line 191 │ if-eqz v1, :cond_0 │ │ .line 192 │ invoke-interface {v1}, Landroid/database/Cursor;->close()V │ │ + .line 189 │ :cond_0 │ :goto_0 │ return-object v0 │ │ - .line 189 │ :cond_1 │ :try_start_2 │ new-instance v0, Ljava/util/LinkedList; │ │ invoke-direct {v0}, Ljava/util/LinkedList;->()V │ :try_end_2 │ .catchall {:try_start_2 .. :try_end_2} :catchall_1 │ @@ -387,26 +389,28 @@ │ │ const/4 v4, 0x1 │ │ new-array v4, v4, [Ljava/lang/String; │ │ const/4 v5, 0x0 │ │ + .line 71 │ invoke-static {p1}, Lorg/smssecure/smssecure/util/GroupUtil;->getEncodedId([B)Ljava/lang/String; │ │ move-result-object v6 │ │ aput-object v6, v4, v5 │ │ move-object v5, v2 │ │ move-object v6, v2 │ │ move-object v7, v2 │ │ + .line 70 │ invoke-virtual/range {v0 .. v7}, Landroid/database/sqlite/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; │ │ move-result-object v0 │ │ .line 74 │ new-instance v1, Lorg/smssecure/smssecure/database/GroupDatabase$Reader; │ │ @@ -479,18 +483,20 @@ │ :cond_1 │ iget-object v4, p0, Lorg/smssecure/smssecure/database/GroupDatabase;->context:Landroid/content/Context; │ │ invoke-static {v4, v0, v5}, Lorg/smssecure/smssecure/recipients/RecipientFactory;->getRecipientsFromString(Landroid/content/Context;Ljava/lang/String;Z)Lorg/smssecure/smssecure/recipients/Recipients; │ │ move-result-object v0 │ │ + .line 99 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/recipients/Recipients;->getRecipientsList()Ljava/util/List; │ │ move-result-object v0 │ │ + .line 98 │ invoke-interface {v2, v0}, Ljava/util/List;->addAll(Ljava/util/Collection;)Z │ │ goto :goto_0 │ │ .line 102 │ :cond_2 │ iget-object v0, p0, Lorg/smssecure/smssecure/database/GroupDatabase;->context:Landroid/content/Context; │ @@ -639,20 +645,22 @@ │ │ const/4 v4, 0x1 │ │ new-array v4, v4, [Ljava/lang/String; │ │ const/4 v5, 0x0 │ │ + .line 173 │ invoke-static {p1}, Lorg/smssecure/smssecure/util/GroupUtil;->getEncodedId([B)Ljava/lang/String; │ │ move-result-object v6 │ │ aput-object v6, v4, v5 │ │ + .line 172 │ invoke-virtual {v0, v2, v1, v3, v4}, Landroid/database/sqlite/SQLiteDatabase;->update(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I │ │ .line 174 │ return-void │ .end method │ │ .method public setActive([BZ)V │ @@ -744,20 +752,22 @@ │ │ const/4 v4, 0x1 │ │ new-array v4, v4, [Ljava/lang/String; │ │ const/4 v5, 0x0 │ │ + .line 125 │ invoke-static {p1}, Lorg/smssecure/smssecure/util/GroupUtil;->getEncodedId([B)Ljava/lang/String; │ │ move-result-object v6 │ │ aput-object v6, v4, v5 │ │ + .line 123 │ invoke-virtual {v1, v2, v0, v3, v4}, Landroid/database/sqlite/SQLiteDatabase;->update(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I │ │ .line 127 │ invoke-static {}, Lorg/smssecure/smssecure/recipients/RecipientFactory;->clearCache()V │ │ .line 128 │ invoke-direct {p0}, Lorg/smssecure/smssecure/database/GroupDatabase;->notifyDatabaseListeners()V │ @@ -808,20 +818,22 @@ │ │ const/4 v4, 0x1 │ │ new-array v4, v4, [Ljava/lang/String; │ │ const/4 v5, 0x0 │ │ + .line 150 │ invoke-static {p1}, Lorg/smssecure/smssecure/util/GroupUtil;->getEncodedId([B)Ljava/lang/String; │ │ move-result-object v6 │ │ aput-object v6, v4, v5 │ │ + .line 149 │ invoke-virtual {v1, v2, v0, v3, v4}, Landroid/database/sqlite/SQLiteDatabase;->update(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I │ │ .line 152 │ invoke-static {}, Lorg/smssecure/smssecure/recipients/RecipientFactory;->clearCache()V │ │ .line 153 │ invoke-direct {p0}, Lorg/smssecure/smssecure/database/GroupDatabase;->notifyDatabaseListeners()V │ @@ -881,20 +893,22 @@ │ │ const-string v3, "group_id = ?" │ │ new-array v4, v4, [Ljava/lang/String; │ │ const/4 v5, 0x0 │ │ + .line 162 │ invoke-static {p1}, Lorg/smssecure/smssecure/util/GroupUtil;->getEncodedId([B)Ljava/lang/String; │ │ move-result-object v6 │ │ aput-object v6, v4, v5 │ │ + .line 161 │ invoke-virtual {v1, v2, v0, v3, v4}, Landroid/database/sqlite/SQLiteDatabase;->update(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I │ │ .line 163 │ return-void │ .end method │ │ .method public updateTitle([BLjava/lang/String;)V │ @@ -924,20 +938,22 @@ │ │ const/4 v4, 0x1 │ │ new-array v4, v4, [Ljava/lang/String; │ │ const/4 v5, 0x0 │ │ + .line 135 │ invoke-static {p1}, Lorg/smssecure/smssecure/util/GroupUtil;->getEncodedId([B)Ljava/lang/String; │ │ move-result-object v6 │ │ aput-object v6, v4, v5 │ │ + .line 134 │ invoke-virtual {v1, v2, v0, v3, v4}, Landroid/database/sqlite/SQLiteDatabase;->update(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I │ │ .line 137 │ invoke-static {}, Lorg/smssecure/smssecure/recipients/RecipientFactory;->clearCache()V │ │ .line 138 │ invoke-direct {p0}, Lorg/smssecure/smssecure/database/GroupDatabase;->notifyDatabaseListeners()V ├── smali/org/smssecure/smssecure/database/IdentityDatabase.smali │ @@ -301,14 +301,15 @@ │ │ .line 101 │ if-eqz v1, :cond_0 │ │ .line 102 │ invoke-interface {v1}, Landroid/database/Cursor;->close()V │ │ + .line 99 │ :cond_0 │ :goto_0 │ return v0 │ │ .line 88 │ :cond_1 │ :try_start_2 ├── smali/org/smssecure/smssecure/database/ImageDatabase$ImageRecord.smali │ @@ -72,14 +72,15 @@ │ │ invoke-interface {p0, v0}, Landroid/database/Cursor;->getLong(I)J │ │ move-result-wide v2 │ │ const-string v0, "unique_id" │ │ + .line 70 │ invoke-interface {p0, v0}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v0 │ │ invoke-interface {p0, v0}, Landroid/database/Cursor;->getLong(I)J │ │ move-result-wide v4 │ @@ -87,24 +88,26 @@ │ invoke-direct {v1, v2, v3, v4, v5}, Lorg/smssecure/smssecure/attachments/AttachmentId;->(JJ)V │ │ .line 72 │ new-instance v0, Lorg/smssecure/smssecure/database/ImageDatabase$ImageRecord; │ │ const-string v2, "mid" │ │ + .line 73 │ invoke-interface {p0, v2}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v2 │ │ invoke-interface {p0, v2}, Landroid/database/Cursor;->getLong(I)J │ │ move-result-wide v2 │ │ const-string v4, "_data" │ │ + .line 74 │ invoke-interface {p0, v4}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v4 │ │ invoke-interface {p0, v4}, Landroid/database/Cursor;->isNull(I)Z │ │ move-result v4 │ @@ -112,66 +115,73 @@ │ if-nez v4, :cond_0 │ │ const/4 v4, 0x1 │ │ :goto_0 │ const-string v5, "ct" │ │ + .line 75 │ invoke-interface {p0, v5}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v5 │ │ invoke-interface {p0, v5}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; │ │ move-result-object v5 │ │ const-string v6, "address" │ │ + .line 76 │ invoke-interface {p0, v6}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v6 │ │ invoke-interface {p0, v6}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; │ │ move-result-object v6 │ │ const-string v7, "date_received" │ │ + .line 77 │ invoke-interface {p0, v7}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v7 │ │ invoke-interface {p0, v7}, Landroid/database/Cursor;->getLong(I)J │ │ move-result-wide v7 │ │ const-string v9, "pending_push" │ │ + .line 78 │ invoke-interface {p0, v9}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v9 │ │ invoke-interface {p0, v9}, Landroid/database/Cursor;->getInt(I)I │ │ move-result v9 │ │ const-string v10, "data_size" │ │ + .line 79 │ invoke-interface {p0, v10}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v10 │ │ invoke-interface {p0, v10}, Landroid/database/Cursor;->getLong(I)J │ │ move-result-wide v10 │ │ invoke-direct/range {v0 .. v11}, Lorg/smssecure/smssecure/database/ImageDatabase$ImageRecord;->(Lorg/smssecure/smssecure/attachments/AttachmentId;JZLjava/lang/String;Ljava/lang/String;JIJ)V │ │ + .line 72 │ return-object v0 │ │ + .line 74 │ :cond_0 │ const/4 v4, 0x0 │ │ goto :goto_0 │ .end method ├── smali/org/smssecure/smssecure/database/MessagingDatabase.smali │ @@ -75,28 +75,30 @@ │ │ const/4 v0, 0x1 │ │ new-array v4, v0, [Ljava/lang/String; │ │ const/4 v0, 0x0 │ │ + .line 119 │ invoke-static {p2, p3}, Ljava/lang/String;->valueOf(J)Ljava/lang/String; │ │ move-result-object v5 │ │ aput-object v5, v4, v0 │ │ const/4 v5, 0x0 │ │ const/4 v6, 0x0 │ │ const/4 v7, 0x0 │ │ move-object v0, p1 │ │ + .line 118 │ invoke-virtual/range {v0 .. v7}, Landroid/database/sqlite/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; │ :try_end_0 │ .catchall {:try_start_0 .. :try_end_0} :catchall_1 │ │ move-result-object v1 │ │ .line 122 │ @@ -140,14 +142,15 @@ │ │ .line 141 │ if-eqz v1, :cond_0 │ │ .line 142 │ invoke-interface {v1}, Landroid/database/Cursor;->close()V │ │ + .line 135 │ :cond_0 │ :goto_0 │ return-object v0 │ │ .line 129 │ :catch_0 │ move-exception v0 ├── smali/org/smssecure/smssecure/database/MmsAddressDatabase.smali │ @@ -532,18 +532,20 @@ │ .line 133 │ iget-object v3, p0, Lorg/smssecure/smssecure/database/MmsAddressDatabase;->context:Landroid/content/Context; │ │ invoke-static {v3, v0, v4}, Lorg/smssecure/smssecure/recipients/RecipientFactory;->getRecipientsFromString(Landroid/content/Context;Ljava/lang/String;Z)Lorg/smssecure/smssecure/recipients/Recipients; │ │ move-result-object v0 │ │ + .line 134 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/recipients/Recipients;->getPrimaryRecipient()Lorg/smssecure/smssecure/recipients/Recipient; │ │ move-result-object v0 │ │ + .line 133 │ invoke-interface {v1, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z │ │ goto :goto_0 │ │ .line 138 │ :cond_1 │ iget-object v0, p0, Lorg/smssecure/smssecure/database/MmsAddressDatabase;->context:Landroid/content/Context; ├── smali/org/smssecure/smssecure/database/MmsDatabase$Status.smali │ @@ -117,24 +117,27 @@ │ │ if-eq p1, v1, :cond_0 │ │ const/4 v1, 0x6 │ │ if-ne p1, v1, :cond_1 │ │ + .line 859 │ invoke-static {p0}, Lorg/smssecure/smssecure/util/SilencePreferences;->seenManualMmsSettings(Landroid/content/Context;)Z │ │ move-result v1 │ │ if-eqz v1, :cond_1 │ │ + .line 855 │ :cond_0 │ :goto_0 │ return v0 │ │ + .line 859 │ :cond_1 │ const/4 v0, 0x0 │ │ goto :goto_0 │ .end method │ │ .method public static isHardError(I)Z ├── smali/org/smssecure/smssecure/database/MmsDatabase.smali │ @@ -685,14 +685,15 @@ │ │ invoke-virtual {v0}, Lws/com/google/android/mms/pdu/EncodedStringValue;->getTextString()[B │ │ move-result-object v0 │ │ if-eqz v0, :cond_1 │ │ + .line 268 │ invoke-virtual {p1}, Lws/com/google/android/mms/pdu/NotificationInd;->getFrom()Lws/com/google/android/mms/pdu/EncodedStringValue; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Lws/com/google/android/mms/pdu/EncodedStringValue;->getTextString()[B │ │ move-result-object v0 │ @@ -736,15 +737,15 @@ │ │ invoke-virtual {v1, v0}, Lorg/smssecure/smssecure/database/ThreadDatabase;->getThreadIdFor(Lorg/smssecure/smssecure/recipients/Recipients;)J │ │ move-result-wide v0 │ │ return-wide v0 │ │ - .line 267 │ + .line 268 │ :cond_1 │ const-string v0, "" │ │ goto :goto_0 │ .end method │ │ .method private insertMediaMessage(Lorg/smssecure/smssecure/crypto/MasterSecret;Lorg/smssecure/smssecure/database/MmsAddresses;Ljava/lang/String;Ljava/util/List;Landroid/content/ContentValues;)J │ @@ -900,14 +901,15 @@ │ │ invoke-virtual {v1}, Ljava/lang/Long;->longValue()J │ │ move-result-wide v2 │ │ invoke-virtual {v0, v2, v3, v6}, Lorg/smssecure/smssecure/database/ThreadDatabase;->update(JZ)Z │ │ + .line 738 │ return-wide v4 │ │ .line 740 │ :catchall_0 │ move-exception v0 │ │ invoke-virtual {v1}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V │ @@ -1146,26 +1148,28 @@ │ │ .line 551 │ :cond_2 │ invoke-virtual {p2}, Lorg/smssecure/smssecure/mms/IncomingMediaMessage;->getAddresses()Lorg/smssecure/smssecure/database/MmsAddresses; │ │ move-result-object v2 │ │ + .line 552 │ invoke-virtual {p2}, Lorg/smssecure/smssecure/mms/IncomingMediaMessage;->getBody()Ljava/lang/String; │ │ move-result-object v3 │ │ invoke-virtual {p2}, Lorg/smssecure/smssecure/mms/IncomingMediaMessage;->getAttachments()Ljava/util/List; │ │ move-result-object v4 │ │ move-object v0, p0 │ │ move-object v1, p1 │ │ + .line 551 │ invoke-direct/range {v0 .. v5}, Lorg/smssecure/smssecure/database/MmsDatabase;->insertMediaMessage(Lorg/smssecure/smssecure/crypto/MasterSecret;Lorg/smssecure/smssecure/database/MmsAddresses;Ljava/lang/String;Ljava/util/List;Landroid/content/ContentValues;)J │ │ move-result-wide v0 │ │ .line 555 │ iget-object v2, p0, Lorg/smssecure/smssecure/database/MmsDatabase;->context:Landroid/content/Context; │ │ @@ -1337,21 +1341,15 @@ │ │ const-string v2, "mid" │ │ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v1 │ │ - const-string v2, ")" │ - │ - invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v1 │ - │ - const-string v2, " WHERE " │ + const-string v2, ") WHERE " │ │ 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; │ │ @@ -1406,21 +1404,15 @@ │ │ move-result-object v1 │ │ invoke-virtual {v1, p5, p6}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder; │ │ move-result-object v1 │ │ - const-string v2, " )" │ - │ - invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v1 │ - │ - const-string v2, " WHERE " │ + const-string v2, " ) WHERE " │ │ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v1 │ │ const-string v2, "_id" │ │ @@ -1679,46 +1671,54 @@ │ .line 498 │ new-instance v4, Lorg/smssecure/smssecure/attachments/DatabaseAttachment; │ │ invoke-virtual {v15}, Lorg/smssecure/smssecure/attachments/DatabaseAttachment;->getAttachmentId()Lorg/smssecure/smssecure/attachments/AttachmentId; │ │ move-result-object v5 │ │ + .line 499 │ invoke-virtual {v15}, Lorg/smssecure/smssecure/attachments/DatabaseAttachment;->getMmsId()J │ │ move-result-wide v6 │ │ + .line 500 │ invoke-virtual {v15}, Lorg/smssecure/smssecure/attachments/DatabaseAttachment;->hasData()Z │ │ move-result v8 │ │ + .line 501 │ invoke-virtual {v15}, Lorg/smssecure/smssecure/attachments/DatabaseAttachment;->getContentType()Ljava/lang/String; │ │ move-result-object v9 │ │ const/4 v10, 0x0 │ │ + .line 503 │ invoke-virtual {v15}, Lorg/smssecure/smssecure/attachments/DatabaseAttachment;->getSize()J │ │ move-result-wide v11 │ │ + .line 504 │ invoke-virtual {v15}, Lorg/smssecure/smssecure/attachments/DatabaseAttachment;->getLocation()Ljava/lang/String; │ │ move-result-object v13 │ │ + .line 505 │ invoke-virtual {v15}, Lorg/smssecure/smssecure/attachments/DatabaseAttachment;->getKey()Ljava/lang/String; │ │ move-result-object v14 │ │ + .line 506 │ invoke-virtual {v15}, Lorg/smssecure/smssecure/attachments/DatabaseAttachment;->getRelay()Ljava/lang/String; │ │ move-result-object v15 │ │ invoke-direct/range {v4 .. v15}, Lorg/smssecure/smssecure/attachments/DatabaseAttachment;->(Lorg/smssecure/smssecure/attachments/AttachmentId;JZLjava/lang/String;IJLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V │ │ + .line 498 │ move-object/from16 v0, v18 │ │ invoke-interface {v0, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z │ :try_end_0 │ .catch Lorg/smssecure/smssecure/database/NoSuchMessageException; {:try_start_0 .. :try_end_0} :catch_0 │ │ goto :goto_0 │ @@ -1730,15 +1730,15 @@ │ .line 515 │ new-instance v5, Lws/com/google/android/mms/MmsException; │ │ invoke-direct {v5, v4}, Lws/com/google/android/mms/MmsException;->(Ljava/lang/Throwable;)V │ │ throw v5 │ │ - .line 509 │ + .line 510 │ :cond_0 │ :try_start_1 │ invoke-virtual/range {v16 .. v16}, Lorg/smssecure/smssecure/mms/OutgoingMediaMessage;->getRecipients()Lorg/smssecure/smssecure/recipients/Recipients; │ │ move-result-object v4 │ │ const/4 v5, 0x0 │ @@ -1747,26 +1747,28 @@ │ │ move-result-object v4 │ │ invoke-static {v4}, Lorg/smssecure/smssecure/database/MmsAddresses;->forTo(Ljava/util/List;)Lorg/smssecure/smssecure/database/MmsAddresses; │ │ move-result-object v6 │ │ + .line 511 │ invoke-virtual/range {v16 .. v16}, Lorg/smssecure/smssecure/mms/OutgoingMediaMessage;->getBody()Ljava/lang/String; │ │ move-result-object v7 │ │ move-object/from16 v4, p0 │ │ move-object/from16 v5, p1 │ │ move-object/from16 v8, v18 │ │ move-object/from16 v9, v17 │ │ + .line 509 │ invoke-direct/range {v4 .. v9}, Lorg/smssecure/smssecure/database/MmsDatabase;->insertMediaMessage(Lorg/smssecure/smssecure/crypto/MasterSecret;Lorg/smssecure/smssecure/database/MmsAddresses;Ljava/lang/String;Ljava/util/List;Landroid/content/ContentValues;)J │ :try_end_1 │ .catch Lorg/smssecure/smssecure/database/NoSuchMessageException; {:try_start_1 .. :try_end_1} :catch_0 │ │ move-result-wide v4 │ │ return-wide v4 │ @@ -2747,45 +2749,47 @@ │ │ new-instance v3, Lws/com/google/android/mms/pdu/NotificationInd; │ │ invoke-direct {v3, v0}, Lws/com/google/android/mms/pdu/NotificationInd;->(Lws/com/google/android/mms/pdu/PduHeaders;)V │ │ const-string v0, "subscription_id" │ │ + .line 415 │ invoke-interface {v1, v0}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I │ │ move-result v0 │ │ invoke-interface {v1, v0}, Landroid/database/Cursor;->getInt(I)I │ │ move-result v0 │ │ invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v0 │ │ invoke-direct {v2, v3, v0}, Landroid/util/Pair;->(Ljava/lang/Object;Ljava/lang/Object;)V │ │ + .line 414 │ invoke-static {v2}, Lorg/whispersystems/libaxolotl/util/guava/Optional;->of(Ljava/lang/Object;)Lorg/whispersystems/libaxolotl/util/guava/Optional; │ :try_end_0 │ .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ │ move-result-object v0 │ │ .line 420 │ if-eqz v1, :cond_0 │ │ .line 421 │ invoke-interface {v1}, Landroid/database/Cursor;->close()V │ │ + .line 417 │ :cond_0 │ :goto_0 │ return-object v0 │ │ - .line 417 │ :cond_1 │ :try_start_1 │ invoke-static {}, Lorg/whispersystems/libaxolotl/util/guava/Optional;->absent()Lorg/whispersystems/libaxolotl/util/guava/Optional; │ :try_end_1 │ .catchall {:try_start_1 .. :try_end_1} :catchall_0 │ │ move-result-object v0 │ @@ -3059,23 +3063,25 @@ │ │ .line 469 │ if-eqz v8, :cond_1 │ │ .line 470 │ invoke-interface {v8}, Landroid/database/Cursor;->close()V │ │ + .line 462 │ :cond_1 │ :goto_0 │ return-object v0 │ │ .line 455 │ :cond_2 │ :try_start_2 │ new-instance v0, Lorg/smssecure/smssecure/mms/OutgoingMediaMessage; │ │ + .line 456 │ invoke-virtual {v7}, Lorg/smssecure/smssecure/database/MmsAddresses;->getBcc()Ljava/util/List; │ │ move-result-object v7 │ │ invoke-interface {v7}, Ljava/util/List;->isEmpty()Z │ │ move-result v7 │ @@ -3107,17 +3113,18 @@ │ │ .line 470 │ invoke-interface {v8}, Landroid/database/Cursor;->close()V │ │ :cond_3 │ move-object v0, v1 │ │ + .line 459 │ goto :goto_0 │ │ - .line 455 │ + .line 456 │ :cond_4 │ const/4 v7, 0x2 │ │ goto :goto_1 │ │ .line 469 │ :cond_5 │ @@ -3293,19 +3300,19 @@ │ │ .line 205 │ if-eqz v2, :cond_0 │ │ .line 206 │ invoke-interface {v2}, Landroid/database/Cursor;->close()V │ │ + .line 203 │ :cond_0 │ :goto_0 │ return-wide v0 │ │ - .line 203 │ :cond_1 │ const-wide/16 v0, -0x1 │ │ .line 205 │ if-eqz v2, :cond_0 │ │ .line 206 │ @@ -3358,14 +3365,15 @@ │ } │ .end annotation │ │ .prologue │ .line 568 │ const-wide/32 v2, -0x7fffffec │ │ + .line 570 │ invoke-virtual {p2}, Lorg/smssecure/smssecure/mms/IncomingMediaMessage;->isPushMessage()Z │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ const-wide/32 v0, 0x200000 │ @@ -3379,20 +3387,22 @@ │ │ move-object v2, p2 │ │ move-object v3, p3 │ │ move-wide v4, p4 │ │ + .line 568 │ invoke-direct/range {v0 .. v7}, Lorg/smssecure/smssecure/database/MmsDatabase;->insertMessageInbox(Lorg/smssecure/smssecure/crypto/MasterSecret;Lorg/smssecure/smssecure/mms/IncomingMediaMessage;Ljava/lang/String;JJ)Landroid/util/Pair; │ │ move-result-object v0 │ │ return-object v0 │ │ + .line 570 │ :cond_0 │ const-wide/16 v0, 0x0 │ │ goto :goto_0 │ .end method │ │ .method public insertMessageInbox(Lws/com/google/android/mms/pdu/NotificationInd;I)Landroid/util/Pair; │ @@ -3828,14 +3838,15 @@ │ │ invoke-virtual {v3}, Lorg/smssecure/smssecure/recipients/Recipients;->isSingleRecipient()Z │ │ move-result v3 │ │ if-nez v3, :cond_2 │ │ + .line 668 │ invoke-virtual {p2}, Lorg/smssecure/smssecure/mms/OutgoingMediaMessage;->getDistributionType()I │ │ move-result v3 │ │ if-ne v3, v8, :cond_2 │ │ .line 670 │ @@ -3930,22 +3941,24 @@ │ invoke-virtual {v5, v0}, Landroid/content/ContentValues;->remove(Ljava/lang/String;)V │ │ .line 686 │ invoke-virtual {p2}, Lorg/smssecure/smssecure/mms/OutgoingMediaMessage;->getBody()Ljava/lang/String; │ │ move-result-object v3 │ │ + .line 687 │ invoke-virtual {p2}, Lorg/smssecure/smssecure/mms/OutgoingMediaMessage;->getAttachments()Ljava/util/List; │ │ move-result-object v4 │ │ move-object v0, p0 │ │ move-object v1, p1 │ │ + .line 686 │ invoke-direct/range {v0 .. v5}, Lorg/smssecure/smssecure/database/MmsDatabase;->insertMediaMessage(Lorg/smssecure/smssecure/crypto/MasterSecret;Lorg/smssecure/smssecure/database/MmsAddresses;Ljava/lang/String;Ljava/util/List;Landroid/content/ContentValues;)J │ │ move-result-wide v0 │ │ .line 689 │ iget-object v2, p0, Lorg/smssecure/smssecure/database/MmsDatabase;->jobManager:Lorg/whispersystems/jobqueue/JobManager; │ │ @@ -4023,14 +4036,15 @@ │ │ .prologue │ .line 588 │ const-string v3, "" │ │ const-wide/32 v4, -0x7f7fffec │ │ + .line 591 │ invoke-virtual {p2}, Lorg/smssecure/smssecure/mms/IncomingMediaMessage;->isPushMessage()Z │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ const-wide/32 v0, 0x200000 │ @@ -4042,20 +4056,22 @@ │ │ move-object v1, p1 │ │ move-object v2, p2 │ │ move-wide v4, p3 │ │ + .line 588 │ invoke-direct/range {v0 .. v7}, Lorg/smssecure/smssecure/database/MmsDatabase;->insertMessageInbox(Lorg/smssecure/smssecure/crypto/MasterSecret;Lorg/smssecure/smssecure/mms/IncomingMediaMessage;Ljava/lang/String;JJ)Landroid/util/Pair; │ │ move-result-object v0 │ │ return-object v0 │ │ + .line 591 │ :cond_0 │ const-wide/16 v0, 0x0 │ │ goto :goto_0 │ .end method │ │ .method public insertSecureMessageInbox(Lorg/smssecure/smssecure/crypto/MasterSecret;Lorg/smssecure/smssecure/mms/IncomingMediaMessage;Ljava/lang/String;J)Landroid/util/Pair; ├── smali/org/smssecure/smssecure/database/PlaintextBackupExporter.smali │ @@ -80,48 +80,53 @@ │ if-eqz v13, :cond_1 │ │ .line 51 │ new-instance v3, Lorg/smssecure/smssecure/database/XmlBackup$XmlBackupItem; │ │ const/4 v4, 0x0 │ │ + .line 52 │ invoke-virtual {v13}, Lorg/smssecure/smssecure/database/model/SmsMessageRecord;->getIndividualRecipient()Lorg/smssecure/smssecure/recipients/Recipient; │ │ move-result-object v5 │ │ invoke-virtual {v5}, Lorg/smssecure/smssecure/recipients/Recipient;->getNumber()Ljava/lang/String; │ │ move-result-object v5 │ │ + .line 53 │ invoke-virtual {v13}, Lorg/smssecure/smssecure/database/model/SmsMessageRecord;->getDateReceived()J │ │ move-result-wide v6 │ │ + .line 54 │ invoke-virtual {v13}, Lorg/smssecure/smssecure/database/model/SmsMessageRecord;->getType()J │ │ move-result-wide v8 │ │ invoke-static {v8, v9}, Lorg/smssecure/smssecure/database/MmsSmsColumns$Types;->translateToSystemBaseType(J)I │ │ move-result v8 │ │ const/4 v9, 0x0 │ │ + .line 55 │ invoke-virtual {v13}, Lorg/smssecure/smssecure/database/model/SmsMessageRecord;->getDisplayBody()Landroid/text/SpannableString; │ │ move-result-object v10 │ │ invoke-virtual {v10}, Landroid/text/SpannableString;->toString()Ljava/lang/String; │ │ move-result-object v10 │ │ const/4 v11, 0x0 │ │ const/4 v12, 0x1 │ │ + .line 56 │ invoke-virtual {v13}, Lorg/smssecure/smssecure/database/model/SmsMessageRecord;->getDeliveryStatus()I │ │ move-result v13 │ │ invoke-direct/range {v3 .. v13}, Lorg/smssecure/smssecure/database/XmlBackup$XmlBackupItem;->(ILjava/lang/String;JILjava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V │ │ .line 58 ├── smali/org/smssecure/smssecure/database/RecipientPreferenceDatabase.smali │ @@ -52,14 +52,15 @@ │ │ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ │ sget-object v1, Lorg/smssecure/smssecure/database/RecipientPreferenceDatabase$VibrateState;->DEFAULT:Lorg/smssecure/smssecure/database/RecipientPreferenceDatabase$VibrateState; │ │ + .line 60 │ invoke-virtual {v1}, Lorg/smssecure/smssecure/database/RecipientPreferenceDatabase$VibrateState;->getId()I │ │ move-result v1 │ │ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ @@ -108,14 +109,15 @@ │ │ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v0 │ │ sput-object v0, Lorg/smssecure/smssecure/database/RecipientPreferenceDatabase;->CREATE_TABLE:Ljava/lang/String; │ │ + .line 54 │ return-void │ .end method │ │ .method public constructor (Landroid/content/Context;Landroid/database/sqlite/SQLiteOpenHelper;)V │ .locals 0 │ │ .prologue │ @@ -149,24 +151,26 @@ │ │ const-string v2, "recipient_ids = ?" │ │ new-array v3, v6, [Ljava/lang/String; │ │ const/4 v4, 0x0 │ │ + .line 165 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/recipients/Recipients;->getSortedIdsString()Ljava/lang/String; │ │ move-result-object v5 │ │ invoke-static {v5}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v5 │ │ aput-object v5, v3, v4 │ │ + .line 164 │ invoke-virtual {v0, v1, p2, v2, v3}, Landroid/database/sqlite/SQLiteDatabase;->update(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I │ │ move-result v1 │ │ .line 167 │ if-ge v1, v6, :cond_0 │ │ @@ -318,26 +322,28 @@ │ │ new-array v4, v4, [Ljava/lang/String; │ │ const/4 v5, 0x0 │ │ const-string v6, " " │ │ + .line 87 │ invoke-static {p1, v6}, Lorg/smssecure/smssecure/util/Util;->join([JLjava/lang/String;)Ljava/lang/String; │ │ move-result-object v6 │ │ aput-object v6, v4, v5 │ │ const/4 v5, 0x0 │ │ const/4 v6, 0x0 │ │ const/4 v7, 0x0 │ │ + .line 86 │ invoke-virtual/range {v0 .. v7}, Landroid/database/sqlite/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; │ :try_end_0 │ .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ │ move-result-object v9 │ │ .line 90 │ @@ -458,31 +464,34 @@ │ move-result-object v8 │ │ invoke-static {v0, v8}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I │ │ .line 110 │ new-instance v0, Lorg/smssecure/smssecure/database/RecipientPreferenceDatabase$RecipientsPreferences; │ │ + .line 111 │ invoke-static {v4}, Lorg/smssecure/smssecure/database/RecipientPreferenceDatabase$VibrateState;->fromId(I)Lorg/smssecure/smssecure/database/RecipientPreferenceDatabase$VibrateState; │ │ move-result-object v4 │ │ invoke-direct/range {v0 .. v7}, Lorg/smssecure/smssecure/database/RecipientPreferenceDatabase$RecipientsPreferences;->(ZJLorg/smssecure/smssecure/database/RecipientPreferenceDatabase$VibrateState;Landroid/net/Uri;Lorg/smssecure/smssecure/color/MaterialColor;I)V │ │ + .line 110 │ invoke-static {v0}, Lorg/whispersystems/libaxolotl/util/guava/Optional;->of(Ljava/lang/Object;)Lorg/whispersystems/libaxolotl/util/guava/Optional; │ :try_end_1 │ .catchall {:try_start_1 .. :try_end_1} :catchall_1 │ │ move-result-object v0 │ │ .line 117 │ if-eqz v9, :cond_0 │ │ invoke-interface {v9}, Landroid/database/Cursor;->close()V │ │ + .line 115 │ :cond_0 │ :goto_4 │ return-object v0 │ │ :cond_1 │ move v1, v11 ├── smali/org/smssecure/smssecure/database/SmsDatabase$Reader.smali │ @@ -499,20 +499,22 @@ │ │ move-object/from16 v0, p0 │ │ iget-object v3, v0, Lorg/smssecure/smssecure/database/SmsDatabase$Reader;->this$0:Lorg/smssecure/smssecure/database/SmsDatabase; │ │ iget-object v3, v3, Lorg/smssecure/smssecure/database/SmsDatabase;->context:Landroid/content/Context; │ │ + .line 618 │ invoke-virtual {v7}, Lorg/smssecure/smssecure/recipients/Recipients;->getPrimaryRecipient()Lorg/smssecure/smssecure/recipients/Recipient; │ │ move-result-object v8 │ │ invoke-direct/range {v2 .. v22}, Lorg/smssecure/smssecure/database/model/SmsMessageRecord;->(Landroid/content/Context;JLorg/smssecure/smssecure/database/model/DisplayRecord$Body;Lorg/smssecure/smssecure/recipients/Recipients;Lorg/smssecure/smssecure/recipients/Recipient;IJJJJJILjava/util/List;I)V │ │ + .line 617 │ return-object v2 │ .end method │ │ .method public getNext()Lorg/smssecure/smssecure/database/model/SmsMessageRecord; │ .locals 1 │ │ .prologue ├── smali/org/smssecure/smssecure/database/SmsDatabase.smali │ @@ -305,21 +305,15 @@ │ │ move-result-object v1 │ │ invoke-virtual {v1, p5, p6}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder; │ │ move-result-object v1 │ │ - const-string v2, " )" │ - │ - invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v1 │ - │ - const-string v2, " WHERE " │ + const-string v2, " ) WHERE " │ │ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v1 │ │ const-string v2, "_id" │ │ @@ -1293,28 +1287,30 @@ │ │ .line 155 │ if-eqz v1, :cond_0 │ │ .line 156 │ invoke-interface {v1}, Landroid/database/Cursor;->close()V │ │ + .line 153 │ :cond_0 │ :goto_0 │ return v0 │ │ .line 155 │ :cond_1 │ if-eqz v1, :cond_2 │ │ .line 156 │ invoke-interface {v1}, Landroid/database/Cursor;->close()V │ │ :cond_2 │ move v0, v8 │ │ + .line 153 │ goto :goto_0 │ │ .line 155 │ :catchall_0 │ move-exception v0 │ │ move-object v1, v9 │ @@ -1641,19 +1637,19 @@ │ │ .line 140 │ if-eqz v2, :cond_0 │ │ .line 141 │ invoke-interface {v2}, Landroid/database/Cursor;->close()V │ │ + .line 138 │ :cond_0 │ :goto_0 │ return-wide v0 │ │ - .line 138 │ :cond_1 │ const-wide/16 v0, -0x1 │ │ .line 140 │ if-eqz v2, :cond_0 │ │ .line 141 │ @@ -1808,14 +1804,15 @@ │ │ invoke-static {v5}, Lorg/smssecure/smssecure/util/Util;->isDefaultSmsProvider(Landroid/content/Context;)Z │ │ move-result v5 │ │ if-nez v5, :cond_2 │ │ + .line 390 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/sms/IncomingTextMessage;->isSecureMessage()Z │ │ move-result v5 │ │ if-nez v5, :cond_2 │ │ invoke-virtual {p1}, Lorg/smssecure/smssecure/sms/IncomingTextMessage;->isKeyExchange()Z │ @@ -2307,15 +2304,15 @@ │ move-result-object v1 │ │ goto/16 :goto_2 │ │ :cond_12 │ move v5, v3 │ │ - .line 389 │ + .line 390 │ goto/16 :goto_3 │ │ .line 395 │ :cond_13 │ iget-object v0, p0, Lorg/smssecure/smssecure/database/SmsDatabase;->context:Landroid/content/Context; │ │ invoke-static {v0}, Lorg/smssecure/smssecure/database/DatabaseFactory;->getThreadDatabase(Landroid/content/Context;)Lorg/smssecure/smssecure/database/ThreadDatabase; │ @@ -3281,21 +3278,15 @@ │ │ move-result-object v1 │ │ invoke-virtual {v1, p6, p7}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder; │ │ move-result-object v1 │ │ - const-string v2, ") " │ - │ - invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v1 │ - │ - const-string v2, "WHERE " │ + const-string v2, ") WHERE " │ │ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v1 │ │ const-string v2, "_id" ├── smali/org/smssecure/smssecure/database/SmsMigrator.smali │ @@ -27,15 +27,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 35 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 252 │ return-void │ .end method │ │ .method private static addEncryptedStringToStatement(Landroid/content/Context;Landroid/database/sqlite/SQLiteStatement;Landroid/database/Cursor;Lorg/smssecure/smssecure/crypto/MasterSecret;ILjava/lang/String;)V │ .locals 2 │ │ .prologue │ @@ -468,28 +467,30 @@ │ │ .line 134 │ if-eqz v1, :cond_0 │ │ .line 135 │ invoke-interface {v1}, Landroid/database/Cursor;->close()V │ │ + .line 132 │ :cond_0 │ :goto_0 │ return-object v0 │ │ .line 134 │ :cond_1 │ if-eqz v1, :cond_2 │ │ .line 135 │ invoke-interface {v1}, Landroid/database/Cursor;->close()V │ │ :cond_2 │ move-object v0, v6 │ │ + .line 128 │ goto :goto_0 │ │ .line 130 │ :catch_0 │ move-exception v0 │ │ move-object v1, v6 │ @@ -508,14 +509,15 @@ │ │ .line 135 │ invoke-interface {v1}, Landroid/database/Cursor;->close()V │ │ :cond_3 │ move-object v0, v6 │ │ + .line 132 │ goto :goto_0 │ │ .line 134 │ :catchall_0 │ move-exception v0 │ │ move-object v1, v6 │ @@ -952,14 +954,15 @@ │ │ move-result-object v0 │ │ const-string v1, "migrated" │ │ const/4 v2, 0x1 │ │ + .line 245 │ invoke-interface {v0, v1, v2}, Landroid/content/SharedPreferences$Editor;->putBoolean(Ljava/lang/String;Z)Landroid/content/SharedPreferences$Editor; │ │ move-result-object v0 │ │ invoke-interface {v0}, Landroid/content/SharedPreferences$Editor;->apply()V │ │ .line 246 ├── smali/org/smssecure/smssecure/database/ThreadDatabase.smali │ @@ -1583,19 +1583,19 @@ │ │ .line 440 │ if-eqz v2, :cond_0 │ │ .line 441 │ invoke-interface {v2}, Landroid/database/Cursor;->close()V │ │ + .line 438 │ :cond_0 │ :goto_0 │ return-wide v0 │ │ - .line 438 │ :cond_1 │ :try_start_2 │ array-length v0, v9 │ │ invoke-direct {p0, v10, v0, p2}, Lorg/smssecure/smssecure/database/ThreadDatabase;->createThreadForRecipients(Ljava/lang/String;II)J │ :try_end_2 │ .catchall {:try_start_2 .. :try_end_2} :catchall_1 │ @@ -1720,19 +1720,19 @@ │ │ .line 415 │ if-eqz v2, :cond_0 │ │ .line 416 │ invoke-interface {v2}, Landroid/database/Cursor;->close()V │ │ + .line 413 │ :cond_0 │ :goto_0 │ return-wide v0 │ │ - .line 413 │ :cond_1 │ const-wide/16 v0, -0x1 │ │ .line 415 │ if-eqz v2, :cond_0 │ │ .line 416 │ @@ -2393,15 +2393,15 @@ │ │ .line 470 │ invoke-virtual/range {p0 .. p0}, Lorg/smssecure/smssecure/database/ThreadDatabase;->notifyConversationListListeners()V │ │ .line 471 │ const/4 v2, 0x1 │ │ - .line 492 │ + .line 488 │ :cond_0 │ :goto_0 │ return v2 │ │ .line 474 │ :cond_1 │ const/4 v3, 0x0 │ @@ -2441,14 +2441,15 @@ │ │ move-object/from16 v0, p0 │ │ invoke-direct {v0, v2}, Lorg/smssecure/smssecure/database/ThreadDatabase;->getAttachmentUriFor(Lorg/smssecure/smssecure/database/model/MessageRecord;)Landroid/net/Uri; │ │ move-result-object v9 │ │ + .line 482 │ invoke-virtual {v2}, Lorg/smssecure/smssecure/database/model/MessageRecord;->getTimestamp()J │ │ move-result-wide v10 │ │ invoke-virtual {v2}, Lorg/smssecure/smssecure/database/model/MessageRecord;->getDeliveryStatus()I │ │ move-result v12 │ @@ -2459,14 +2460,15 @@ │ │ move-object/from16 v3, p0 │ │ move-wide/from16 v4, p1 │ │ move/from16 v15, p3 │ │ + .line 481 │ invoke-direct/range {v3 .. v15}, Lorg/smssecure/smssecure/database/ThreadDatabase;->updateThread(JJLjava/lang/String;Landroid/net/Uri;JIJZ)V │ │ .line 483 │ invoke-virtual/range {p0 .. p0}, Lorg/smssecure/smssecure/database/ThreadDatabase;->notifyConversationListListeners()V │ :try_end_1 │ .catchall {:try_start_1 .. :try_end_1} :catchall_1 ├── smali/org/smssecure/smssecure/database/XmlBackup$Writer.smali │ @@ -184,42 +184,47 @@ │ │ move-result-object v2 │ │ const-string v3, "<" │ │ const-string v4, "<" │ │ + .line 205 │ invoke-virtual {v2, v3, v4}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; │ │ move-result-object v2 │ │ const-string v3, ">" │ │ const-string v4, ">" │ │ + .line 206 │ invoke-virtual {v2, v3, v4}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; │ │ move-result-object v2 │ │ const-string v3, "\"" │ │ const-string v4, """ │ │ + .line 207 │ invoke-virtual {v2, v3, v4}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; │ │ move-result-object v2 │ │ const-string v3, "\'" │ │ const-string v4, "'" │ │ + .line 208 │ invoke-virtual {v2, v3, v4}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; │ │ move-result-object v2 │ │ + .line 204 │ invoke-virtual {v0, v2}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher; │ │ move-result-object v3 │ │ .line 209 │ new-instance v4, Ljava/lang/StringBuffer; ├── smali/org/smssecure/smssecure/database/loaders/BlockedContactsLoader.smali │ @@ -26,13 +26,15 @@ │ │ move-result-object v0 │ │ invoke-static {v0}, Lorg/smssecure/smssecure/database/DatabaseFactory;->getRecipientPreferenceDatabase(Landroid/content/Context;)Lorg/smssecure/smssecure/database/RecipientPreferenceDatabase; │ │ move-result-object v0 │ │ + .line 18 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/database/RecipientPreferenceDatabase;->getBlocked()Landroid/database/Cursor; │ │ move-result-object v0 │ │ + .line 17 │ return-object v0 │ .end method ├── smali/org/smssecure/smssecure/database/loaders/ConversationListLoader.smali │ @@ -109,14 +109,15 @@ │ .line 38 │ iget-object v1, p0, Lorg/smssecure/smssecure/database/loaders/ConversationListLoader;->context:Landroid/content/Context; │ │ invoke-static {v1}, Lorg/smssecure/smssecure/database/DatabaseFactory;->getThreadDatabase(Landroid/content/Context;)Lorg/smssecure/smssecure/database/ThreadDatabase; │ │ move-result-object v1 │ │ + .line 39 │ invoke-virtual {v1}, Lorg/smssecure/smssecure/database/ThreadDatabase;->getArchivedConversationListCount()I │ │ move-result v1 │ │ .line 41 │ if-lez v1, :cond_0 │ │ @@ -220,14 +221,15 @@ │ │ const/4 v1, 0x0 │ │ aput-object v1, v3, v10 │ │ const/4 v1, 0x5 │ │ + .line 49 │ invoke-static {v7}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v4 │ │ aput-object v4, v3, v1 │ │ const/4 v1, 0x6 │ @@ -236,14 +238,15 @@ │ │ move-result-object v4 │ │ aput-object v4, v3, v1 │ │ const/4 v1, 0x7 │ │ + .line 50 │ invoke-static {v6}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v4 │ │ aput-object v4, v3, v1 │ │ const/16 v1, 0x8 │ @@ -266,14 +269,15 @@ │ │ invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v4 │ │ aput-object v4, v3, v1 │ │ + .line 48 │ invoke-virtual {v2, v3}, Landroid/database/MatrixCursor;->addRow([Ljava/lang/Object;)V │ │ .line 52 │ invoke-interface {v0, v2}, Ljava/util/List;->add(Ljava/lang/Object;)Z │ │ .line 55 │ :cond_0 ├── smali/org/smssecure/smssecure/database/model/DisplayRecord.smali │ @@ -184,22 +184,24 @@ │ .method public isFailed()Z │ .locals 2 │ │ .prologue │ .line 67 │ iget-wide v0, p0, Lorg/smssecure/smssecure/database/model/DisplayRecord;->type:J │ │ + .line 68 │ invoke-static {v0, v1}, Lorg/smssecure/smssecure/database/MmsSmsColumns$Types;->isFailedMessageType(J)Z │ │ move-result v0 │ │ if-nez v0, :cond_0 │ │ iget-wide v0, p0, Lorg/smssecure/smssecure/database/model/DisplayRecord;->type:J │ │ + .line 69 │ invoke-static {v0, v1}, Lorg/smssecure/smssecure/database/MmsSmsColumns$Types;->isPendingSecureSmsFallbackType(J)Z │ │ move-result v0 │ │ if-nez v0, :cond_0 │ │ iget v0, p0, Lorg/smssecure/smssecure/database/model/DisplayRecord;->deliveryStatus:I │ @@ -207,17 +209,19 @@ │ const/16 v1, 0x40 │ │ if-lt v0, v1, :cond_1 │ │ :cond_0 │ const/4 v0, 0x1 │ │ + .line 67 │ :goto_0 │ return v0 │ │ + .line 69 │ :cond_1 │ const/4 v0, 0x0 │ │ goto :goto_0 │ .end method │ │ .method public isGroupAction()Z ├── smali/org/smssecure/smssecure/database/model/MessageRecord.smali │ @@ -188,43 +188,47 @@ │ │ if-eqz v0, :cond_0 │ │ move-object v0, p1 │ │ check-cast v0, Lorg/smssecure/smssecure/database/model/MessageRecord; │ │ + .line 194 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/database/model/MessageRecord;->getId()J │ │ move-result-wide v0 │ │ invoke-virtual {p0}, Lorg/smssecure/smssecure/database/model/MessageRecord;->getId()J │ │ move-result-wide v2 │ │ cmp-long v0, v0, v2 │ │ if-nez v0, :cond_0 │ │ check-cast p1, Lorg/smssecure/smssecure/database/model/MessageRecord; │ │ + .line 195 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/database/model/MessageRecord;->isMms()Z │ │ move-result v0 │ │ invoke-virtual {p0}, Lorg/smssecure/smssecure/database/model/MessageRecord;->isMms()Z │ │ move-result v1 │ │ if-ne v0, v1, :cond_0 │ │ const/4 v0, 0x1 │ │ + .line 192 │ :goto_0 │ return v0 │ │ + .line 195 │ :cond_0 │ const/4 v0, 0x0 │ │ goto :goto_0 │ .end method │ │ .method public getDisplayBody()Landroid/text/SpannableString; ├── smali/org/smssecure/smssecure/dom/events/EventTargetImpl.smali │ @@ -204,14 +204,15 @@ │ .line 94 │ iget-boolean v2, v0, Lorg/smssecure/smssecure/dom/events/EventTargetImpl$EventListenerEntry;->mUseCapture:Z │ │ if-nez v2, :cond_3 │ │ iget-object v2, v0, Lorg/smssecure/smssecure/dom/events/EventTargetImpl$EventListenerEntry;->mType:Ljava/lang/String; │ │ + .line 95 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/dom/events/EventImpl;->getType()Ljava/lang/String; │ │ move-result-object v3 │ │ invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z │ │ move-result v2 │ @@ -310,14 +311,15 @@ │ │ iget-object v2, v0, Lorg/smssecure/smssecure/dom/events/EventTargetImpl$EventListenerEntry;->mListener:Lorg/w3c/dom/events/EventListener; │ │ if-ne v2, p2, :cond_2 │ │ iget-object v0, v0, Lorg/smssecure/smssecure/dom/events/EventTargetImpl$EventListenerEntry;->mType:Ljava/lang/String; │ │ + .line 124 │ invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z │ │ move-result v0 │ │ if-eqz v0, :cond_2 │ │ .line 125 ├── smali/org/smssecure/smssecure/dom/smil/ElementParallelTimeContainerImpl.smali │ @@ -323,14 +323,15 @@ │ │ move-result v1 │ │ if-nez v1, :cond_1 │ │ const-string v1, "all" │ │ + .line 56 │ invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z │ │ move-result v1 │ │ if-nez v1, :cond_1 │ │ const-string v1, "media" │ @@ -499,14 +500,15 @@ │ │ move-result v0 │ │ if-nez v0, :cond_0 │ │ const-string v0, "all" │ │ + .line 68 │ invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z │ │ move-result v0 │ │ if-nez v0, :cond_0 │ │ const-string v0, "media" ├── smali/org/smssecure/smssecure/dom/smil/ElementTimeImpl.smali │ @@ -314,20 +314,22 @@ │ │ .line 131 │ :try_start_0 │ new-instance v1, Lorg/smssecure/smssecure/dom/smil/TimeImpl; │ │ aget-object v6, v4, v2 │ │ + .line 132 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/dom/smil/ElementTimeImpl;->getEndConstraints()I │ │ move-result v7 │ │ invoke-direct {v1, v6, v7}, Lorg/smssecure/smssecure/dom/smil/TimeImpl;->(Ljava/lang/String;I)V │ │ + .line 131 │ invoke-virtual {v3, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z │ :try_end_0 │ .catch Ljava/lang/IllegalArgumentException; {:try_start_0 .. :try_end_0} :catch_0 │ │ .line 129 │ :goto_1 │ add-int/lit8 v1, v2, 0x1 │ @@ -407,14 +409,15 @@ │ .line 151 │ new-instance v4, Lorg/smssecure/smssecure/dom/smil/TimeImpl; │ │ new-instance v5, Ljava/lang/StringBuilder; │ │ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V │ │ + .line 153 │ invoke-interface {v2, v0}, Lorg/w3c/dom/smil/TimeList;->item(I)Lorg/w3c/dom/smil/Time; │ │ move-result-object v6 │ │ invoke-interface {v6}, Lorg/w3c/dom/smil/Time;->getResolvedOffset()D │ │ move-result-wide v6 │ @@ -433,20 +436,22 @@ │ │ move-result-object v5 │ │ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v5 │ │ + .line 154 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/dom/smil/ElementTimeImpl;->getEndConstraints()I │ │ move-result v6 │ │ invoke-direct {v4, v5, v6}, Lorg/smssecure/smssecure/dom/smil/TimeImpl;->(Ljava/lang/String;I)V │ │ + .line 151 │ invoke-virtual {v3, v4}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z │ │ .line 150 │ add-int/lit8 v0, v0, 0x1 │ │ goto :goto_2 │ .end method │ @@ -566,52 +571,56 @@ │ │ if-nez v2, :cond_4 │ │ iget-object v2, p0, Lorg/smssecure/smssecure/dom/smil/ElementTimeImpl;->mSmilElement:Lorg/w3c/dom/smil/SMILElement; │ │ const-string v3, "end" │ │ + .line 208 │ invoke-interface {v2, v3}, Lorg/w3c/dom/smil/SMILElement;->getAttribute(Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v2 │ │ invoke-virtual {v2}, Ljava/lang/String;->length()I │ │ move-result v2 │ │ if-nez v2, :cond_4 │ │ iget-object v2, p0, Lorg/smssecure/smssecure/dom/smil/ElementTimeImpl;->mSmilElement:Lorg/w3c/dom/smil/SMILElement; │ │ const-string v3, "repeatCount" │ │ + .line 209 │ invoke-interface {v2, v3}, Lorg/w3c/dom/smil/SMILElement;->getAttribute(Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v2 │ │ invoke-virtual {v2}, Ljava/lang/String;->length()I │ │ move-result v2 │ │ if-nez v2, :cond_4 │ │ iget-object v2, p0, Lorg/smssecure/smssecure/dom/smil/ElementTimeImpl;->mSmilElement:Lorg/w3c/dom/smil/SMILElement; │ │ const-string v3, "repeatDur" │ │ + .line 210 │ invoke-interface {v2, v3}, Lorg/w3c/dom/smil/SMILElement;->getAttribute(Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v2 │ │ invoke-virtual {v2}, Ljava/lang/String;->length()I │ │ move-result v2 │ │ if-eqz v2, :cond_0 │ │ + .line 211 │ :cond_4 │ invoke-direct {p0}, Lorg/smssecure/smssecure/dom/smil/ElementTimeImpl;->beginAndEndAreZero()Z │ │ move-result v2 │ │ if-nez v2, :cond_0 │ │ @@ -781,14 +790,15 @@ │ │ .line 268 │ :try_start_0 │ iget-object v0, p0, Lorg/smssecure/smssecure/dom/smil/ElementTimeImpl;->mSmilElement:Lorg/w3c/dom/smil/SMILElement; │ │ const-string v2, "repeatDur" │ │ + .line 269 │ invoke-interface {v0, v2}, Lorg/w3c/dom/smil/SMILElement;->getAttribute(Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v0 │ │ invoke-static {v0}, Lorg/smssecure/smssecure/dom/smil/TimeImpl;->parseClockValue(Ljava/lang/String;)F │ :try_end_0 │ .catch Ljava/lang/IllegalArgumentException; {:try_start_0 .. :try_end_0} :catch_0 ├── smali/org/smssecure/smssecure/dom/smil/SmilDocumentImpl.smali │ @@ -66,22 +66,24 @@ │ │ move-result v0 │ │ if-nez v0, :cond_0 │ │ const-string v0, "img" │ │ + .line 159 │ invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z │ │ move-result v0 │ │ if-nez v0, :cond_0 │ │ const-string v0, "video" │ │ + .line 160 │ invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z │ │ move-result v0 │ │ if-eqz v0, :cond_1 │ │ .line 161 ├── smali/org/smssecure/smssecure/dom/smil/SmilMediaElementImpl$1.smali │ @@ -31,14 +31,15 @@ │ │ .prologue │ const/4 v2, 0x0 │ │ .line 43 │ iget-object v0, p0, Lorg/smssecure/smssecure/dom/smil/SmilMediaElementImpl$1;->this$0:Lorg/smssecure/smssecure/dom/smil/SmilMediaElementImpl; │ │ + .line 44 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/dom/smil/SmilMediaElementImpl;->getOwnerDocument()Lorg/w3c/dom/Document; │ │ move-result-object v0 │ │ check-cast v0, Lorg/w3c/dom/events/DocumentEvent; │ │ .line 45 │ @@ -60,14 +61,15 @@ │ │ .prologue │ const/4 v2, 0x0 │ │ .line 57 │ iget-object v0, p0, Lorg/smssecure/smssecure/dom/smil/SmilMediaElementImpl$1;->this$0:Lorg/smssecure/smssecure/dom/smil/SmilMediaElementImpl; │ │ + .line 58 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/dom/smil/SmilMediaElementImpl;->getOwnerDocument()Lorg/w3c/dom/Document; │ │ move-result-object v0 │ │ check-cast v0, Lorg/w3c/dom/events/DocumentEvent; │ │ .line 59 ├── smali/org/smssecure/smssecure/dom/smil/SmilRegionElementImpl.smali │ @@ -307,14 +307,15 @@ │ invoke-direct {p0, v0, v1}, Lorg/smssecure/smssecure/dom/smil/SmilRegionElementImpl;->parseRegionLength(Ljava/lang/String;Z)I │ │ move-result v0 │ │ .line 160 │ if-nez v0, :cond_0 │ │ + .line 161 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/dom/smil/SmilRegionElementImpl;->getOwnerDocument()Lorg/w3c/dom/Document; │ │ move-result-object v0 │ │ check-cast v0, Lorg/w3c/dom/smil/SMILDocument; │ │ invoke-interface {v0}, Lorg/w3c/dom/smil/SMILDocument;->getLayout()Lorg/w3c/dom/smil/SMILLayoutElement; │ @@ -644,14 +645,15 @@ │ invoke-direct {p0, v0, v1}, Lorg/smssecure/smssecure/dom/smil/SmilRegionElementImpl;->parseRegionLength(Ljava/lang/String;Z)I │ │ move-result v0 │ │ .line 193 │ if-nez v0, :cond_0 │ │ + .line 194 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/dom/smil/SmilRegionElementImpl;->getOwnerDocument()Lorg/w3c/dom/Document; │ │ move-result-object v0 │ │ check-cast v0, Lorg/w3c/dom/smil/SMILDocument; │ │ invoke-interface {v0}, Lorg/w3c/dom/smil/SMILDocument;->getLayout()Lorg/w3c/dom/smil/SMILLayoutElement; │ @@ -814,30 +816,33 @@ │ │ move-result v0 │ │ if-nez v0, :cond_0 │ │ const-string v0, "meet" │ │ + .line 128 │ invoke-virtual {p1, v0}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z │ │ move-result v0 │ │ if-nez v0, :cond_0 │ │ const-string v0, "scroll" │ │ + .line 129 │ invoke-virtual {p1, v0}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z │ │ move-result v0 │ │ if-nez v0, :cond_0 │ │ const-string v0, "slice" │ │ + .line 130 │ invoke-virtual {p1, v0}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z │ │ move-result v0 │ │ if-eqz v0, :cond_1 │ │ .line 131 │ @@ -1084,77 +1089,83 @@ │ │ const-string v1, ": id=" │ │ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ │ + .line 277 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/dom/smil/SmilRegionElementImpl;->getId()Ljava/lang/String; │ │ move-result-object v1 │ │ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ │ const-string v1, ", width=" │ │ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ │ + .line 278 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/dom/smil/SmilRegionElementImpl;->getWidth()I │ │ move-result v1 │ │ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ │ const-string v1, ", height=" │ │ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ │ + .line 279 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/dom/smil/SmilRegionElementImpl;->getHeight()I │ │ move-result v1 │ │ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ │ const-string v1, ", left=" │ │ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ │ + .line 280 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/dom/smil/SmilRegionElementImpl;->getLeft()I │ │ move-result v1 │ │ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ │ const-string v1, ", top=" │ │ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ │ + .line 281 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/dom/smil/SmilRegionElementImpl;->getTop()I │ │ move-result v1 │ │ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v0 │ │ + .line 276 │ return-object v0 │ .end method ├── smali/org/smssecure/smssecure/dom/smil/TimeImpl.smali │ @@ -515,18 +515,20 @@ │ move-result v2 │ │ .line 221 │ add-int/lit8 v3, v1, 0x1 │ │ add-int/lit8 v1, v1, 0x4 │ │ + .line 222 │ invoke-virtual {v0, v3, v1}, Ljava/lang/String;->substring(II)Ljava/lang/String; │ │ move-result-object v0 │ │ + .line 221 │ invoke-static {v0}, Ljava/lang/Float;->parseFloat(Ljava/lang/String;)F │ │ move-result v0 │ │ const/high16 v1, 0x447a0000 # 1000.0f │ │ div-float/2addr v0, v1 ├── smali/org/smssecure/smssecure/jobs/MmsDownloadJob.smali │ @@ -37,62 +37,70 @@ │ │ .prologue │ .line 65 │ invoke-static {}, Lorg/whispersystems/jobqueue/JobParameters;->newBuilder()Lorg/whispersystems/jobqueue/JobParameters$Builder; │ │ move-result-object v0 │ │ + .line 66 │ invoke-virtual {v0}, Lorg/whispersystems/jobqueue/JobParameters$Builder;->withPersistence()Lorg/whispersystems/jobqueue/JobParameters$Builder; │ │ move-result-object v0 │ │ new-instance v1, Lorg/smssecure/smssecure/jobs/requirements/MasterSecretRequirement; │ │ invoke-direct {v1, p1}, Lorg/smssecure/smssecure/jobs/requirements/MasterSecretRequirement;->(Landroid/content/Context;)V │ │ + .line 67 │ invoke-virtual {v0, v1}, Lorg/whispersystems/jobqueue/JobParameters$Builder;->withRequirement(Lorg/whispersystems/jobqueue/requirements/Requirement;)Lorg/whispersystems/jobqueue/JobParameters$Builder; │ │ move-result-object v0 │ │ new-instance v1, Lorg/whispersystems/jobqueue/requirements/NetworkRequirement; │ │ invoke-direct {v1, p1}, Lorg/whispersystems/jobqueue/requirements/NetworkRequirement;->(Landroid/content/Context;)V │ │ + .line 68 │ invoke-virtual {v0, v1}, Lorg/whispersystems/jobqueue/JobParameters$Builder;->withRequirement(Lorg/whispersystems/jobqueue/requirements/Requirement;)Lorg/whispersystems/jobqueue/JobParameters$Builder; │ │ move-result-object v0 │ │ new-instance v1, Lorg/smssecure/smssecure/jobs/requirements/MediaNetworkRequirement; │ │ invoke-direct {v1, p1, p2, p3, p6}, Lorg/smssecure/smssecure/jobs/requirements/MediaNetworkRequirement;->(Landroid/content/Context;JZ)V │ │ + .line 69 │ invoke-virtual {v0, v1}, Lorg/whispersystems/jobqueue/JobParameters$Builder;->withRequirement(Lorg/whispersystems/jobqueue/requirements/Requirement;)Lorg/whispersystems/jobqueue/JobParameters$Builder; │ │ move-result-object v0 │ │ const-string v1, "mms-operation" │ │ + .line 70 │ invoke-virtual {v0, v1}, Lorg/whispersystems/jobqueue/JobParameters$Builder;->withGroupId(Ljava/lang/String;)Lorg/whispersystems/jobqueue/JobParameters$Builder; │ │ move-result-object v0 │ │ const/4 v1, 0x1 │ │ const-wide/16 v2, 0x1e │ │ sget-object v4, Ljava/util/concurrent/TimeUnit;->SECONDS:Ljava/util/concurrent/TimeUnit; │ │ + .line 71 │ invoke-virtual {v0, v1, v2, v3, v4}, Lorg/whispersystems/jobqueue/JobParameters$Builder;->withWakeLock(ZJLjava/util/concurrent/TimeUnit;)Lorg/whispersystems/jobqueue/JobParameters$Builder; │ │ move-result-object v0 │ │ + .line 72 │ invoke-virtual {v0}, Lorg/whispersystems/jobqueue/JobParameters$Builder;->create()Lorg/whispersystems/jobqueue/JobParameters; │ │ move-result-object v0 │ │ + .line 65 │ invoke-direct {p0, p1, v0}, Lorg/smssecure/smssecure/jobs/MasterSecretJob;->(Landroid/content/Context;Lorg/whispersystems/jobqueue/JobParameters;)V │ │ .line 74 │ iput-wide p2, p0, Lorg/smssecure/smssecure/jobs/MmsDownloadJob;->messageId:J │ │ .line 75 │ iput-wide p4, p0, Lorg/smssecure/smssecure/jobs/MmsDownloadJob;->threadId:J │ @@ -356,24 +364,26 @@ │ │ invoke-static {v6}, Lorg/smssecure/smssecure/util/Util;->toIsoString([B)Ljava/lang/String; │ │ move-result-object v6 │ │ const/4 v7, 0x0 │ │ + .line 214 │ invoke-virtual {v8}, Lws/com/google/android/mms/pdu/PduPart;->getData()[B │ │ move-result-object v8 │ │ array-length v8, v8 │ │ int-to-long v8, v8 │ │ invoke-direct/range {v4 .. v9}, Lorg/smssecure/smssecure/attachments/UriAttachment;->(Landroid/net/Uri;Ljava/lang/String;IJ)V │ │ + .line 212 │ invoke-interface {v12, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z │ │ .line 207 │ :cond_2 │ add-int/lit8 v4, v10, 0x1 │ │ move v10, v4 ├── smali/org/smssecure/smssecure/jobs/MmsReceiveJob.smali │ @@ -39,26 +39,29 @@ │ .line 33 │ invoke-static {}, Lorg/whispersystems/jobqueue/JobParameters;->newBuilder()Lorg/whispersystems/jobqueue/JobParameters$Builder; │ │ move-result-object v0 │ │ const/4 v1, 0x1 │ │ + .line 34 │ invoke-virtual {v0, v1}, Lorg/whispersystems/jobqueue/JobParameters$Builder;->withWakeLock(Z)Lorg/whispersystems/jobqueue/JobParameters$Builder; │ │ move-result-object v0 │ │ + .line 35 │ invoke-virtual {v0}, Lorg/whispersystems/jobqueue/JobParameters$Builder;->withPersistence()Lorg/whispersystems/jobqueue/JobParameters$Builder; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Lorg/whispersystems/jobqueue/JobParameters$Builder;->create()Lorg/whispersystems/jobqueue/JobParameters; │ │ move-result-object v0 │ │ + .line 33 │ invoke-direct {p0, p1, v0}, Lorg/smssecure/smssecure/jobs/ContextJob;->(Landroid/content/Context;Lorg/whispersystems/jobqueue/JobParameters;)V │ │ .line 37 │ iput-object p2, p0, Lorg/smssecure/smssecure/jobs/MmsReceiveJob;->data:[B │ │ .line 38 │ iput p3, p0, Lorg/smssecure/smssecure/jobs/MmsReceiveJob;->subscriptionId:I │ @@ -274,42 +277,46 @@ │ .line 72 │ iget-object v0, p0, Lorg/smssecure/smssecure/jobs/MmsReceiveJob;->context:Landroid/content/Context; │ │ invoke-static {v0}, Lorg/smssecure/smssecure/ApplicationContext;->getInstance(Landroid/content/Context;)Lorg/smssecure/smssecure/ApplicationContext; │ │ move-result-object v0 │ │ + .line 73 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/ApplicationContext;->getJobManager()Lorg/whispersystems/jobqueue/JobManager; │ │ move-result-object v7 │ │ new-instance v0, Lorg/smssecure/smssecure/jobs/MmsDownloadJob; │ │ iget-object v1, p0, Lorg/smssecure/smssecure/jobs/MmsReceiveJob;->context:Landroid/content/Context; │ │ iget-object v2, v4, Landroid/util/Pair;->first:Ljava/lang/Object; │ │ check-cast v2, Ljava/lang/Long; │ │ + .line 75 │ invoke-virtual {v2}, Ljava/lang/Long;->longValue()J │ │ move-result-wide v2 │ │ iget-object v4, v4, Landroid/util/Pair;->second:Ljava/lang/Object; │ │ check-cast v4, Ljava/lang/Long; │ │ + .line 76 │ invoke-virtual {v4}, Ljava/lang/Long;->longValue()J │ │ move-result-wide v4 │ │ const/4 v6, 0x1 │ │ invoke-direct/range {v0 .. v6}, Lorg/smssecure/smssecure/jobs/MmsDownloadJob;->(Landroid/content/Context;JJZ)V │ │ + .line 74 │ invoke-virtual {v7, v0}, Lorg/whispersystems/jobqueue/JobManager;->add(Lorg/whispersystems/jobqueue/Job;)V │ │ goto :goto_0 │ │ .line 58 │ :catch_0 │ move-exception v1 ├── smali/org/smssecure/smssecure/jobs/MmsSendJob.smali │ @@ -37,42 +37,48 @@ │ .line 60 │ invoke-static {}, Lorg/whispersystems/jobqueue/JobParameters;->newBuilder()Lorg/whispersystems/jobqueue/JobParameters$Builder; │ │ move-result-object v0 │ │ const-string v1, "mms-operation" │ │ + .line 61 │ invoke-virtual {v0, v1}, Lorg/whispersystems/jobqueue/JobParameters$Builder;->withGroupId(Ljava/lang/String;)Lorg/whispersystems/jobqueue/JobParameters$Builder; │ │ move-result-object v0 │ │ new-instance v1, Lorg/whispersystems/jobqueue/requirements/NetworkRequirement; │ │ invoke-direct {v1, p1}, Lorg/whispersystems/jobqueue/requirements/NetworkRequirement;->(Landroid/content/Context;)V │ │ + .line 62 │ invoke-virtual {v0, v1}, Lorg/whispersystems/jobqueue/JobParameters$Builder;->withRequirement(Lorg/whispersystems/jobqueue/requirements/Requirement;)Lorg/whispersystems/jobqueue/JobParameters$Builder; │ │ move-result-object v0 │ │ new-instance v1, Lorg/smssecure/smssecure/jobs/requirements/MasterSecretRequirement; │ │ invoke-direct {v1, p1}, Lorg/smssecure/smssecure/jobs/requirements/MasterSecretRequirement;->(Landroid/content/Context;)V │ │ + .line 63 │ invoke-virtual {v0, v1}, Lorg/whispersystems/jobqueue/JobParameters$Builder;->withRequirement(Lorg/whispersystems/jobqueue/requirements/Requirement;)Lorg/whispersystems/jobqueue/JobParameters$Builder; │ │ move-result-object v0 │ │ + .line 64 │ invoke-virtual {v0}, Lorg/whispersystems/jobqueue/JobParameters$Builder;->withPersistence()Lorg/whispersystems/jobqueue/JobParameters$Builder; │ │ move-result-object v0 │ │ + .line 65 │ invoke-virtual {v0}, Lorg/whispersystems/jobqueue/JobParameters$Builder;->create()Lorg/whispersystems/jobqueue/JobParameters; │ │ move-result-object v0 │ │ + .line 60 │ invoke-direct {p0, p1, v0}, Lorg/smssecure/smssecure/jobs/SendJob;->(Landroid/content/Context;Lorg/whispersystems/jobqueue/JobParameters;)V │ │ .line 67 │ iput-wide p2, p0, Lorg/smssecure/smssecure/jobs/MmsSendJob;->messageId:J │ │ .line 68 │ return-void │ @@ -914,14 +920,15 @@ │ │ move-result-object v3 │ │ if-nez v2, :cond_3 │ │ const/4 v0, 0x0 │ │ + .line 185 │ :goto_1 │ invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ @@ -1101,16 +1108,16 @@ │ │ invoke-virtual {v3}, Lorg/smssecure/smssecure/mms/OutgoingMediaMessage;->getAttachments()Ljava/util/List; │ │ move-result-object v3 │ │ invoke-virtual {p0, v0, v1, v3}, Lorg/smssecure/smssecure/jobs/MmsSendJob;->markAttachmentsUploaded(JLjava/util/List;)V │ :try_end_0 │ - .catch Lorg/smssecure/smssecure/transport/UndeliverableMessageException; {:try_start_0 .. :try_end_0} :catch_0 │ - .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_2 │ + .catch Lorg/smssecure/smssecure/transport/UndeliverableMessageException; {:try_start_0 .. :try_end_0} :catch_2 │ + .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0 │ .catch Lorg/smssecure/smssecure/transport/InsecureFallbackApprovalException; {:try_start_0 .. :try_end_0} :catch_1 │ │ .line 113 │ :goto_0 │ return-void │ │ .line 104 ├── smali/org/smssecure/smssecure/jobs/SmsDecryptJob.smali │ @@ -48,30 +48,34 @@ │ │ .prologue │ .line 48 │ invoke-static {}, Lorg/whispersystems/jobqueue/JobParameters;->newBuilder()Lorg/whispersystems/jobqueue/JobParameters$Builder; │ │ move-result-object v0 │ │ + .line 49 │ invoke-virtual {v0}, Lorg/whispersystems/jobqueue/JobParameters$Builder;->withPersistence()Lorg/whispersystems/jobqueue/JobParameters$Builder; │ │ move-result-object v0 │ │ new-instance v1, Lorg/smssecure/smssecure/jobs/requirements/MasterSecretRequirement; │ │ invoke-direct {v1, p1}, Lorg/smssecure/smssecure/jobs/requirements/MasterSecretRequirement;->(Landroid/content/Context;)V │ │ + .line 50 │ invoke-virtual {v0, v1}, Lorg/whispersystems/jobqueue/JobParameters$Builder;->withRequirement(Lorg/whispersystems/jobqueue/requirements/Requirement;)Lorg/whispersystems/jobqueue/JobParameters$Builder; │ │ move-result-object v0 │ │ + .line 51 │ invoke-virtual {v0}, Lorg/whispersystems/jobqueue/JobParameters$Builder;->create()Lorg/whispersystems/jobqueue/JobParameters; │ │ move-result-object v0 │ │ + .line 48 │ invoke-direct {p0, p1, v0}, Lorg/smssecure/smssecure/jobs/MasterSecretJob;->(Landroid/content/Context;Lorg/whispersystems/jobqueue/JobParameters;)V │ │ .line 53 │ iput-wide p2, p0, Lorg/smssecure/smssecure/jobs/SmsDecryptJob;->messageId:J │ │ .line 54 │ iput-boolean p4, p0, Lorg/smssecure/smssecure/jobs/SmsDecryptJob;->manualOverride:Z │ @@ -130,18 +134,20 @@ │ │ move-result-object v0 │ │ invoke-virtual {v0}, Lorg/smssecure/smssecure/recipients/Recipient;->getNumber()Ljava/lang/String; │ │ move-result-object v2 │ │ + .line 200 │ invoke-virtual {p2}, Lorg/smssecure/smssecure/database/model/SmsMessageRecord;->getRecipientDeviceId()I │ │ move-result v3 │ │ + .line 201 │ invoke-virtual {p2}, Lorg/smssecure/smssecure/database/model/SmsMessageRecord;->getDateSent()J │ │ move-result-wide v4 │ │ invoke-direct/range {v1 .. v6}, Lorg/smssecure/smssecure/sms/IncomingTextMessage;->(Ljava/lang/String;IJLjava/lang/String;)V │ │ .line 204 ├── smali/org/smssecure/smssecure/jobs/SmsReceiveJob.smali │ @@ -46,28 +46,32 @@ │ │ .prologue │ .line 38 │ invoke-static {}, Lorg/whispersystems/jobqueue/JobParameters;->newBuilder()Lorg/whispersystems/jobqueue/JobParameters$Builder; │ │ move-result-object v0 │ │ + .line 39 │ invoke-virtual {v0}, Lorg/whispersystems/jobqueue/JobParameters$Builder;->withPersistence()Lorg/whispersystems/jobqueue/JobParameters$Builder; │ │ move-result-object v0 │ │ const/4 v1, 0x1 │ │ + .line 40 │ invoke-virtual {v0, v1}, Lorg/whispersystems/jobqueue/JobParameters$Builder;->withWakeLock(Z)Lorg/whispersystems/jobqueue/JobParameters$Builder; │ │ move-result-object v0 │ │ + .line 41 │ invoke-virtual {v0}, Lorg/whispersystems/jobqueue/JobParameters$Builder;->create()Lorg/whispersystems/jobqueue/JobParameters; │ │ move-result-object v0 │ │ + .line 38 │ invoke-direct {p0, p1, v0}, Lorg/smssecure/smssecure/jobs/ContextJob;->(Landroid/content/Context;Lorg/whispersystems/jobqueue/JobParameters;)V │ │ .line 43 │ iput-object p2, p0, Lorg/smssecure/smssecure/jobs/SmsReceiveJob;->pdus:[Ljava/lang/Object; │ │ .line 44 │ iput p3, p0, Lorg/smssecure/smssecure/jobs/SmsReceiveJob;->subscriptionId:I │ @@ -299,26 +303,28 @@ │ :cond_0 │ iget-object v0, p0, Lorg/smssecure/smssecure/jobs/SmsReceiveJob;->context:Landroid/content/Context; │ │ invoke-static {v0}, Lorg/smssecure/smssecure/ApplicationContext;->getInstance(Landroid/content/Context;)Lorg/smssecure/smssecure/ApplicationContext; │ │ move-result-object v0 │ │ + .line 97 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/ApplicationContext;->getJobManager()Lorg/whispersystems/jobqueue/JobManager; │ │ move-result-object v2 │ │ new-instance v3, Lorg/smssecure/smssecure/jobs/SmsDecryptJob; │ │ iget-object v4, p0, Lorg/smssecure/smssecure/jobs/SmsReceiveJob;->context:Landroid/content/Context; │ │ iget-object v0, v1, Landroid/util/Pair;->first:Ljava/lang/Object; │ │ check-cast v0, Ljava/lang/Long; │ │ + .line 98 │ invoke-virtual {v0}, Ljava/lang/Long;->longValue()J │ │ move-result-wide v6 │ │ invoke-direct {v3, v4, v6, v7}, Lorg/smssecure/smssecure/jobs/SmsDecryptJob;->(Landroid/content/Context;J)V │ │ invoke-virtual {v2, v3}, Lorg/whispersystems/jobqueue/JobManager;->add(Lorg/whispersystems/jobqueue/Job;)V ├── smali/org/smssecure/smssecure/jobs/SmsSendJob.smali │ @@ -65,14 +65,15 @@ │ │ move-result-object v2 │ │ invoke-virtual {v2, p2, p3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder; │ │ move-result-object v2 │ │ + .line 242 │ invoke-static {}, Ljava/lang/System;->currentTimeMillis()J │ │ move-result-wide v4 │ │ invoke-virtual {v2, v4, v5}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder; │ │ move-result-object v2 │ @@ -173,18 +174,20 @@ │ │ move-object v0, p0 │ │ move-wide v2, p1 │ │ move-wide v4, p3 │ │ + .line 218 │ invoke-direct/range {v0 .. v5}, Lorg/smssecure/smssecure/jobs/SmsSendJob;->constructDeliveredIntent(Landroid/content/Context;JJ)Landroid/content/Intent; │ │ move-result-object v0 │ │ + .line 217 │ invoke-static {v8, v9, v0, v9}, Landroid/app/PendingIntent;->getBroadcast(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent; │ │ move-result-object v0 │ │ invoke-virtual {v6, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z │ │ goto :goto_1 │ @@ -201,32 +204,36 @@ │ │ .prologue │ .line 259 │ invoke-static {}, Lorg/whispersystems/jobqueue/JobParameters;->newBuilder()Lorg/whispersystems/jobqueue/JobParameters$Builder; │ │ move-result-object v0 │ │ + .line 260 │ invoke-virtual {v0}, Lorg/whispersystems/jobqueue/JobParameters$Builder;->withPersistence()Lorg/whispersystems/jobqueue/JobParameters$Builder; │ │ move-result-object v0 │ │ new-instance v1, Lorg/smssecure/smssecure/jobs/requirements/MasterSecretRequirement; │ │ invoke-direct {v1, p0}, Lorg/smssecure/smssecure/jobs/requirements/MasterSecretRequirement;->(Landroid/content/Context;)V │ │ + .line 261 │ invoke-virtual {v0, v1}, Lorg/whispersystems/jobqueue/JobParameters$Builder;->withRequirement(Lorg/whispersystems/jobqueue/requirements/Requirement;)Lorg/whispersystems/jobqueue/JobParameters$Builder; │ │ move-result-object v0 │ │ const/16 v1, 0xf │ │ + .line 262 │ invoke-virtual {v0, v1}, Lorg/whispersystems/jobqueue/JobParameters$Builder;->withRetryCount(I)Lorg/whispersystems/jobqueue/JobParameters$Builder; │ │ move-result-object v0 │ │ + .line 263 │ invoke-virtual {v0, p1}, Lorg/whispersystems/jobqueue/JobParameters$Builder;->withGroupId(Ljava/lang/String;)Lorg/whispersystems/jobqueue/JobParameters$Builder; │ │ move-result-object v0 │ │ .line 265 │ invoke-static {p0}, Lorg/smssecure/smssecure/util/SilencePreferences;->isWifiSmsEnabled(Landroid/content/Context;)Z │ │ @@ -279,14 +286,15 @@ │ │ move-result-object v2 │ │ invoke-virtual {v2, p2, p3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder; │ │ move-result-object v2 │ │ + .line 229 │ invoke-static {}, Ljava/lang/System;->currentTimeMillis()J │ │ move-result-wide v4 │ │ invoke-virtual {v2, v4, v5}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder; │ │ move-result-object v2 │ @@ -384,20 +392,22 @@ │ │ move-wide v2, p1 │ │ move-wide/from16 v4, p3 │ │ move/from16 v6, p6 │ │ + .line 202 │ invoke-direct/range {v0 .. v7}, Lorg/smssecure/smssecure/jobs/SmsSendJob;->constructSentIntent(Landroid/content/Context;JJZZ)Landroid/content/Intent; │ │ move-result-object v0 │ │ const/4 v1, 0x0 │ │ + .line 201 │ invoke-static {v10, v11, v0, v1}, Landroid/app/PendingIntent;->getBroadcast(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent; │ │ move-result-object v0 │ │ invoke-virtual {v8, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z │ │ goto :goto_0 │ @@ -679,37 +689,39 @@ │ │ invoke-virtual {v6, v11}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object; │ │ move-result-object v3 │ │ check-cast v3, Ljava/lang/String; │ │ + .line 174 │ invoke-virtual {v7, v11}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object; │ │ move-result-object v4 │ │ check-cast v4, Landroid/app/PendingIntent; │ │ if-nez v8, :cond_2 │ │ const/4 v5, 0x0 │ │ :goto_2 │ move-object v1, v9 │ │ + .line 173 │ invoke-virtual/range {v0 .. v5}, Landroid/telephony/SmsManager;->sendTextMessage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/app/PendingIntent;)V │ │ .line 172 │ add-int/lit8 v0, v11, 0x1 │ │ move v11, v0 │ │ goto :goto_1 │ │ - .line 173 │ + .line 175 │ :cond_2 │ invoke-virtual {v8, v11}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object; │ │ move-result-object v1 │ │ check-cast v1, Landroid/app/PendingIntent; │ :try_end_1 │ @@ -879,35 +891,37 @@ │ │ invoke-virtual {v6, v7}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object; │ │ move-result-object v3 │ │ check-cast v3, Ljava/lang/String; │ │ + .line 124 │ invoke-virtual {v9, v7}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object; │ │ move-result-object v4 │ │ check-cast v4, Landroid/app/PendingIntent; │ │ if-nez v10, :cond_2 │ │ move-object v5, v8 │ │ + .line 123 │ :goto_1 │ invoke-virtual/range {v0 .. v5}, Landroid/telephony/SmsManager;->sendTextMessage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/app/PendingIntent;)V │ │ .line 117 │ add-int/lit8 v0, v7, 0x1 │ │ move v7, v0 │ │ goto :goto_0 │ │ - .line 123 │ + .line 125 │ :cond_2 │ invoke-virtual {v10, v7}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object; │ │ move-result-object v5 │ │ check-cast v5, Landroid/app/PendingIntent; │ :try_end_0 ├── smali/org/smssecure/smssecure/jobs/SmsSentJob.smali │ @@ -37,30 +37,34 @@ │ │ .prologue │ .line 32 │ invoke-static {}, Lorg/whispersystems/jobqueue/JobParameters;->newBuilder()Lorg/whispersystems/jobqueue/JobParameters$Builder; │ │ move-result-object v0 │ │ + .line 33 │ invoke-virtual {v0}, Lorg/whispersystems/jobqueue/JobParameters$Builder;->withPersistence()Lorg/whispersystems/jobqueue/JobParameters$Builder; │ │ move-result-object v0 │ │ new-instance v1, Lorg/smssecure/smssecure/jobs/requirements/MasterSecretRequirement; │ │ invoke-direct {v1, p1}, Lorg/smssecure/smssecure/jobs/requirements/MasterSecretRequirement;->(Landroid/content/Context;)V │ │ + .line 34 │ invoke-virtual {v0, v1}, Lorg/whispersystems/jobqueue/JobParameters$Builder;->withRequirement(Lorg/whispersystems/jobqueue/requirements/Requirement;)Lorg/whispersystems/jobqueue/JobParameters$Builder; │ │ move-result-object v0 │ │ + .line 35 │ invoke-virtual {v0}, Lorg/whispersystems/jobqueue/JobParameters$Builder;->create()Lorg/whispersystems/jobqueue/JobParameters; │ │ move-result-object v0 │ │ + .line 32 │ invoke-direct {p0, p1, v0}, Lorg/smssecure/smssecure/jobs/MasterSecretJob;->(Landroid/content/Context;Lorg/whispersystems/jobqueue/JobParameters;)V │ │ .line 37 │ iput-wide p2, p0, Lorg/smssecure/smssecure/jobs/SmsSentJob;->messageId:J │ │ .line 38 │ iput-object p4, p0, Lorg/smssecure/smssecure/jobs/SmsSentJob;->action:Ljava/lang/String; │ @@ -285,22 +289,24 @@ │ .line 106 │ iget-object v0, p0, Lorg/smssecure/smssecure/jobs/SmsSentJob;->context:Landroid/content/Context; │ │ invoke-static {v0}, Lorg/smssecure/smssecure/ApplicationContext;->getInstance(Landroid/content/Context;)Lorg/smssecure/smssecure/ApplicationContext; │ │ move-result-object v0 │ │ + .line 107 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/ApplicationContext;->getJobManager()Lorg/whispersystems/jobqueue/JobManager; │ │ move-result-object v0 │ │ new-instance v2, Lorg/smssecure/smssecure/jobs/SmsSendJob; │ │ iget-object v3, p0, Lorg/smssecure/smssecure/jobs/SmsSentJob;->context:Landroid/content/Context; │ │ + .line 108 │ invoke-virtual {v1}, Lorg/smssecure/smssecure/database/model/SmsMessageRecord;->getIndividualRecipient()Lorg/smssecure/smssecure/recipients/Recipient; │ │ move-result-object v1 │ │ invoke-virtual {v1}, Lorg/smssecure/smssecure/recipients/Recipient;->getNumber()Ljava/lang/String; │ │ move-result-object v1 ├── smali/org/smssecure/smssecure/jobs/requirements/MediaNetworkRequirement.smali │ @@ -91,14 +91,15 @@ │ │ move-result v1 │ │ if-eqz v1, :cond_2 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/jobs/requirements/MediaNetworkRequirement;->context:Landroid/content/Context; │ │ + .line 37 │ invoke-static {v1}, Lorg/smssecure/smssecure/util/SilencePreferences;->isRoamingMediaDownloadAllowed(Landroid/content/Context;)Z │ │ move-result v1 │ │ if-nez v1, :cond_0 │ │ :cond_2 ├── smali/org/smssecure/smssecure/mms/AttachmentManager$2.smali │ @@ -226,14 +226,15 @@ │ │ const v1, 0x7f0801d7 │ │ invoke-static {v0, v1, v4}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast; │ │ move-result-object v0 │ │ + .line 170 │ invoke-virtual {v0}, Landroid/widget/Toast;->show()V │ │ .line 190 │ :goto_0 │ return-void │ │ .line 171 │ @@ -278,14 +279,15 @@ │ │ const v1, 0x7f080166 │ │ invoke-static {v0, v1, v4}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast; │ │ move-result-object v0 │ │ + .line 175 │ invoke-virtual {v0}, Landroid/widget/Toast;->show()V │ │ goto :goto_0 │ │ .line 177 │ :cond_1 │ iget-object v0, p0, Lorg/smssecure/smssecure/mms/AttachmentManager$2;->this$0:Lorg/smssecure/smssecure/mms/AttachmentManager; ├── smali/org/smssecure/smssecure/mms/AttachmentManager.smali │ @@ -270,40 +270,44 @@ │ .method private areConstraintsSatisfied(Landroid/content/Context;Lorg/smssecure/smssecure/crypto/MasterSecret;Lorg/smssecure/smssecure/mms/Slide;Lorg/smssecure/smssecure/mms/MediaConstraints;)Z │ .locals 1 │ │ .prologue │ .line 274 │ if-eqz p3, :cond_0 │ │ + .line 275 │ invoke-virtual {p3}, Lorg/smssecure/smssecure/mms/Slide;->asAttachment()Lorg/smssecure/smssecure/attachments/Attachment; │ │ move-result-object v0 │ │ invoke-virtual {p4, p1, p2, v0}, Lorg/smssecure/smssecure/mms/MediaConstraints;->isSatisfied(Landroid/content/Context;Lorg/smssecure/smssecure/crypto/MasterSecret;Lorg/smssecure/smssecure/attachments/Attachment;)Z │ │ move-result v0 │ │ if-nez v0, :cond_0 │ │ + .line 276 │ invoke-virtual {p3}, Lorg/smssecure/smssecure/mms/Slide;->asAttachment()Lorg/smssecure/smssecure/attachments/Attachment; │ │ move-result-object v0 │ │ invoke-virtual {p4, v0}, Lorg/smssecure/smssecure/mms/MediaConstraints;->canResize(Lorg/smssecure/smssecure/attachments/Attachment;)Z │ │ move-result v0 │ │ if-eqz v0, :cond_1 │ │ :cond_0 │ const/4 v0, 0x1 │ │ + .line 274 │ :goto_0 │ return v0 │ │ + .line 276 │ :cond_1 │ const/4 v0, 0x0 │ │ goto :goto_0 │ .end method │ │ .method private cleanup(Landroid/net/Uri;)V │ @@ -763,14 +767,15 @@ │ │ invoke-static {v1}, Lorg/smssecure/smssecure/providers/PersistentBlobProvider;->getInstance(Landroid/content/Context;)Lorg/smssecure/smssecure/providers/PersistentBlobProvider; │ │ move-result-object v1 │ │ const-string v2, "image/jpeg" │ │ + .line 235 │ invoke-virtual {v1, v2}, Lorg/smssecure/smssecure/providers/PersistentBlobProvider;->createForExternal(Ljava/lang/String;)Landroid/net/Uri; │ │ move-result-object v1 │ │ iput-object v1, p0, Lorg/smssecure/smssecure/mms/AttachmentManager;->captureUri:Landroid/net/Uri; │ │ .line 237 │ @@ -989,12 +994,13 @@ │ │ invoke-direct/range {v0 .. v5}, Lorg/smssecure/smssecure/mms/AttachmentManager$2;->(Lorg/smssecure/smssecure/mms/AttachmentManager;Lorg/smssecure/smssecure/crypto/MasterSecret;Landroid/net/Uri;Lorg/smssecure/smssecure/mms/AttachmentManager$MediaType;Lorg/smssecure/smssecure/mms/MediaConstraints;)V │ │ const/4 v1, 0x0 │ │ new-array v1, v1, [Ljava/lang/Void; │ │ + .line 191 │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/mms/AttachmentManager$2;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 192 │ return-void │ .end method ├── smali/org/smssecure/smssecure/mms/CompatMmsConnection.smali │ @@ -187,16 +187,16 @@ │ │ iget-object v1, p0, Lorg/smssecure/smssecure/mms/CompatMmsConnection;->context:Landroid/content/Context; │ │ invoke-direct {v0, v1}, Lorg/smssecure/smssecure/mms/OutgoingLegacyMmsConnection;->(Landroid/content/Context;)V │ │ invoke-virtual {v0, p1, p2}, Lorg/smssecure/smssecure/mms/OutgoingLegacyMmsConnection;->send([BI)Lws/com/google/android/mms/pdu/SendConf; │ :try_end_0 │ - .catch Lorg/smssecure/smssecure/transport/UndeliverableMessageException; {:try_start_0 .. :try_end_0} :catch_0 │ - .catch Lorg/smssecure/smssecure/mms/ApnUnavailableException; {:try_start_0 .. :try_end_0} :catch_1 │ + .catch Lorg/smssecure/smssecure/transport/UndeliverableMessageException; {:try_start_0 .. :try_end_0} :catch_1 │ + .catch Lorg/smssecure/smssecure/mms/ApnUnavailableException; {:try_start_0 .. :try_end_0} :catch_0 │ │ move-result-object v0 │ │ goto :goto_0 │ │ .line 39 │ :catch_0 ├── smali/org/smssecure/smssecure/mms/IncomingLegacyMmsConnection.smali │ @@ -160,16 +160,16 @@ │ │ invoke-virtual {v2}, Lws/com/google/android/mms/pdu/PduComposer;->make()[B │ │ move-result-object v0 │ │ invoke-virtual {v1, v0, p2, p3}, Lorg/smssecure/smssecure/mms/OutgoingLegacyMmsConnection;->sendNotificationReceived([BZZ)V │ :try_end_0 │ - .catch Lws/com/google/android/mms/InvalidHeaderValueException; {:try_start_0 .. :try_end_0} :catch_1 │ - .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0 │ + .catch Lws/com/google/android/mms/InvalidHeaderValueException; {:try_start_0 .. :try_end_0} :catch_0 │ + .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_1 │ │ .line 144 │ :goto_0 │ return-void │ │ .line 141 │ :catch_0 │ @@ -268,15 +268,15 @@ │ invoke-virtual {p0, v0, p2, v1, v2}, Lorg/smssecure/smssecure/mms/IncomingLegacyMmsConnection;->retrieve(Lorg/smssecure/smssecure/mms/LegacyMmsConnection$Apn;[BZZ)Lws/com/google/android/mms/pdu/RetrieveConf; │ :try_end_0 │ .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0 │ .catch Lorg/smssecure/smssecure/mms/ApnUnavailableException; {:try_start_0 .. :try_end_0} :catch_2 │ │ move-result-object v0 │ │ - .line 95 │ + .line 92 │ :goto_0 │ return-object v0 │ │ .line 73 │ :catch_0 │ move-exception v1 │ │ @@ -406,14 +406,15 @@ │ │ move v2, v0 │ │ .line 105 │ :goto_0 │ if-eqz v2, :cond_2 │ │ + .line 106 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/mms/LegacyMmsConnection$Apn;->getProxy()Ljava/lang/String; │ │ move-result-object v0 │ │ .line 108 │ :goto_1 │ iget-object v3, p0, Lorg/smssecure/smssecure/mms/IncomingLegacyMmsConnection;->context:Landroid/content/Context; │ @@ -475,15 +476,15 @@ │ :cond_1 │ const/4 v0, 0x0 │ │ move v2, v0 │ │ goto :goto_0 │ │ - .line 105 │ + .line 107 │ :cond_2 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/mms/LegacyMmsConnection$Apn;->getMmsc()Ljava/lang/String; │ │ move-result-object v0 │ │ invoke-static {v0}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri; ├── smali/org/smssecure/smssecure/mms/IncomingLollipopMmsConnection.smali │ @@ -263,26 +263,29 @@ │ │ .line 79 │ :goto_0 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/mms/IncomingLollipopMmsConnection;->getContext()Landroid/content/Context; │ │ move-result-object v1 │ │ + .line 81 │ invoke-virtual {v6}, Lorg/smssecure/smssecure/providers/MmsBodyProvider$Pointer;->getUri()Landroid/net/Uri; │ │ move-result-object v3 │ │ const/4 v4, 0x0 │ │ + .line 83 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/mms/IncomingLollipopMmsConnection;->getPendingIntent()Landroid/app/PendingIntent; │ │ move-result-object v5 │ │ move-object v2, p1 │ │ + .line 79 │ invoke-virtual/range {v0 .. v5}, Landroid/telephony/SmsManager;->downloadMultimediaMessage(Landroid/content/Context;Ljava/lang/String;Landroid/net/Uri;Landroid/os/Bundle;Landroid/app/PendingIntent;)V │ │ .line 85 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/mms/IncomingLollipopMmsConnection;->waitForResult()V │ │ .line 87 │ new-instance v0, Ljava/io/ByteArrayOutputStream; │ @@ -310,35 +313,36 @@ │ │ invoke-virtual {v1}, Lws/com/google/android/mms/pdu/PduParser;->parse()Lws/com/google/android/mms/pdu/GenericPdu; │ │ move-result-object v0 │ │ check-cast v0, Lws/com/google/android/mms/pdu/RetrieveConf; │ :try_end_1 │ - .catch Ljava/io/IOException; {:try_start_1 .. :try_end_1} :catch_1 │ - .catch Ljava/util/concurrent/TimeoutException; {:try_start_1 .. :try_end_1} :catch_0 │ + .catch Ljava/io/IOException; {:try_start_1 .. :try_end_1} :catch_0 │ + .catch Ljava/util/concurrent/TimeoutException; {:try_start_1 .. :try_end_1} :catch_1 │ .catchall {:try_start_1 .. :try_end_1} :catchall_0 │ │ .line 96 │ :try_start_2 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/mms/IncomingLollipopMmsConnection;->endTransaction()V │ :try_end_2 │ .catchall {:try_start_2 .. :try_end_2} :catchall_1 │ │ + .line 91 │ monitor-exit p0 │ │ return-object v0 │ │ .line 76 │ :cond_0 │ :try_start_3 │ invoke-static {}, Landroid/telephony/SmsManager;->getDefault()Landroid/telephony/SmsManager; │ :try_end_3 │ - .catch Ljava/io/IOException; {:try_start_3 .. :try_end_3} :catch_1 │ - .catch Ljava/util/concurrent/TimeoutException; {:try_start_3 .. :try_end_3} :catch_0 │ + .catch Ljava/io/IOException; {:try_start_3 .. :try_end_3} :catch_0 │ + .catch Ljava/util/concurrent/TimeoutException; {:try_start_3 .. :try_end_3} :catch_1 │ .catchall {:try_start_3 .. :try_end_3} :catchall_0 │ │ move-result-object v0 │ │ goto :goto_0 │ │ .line 92 ├── smali/org/smssecure/smssecure/mms/LegacyMmsConnection$Apn.smali │ @@ -310,21 +310,15 @@ │ │ iget-object v1, p0, Lorg/smssecure/smssecure/mms/LegacyMmsConnection$Apn;->mmsc:Ljava/lang/String; │ │ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ │ - const-string v1, "\"" │ - │ - invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ - │ - move-result-object v0 │ - │ - const-string v1, ", proxy: " │ + const-string v1, "\", proxy: " │ │ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v1 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/mms/LegacyMmsConnection$Apn;->proxy:Ljava/lang/String; ├── smali/org/smssecure/smssecure/mms/LegacyMmsConnection.smali │ @@ -375,22 +375,25 @@ │ .prologue │ .line 78 │ :try_start_0 │ invoke-static {p0}, Lorg/smssecure/smssecure/database/ApnDatabase;->getInstance(Landroid/content/Context;)Lorg/smssecure/smssecure/database/ApnDatabase; │ │ move-result-object v0 │ │ + .line 79 │ invoke-static {p0}, Lorg/smssecure/smssecure/util/TelephonyUtil;->getMccMnc(Landroid/content/Context;)Ljava/lang/String; │ │ move-result-object v1 │ │ + .line 80 │ invoke-static {p0}, Lorg/smssecure/smssecure/util/TelephonyUtil;->getApn(Landroid/content/Context;)Ljava/lang/String; │ │ move-result-object v2 │ │ + .line 79 │ invoke-virtual {v0, v1, v2}, Lorg/smssecure/smssecure/database/ApnDatabase;->getMmsConnectionParameters(Ljava/lang/String;Ljava/lang/String;)Lorg/whispersystems/libaxolotl/util/guava/Optional; │ │ move-result-object v0 │ │ .line 82 │ invoke-virtual {v0}, Lorg/whispersystems/libaxolotl/util/guava/Optional;->isPresent()Z │ │ @@ -513,32 +516,37 @@ │ const/16 v1, 0x4e20 │ │ .line 163 │ invoke-static {}, Lorg/apache/http/client/config/RequestConfig;->custom()Lorg/apache/http/client/config/RequestConfig$Builder; │ │ move-result-object v0 │ │ + .line 164 │ invoke-virtual {v0, v1}, Lorg/apache/http/client/config/RequestConfig$Builder;->setConnectTimeout(I)Lorg/apache/http/client/config/RequestConfig$Builder; │ │ move-result-object v0 │ │ + .line 165 │ invoke-virtual {v0, v1}, Lorg/apache/http/client/config/RequestConfig$Builder;->setConnectionRequestTimeout(I)Lorg/apache/http/client/config/RequestConfig$Builder; │ │ move-result-object v0 │ │ + .line 166 │ invoke-virtual {v0, v1}, Lorg/apache/http/client/config/RequestConfig$Builder;->setSocketTimeout(I)Lorg/apache/http/client/config/RequestConfig$Builder; │ │ move-result-object v0 │ │ const/16 v1, 0x14 │ │ + .line 167 │ invoke-virtual {v0, v1}, Lorg/apache/http/client/config/RequestConfig$Builder;->setMaxRedirects(I)Lorg/apache/http/client/config/RequestConfig$Builder; │ │ move-result-object v0 │ │ + .line 168 │ invoke-virtual {v0}, Lorg/apache/http/client/config/RequestConfig$Builder;->build()Lorg/apache/http/client/config/RequestConfig; │ │ move-result-object v1 │ │ .line 170 │ new-instance v0, Ljava/net/URL; │ │ @@ -586,82 +594,92 @@ │ :goto_0 │ invoke-direct {v3, v4, v0}, Lorg/apache/http/auth/AuthScope;->(Ljava/lang/String;I)V │ │ new-instance v0, Lorg/apache/http/auth/UsernamePasswordCredentials; │ │ iget-object v4, p0, Lorg/smssecure/smssecure/mms/LegacyMmsConnection;->apn:Lorg/smssecure/smssecure/mms/LegacyMmsConnection$Apn; │ │ + .line 175 │ invoke-virtual {v4}, Lorg/smssecure/smssecure/mms/LegacyMmsConnection$Apn;->getUsername()Ljava/lang/String; │ │ move-result-object v4 │ │ iget-object v5, p0, Lorg/smssecure/smssecure/mms/LegacyMmsConnection;->apn:Lorg/smssecure/smssecure/mms/LegacyMmsConnection$Apn; │ │ invoke-virtual {v5}, Lorg/smssecure/smssecure/mms/LegacyMmsConnection$Apn;->getPassword()Ljava/lang/String; │ │ move-result-object v5 │ │ invoke-direct {v0, v4, v5}, Lorg/apache/http/auth/UsernamePasswordCredentials;->(Ljava/lang/String;Ljava/lang/String;)V │ │ + .line 174 │ invoke-interface {v2, v3, v0}, Lorg/apache/http/client/CredentialsProvider;->setCredentials(Lorg/apache/http/auth/AuthScope;Lorg/apache/http/auth/Credentials;)V │ │ .line 178 │ :cond_0 │ invoke-static {}, Lorg/apache/http/impl/client/HttpClients;->custom()Lorg/apache/http/impl/client/HttpClientBuilder; │ │ move-result-object v0 │ │ new-instance v3, Lorg/apache/http/impl/NoConnectionReuseStrategyHC4; │ │ invoke-direct {v3}, Lorg/apache/http/impl/NoConnectionReuseStrategyHC4;->()V │ │ + .line 179 │ invoke-virtual {v0, v3}, Lorg/apache/http/impl/client/HttpClientBuilder;->setConnectionReuseStrategy(Lorg/apache/http/ConnectionReuseStrategy;)Lorg/apache/http/impl/client/HttpClientBuilder; │ │ move-result-object v0 │ │ new-instance v3, Lorg/apache/http/impl/client/LaxRedirectStrategy; │ │ invoke-direct {v3}, Lorg/apache/http/impl/client/LaxRedirectStrategy;->()V │ │ + .line 180 │ invoke-virtual {v0, v3}, Lorg/apache/http/impl/client/HttpClientBuilder;->setRedirectStrategy(Lorg/apache/http/client/RedirectStrategy;)Lorg/apache/http/impl/client/HttpClientBuilder; │ │ move-result-object v0 │ │ iget-object v3, p0, Lorg/smssecure/smssecure/mms/LegacyMmsConnection;->context:Landroid/content/Context; │ │ const-string v4, "Android-Mms/2.0" │ │ + .line 181 │ invoke-static {v3, v4}, Lorg/smssecure/smssecure/util/SilencePreferences;->getMmsUserAgent(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v3 │ │ invoke-virtual {v0, v3}, Lorg/apache/http/impl/client/HttpClientBuilder;->setUserAgent(Ljava/lang/String;)Lorg/apache/http/impl/client/HttpClientBuilder; │ │ move-result-object v0 │ │ new-instance v3, Lorg/apache/http/impl/conn/BasicHttpClientConnectionManager; │ │ invoke-direct {v3}, Lorg/apache/http/impl/conn/BasicHttpClientConnectionManager;->()V │ │ + .line 182 │ invoke-virtual {v0, v3}, Lorg/apache/http/impl/client/HttpClientBuilder;->setConnectionManager(Lorg/apache/http/conn/HttpClientConnectionManager;)Lorg/apache/http/impl/client/HttpClientBuilder; │ │ move-result-object v0 │ │ + .line 183 │ invoke-virtual {v0, v1}, Lorg/apache/http/impl/client/HttpClientBuilder;->setDefaultRequestConfig(Lorg/apache/http/client/config/RequestConfig;)Lorg/apache/http/impl/client/HttpClientBuilder; │ │ move-result-object v0 │ │ + .line 184 │ invoke-virtual {v0, v2}, Lorg/apache/http/impl/client/HttpClientBuilder;->setDefaultCredentialsProvider(Lorg/apache/http/client/CredentialsProvider;)Lorg/apache/http/impl/client/HttpClientBuilder; │ │ move-result-object v0 │ │ + .line 185 │ invoke-virtual {v0}, Lorg/apache/http/impl/client/HttpClientBuilder;->build()Lorg/apache/http/impl/client/CloseableHttpClient; │ │ move-result-object v0 │ │ + .line 178 │ return-object v0 │ │ .line 174 │ :cond_1 │ invoke-virtual {v0}, Ljava/net/URL;->getDefaultPort()I │ │ move-result v0 │ @@ -787,14 +805,15 @@ │ │ .line 208 │ :cond_0 │ if-eqz v2, :cond_1 │ │ invoke-virtual {v2}, Lorg/apache/http/impl/client/CloseableHttpClient;->close()V │ │ + .line 200 │ :cond_1 │ return-object v0 │ │ .line 207 │ :cond_2 │ if-eqz v1, :cond_3 │ │ @@ -920,27 +939,30 @@ │ │ const/4 v2, 0x2 │ │ if-ne v1, v2, :cond_0 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/mms/LegacyMmsConnection;->context:Landroid/content/Context; │ │ + .line 105 │ invoke-static {v1}, Lorg/smssecure/smssecure/util/TelephonyUtil;->getMccMnc(Landroid/content/Context;)Ljava/lang/String; │ │ move-result-object v1 │ │ invoke-interface {v0, v1}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ const/4 v0, 0x1 │ │ + .line 104 │ :goto_0 │ return v0 │ │ + .line 105 │ :cond_0 │ const/4 v0, 0x0 │ │ goto :goto_0 │ .end method ├── smali/org/smssecure/smssecure/mms/MediaConstraints.smali │ @@ -193,14 +193,15 @@ │ │ invoke-virtual {p0, p1, p2, v1}, Lorg/smssecure/smssecure/mms/MediaConstraints;->isWithinBounds(Landroid/content/Context;Lorg/smssecure/smssecure/crypto/MasterSecret;Landroid/net/Uri;)Z │ │ move-result v1 │ │ if-nez v1, :cond_4 │ │ + .line 41 │ :cond_0 │ invoke-static {p3}, Lorg/smssecure/smssecure/util/MediaUtil;->isImage(Lorg/smssecure/smssecure/attachments/Attachment;)Z │ │ move-result v1 │ │ if-eqz v1, :cond_1 │ │ @@ -224,14 +225,15 @@ │ │ invoke-virtual {p0, p1, p2, v1}, Lorg/smssecure/smssecure/mms/MediaConstraints;->isWithinBounds(Landroid/content/Context;Lorg/smssecure/smssecure/crypto/MasterSecret;Landroid/net/Uri;)Z │ │ move-result v1 │ │ if-nez v1, :cond_4 │ │ + .line 42 │ :cond_1 │ invoke-static {p3}, Lorg/smssecure/smssecure/util/MediaUtil;->isAudio(Lorg/smssecure/smssecure/attachments/Attachment;)Z │ │ move-result v1 │ │ if-eqz v1, :cond_2 │ │ @@ -245,14 +247,15 @@ │ │ int-to-long v4, v1 │ │ cmp-long v1, v2, v4 │ │ if-lez v1, :cond_4 │ │ + .line 43 │ :cond_2 │ invoke-static {p3}, Lorg/smssecure/smssecure/util/MediaUtil;->isVideo(Lorg/smssecure/smssecure/attachments/Attachment;)Z │ │ move-result v1 │ │ if-eqz v1, :cond_3 │ │ @@ -266,14 +269,15 @@ │ │ int-to-long v4, v1 │ │ cmp-long v1, v2, v4 │ │ if-lez v1, :cond_4 │ │ + .line 44 │ :cond_3 │ invoke-static {p3}, Lorg/smssecure/smssecure/util/MediaUtil;->isImage(Lorg/smssecure/smssecure/attachments/Attachment;)Z │ │ move-result v1 │ │ if-nez v1, :cond_5 │ │ @@ -358,14 +362,15 @@ │ │ if-gt v0, v2, :cond_0 │ │ iget-object v0, v1, Landroid/util/Pair;->second:Ljava/lang/Object; │ │ check-cast v0, Ljava/lang/Integer; │ │ + .line 56 │ invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I │ │ move-result v0 │ │ if-lez v0, :cond_0 │ │ iget-object v0, v1, Landroid/util/Pair;->second:Ljava/lang/Object; │ @@ -382,17 +387,19 @@ │ │ move-result v1 │ │ if-gt v0, v1, :cond_0 │ │ const/4 v0, 0x1 │ │ + .line 55 │ :goto_0 │ return v0 │ │ + .line 56 │ :cond_0 │ const/4 v0, 0x0 │ │ goto :goto_0 │ │ .line 57 │ :catch_0 ├── smali/org/smssecure/smssecure/mms/OutgoingLegacyMmsConnection.smali │ @@ -274,14 +274,15 @@ │ │ .line 124 │ :goto_0 │ if-eqz v2, :cond_1 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/mms/OutgoingLegacyMmsConnection;->apn:Lorg/smssecure/smssecure/mms/LegacyMmsConnection$Apn; │ │ + .line 125 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/mms/LegacyMmsConnection$Apn;->getProxy()Ljava/lang/String; │ │ move-result-object v0 │ │ .line 128 │ :goto_1 │ sget-object v3, Lorg/smssecure/smssecure/mms/OutgoingLegacyMmsConnection;->TAG:Ljava/lang/String; │ @@ -379,18 +380,19 @@ │ :cond_0 │ const/4 v0, 0x0 │ │ move v2, v0 │ │ goto :goto_0 │ │ - .line 124 │ + .line 125 │ :cond_1 │ iget-object v0, p0, Lorg/smssecure/smssecure/mms/OutgoingLegacyMmsConnection;->apn:Lorg/smssecure/smssecure/mms/LegacyMmsConnection$Apn; │ │ + .line 126 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/mms/LegacyMmsConnection$Apn;->getMmsc()Ljava/lang/String; │ │ move-result-object v0 │ │ invoke-static {v0}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri; │ │ move-result-object v0 │ @@ -476,15 +478,15 @@ │ invoke-direct {p0, p1, v0, v2}, Lorg/smssecure/smssecure/mms/OutgoingLegacyMmsConnection;->send([BZZ)Lws/com/google/android/mms/pdu/SendConf; │ :try_end_1 │ .catch Ljava/io/IOException; {:try_start_1 .. :try_end_1} :catch_0 │ .catch Lorg/smssecure/smssecure/mms/MmsRadioException; {:try_start_1 .. :try_end_1} :catch_1 │ │ move-result-object v0 │ │ - .line 107 │ + .line 101 │ :goto_0 │ return-object v0 │ │ .line 83 │ :catch_0 │ move-exception v0 ├── smali/org/smssecure/smssecure/mms/OutgoingGroupMediaMessage.smali │ @@ -72,24 +72,26 @@ │ │ move-result-object v2 │ │ new-instance v3, Lorg/smssecure/smssecure/mms/OutgoingGroupMediaMessage$1; │ │ invoke-direct {v3, p3}, Lorg/smssecure/smssecure/mms/OutgoingGroupMediaMessage$1;->(Lorg/smssecure/smssecure/attachments/Attachment;)V │ │ + .line 38 │ invoke-static {}, Ljava/lang/System;->currentTimeMillis()J │ │ move-result-wide v4 │ │ const/4 v6, 0x2 │ │ move-object v0, p0 │ │ move-object v1, p1 │ │ + .line 36 │ invoke-direct/range {v0 .. v6}, Lorg/smssecure/smssecure/mms/OutgoingSecureMediaMessage;->(Lorg/smssecure/smssecure/recipients/Recipients;Ljava/lang/String;Ljava/util/List;JI)V │ │ .line 41 │ iput-object p2, p0, Lorg/smssecure/smssecure/mms/OutgoingGroupMediaMessage;->group:Lorg/whispersystems/textsecure/internal/push/TextSecureProtos$GroupContext; │ │ .line 42 │ return-void ├── smali/org/smssecure/smssecure/mms/OutgoingLollipopMmsConnection.smali │ @@ -209,26 +209,29 @@ │ │ .line 78 │ :goto_0 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/mms/OutgoingLollipopMmsConnection;->getContext()Landroid/content/Context; │ │ move-result-object v1 │ │ + .line 79 │ invoke-virtual {v6}, Lorg/smssecure/smssecure/providers/MmsBodyProvider$Pointer;->getUri()Landroid/net/Uri; │ │ move-result-object v2 │ │ const/4 v3, 0x0 │ │ const/4 v4, 0x0 │ │ + .line 82 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/mms/OutgoingLollipopMmsConnection;->getPendingIntent()Landroid/app/PendingIntent; │ │ move-result-object v5 │ │ + .line 78 │ invoke-virtual/range {v0 .. v5}, Landroid/telephony/SmsManager;->sendMultimediaMessage(Landroid/content/Context;Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/app/PendingIntent;)V │ │ .line 84 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/mms/OutgoingLollipopMmsConnection;->waitForResult()V │ │ .line 86 │ sget-object v0, Lorg/smssecure/smssecure/mms/OutgoingLollipopMmsConnection;->TAG:Ljava/lang/String; │ @@ -321,14 +324,15 @@ │ │ .line 97 │ :try_start_5 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/mms/OutgoingLollipopMmsConnection;->endTransaction()V │ :try_end_5 │ .catchall {:try_start_5 .. :try_end_5} :catchall_1 │ │ + .line 93 │ monitor-exit p0 │ │ return-object v0 │ │ .line 94 │ :catch_1 │ move-exception v0 ├── smali/org/smssecure/smssecure/mms/OutgoingMediaMessage.smali │ @@ -111,32 +111,35 @@ │ .end method │ │ .method public constructor (Lorg/smssecure/smssecure/recipients/Recipients;Lorg/smssecure/smssecure/mms/SlideDeck;Ljava/lang/String;JII)V │ .locals 8 │ │ .prologue │ .line 35 │ + .line 36 │ invoke-static {p2, p3}, Lorg/smssecure/smssecure/mms/OutgoingMediaMessage;->buildMessage(Lorg/smssecure/smssecure/mms/SlideDeck;Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v2 │ │ + .line 37 │ invoke-virtual {p2}, Lorg/smssecure/smssecure/mms/SlideDeck;->asAttachments()Ljava/util/List; │ │ move-result-object v3 │ │ move-object v0, p0 │ │ move-object v1, p1 │ │ move-wide v4, p4 │ │ move v6, p6 │ │ move v7, p7 │ │ + .line 35 │ invoke-direct/range {v0 .. v7}, Lorg/smssecure/smssecure/mms/OutgoingMediaMessage;->(Lorg/smssecure/smssecure/recipients/Recipients;Ljava/lang/String;Ljava/util/List;JII)V │ │ .line 40 │ return-void │ .end method │ │ .method private static buildMessage(Lorg/smssecure/smssecure/mms/SlideDeck;Ljava/lang/String;)Ljava/lang/String; ├── smali/org/smssecure/smssecure/mms/RoundedCorners.smali │ @@ -414,15 +414,15 @@ │ .line 43 │ invoke-virtual {v0}, Landroid/graphics/Bitmap;->recycle()V │ │ .line 45 │ :cond_0 │ return-object v1 │ │ - .line 39 │ + .line 40 │ :cond_1 │ invoke-direct {p0, p1, p2, p3, p4}, Lorg/smssecure/smssecure/mms/RoundedCorners;->fitCenter(Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;Landroid/graphics/Bitmap;II)Landroid/graphics/Bitmap; │ │ move-result-object v0 │ │ goto :goto_0 │ .end method ├── smali/org/smssecure/smssecure/mms/SilenceGlideModule.smali │ @@ -10,15 +10,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 17 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 30 │ return-void │ .end method │ │ │ # virtual methods │ .method public applyOptions(Landroid/content/Context;Lcom/bumptech/glide/GlideBuilder;)V │ .locals 1 ├── smali/org/smssecure/smssecure/mms/Slide.smali │ @@ -103,70 +103,76 @@ │ │ invoke-static {v1, v2}, Lorg/smssecure/smssecure/util/Util;->equals(Ljava/lang/Object;Ljava/lang/Object;)Z │ │ move-result v1 │ │ if-eqz v1, :cond_0 │ │ + .line 118 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/mms/Slide;->hasAudio()Z │ │ move-result v1 │ │ invoke-virtual {p1}, Lorg/smssecure/smssecure/mms/Slide;->hasAudio()Z │ │ move-result v2 │ │ if-ne v1, v2, :cond_0 │ │ + .line 119 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/mms/Slide;->hasImage()Z │ │ move-result v1 │ │ invoke-virtual {p1}, Lorg/smssecure/smssecure/mms/Slide;->hasImage()Z │ │ move-result v2 │ │ if-ne v1, v2, :cond_0 │ │ + .line 120 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/mms/Slide;->hasVideo()Z │ │ move-result v1 │ │ invoke-virtual {p1}, Lorg/smssecure/smssecure/mms/Slide;->hasVideo()Z │ │ move-result v2 │ │ if-ne v1, v2, :cond_0 │ │ + .line 121 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/mms/Slide;->getTransferState()J │ │ move-result-wide v2 │ │ invoke-virtual {p1}, Lorg/smssecure/smssecure/mms/Slide;->getTransferState()J │ │ move-result-wide v4 │ │ cmp-long v1, v2, v4 │ │ if-nez v1, :cond_0 │ │ + .line 122 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/mms/Slide;->getUri()Landroid/net/Uri; │ │ move-result-object v1 │ │ invoke-virtual {p1}, Lorg/smssecure/smssecure/mms/Slide;->getUri()Landroid/net/Uri; │ │ move-result-object v2 │ │ invoke-static {v1, v2}, Lorg/smssecure/smssecure/util/Util;->equals(Ljava/lang/Object;Ljava/lang/Object;)Z │ │ move-result v1 │ │ if-eqz v1, :cond_0 │ │ + .line 123 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/mms/Slide;->getThumbnailUri()Landroid/net/Uri; │ │ move-result-object v1 │ │ invoke-virtual {p1}, Lorg/smssecure/smssecure/mms/Slide;->getThumbnailUri()Landroid/net/Uri; │ │ move-result-object v2 │ @@ -364,14 +370,15 @@ │ │ move-result-object v2 │ │ aput-object v2, v0, v1 │ │ const/4 v1, 0x3 │ │ + .line 129 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/mms/Slide;->hasVideo()Z │ │ move-result v2 │ │ invoke-static {v2}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; │ │ move-result-object v2 │ @@ -402,14 +409,15 @@ │ │ invoke-static {v2, v3}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; │ │ move-result-object v2 │ │ aput-object v2, v0, v1 │ │ + .line 128 │ invoke-static {v0}, Lorg/smssecure/smssecure/util/Util;->hashCode([Ljava/lang/Object;)I │ │ move-result v0 │ │ return v0 │ .end method │ │ @@ -438,28 +446,31 @@ │ │ const-wide/16 v2, 0x3 │ │ cmp-long v0, v0, v2 │ │ if-eqz v0, :cond_0 │ │ + .line 87 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/mms/Slide;->getTransferState()J │ │ move-result-wide v0 │ │ const-wide/16 v2, 0x2 │ │ cmp-long v0, v0, v2 │ │ if-nez v0, :cond_1 │ │ :cond_0 │ const/4 v0, 0x1 │ │ + .line 86 │ :goto_0 │ return v0 │ │ + .line 87 │ :cond_1 │ const/4 v0, 0x0 │ │ goto :goto_0 │ .end method ├── smali/org/smssecure/smssecure/notifications/AbstractNotificationBuilder.smali │ @@ -202,25 +202,28 @@ │ │ move-result v0 │ │ const/4 v2, 0x0 │ │ aget-object v2, v1, v2 │ │ + .line 63 │ invoke-static {v2}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I │ │ move-result v2 │ │ const/4 v3, 0x1 │ │ aget-object v1, v1, v3 │ │ + .line 64 │ invoke-static {v1}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I │ │ move-result v1 │ │ + .line 62 │ invoke-virtual {p0, v0, v2, v1}, Lorg/smssecure/smssecure/notifications/AbstractNotificationBuilder;->setLights(III)Landroid/support/v4/app/NotificationCompat$Builder; │ │ .line 66 │ :cond_0 │ return-void │ .end method ├── smali/org/smssecure/smssecure/notifications/MarkReadReceiver.smali │ @@ -116,11 +116,12 @@ │ │ invoke-direct {v1, p0, v0, p1, p3}, Lorg/smssecure/smssecure/notifications/MarkReadReceiver$1;->(Lorg/smssecure/smssecure/notifications/MarkReadReceiver;[JLandroid/content/Context;Lorg/smssecure/smssecure/crypto/MasterSecret;)V │ │ const/4 v0, 0x0 │ │ new-array v0, v0, [Ljava/lang/Void; │ │ + .line 45 │ invoke-virtual {v1, v0}, Lorg/smssecure/smssecure/notifications/MarkReadReceiver$1;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ goto :goto_0 │ .end method ├── smali/org/smssecure/smssecure/notifications/MessageNotifier$1.smali │ @@ -56,22 +56,25 @@ │ │ const/4 v4, 0x0 │ │ iget-object v5, p0, Lorg/smssecure/smssecure/notifications/MessageNotifier$1;->val$recipientName:Ljava/lang/String; │ │ aput-object v5, v3, v4 │ │ + .line 112 │ invoke-virtual {v1, v2, v3}, Landroid/content/Context;->getString(I[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v1 │ │ + .line 111 │ invoke-static {v0, v1, v6}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast; │ │ move-result-object v0 │ │ + .line 113 │ invoke-virtual {v0}, Landroid/widget/Toast;->show()V │ │ .line 114 │ invoke-static {}, Landroid/os/Looper;->loop()V │ │ .line 115 │ return-void ├── smali/org/smssecure/smssecure/notifications/MessageNotifier$ReminderReceiver.smali │ @@ -29,12 +29,13 @@ │ │ invoke-direct {v0, p0, p1, p2}, Lorg/smssecure/smssecure/notifications/MessageNotifier$ReminderReceiver$1;->(Lorg/smssecure/smssecure/notifications/MessageNotifier$ReminderReceiver;Landroid/content/Context;Landroid/content/Intent;)V │ │ const/4 v1, 0x0 │ │ new-array v1, v1, [Ljava/lang/Void; │ │ + .line 420 │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/notifications/MessageNotifier$ReminderReceiver$1;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 421 │ return-void │ .end method ├── smali/org/smssecure/smssecure/notifications/MessageNotifier.smali │ @@ -53,15 +53,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 70 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 424 │ return-void │ .end method │ │ .method static synthetic access$000(Landroid/content/Context;Lorg/smssecure/smssecure/crypto/MasterSecret;II)V │ .locals 0 │ │ .prologue │ @@ -92,14 +91,15 @@ │ │ move-result-object v0 │ │ check-cast v0, Landroid/app/NotificationManager; │ │ const/16 v1, 0x53a │ │ + .line 102 │ invoke-virtual {v0, v1}, Landroid/app/NotificationManager;->cancel(I)V │ │ .line 103 │ const/4 v0, 0x0 │ │ sput-boolean v0, Lorg/smssecure/smssecure/notifications/MessageNotifier;->bLightsActive:Z │ │ @@ -529,14 +529,15 @@ │ │ move-result-object v0 │ │ check-cast v0, Landroid/app/NotificationManager; │ │ long-to-int v2, p2 │ │ + .line 130 │ invoke-virtual {v1}, Lorg/smssecure/smssecure/notifications/FailedNotificationBuilder;->build()Landroid/app/Notification; │ │ move-result-object v1 │ │ invoke-virtual {v0, v2, v1}, Landroid/app/NotificationManager;->notify(ILandroid/app/Notification;)V │ │ goto :goto_0 │ @@ -614,14 +615,15 @@ │ │ .prologue │ .line 107 │ new-instance v0, Lorg/smssecure/smssecure/notifications/MessageNotifier$1; │ │ invoke-direct {v0, p0, p1}, Lorg/smssecure/smssecure/notifications/MessageNotifier$1;->(Landroid/content/Context;Ljava/lang/String;)V │ │ + .line 116 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/notifications/MessageNotifier$1;->start()V │ │ .line 117 │ return-void │ .end method │ │ .method private static sendInThreadNotification(Landroid/content/Context;Lorg/smssecure/smssecure/recipients/Recipients;)V │ @@ -764,22 +766,25 @@ │ │ invoke-virtual {v1, v2}, Landroid/media/AudioAttributes$Builder;->setContentType(I)Landroid/media/AudioAttributes$Builder; │ │ move-result-object v1 │ │ const/16 v2, 0x8 │ │ + .line 329 │ invoke-virtual {v1, v2}, Landroid/media/AudioAttributes$Builder;->setUsage(I)Landroid/media/AudioAttributes$Builder; │ │ move-result-object v1 │ │ + .line 330 │ invoke-virtual {v1}, Landroid/media/AudioAttributes$Builder;->build()Landroid/media/AudioAttributes; │ │ move-result-object v1 │ │ + .line 328 │ invoke-virtual {v0, v1}, Landroid/media/Ringtone;->setAudioAttributes(Landroid/media/AudioAttributes;)V │ │ .line 335 │ :goto_2 │ invoke-virtual {v0}, Landroid/media/Ringtone;->play()V │ │ goto :goto_0 │ @@ -930,14 +935,15 @@ │ │ move-result-object v0 │ │ check-cast v0, Landroid/app/NotificationManager; │ │ const/16 v2, 0x53a │ │ + .line 289 │ invoke-virtual {v1}, Lorg/smssecure/smssecure/notifications/MultipleRecipientNotificationBuilder;->build()Landroid/app/Notification; │ │ move-result-object v1 │ │ invoke-virtual {v0, v2, v1}, Landroid/app/NotificationManager;->notify(ILandroid/app/Notification;)V │ │ .line 290 │ @@ -1021,14 +1027,15 @@ │ │ check-cast v0, Lorg/smssecure/smssecure/notifications/NotificationItem; │ │ invoke-virtual {v0}, Lorg/smssecure/smssecure/notifications/NotificationItem;->getIndividualRecipient()Lorg/smssecure/smssecure/recipients/Recipient; │ │ move-result-object v4 │ │ + .line 231 │ invoke-interface {v2, v8}, Ljava/util/List;->get(I)Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Lorg/smssecure/smssecure/notifications/NotificationItem; │ │ invoke-virtual {v0}, Lorg/smssecure/smssecure/notifications/NotificationItem;->getText()Ljava/lang/CharSequence; │ @@ -1041,14 +1048,15 @@ │ │ check-cast v0, Lorg/smssecure/smssecure/notifications/NotificationItem; │ │ invoke-virtual {v0}, Lorg/smssecure/smssecure/notifications/NotificationItem;->getSlideDeck()Lorg/smssecure/smssecure/mms/SlideDeck; │ │ move-result-object v0 │ │ + .line 230 │ invoke-virtual {v1, v3, v4, v5, v0}, Lorg/smssecure/smssecure/notifications/SingleRecipientNotificationBuilder;->setPrimaryMessageBody(Lorg/smssecure/smssecure/recipients/Recipients;Lorg/smssecure/smssecure/recipients/Recipient;Ljava/lang/CharSequence;Lorg/smssecure/smssecure/mms/SlideDeck;)V │ │ .line 232 │ invoke-interface {v2, v8}, Ljava/util/List;->get(I)Ljava/lang/Object; │ │ move-result-object v0 │ │ @@ -1076,48 +1084,51 @@ │ │ cmp-long v0, v4, v6 │ │ if-eqz v0, :cond_1 │ │ invoke-virtual {v1, v4, v5}, Lorg/smssecure/smssecure/notifications/SingleRecipientNotificationBuilder;->setWhen(J)Landroid/support/v4/app/NotificationCompat$Builder; │ │ - .line 237 │ + .line 238 │ :cond_1 │ invoke-virtual {p2, p0}, Lorg/smssecure/smssecure/notifications/NotificationState;->getMarkAsReadIntent(Landroid/content/Context;)Landroid/app/PendingIntent; │ │ move-result-object v3 │ │ + .line 239 │ invoke-interface {v2, v8}, Ljava/util/List;->get(I)Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Lorg/smssecure/smssecure/notifications/NotificationItem; │ │ invoke-virtual {v0}, Lorg/smssecure/smssecure/notifications/NotificationItem;->getRecipients()Lorg/smssecure/smssecure/recipients/Recipients; │ │ move-result-object v0 │ │ invoke-virtual {p2, p0, v0}, Lorg/smssecure/smssecure/notifications/NotificationState;->getQuickReplyIntent(Landroid/content/Context;Lorg/smssecure/smssecure/recipients/Recipients;)Landroid/app/PendingIntent; │ │ move-result-object v4 │ │ + .line 240 │ invoke-interface {v2, v8}, Ljava/util/List;->get(I)Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Lorg/smssecure/smssecure/notifications/NotificationItem; │ │ invoke-virtual {v0}, Lorg/smssecure/smssecure/notifications/NotificationItem;->getRecipients()Lorg/smssecure/smssecure/recipients/Recipients; │ │ move-result-object v0 │ │ invoke-virtual {p2, p0, v0}, Lorg/smssecure/smssecure/notifications/NotificationState;->getWearableReplyIntent(Landroid/content/Context;Lorg/smssecure/smssecure/recipients/Recipients;)Landroid/app/PendingIntent; │ │ move-result-object v0 │ │ + .line 237 │ invoke-virtual {v1, p1, v3, v4, v0}, Lorg/smssecure/smssecure/notifications/SingleRecipientNotificationBuilder;->addActions(Lorg/smssecure/smssecure/crypto/MasterSecret;Landroid/app/PendingIntent;Landroid/app/PendingIntent;Landroid/app/PendingIntent;)V │ │ .line 242 │ invoke-interface {v2}, Ljava/util/List;->size()I │ │ move-result v0 │ │ @@ -1175,38 +1186,41 @@ │ │ check-cast v0, Lorg/smssecure/smssecure/notifications/NotificationItem; │ │ invoke-virtual {v0}, Lorg/smssecure/smssecure/notifications/NotificationItem;->getIndividualRecipient()Lorg/smssecure/smssecure/recipients/Recipient; │ │ move-result-object v3 │ │ + .line 253 │ invoke-interface {v2, v8}, Ljava/util/List;->get(I)Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Lorg/smssecure/smssecure/notifications/NotificationItem; │ │ invoke-virtual {v0}, Lorg/smssecure/smssecure/notifications/NotificationItem;->getText()Ljava/lang/CharSequence; │ │ move-result-object v0 │ │ + .line 252 │ invoke-virtual {v1, v3, v0}, Lorg/smssecure/smssecure/notifications/SingleRecipientNotificationBuilder;->setTicker(Lorg/smssecure/smssecure/recipients/Recipient;Ljava/lang/CharSequence;)V │ │ .line 256 │ :cond_3 │ const-string v0, "notification" │ │ invoke-virtual {p0, v0}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Landroid/app/NotificationManager; │ │ const/16 v2, 0x53a │ │ + .line 257 │ invoke-virtual {v1}, Lorg/smssecure/smssecure/notifications/SingleRecipientNotificationBuilder;->build()Landroid/app/Notification; │ │ move-result-object v1 │ │ invoke-virtual {v0, v2, v1}, Landroid/app/NotificationManager;->notify(ILandroid/app/Notification;)V │ │ goto/16 :goto_0 │ @@ -1326,14 +1340,15 @@ │ move-result v3 │ │ if-eqz v3, :cond_4 │ │ :cond_0 │ if-eqz v2, :cond_1 │ │ + .line 178 │ invoke-interface {v0}, Landroid/database/Cursor;->isAfterLast()Z │ │ move-result v0 │ │ if-eqz v0, :cond_4 │ │ .line 180 │ @@ -1463,14 +1478,15 @@ │ move-result-object v2 │ │ .line 150 │ invoke-static {p0}, Lorg/smssecure/smssecure/database/DatabaseFactory;->getThreadDatabase(Landroid/content/Context;)Lorg/smssecure/smssecure/database/ThreadDatabase; │ │ move-result-object v3 │ │ + .line 151 │ invoke-virtual {v3, p2, p3}, Lorg/smssecure/smssecure/database/ThreadDatabase;->getRecipientsForThreadId(J)Lorg/smssecure/smssecure/recipients/Recipients; │ │ move-result-object v3 │ │ .line 153 │ if-eqz v0, :cond_0 │ │ @@ -1483,14 +1499,15 @@ │ │ move-result v4 │ │ if-eqz v4, :cond_1 │ │ if-eqz v3, :cond_3 │ │ + .line 158 │ invoke-virtual {v3}, Lorg/smssecure/smssecure/recipients/Recipients;->isMuted()Z │ │ move-result v3 │ │ if-eqz v3, :cond_3 │ │ .line 168 ├── smali/org/smssecure/smssecure/notifications/MultipleRecipientNotificationBuilder.smali │ @@ -111,14 +111,15 @@ │ │ const v1, 0x7f020045 │ │ iget-object v2, p0, Lorg/smssecure/smssecure/notifications/MultipleRecipientNotificationBuilder;->context:Landroid/content/Context; │ │ const v3, 0x7f080084 │ │ + .line 52 │ invoke-virtual {v2, v3}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v2 │ │ invoke-direct {v0, v1, v2, p1}, Landroid/support/v4/app/NotificationCompat$Action;->(ILjava/lang/CharSequence;Landroid/app/PendingIntent;)V │ │ .line 54 │ @@ -295,28 +296,30 @@ │ │ const/4 v2, 0x2 │ │ new-array v2, v2, [Ljava/lang/Object; │ │ const/4 v3, 0x0 │ │ + .line 38 │ invoke-static {p1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v4 │ │ aput-object v4, v2, v3 │ │ const/4 v3, 0x1 │ │ invoke-static {p2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v4 │ │ aput-object v4, v2, v3 │ │ + .line 37 │ invoke-virtual {v0, v1, v2}, Landroid/content/Context;->getString(I[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v0 │ │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/notifications/MultipleRecipientNotificationBuilder;->setSubText(Ljava/lang/CharSequence;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ .line 39 │ @@ -353,20 +356,22 @@ │ │ const/4 v2, 0x1 │ │ new-array v2, v2, [Ljava/lang/Object; │ │ const/4 v3, 0x0 │ │ + .line 46 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/recipients/Recipient;->toShortString()Ljava/lang/String; │ │ move-result-object v4 │ │ aput-object v4, v2, v3 │ │ + .line 45 │ invoke-virtual {v0, v1, v2}, Landroid/content/Context;->getString(I[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v0 │ │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/notifications/MultipleRecipientNotificationBuilder;->setContentText(Ljava/lang/CharSequence;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ .line 48 ├── smali/org/smssecure/smssecure/notifications/NotificationItem.smali │ @@ -132,26 +132,29 @@ │ invoke-virtual {v1, v0}, Landroid/content/Intent;->setData(Landroid/net/Uri;)Landroid/content/Intent; │ │ .line 73 │ invoke-static {p1}, Landroid/support/v4/app/TaskStackBuilder;->create(Landroid/content/Context;)Landroid/support/v4/app/TaskStackBuilder; │ │ move-result-object v0 │ │ + .line 74 │ invoke-virtual {v0, v1}, Landroid/support/v4/app/TaskStackBuilder;->addNextIntentWithParentStack(Landroid/content/Intent;)Landroid/support/v4/app/TaskStackBuilder; │ │ move-result-object v0 │ │ const/4 v1, 0x0 │ │ const/high16 v2, 0x8000000 │ │ + .line 75 │ invoke-virtual {v0, v1, v2}, Landroid/support/v4/app/TaskStackBuilder;->getPendingIntent(II)Landroid/app/PendingIntent; │ │ move-result-object v0 │ │ + .line 73 │ return-object v0 │ │ .line 67 │ :cond_1 │ iget-object v0, p0, Lorg/smssecure/smssecure/notifications/NotificationItem;->recipients:Lorg/smssecure/smssecure/recipients/Recipients; │ │ goto :goto_0 ├── smali/org/smssecure/smssecure/notifications/NotificationState.smali │ @@ -199,28 +199,30 @@ │ │ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v3 │ │ const-string v4, "thread_ids" │ │ + .line 90 │ invoke-virtual {v0, v4}, Landroid/content/Intent;->getLongArrayExtra(Ljava/lang/String;)[J │ │ move-result-object v4 │ │ array-length v4, v4 │ │ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ │ move-result-object v3 │ │ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v3 │ │ + .line 89 │ invoke-static {v1, v3}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I │ │ .line 92 │ const/high16 v1, 0x8000000 │ │ invoke-static {p1, v2, v0, v1}, Landroid/app/PendingIntent;->getBroadcast(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent; ├── smali/org/smssecure/smssecure/notifications/WearReplyReceiver.smali │ @@ -106,11 +106,12 @@ │ │ move-object v6, p3 │ │ invoke-direct/range {v0 .. v6}, Lorg/smssecure/smssecure/notifications/WearReplyReceiver$1;->(Lorg/smssecure/smssecure/notifications/WearReplyReceiver;Landroid/content/Context;[JLorg/smssecure/smssecure/recipients/Recipients;Ljava/lang/CharSequence;Lorg/smssecure/smssecure/crypto/MasterSecret;)V │ │ new-array v1, v7, [Ljava/lang/Void; │ │ + .line 85 │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/notifications/WearReplyReceiver$1;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ goto :goto_0 │ .end method ├── smali/org/smssecure/smssecure/notifications/SingleRecipientNotificationBuilder.smali │ @@ -148,39 +148,44 @@ │ │ move-result-object v1 │ │ new-instance v2, Lorg/smssecure/smssecure/mms/DecryptableStreamUriLoader$DecryptableUri; │ │ invoke-direct {v2, p1, v0}, Lorg/smssecure/smssecure/mms/DecryptableStreamUriLoader$DecryptableUri;->(Lorg/smssecure/smssecure/crypto/MasterSecret;Landroid/net/Uri;)V │ │ + .line 218 │ invoke-virtual {v1, v2}, Lcom/bumptech/glide/RequestManager;->load(Ljava/lang/Object;)Lcom/bumptech/glide/DrawableTypeRequest; │ │ move-result-object v0 │ │ + .line 219 │ invoke-virtual {v0}, Lcom/bumptech/glide/DrawableTypeRequest;->asBitmap()Lcom/bumptech/glide/BitmapTypeRequest; │ │ move-result-object v0 │ │ const/16 v1, 0x1f4 │ │ const/16 v2, 0x1f4 │ │ + .line 220 │ invoke-virtual {v0, v1, v2}, Lcom/bumptech/glide/BitmapTypeRequest;->into(II)Lcom/bumptech/glide/request/FutureTarget; │ │ move-result-object v0 │ │ + .line 221 │ invoke-interface {v0}, Lcom/bumptech/glide/request/FutureTarget;->get()Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Landroid/graphics/Bitmap; │ :try_end_0 │ .catch Ljava/lang/InterruptedException; {:try_start_0 .. :try_end_0} :catch_0 │ .catch Ljava/util/concurrent/ExecutionException; {:try_start_0 .. :try_end_0} :catch_1 │ │ + .line 217 │ return-object v0 │ │ .line 222 │ :catch_0 │ move-exception v0 │ │ .line 223 │ @@ -297,20 +302,22 @@ │ iget-object v4, p0, Lorg/smssecure/smssecure/notifications/SingleRecipientNotificationBuilder;->masterSecret:Lorg/smssecure/smssecure/crypto/MasterSecret; │ │ invoke-direct {v3, v4, v2}, Lorg/smssecure/smssecure/mms/DecryptableStreamUriLoader$DecryptableUri;->(Lorg/smssecure/smssecure/crypto/MasterSecret;Landroid/net/Uri;)V │ │ .line 205 │ if-eqz v3, :cond_0 │ │ + .line 206 │ invoke-virtual {v1}, Lorg/smssecure/smssecure/mms/Slide;->hasImage()Z │ │ move-result v2 │ │ if-eqz v2, :cond_0 │ │ + .line 207 │ invoke-virtual {v1}, Lorg/smssecure/smssecure/mms/Slide;->isInProgress()Z │ │ move-result v1 │ │ if-nez v1, :cond_0 │ │ const/4 v0, 0x1 │ @@ -367,14 +374,15 @@ │ │ const v1, 0x7f020045 │ │ iget-object v2, p0, Lorg/smssecure/smssecure/notifications/SingleRecipientNotificationBuilder;->context:Landroid/content/Context; │ │ const v3, 0x7f080174 │ │ + .line 109 │ invoke-virtual {v2, v3}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v2 │ │ invoke-direct {v0, v1, v2, p2}, Landroid/support/v4/app/NotificationCompat$Action;->(ILjava/lang/CharSequence;Landroid/app/PendingIntent;)V │ │ .line 112 │ @@ -383,57 +391,62 @@ │ .line 113 │ new-instance v1, Landroid/support/v4/app/NotificationCompat$Action; │ │ const v2, 0x7f0200fa │ │ iget-object v3, p0, Lorg/smssecure/smssecure/notifications/SingleRecipientNotificationBuilder;->context:Landroid/content/Context; │ │ + .line 114 │ invoke-virtual {v3, v5}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v3 │ │ invoke-direct {v1, v2, v3, p3}, Landroid/support/v4/app/NotificationCompat$Action;->(ILjava/lang/CharSequence;Landroid/app/PendingIntent;)V │ │ .line 117 │ new-instance v2, Landroid/support/v4/app/NotificationCompat$Action$Builder; │ │ const v3, 0x7f0200f9 │ │ iget-object v4, p0, Lorg/smssecure/smssecure/notifications/SingleRecipientNotificationBuilder;->context:Landroid/content/Context; │ │ + .line 118 │ invoke-virtual {v4, v5}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v4 │ │ invoke-direct {v2, v3, v4, p4}, Landroid/support/v4/app/NotificationCompat$Action$Builder;->(ILjava/lang/CharSequence;Landroid/app/PendingIntent;)V │ │ new-instance v3, Landroid/support/v4/app/RemoteInput$Builder; │ │ const-string v4, "extra_voice_reply" │ │ invoke-direct {v3, v4}, Landroid/support/v4/app/RemoteInput$Builder;->(Ljava/lang/String;)V │ │ iget-object v4, p0, Lorg/smssecure/smssecure/notifications/SingleRecipientNotificationBuilder;->context:Landroid/content/Context; │ │ + .line 121 │ invoke-virtual {v4, v5}, Landroid/content/Context;->getString(I)Ljava/lang/String; │ │ move-result-object v4 │ │ invoke-virtual {v3, v4}, Landroid/support/v4/app/RemoteInput$Builder;->setLabel(Ljava/lang/CharSequence;)Landroid/support/v4/app/RemoteInput$Builder; │ │ move-result-object v3 │ │ invoke-virtual {v3}, Landroid/support/v4/app/RemoteInput$Builder;->build()Landroid/support/v4/app/RemoteInput; │ │ move-result-object v3 │ │ + .line 120 │ invoke-virtual {v2, v3}, Landroid/support/v4/app/NotificationCompat$Action$Builder;->addRemoteInput(Landroid/support/v4/app/RemoteInput;)Landroid/support/v4/app/NotificationCompat$Action$Builder; │ │ move-result-object v2 │ │ + .line 122 │ invoke-virtual {v2}, Landroid/support/v4/app/NotificationCompat$Action$Builder;->build()Landroid/support/v4/app/NotificationCompat$Action; │ │ move-result-object v2 │ │ .line 124 │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/notifications/SingleRecipientNotificationBuilder;->addAction(Landroid/support/v4/app/NotificationCompat$Action;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ @@ -445,18 +458,20 @@ │ │ invoke-direct {v1}, Landroid/support/v4/app/NotificationCompat$WearableExtender;->()V │ │ invoke-virtual {v1, v0}, Landroid/support/v4/app/NotificationCompat$WearableExtender;->addAction(Landroid/support/v4/app/NotificationCompat$Action;)Landroid/support/v4/app/NotificationCompat$WearableExtender; │ │ move-result-object v0 │ │ + .line 128 │ invoke-virtual {v0, v2}, Landroid/support/v4/app/NotificationCompat$WearableExtender;->addAction(Landroid/support/v4/app/NotificationCompat$Action;)Landroid/support/v4/app/NotificationCompat$WearableExtender; │ │ move-result-object v0 │ │ + .line 127 │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/notifications/SingleRecipientNotificationBuilder;->extend(Landroid/support/v4/app/NotificationCompat$Extender;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ .line 134 │ :goto_0 │ return-void │ │ .line 130 │ @@ -639,32 +654,35 @@ │ │ invoke-direct {v0}, Landroid/support/v4/app/NotificationCompat$BigPictureStyle;->()V │ │ iget-object v1, p0, Lorg/smssecure/smssecure/notifications/SingleRecipientNotificationBuilder;->masterSecret:Lorg/smssecure/smssecure/crypto/MasterSecret; │ │ iget-object v2, p0, Lorg/smssecure/smssecure/notifications/SingleRecipientNotificationBuilder;->slideDeck:Lorg/smssecure/smssecure/mms/SlideDeck; │ │ + .line 169 │ invoke-direct {p0, v1, v2}, Lorg/smssecure/smssecure/notifications/SingleRecipientNotificationBuilder;->getBigPicture(Lorg/smssecure/smssecure/crypto/MasterSecret;Lorg/smssecure/smssecure/mms/SlideDeck;)Landroid/graphics/Bitmap; │ │ move-result-object v1 │ │ invoke-virtual {v0, v1}, Landroid/support/v4/app/NotificationCompat$BigPictureStyle;->bigPicture(Landroid/graphics/Bitmap;)Landroid/support/v4/app/NotificationCompat$BigPictureStyle; │ │ move-result-object v0 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/notifications/SingleRecipientNotificationBuilder;->messageBodies:Ljava/util/List; │ │ + .line 170 │ invoke-direct {p0, v1}, Lorg/smssecure/smssecure/notifications/SingleRecipientNotificationBuilder;->getBigText(Ljava/util/List;)Ljava/lang/CharSequence; │ │ move-result-object v1 │ │ invoke-virtual {v0, v1}, Landroid/support/v4/app/NotificationCompat$BigPictureStyle;->setSummaryText(Ljava/lang/CharSequence;)Landroid/support/v4/app/NotificationCompat$BigPictureStyle; │ │ move-result-object v0 │ │ + .line 168 │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/notifications/SingleRecipientNotificationBuilder;->setStyle(Landroid/support/v4/app/NotificationCompat$Style;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ .line 176 │ :cond_1 │ :goto_0 │ invoke-super {p0}, Lorg/smssecure/smssecure/notifications/AbstractNotificationBuilder;->build()Landroid/app/Notification; │ │ @@ -870,28 +888,32 @@ │ :cond_0 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/recipients/Recipients;->getContactPhoto()Lorg/smssecure/smssecure/contacts/avatars/ContactPhoto; │ │ move-result-object v0 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/notifications/SingleRecipientNotificationBuilder;->context:Landroid/content/Context; │ │ + .line 67 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/recipients/Recipients;->getColor()Lorg/smssecure/smssecure/color/MaterialColor; │ │ move-result-object v2 │ │ iget-object v3, p0, Lorg/smssecure/smssecure/notifications/SingleRecipientNotificationBuilder;->context:Landroid/content/Context; │ │ + .line 68 │ invoke-virtual {v2, v3}, Lorg/smssecure/smssecure/color/MaterialColor;->toConversationColor(Landroid/content/Context;)I │ │ move-result v2 │ │ + .line 67 │ invoke-interface {v0, v1, v2}, Lorg/smssecure/smssecure/contacts/avatars/ContactPhoto;->asDrawable(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable; │ │ move-result-object v0 │ │ + .line 66 │ invoke-direct {p0, v0}, Lorg/smssecure/smssecure/notifications/SingleRecipientNotificationBuilder;->setLargeIcon(Landroid/graphics/drawable/Drawable;)V │ │ .line 77 │ :goto_0 │ return-void │ │ .line 70 │ @@ -907,38 +929,44 @@ │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/notifications/SingleRecipientNotificationBuilder;->setContentTitle(Ljava/lang/CharSequence;)Landroid/support/v4/app/NotificationCompat$Builder; │ │ .line 71 │ invoke-static {}, Lorg/smssecure/smssecure/recipients/Recipient;->getUnknownRecipient()Lorg/smssecure/smssecure/recipients/Recipient; │ │ move-result-object v0 │ │ + .line 72 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/recipients/Recipient;->getContactPhoto()Lorg/smssecure/smssecure/contacts/avatars/ContactPhoto; │ │ move-result-object v0 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/notifications/SingleRecipientNotificationBuilder;->context:Landroid/content/Context; │ │ + .line 73 │ invoke-static {}, Lorg/smssecure/smssecure/recipients/Recipient;->getUnknownRecipient()Lorg/smssecure/smssecure/recipients/Recipient; │ │ move-result-object v2 │ │ + .line 74 │ invoke-virtual {v2}, Lorg/smssecure/smssecure/recipients/Recipient;->getColor()Lorg/smssecure/smssecure/color/MaterialColor; │ │ move-result-object v2 │ │ iget-object v3, p0, Lorg/smssecure/smssecure/notifications/SingleRecipientNotificationBuilder;->context:Landroid/content/Context; │ │ + .line 75 │ invoke-virtual {v2, v3}, Lorg/smssecure/smssecure/color/MaterialColor;->toConversationColor(Landroid/content/Context;)I │ │ move-result v2 │ │ + .line 73 │ invoke-interface {v0, v1, v2}, Lorg/smssecure/smssecure/contacts/avatars/ContactPhoto;->asDrawable(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable; │ │ move-result-object v0 │ │ + .line 71 │ invoke-direct {p0, v0}, Lorg/smssecure/smssecure/notifications/SingleRecipientNotificationBuilder;->setLargeIcon(Landroid/graphics/drawable/Drawable;)V │ │ goto :goto_0 │ .end method │ │ .method public setTicker(Lorg/smssecure/smssecure/recipients/Recipient;Ljava/lang/CharSequence;)V │ .locals 2 ├── smali/org/smssecure/smssecure/preferences/AdvancedPreferenceFragment.smali │ @@ -29,15 +29,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 20 │ invoke-direct {p0}, Lorg/smssecure/smssecure/preferences/ListSummaryPreferenceFragment;->()V │ │ - .line 43 │ return-void │ .end method │ │ │ # virtual methods │ .method public onCreate(Landroid/os/Bundle;)V │ .locals 3 │ @@ -60,14 +59,15 @@ │ │ new-instance v1, Lorg/smssecure/smssecure/preferences/AdvancedPreferenceFragment$SubmitDebugLogListener; │ │ const/4 v2, 0x0 │ │ invoke-direct {v1, p0, v2}, Lorg/smssecure/smssecure/preferences/AdvancedPreferenceFragment$SubmitDebugLogListener;->(Lorg/smssecure/smssecure/preferences/AdvancedPreferenceFragment;Lorg/smssecure/smssecure/preferences/AdvancedPreferenceFragment$1;)V │ │ + .line 31 │ invoke-virtual {v0, v1}, Landroid/preference/Preference;->setOnPreferenceClickListener(Landroid/preference/Preference$OnPreferenceClickListener;)V │ │ .line 33 │ const-string v0, "pref_enter_key_type" │ │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/preferences/AdvancedPreferenceFragment;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference; ├── smali/org/smssecure/smssecure/preferences/AppProtectionPreferenceFragment$ChangePassphraseClickListener.smali │ @@ -85,11 +85,12 @@ │ │ const v1, 0x7f080018 │ │ invoke-static {v0, v1, v4}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast; │ │ move-result-object v0 │ │ + .line 99 │ invoke-virtual {v0}, Landroid/widget/Toast;->show()V │ │ goto :goto_0 │ .end method ├── smali/org/smssecure/smssecure/preferences/AppProtectionPreferenceFragment$DisablePassphraseClickListener$1.smali │ @@ -48,21 +48,23 @@ │ │ move-result-object v0 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment$DisablePassphraseClickListener$1;->this$1:Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment$DisablePassphraseClickListener; │ │ iget-object v1, v1, Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment$DisablePassphraseClickListener;->this$0:Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment; │ │ + .line 147 │ # getter for: Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment;->masterSecret:Lorg/smssecure/smssecure/crypto/MasterSecret; │ invoke-static {v1}, Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment;->access$500(Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment;)Lorg/smssecure/smssecure/crypto/MasterSecret; │ │ move-result-object v1 │ │ const-string v2, "unencrypted" │ │ + .line 146 │ invoke-static {v0, v1, v2}, Lorg/smssecure/smssecure/crypto/MasterSecretUtil;->changeMasterSecretPassphrase(Landroid/content/Context;Lorg/smssecure/smssecure/crypto/MasterSecret;Ljava/lang/String;)Lorg/smssecure/smssecure/crypto/MasterSecret; │ │ .line 150 │ iget-object v0, p0, Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment$DisablePassphraseClickListener$1;->this$1:Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment$DisablePassphraseClickListener; │ │ iget-object v0, v0, Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment$DisablePassphraseClickListener;->this$0:Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment; ├── smali/org/smssecure/smssecure/preferences/AppProtectionPreferenceFragment$PassphraseIntervalClickListener.smali │ @@ -53,24 +53,26 @@ │ │ add-int/2addr v0, p3 │ │ sget-object v1, Ljava/util/concurrent/TimeUnit;->SECONDS:Ljava/util/concurrent/TimeUnit; │ │ int-to-long v2, p4 │ │ + .line 127 │ invoke-virtual {v1, v2, v3}, Ljava/util/concurrent/TimeUnit;->toMinutes(J)J │ │ move-result-wide v2 │ │ long-to-int v1, v2 │ │ add-int/2addr v0, v1 │ │ const/4 v1, 0x1 │ │ + .line 125 │ invoke-static {v0, v1}, Ljava/lang/Math;->max(II)I │ │ move-result v0 │ │ .line 129 │ iget-object v1, p0, Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment$PassphraseIntervalClickListener;->this$0:Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment; │ │ @@ -129,26 +131,29 @@ │ │ invoke-virtual {v1, v2}, Lcom/doomonafireball/betterpickers/hmspicker/HmsPickerBuilder;->setFragmentManager(Landroid/support/v4/app/FragmentManager;)Lcom/doomonafireball/betterpickers/hmspicker/HmsPickerBuilder; │ │ move-result-object v1 │ │ const v2, 0x7f0b00ac │ │ + .line 114 │ invoke-virtual {v0, v3, v2}, Landroid/content/res/TypedArray;->getResourceId(II)I │ │ move-result v2 │ │ invoke-virtual {v1, v2}, Lcom/doomonafireball/betterpickers/hmspicker/HmsPickerBuilder;->setStyleResId(I)Lcom/doomonafireball/betterpickers/hmspicker/HmsPickerBuilder; │ │ move-result-object v1 │ │ + .line 115 │ invoke-virtual {v1, p0}, Lcom/doomonafireball/betterpickers/hmspicker/HmsPickerBuilder;->addHmsPickerDialogHandler(Lcom/doomonafireball/betterpickers/hmspicker/HmsPickerDialogFragment$HmsPickerDialogHandler;)Lcom/doomonafireball/betterpickers/hmspicker/HmsPickerBuilder; │ │ move-result-object v1 │ │ + .line 116 │ invoke-virtual {v1}, Lcom/doomonafireball/betterpickers/hmspicker/HmsPickerBuilder;->show()V │ │ .line 118 │ invoke-virtual {v0}, Landroid/content/res/TypedArray;->recycle()V │ │ .line 120 │ return v4 ├── smali/org/smssecure/smssecure/preferences/AppProtectionPreferenceFragment.smali │ @@ -17,15 +17,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 30 │ invoke-direct {p0}, Landroid/support/v4/preference/PreferenceFragment;->()V │ │ - .line 134 │ return-void │ .end method │ │ .method static synthetic access$400(Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment;)V │ .locals 0 │ │ .prologue │ @@ -200,14 +199,15 @@ │ .line 78 │ const-string v1, "pref_timeout_interval" │ │ invoke-virtual {p0, v1}, Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference; │ │ move-result-object v1 │ │ + .line 79 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment;->getResources()Landroid/content/res/Resources; │ │ move-result-object v2 │ │ const v3, 0x7f090001 │ │ const/4 v4, 0x1 │ @@ -281,49 +281,53 @@ │ │ move-result-object v0 │ │ new-instance v1, Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment$ChangePassphraseClickListener; │ │ invoke-direct {v1, p0, v2}, Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment$ChangePassphraseClickListener;->(Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment;Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment$1;)V │ │ + .line 46 │ invoke-virtual {v0, v1}, Landroid/preference/Preference;->setOnPreferenceClickListener(Landroid/preference/Preference$OnPreferenceClickListener;)V │ │ .line 47 │ const-string v0, "pref_timeout_interval" │ │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference; │ │ move-result-object v0 │ │ new-instance v1, Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment$PassphraseIntervalClickListener; │ │ invoke-direct {v1, p0, v2}, Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment$PassphraseIntervalClickListener;->(Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment;Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment$1;)V │ │ + .line 48 │ invoke-virtual {v0, v1}, Landroid/preference/Preference;->setOnPreferenceClickListener(Landroid/preference/Preference$OnPreferenceClickListener;)V │ │ .line 49 │ const-string v0, "preference_category_blocked" │ │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference; │ │ move-result-object v0 │ │ new-instance v1, Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment$BlockedContactsClickListener; │ │ invoke-direct {v1, p0, v2}, Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment$BlockedContactsClickListener;->(Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment;Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment$1;)V │ │ + .line 50 │ invoke-virtual {v0, v1}, Landroid/preference/Preference;->setOnPreferenceClickListener(Landroid/preference/Preference$OnPreferenceClickListener;)V │ │ .line 51 │ iget-object v0, p0, Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment;->disablePassphrase:Landroid/preference/CheckBoxPreference; │ │ new-instance v1, Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment$DisablePassphraseClickListener; │ │ invoke-direct {v1, p0, v2}, Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment$DisablePassphraseClickListener;->(Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment;Lorg/smssecure/smssecure/preferences/AppProtectionPreferenceFragment$1;)V │ │ + .line 52 │ invoke-virtual {v0, v1}, Landroid/preference/CheckBoxPreference;->setOnPreferenceChangeListener(Landroid/preference/Preference$OnPreferenceChangeListener;)V │ │ .line 53 │ return-void │ .end method │ │ .method public onResume()V ├── smali/org/smssecure/smssecure/preferences/ChatsPreferenceFragment$TrimNowClickListener.smali │ @@ -77,20 +77,22 @@ │ │ const v3, 0x7f090003 │ │ new-array v4, v7, [Ljava/lang/Object; │ │ const/4 v5, 0x0 │ │ + .line 51 │ invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v6 │ │ aput-object v6, v4, v5 │ │ + .line 50 │ invoke-virtual {v2, v3, v0, v4}, Landroid/content/res/Resources;->getQuantityString(II[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v2 │ │ invoke-virtual {v1, v2}, Landroid/support/v7/app/AlertDialog$Builder;->setMessage(Ljava/lang/CharSequence;)Landroid/support/v7/app/AlertDialog$Builder; │ │ .line 52 ├── smali/org/smssecure/smssecure/preferences/ChatsPreferenceFragment.smali │ @@ -27,15 +27,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 23 │ invoke-direct {p0}, Landroid/support/v4/preference/PreferenceFragment;->()V │ │ - .line 67 │ return-void │ .end method │ │ .method static synthetic access$100()Ljava/lang/String; │ .locals 1 │ │ .prologue │ @@ -78,27 +77,29 @@ │ │ new-instance v1, Lorg/smssecure/smssecure/preferences/ChatsPreferenceFragment$TrimNowClickListener; │ │ const/4 v2, 0x0 │ │ invoke-direct {v1, p0, v2}, Lorg/smssecure/smssecure/preferences/ChatsPreferenceFragment$TrimNowClickListener;->(Lorg/smssecure/smssecure/preferences/ChatsPreferenceFragment;Lorg/smssecure/smssecure/preferences/ChatsPreferenceFragment$1;)V │ │ + .line 32 │ invoke-virtual {v0, v1}, Landroid/preference/Preference;->setOnPreferenceClickListener(Landroid/preference/Preference$OnPreferenceClickListener;)V │ │ .line 33 │ const-string v0, "pref_trim_length" │ │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/preferences/ChatsPreferenceFragment;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference; │ │ move-result-object v0 │ │ new-instance v1, Lorg/smssecure/smssecure/preferences/ChatsPreferenceFragment$TrimLengthValidationListener; │ │ invoke-direct {v1, p0}, Lorg/smssecure/smssecure/preferences/ChatsPreferenceFragment$TrimLengthValidationListener;->(Lorg/smssecure/smssecure/preferences/ChatsPreferenceFragment;)V │ │ + .line 34 │ invoke-virtual {v0, v1}, Landroid/preference/Preference;->setOnPreferenceChangeListener(Landroid/preference/Preference$OnPreferenceChangeListener;)V │ │ .line 36 │ return-void │ .end method │ │ .method public onResume()V ├── smali/org/smssecure/smssecure/preferences/ColorPreference$ColorDialogFragment.smali │ @@ -100,35 +100,38 @@ │ │ move-result-object v0 │ │ const v8, 0x7f030026 │ │ iget-object v9, p0, Lorg/smssecure/smssecure/preferences/ColorPreference$ColorDialogFragment;->mColorGrid:Landroid/support/v7/widget/GridLayout; │ │ + .line 199 │ invoke-virtual {v0, v8, v9, v2}, Landroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;Z)Landroid/view/View; │ │ move-result-object v8 │ │ .line 201 │ const v0, 0x7f100092 │ │ invoke-virtual {v8, v0}, Landroid/view/View;->findViewById(I)Landroid/view/View; │ │ move-result-object v9 │ │ iget-object v0, p0, Lorg/smssecure/smssecure/preferences/ColorPreference$ColorDialogFragment;->mPreference:Lorg/smssecure/smssecure/preferences/ColorPreference; │ │ + .line 202 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/preferences/ColorPreference;->getValue()I │ │ move-result v0 │ │ if-ne v7, v0, :cond_2 │ │ move v0, v1 │ │ + .line 201 │ :goto_2 │ # invokes: Lorg/smssecure/smssecure/preferences/ColorPreference;->setColorViewValue(Landroid/view/View;IZ)V │ invoke-static {v9, v7, v0}, Lorg/smssecure/smssecure/preferences/ColorPreference;->access$200(Landroid/view/View;IZ)V │ │ .line 203 │ invoke-virtual {v8, v1}, Landroid/view/View;->setClickable(Z)V │ │ @@ -153,15 +156,15 @@ │ move v3, v0 │ │ goto :goto_1 │ │ :cond_2 │ move v0, v2 │ │ - .line 201 │ + .line 202 │ goto :goto_2 │ │ .line 216 │ :cond_3 │ invoke-direct {p0}, Lorg/smssecure/smssecure/preferences/ColorPreference$ColorDialogFragment;->sizeDialog()V │ │ goto :goto_0 │ @@ -244,22 +247,25 @@ │ │ invoke-virtual {p0}, Lorg/smssecure/smssecure/preferences/ColorPreference$ColorDialogFragment;->getActivity()Landroid/support/v4/app/FragmentActivity; │ │ move-result-object v2 │ │ invoke-direct {v0, v2}, Landroid/app/AlertDialog$Builder;->(Landroid/content/Context;)V │ │ + .line 186 │ invoke-virtual {v0, v1}, Landroid/app/AlertDialog$Builder;->setView(Landroid/view/View;)Landroid/app/AlertDialog$Builder; │ │ move-result-object v0 │ │ + .line 187 │ invoke-virtual {v0}, Landroid/app/AlertDialog$Builder;->create()Landroid/app/AlertDialog; │ │ move-result-object v0 │ │ + .line 185 │ return-object v0 │ .end method │ │ .method public onStart()V │ .locals 0 │ │ .prologue ├── smali/org/smssecure/smssecure/preferences/ColorPreference.smali │ @@ -378,15 +378,15 @@ │ .line 127 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/preferences/ColorPreference;->getContext()Landroid/content/Context; │ │ move-result-object v0 │ │ check-cast v0, Landroid/support/v7/app/AppCompatActivity; │ │ - .line 128 │ + .line 129 │ invoke-virtual {v0}, Landroid/support/v7/app/AppCompatActivity;->getSupportFragmentManager()Landroid/support/v4/app/FragmentManager; │ │ move-result-object v0 │ │ invoke-virtual {p0}, Lorg/smssecure/smssecure/preferences/ColorPreference;->getFragmentTag()Ljava/lang/String; │ │ move-result-object v1 │ @@ -463,22 +463,24 @@ │ │ move-result-object v0 │ │ invoke-virtual {v0}, Landroid/support/v4/app/FragmentManager;->beginTransaction()Landroid/support/v4/app/FragmentTransaction; │ │ move-result-object v0 │ │ + .line 119 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/preferences/ColorPreference;->getFragmentTag()Ljava/lang/String; │ │ move-result-object v2 │ │ invoke-virtual {v0, v1, v2}, Landroid/support/v4/app/FragmentTransaction;->add(Landroid/support/v4/app/Fragment;Ljava/lang/String;)Landroid/support/v4/app/FragmentTransaction; │ │ move-result-object v0 │ │ + .line 120 │ invoke-virtual {v0}, Landroid/support/v4/app/FragmentTransaction;->commit()I │ │ .line 121 │ return-void │ .end method │ │ .method protected onGetDefaultValue(Landroid/content/res/TypedArray;I)Ljava/lang/Object; ├── smali/org/smssecure/smssecure/preferences/ListSummaryPreferenceFragment$ListSummaryListener.smali │ @@ -52,33 +52,36 @@ │ │ move-result-object v1 │ │ array-length v1, v1 │ │ if-ge v0, v1, :cond_0 │ │ + .line 20 │ invoke-virtual {p1}, Landroid/preference/ListPreference;->getEntries()[Ljava/lang/CharSequence; │ │ move-result-object v1 │ │ aget-object v0, v1, v0 │ │ + .line 19 │ :goto_0 │ invoke-virtual {p1, v0}, Landroid/preference/ListPreference;->setSummary(Ljava/lang/CharSequence;)V │ │ .line 22 │ const/4 v0, 0x1 │ │ return v0 │ │ - .line 19 │ + .line 20 │ :cond_0 │ iget-object v0, p0, Lorg/smssecure/smssecure/preferences/ListSummaryPreferenceFragment$ListSummaryListener;->this$0:Lorg/smssecure/smssecure/preferences/ListSummaryPreferenceFragment; │ │ const v1, 0x7f080123 │ │ + .line 21 │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/preferences/ListSummaryPreferenceFragment;->getString(I)Ljava/lang/String; │ │ move-result-object v0 │ │ goto :goto_0 │ .end method ├── smali/org/smssecure/smssecure/preferences/ListSummaryPreferenceFragment.smali │ @@ -7,15 +7,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 11 │ invoke-direct {p0}, Landroid/support/v4/preference/PreferenceFragment;->()V │ │ - .line 13 │ return-void │ .end method │ │ │ # virtual methods │ .method protected initializeListSummary(Landroid/preference/ListPreference;)V │ .locals 1 ├── smali/org/smssecure/smssecure/preferences/MmsPreferencesFragment$LoadApnDefaultsTask.smali │ @@ -75,22 +75,25 @@ │ if-eqz v0, :cond_0 │ │ .line 65 │ invoke-static {v0}, Lorg/smssecure/smssecure/database/ApnDatabase;->getInstance(Landroid/content/Context;)Lorg/smssecure/smssecure/database/ApnDatabase; │ │ move-result-object v1 │ │ + .line 66 │ invoke-static {v0}, Lorg/smssecure/smssecure/util/TelephonyUtil;->getMccMnc(Landroid/content/Context;)Ljava/lang/String; │ │ move-result-object v2 │ │ + .line 67 │ invoke-static {v0}, Lorg/smssecure/smssecure/util/TelephonyUtil;->getApn(Landroid/content/Context;)Ljava/lang/String; │ │ move-result-object v0 │ │ + .line 66 │ invoke-virtual {v1, v2, v0}, Lorg/smssecure/smssecure/database/ApnDatabase;->getDefaultApnParameters(Ljava/lang/String;Ljava/lang/String;)Lorg/smssecure/smssecure/mms/LegacyMmsConnection$Apn; │ :try_end_0 │ .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0 │ │ move-result-object v0 │ │ .line 73 │ @@ -143,18 +146,20 @@ │ │ check-cast v0, Lorg/smssecure/smssecure/components/CustomDefaultPreference; │ │ new-instance v1, Lorg/smssecure/smssecure/components/CustomDefaultPreference$UriValidator; │ │ invoke-direct {v1}, Lorg/smssecure/smssecure/components/CustomDefaultPreference$UriValidator;->()V │ │ + .line 79 │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/components/CustomDefaultPreference;->setValidator(Lorg/smssecure/smssecure/components/CustomDefaultPreference$CustomPreferenceValidator;)Lorg/smssecure/smssecure/components/CustomDefaultPreference; │ │ move-result-object v0 │ │ + .line 80 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/mms/LegacyMmsConnection$Apn;->getMmsc()Ljava/lang/String; │ │ move-result-object v1 │ │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/components/CustomDefaultPreference;->setDefaultValue(Ljava/lang/String;)Lorg/smssecure/smssecure/components/CustomDefaultPreference; │ │ .line 82 │ @@ -168,18 +173,20 @@ │ │ check-cast v0, Lorg/smssecure/smssecure/components/CustomDefaultPreference; │ │ new-instance v1, Lorg/smssecure/smssecure/components/CustomDefaultPreference$HostnameValidator; │ │ invoke-direct {v1}, Lorg/smssecure/smssecure/components/CustomDefaultPreference$HostnameValidator;->()V │ │ + .line 83 │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/components/CustomDefaultPreference;->setValidator(Lorg/smssecure/smssecure/components/CustomDefaultPreference$CustomPreferenceValidator;)Lorg/smssecure/smssecure/components/CustomDefaultPreference; │ │ move-result-object v0 │ │ + .line 84 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/mms/LegacyMmsConnection$Apn;->getProxy()Ljava/lang/String; │ │ move-result-object v1 │ │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/components/CustomDefaultPreference;->setDefaultValue(Ljava/lang/String;)Lorg/smssecure/smssecure/components/CustomDefaultPreference; │ │ .line 86 │ @@ -193,18 +200,20 @@ │ │ check-cast v0, Lorg/smssecure/smssecure/components/CustomDefaultPreference; │ │ new-instance v1, Lorg/smssecure/smssecure/components/CustomDefaultPreference$PortValidator; │ │ invoke-direct {v1}, Lorg/smssecure/smssecure/components/CustomDefaultPreference$PortValidator;->()V │ │ + .line 87 │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/components/CustomDefaultPreference;->setValidator(Lorg/smssecure/smssecure/components/CustomDefaultPreference$CustomPreferenceValidator;)Lorg/smssecure/smssecure/components/CustomDefaultPreference; │ │ move-result-object v0 │ │ + .line 88 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/mms/LegacyMmsConnection$Apn;->getPort()I │ │ move-result v1 │ │ invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v1 │ @@ -218,14 +227,15 @@ │ │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/preferences/MmsPreferencesFragment;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference; │ │ move-result-object v0 │ │ check-cast v0, Lorg/smssecure/smssecure/components/CustomDefaultPreference; │ │ + .line 91 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/mms/LegacyMmsConnection$Apn;->getPort()I │ │ move-result v1 │ │ invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v1 │ @@ -239,14 +249,15 @@ │ │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/preferences/MmsPreferencesFragment;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference; │ │ move-result-object v0 │ │ check-cast v0, Lorg/smssecure/smssecure/components/CustomDefaultPreference; │ │ + .line 94 │ invoke-virtual {p1}, Lorg/smssecure/smssecure/mms/LegacyMmsConnection$Apn;->getPassword()Ljava/lang/String; │ │ move-result-object v1 │ │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/components/CustomDefaultPreference;->setDefaultValue(Ljava/lang/String;)Lorg/smssecure/smssecure/components/CustomDefaultPreference; │ │ .line 96 │ @@ -258,12 +269,13 @@ │ │ move-result-object v0 │ │ check-cast v0, Lorg/smssecure/smssecure/components/CustomDefaultPreference; │ │ const-string v1, "Android-Mms/2.0" │ │ + .line 97 │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/components/CustomDefaultPreference;->setDefaultValue(Ljava/lang/String;)Lorg/smssecure/smssecure/components/CustomDefaultPreference; │ │ .line 98 │ return-void │ .end method ├── smali/org/smssecure/smssecure/preferences/MmsPreferencesFragment.smali │ @@ -27,15 +27,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 36 │ invoke-direct {p0}, Landroid/support/v4/preference/PreferenceFragment;->()V │ │ - .line 57 │ return-void │ .end method │ │ .method static synthetic access$100()Ljava/lang/String; │ .locals 1 │ │ .prologue │ @@ -68,14 +67,15 @@ │ │ invoke-virtual {v0}, Lorg/smssecure/smssecure/PassphraseRequiredActionBarActivity;->getSupportActionBar()Landroid/support/v7/app/ActionBar; │ │ move-result-object v0 │ │ const v1, 0x7f080107 │ │ + .line 46 │ invoke-virtual {v0, v1}, Landroid/support/v7/app/ActionBar;->setTitle(I)V │ │ .line 48 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/preferences/MmsPreferencesFragment;->getActivity()Landroid/support/v4/app/FragmentActivity; │ │ move-result-object v0 ├── smali/org/smssecure/smssecure/preferences/NotificationsPreferenceFragment$NotificationPrivacyListener.smali │ @@ -41,14 +41,15 @@ │ │ invoke-direct {v0, p0}, Lorg/smssecure/smssecure/preferences/NotificationsPreferenceFragment$NotificationPrivacyListener$1;->(Lorg/smssecure/smssecure/preferences/NotificationsPreferenceFragment$NotificationPrivacyListener;)V │ │ const/4 v1, 0x0 │ │ new-array v1, v1, [Ljava/lang/Void; │ │ + .line 98 │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/preferences/NotificationsPreferenceFragment$NotificationPrivacyListener$1;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 100 │ invoke-super {p0, p1, p2}, Lorg/smssecure/smssecure/preferences/ListSummaryPreferenceFragment$ListSummaryListener;->onPreferenceChange(Landroid/preference/Preference;Ljava/lang/Object;)Z │ │ move-result v0 ├── smali/org/smssecure/smssecure/preferences/NotificationsPreferenceFragment.smali │ @@ -11,15 +11,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 22 │ invoke-direct {p0}, Lorg/smssecure/smssecure/preferences/ListSummaryPreferenceFragment;->()V │ │ - .line 89 │ return-void │ .end method │ │ .method static synthetic access$200(Lorg/smssecure/smssecure/preferences/NotificationsPreferenceFragment;)Lorg/smssecure/smssecure/crypto/MasterSecret; │ .locals 1 │ │ .prologue │ @@ -57,14 +56,15 @@ │ .end method │ │ .method private initializeRingtoneSummary(Landroid/preference/RingtonePreference;)V │ .locals 4 │ │ .prologue │ .line 75 │ + .line 76 │ invoke-virtual {p1}, Landroid/preference/RingtonePreference;->getOnPreferenceChangeListener()Landroid/preference/Preference$OnPreferenceChangeListener; │ │ move-result-object v0 │ │ check-cast v0, Lorg/smssecure/smssecure/preferences/NotificationsPreferenceFragment$RingtoneSummaryListener; │ │ .line 77 │ @@ -131,66 +131,71 @@ │ │ move-result-object v0 │ │ new-instance v1, Lorg/smssecure/smssecure/preferences/ListSummaryPreferenceFragment$ListSummaryListener; │ │ invoke-direct {v1, p0}, Lorg/smssecure/smssecure/preferences/ListSummaryPreferenceFragment$ListSummaryListener;->(Lorg/smssecure/smssecure/preferences/ListSummaryPreferenceFragment;)V │ │ + .line 33 │ invoke-virtual {v0, v1}, Landroid/preference/Preference;->setOnPreferenceChangeListener(Landroid/preference/Preference$OnPreferenceChangeListener;)V │ │ .line 34 │ const-string v0, "pref_led_blink" │ │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/preferences/NotificationsPreferenceFragment;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference; │ │ move-result-object v0 │ │ new-instance v1, Lorg/smssecure/smssecure/preferences/ListSummaryPreferenceFragment$ListSummaryListener; │ │ invoke-direct {v1, p0}, Lorg/smssecure/smssecure/preferences/ListSummaryPreferenceFragment$ListSummaryListener;->(Lorg/smssecure/smssecure/preferences/ListSummaryPreferenceFragment;)V │ │ + .line 35 │ invoke-virtual {v0, v1}, Landroid/preference/Preference;->setOnPreferenceChangeListener(Landroid/preference/Preference$OnPreferenceChangeListener;)V │ │ .line 36 │ const-string v0, "pref_key_ringtone" │ │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/preferences/NotificationsPreferenceFragment;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference; │ │ move-result-object v0 │ │ new-instance v1, Lorg/smssecure/smssecure/preferences/NotificationsPreferenceFragment$RingtoneSummaryListener; │ │ invoke-direct {v1, p0, v2}, Lorg/smssecure/smssecure/preferences/NotificationsPreferenceFragment$RingtoneSummaryListener;->(Lorg/smssecure/smssecure/preferences/NotificationsPreferenceFragment;Lorg/smssecure/smssecure/preferences/NotificationsPreferenceFragment$1;)V │ │ + .line 37 │ invoke-virtual {v0, v1}, Landroid/preference/Preference;->setOnPreferenceChangeListener(Landroid/preference/Preference$OnPreferenceChangeListener;)V │ │ .line 38 │ const-string v0, "pref_repeat_alerts" │ │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/preferences/NotificationsPreferenceFragment;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference; │ │ move-result-object v0 │ │ new-instance v1, Lorg/smssecure/smssecure/preferences/ListSummaryPreferenceFragment$ListSummaryListener; │ │ invoke-direct {v1, p0}, Lorg/smssecure/smssecure/preferences/ListSummaryPreferenceFragment$ListSummaryListener;->(Lorg/smssecure/smssecure/preferences/ListSummaryPreferenceFragment;)V │ │ + .line 39 │ invoke-virtual {v0, v1}, Landroid/preference/Preference;->setOnPreferenceChangeListener(Landroid/preference/Preference$OnPreferenceChangeListener;)V │ │ .line 40 │ const-string v0, "pref_notification_privacy" │ │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/preferences/NotificationsPreferenceFragment;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference; │ │ move-result-object v0 │ │ new-instance v1, Lorg/smssecure/smssecure/preferences/NotificationsPreferenceFragment$NotificationPrivacyListener; │ │ invoke-direct {v1, p0, v2}, Lorg/smssecure/smssecure/preferences/NotificationsPreferenceFragment$NotificationPrivacyListener;->(Lorg/smssecure/smssecure/preferences/NotificationsPreferenceFragment;Lorg/smssecure/smssecure/preferences/NotificationsPreferenceFragment$1;)V │ │ + .line 41 │ invoke-virtual {v0, v1}, Landroid/preference/Preference;->setOnPreferenceChangeListener(Landroid/preference/Preference$OnPreferenceChangeListener;)V │ │ .line 43 │ const-string v0, "pref_led_color" │ │ invoke-virtual {p0, v0}, Lorg/smssecure/smssecure/preferences/NotificationsPreferenceFragment;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference; ├── smali/org/smssecure/smssecure/preferences/SmsMmsPreferenceFragment.smali │ @@ -13,15 +13,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 28 │ invoke-direct {p0}, Landroid/support/v4/preference/PreferenceFragment;->()V │ │ - .line 80 │ return-void │ .end method │ │ .method private static getIncomingSmsSummary(Landroid/content/Context;)Ljava/lang/CharSequence; │ .locals 7 │ │ .prologue │ @@ -318,14 +317,15 @@ │ │ new-instance v1, Lorg/smssecure/smssecure/preferences/SmsMmsPreferenceFragment$ApnPreferencesClickListener; │ │ const/4 v2, 0x0 │ │ invoke-direct {v1, p0, v2}, Lorg/smssecure/smssecure/preferences/SmsMmsPreferenceFragment$ApnPreferencesClickListener;->(Lorg/smssecure/smssecure/preferences/SmsMmsPreferenceFragment;Lorg/smssecure/smssecure/preferences/SmsMmsPreferenceFragment$1;)V │ │ + .line 38 │ invoke-virtual {v0, v1}, Landroid/preference/Preference;->setOnPreferenceClickListener(Landroid/preference/Preference$OnPreferenceClickListener;)V │ │ .line 39 │ return-void │ .end method │ │ .method public onResume()V ├── smali/org/smssecure/smssecure/protocol/AutoInitiate.smali │ @@ -166,22 +166,24 @@ │ │ move-result-object v2 │ │ invoke-virtual {v2}, Lorg/smssecure/smssecure/recipients/Recipient;->getNumber()Ljava/lang/String; │ │ move-result-object v2 │ │ + .line 39 │ invoke-static {}, Ljava/util/Locale;->getDefault()Ljava/util/Locale; │ │ move-result-object v3 │ │ invoke-virtual {v3}, Ljava/util/Locale;->getCountry()Ljava/lang/String; │ │ move-result-object v3 │ │ + .line 38 │ invoke-virtual {v1, v2, v3}, Lcom/google/i18n/phonenumbers/PhoneNumberUtil;->parse(Ljava/lang/String;Ljava/lang/String;)Lcom/google/i18n/phonenumbers/Phonenumber$PhoneNumber; │ │ move-result-object v2 │ │ .line 40 │ invoke-virtual {v1, v2}, Lcom/google/i18n/phonenumbers/PhoneNumberUtil;->getNumberType(Lcom/google/i18n/phonenumbers/Phonenumber$PhoneNumber;)Lcom/google/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberType; │ │ @@ -291,14 +293,15 @@ │ │ if-eqz v0, :cond_0 │ │ const-string v0, "\\s+$" │ │ const-string v1, "" │ │ + .line 27 │ invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Ljava/lang/String;->length()I │ │ move-result v0 │ @@ -313,17 +316,19 @@ │ │ const/16 v1, 0x9e │ │ if-gt v0, v1, :cond_0 │ │ const/4 v0, 0x1 │ │ + .line 26 │ :goto_0 │ return v0 │ │ + .line 27 │ :cond_0 │ const/4 v0, 0x0 │ │ goto :goto_0 │ .end method │ │ .method public static isTagged(Ljava/lang/String;)Z │ @@ -395,37 +400,42 @@ │ .end method │ │ .method public static isValidAutoInitiateSituation(Landroid/content/Context;Lorg/smssecure/smssecure/crypto/MasterSecret;Lorg/smssecure/smssecure/recipients/Recipient;Ljava/lang/String;J)Z │ .locals 2 │ │ .prologue │ .line 77 │ + .line 78 │ invoke-static {p3}, Lorg/smssecure/smssecure/protocol/AutoInitiate;->isTagged(Ljava/lang/String;)Z │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ + .line 79 │ invoke-static {p0, p4, p5}, Lorg/smssecure/smssecure/protocol/AutoInitiate;->isThreadQualified(Landroid/content/Context;J)Z │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ + .line 80 │ invoke-static {p0, p1, p2}, Lorg/smssecure/smssecure/protocol/AutoInitiate;->isExchangeQualified(Landroid/content/Context;Lorg/smssecure/smssecure/crypto/MasterSecret;Lorg/smssecure/smssecure/recipients/Recipient;)Z │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ const/4 v0, 0x1 │ │ + .line 77 │ :goto_0 │ return v0 │ │ + .line 80 │ :cond_0 │ const/4 v0, 0x0 │ │ goto :goto_0 │ .end method │ │ .method public static stripTag(Ljava/lang/String;)Ljava/lang/String; ├── smali/org/smssecure/smssecure/protocol/WirePrefix.smali │ @@ -430,38 +430,43 @@ │ .line 60 │ invoke-static {p0}, Lorg/smssecure/smssecure/protocol/WirePrefix;->isEncryptedMessage(Ljava/lang/String;)Z │ │ move-result v0 │ │ if-nez v0, :cond_0 │ │ + .line 61 │ invoke-static {p0}, Lorg/smssecure/smssecure/protocol/WirePrefix;->isKeyExchange(Ljava/lang/String;)Z │ │ move-result v0 │ │ if-nez v0, :cond_0 │ │ + .line 62 │ invoke-static {p0}, Lorg/smssecure/smssecure/protocol/WirePrefix;->isPreKeyBundle(Ljava/lang/String;)Z │ │ move-result v0 │ │ if-nez v0, :cond_0 │ │ + .line 63 │ invoke-static {p0}, Lorg/smssecure/smssecure/protocol/WirePrefix;->isEndSession(Ljava/lang/String;)Z │ │ move-result v0 │ │ if-eqz v0, :cond_1 │ │ :cond_0 │ const/4 v0, 0x1 │ │ + .line 60 │ :goto_0 │ return v0 │ │ + .line 63 │ :cond_1 │ const/4 v0, 0x0 │ │ goto :goto_0 │ .end method │ │ .method private static verifyPrefix(Ljava/lang/String;Ljava/lang/String;)Z ├── smali/org/smssecure/smssecure/providers/MmsBodyProvider.smali │ @@ -65,15 +65,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 34 │ invoke-direct {p0}, Landroid/content/ContentProvider;->()V │ │ - .line 115 │ return-void │ .end method │ │ .method private getFile(Landroid/net/Uri;)Ljava/io/File; │ .locals 5 │ │ .prologue ├── smali/org/smssecure/smssecure/providers/PersistentBlobProvider.smali │ @@ -91,14 +91,15 @@ │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ .line 58 │ new-instance v0, Ljava/util/HashMap; │ │ invoke-direct {v0}, Ljava/util/HashMap;->()V │ │ + .line 59 │ invoke-static {v0}, Ljava/util/Collections;->synchronizedMap(Ljava/util/Map;)Ljava/util/Map; │ │ move-result-object v0 │ │ iput-object v0, p0, Lorg/smssecure/smssecure/providers/PersistentBlobProvider;->cache:Ljava/util/Map; │ │ .line 60 │ @@ -161,30 +162,33 @@ │ .line 84 │ sget-object v0, Lorg/smssecure/smssecure/providers/PersistentBlobProvider;->CONTENT_URI:Landroid/net/Uri; │ │ invoke-virtual {v0}, Landroid/net/Uri;->buildUpon()Landroid/net/Uri$Builder; │ │ move-result-object v0 │ │ + .line 85 │ invoke-virtual {v0, p5}, Landroid/net/Uri$Builder;->appendPath(Ljava/lang/String;)Landroid/net/Uri$Builder; │ │ move-result-object v0 │ │ + .line 86 │ invoke-static {}, Ljava/lang/System;->currentTimeMillis()J │ │ move-result-wide v2 │ │ invoke-static {v2, v3}, Ljava/lang/String;->valueOf(J)Ljava/lang/String; │ │ move-result-object v1 │ │ invoke-virtual {v0, v1}, Landroid/net/Uri$Builder;->appendEncodedPath(Ljava/lang/String;)Landroid/net/Uri$Builder; │ │ move-result-object v0 │ │ + .line 87 │ invoke-virtual {v0}, Landroid/net/Uri$Builder;->build()Landroid/net/Uri; │ │ move-result-object v0 │ │ .line 88 │ invoke-static {v0, p3, p4}, Landroid/content/ContentUris;->withAppendedId(Landroid/net/Uri;J)Landroid/net/Uri; │ │ @@ -367,20 +371,22 @@ │ :cond_0 │ invoke-static {p0, p1}, Lorg/smssecure/smssecure/providers/PersistentBlobProvider;->isExternalBlobUri(Landroid/content/Context;Landroid/net/Uri;)Z │ │ move-result v0 │ │ if-eqz v0, :cond_1 │ │ + .line 138 │ invoke-static {p1}, Lorg/smssecure/smssecure/providers/PersistentBlobProvider;->getMimeTypeFromExtension(Landroid/net/Uri;)Ljava/lang/String; │ │ move-result-object v0 │ │ goto :goto_0 │ │ + .line 139 │ :cond_1 │ invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List; │ │ move-result-object v0 │ │ const/4 v1, 0x1 │ │ @@ -398,14 +404,15 @@ │ │ .prologue │ .line 148 │ invoke-static {}, Landroid/webkit/MimeTypeMap;->getSingleton()Landroid/webkit/MimeTypeMap; │ │ move-result-object v0 │ │ + .line 149 │ invoke-virtual {p0}, Landroid/net/Uri;->toString()Ljava/lang/String; │ │ move-result-object v1 │ │ invoke-static {v1}, Landroid/webkit/MimeTypeMap;->getFileExtensionFromUrl(Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v1 │ @@ -600,14 +607,15 @@ │ │ move-result-object v1 │ │ new-instance v2, Ljava/lang/StringBuilder; │ │ invoke-direct {v2}, Ljava/lang/StringBuilder;->()V │ │ + .line 111 │ invoke-static {}, Ljava/lang/System;->currentTimeMillis()J │ │ move-result-wide v4 │ │ invoke-static {v4, v5}, Ljava/lang/String;->valueOf(J)Ljava/lang/String; │ │ move-result-object v3 │ @@ -632,14 +640,15 @@ │ │ invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v2 │ │ invoke-direct {v0, v1, v2}, Ljava/io/File;->(Ljava/io/File;Ljava/lang/String;)V │ │ + .line 110 │ invoke-static {v0}, Landroid/net/Uri;->fromFile(Ljava/io/File;)Landroid/net/Uri; │ │ move-result-object v0 │ │ return-object v0 │ .end method │ │ @@ -744,14 +753,15 @@ │ │ :goto_0 │ return-object v0 │ │ :cond_0 │ new-instance v0, Lorg/smssecure/smssecure/crypto/DecryptingPartInputStream; │ │ + .line 128 │ invoke-direct {p0, p2, p3}, Lorg/smssecure/smssecure/providers/PersistentBlobProvider;->getFile(J)Ljava/io/File; │ │ move-result-object v1 │ │ invoke-direct {v0, v1, p1}, Lorg/smssecure/smssecure/crypto/DecryptingPartInputStream;->(Ljava/io/File;Lorg/smssecure/smssecure/crypto/MasterSecret;)V │ │ goto :goto_0 ├── smali/org/smssecure/smssecure/recipients/Recipient.smali │ @@ -266,24 +266,26 @@ │ │ new-instance v0, Lorg/smssecure/smssecure/recipients/RecipientProvider$RecipientDetails; │ │ const-string v1, "Unknown" │ │ const-string v2, "Unknown" │ │ + .line 156 │ invoke-static {v3}, Lorg/smssecure/smssecure/contacts/avatars/ContactPhotoFactory;->getDefaultContactPhoto(Ljava/lang/String;)Lorg/smssecure/smssecure/contacts/avatars/ContactPhoto; │ │ move-result-object v4 │ │ move-object v5, v3 │ │ invoke-direct/range {v0 .. v5}, Lorg/smssecure/smssecure/recipients/RecipientProvider$RecipientDetails;->(Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;Lorg/smssecure/smssecure/contacts/avatars/ContactPhoto;Lorg/smssecure/smssecure/color/MaterialColor;)V │ │ invoke-direct {v6, v8, v9, v0}, Lorg/smssecure/smssecure/recipients/Recipient;->(JLorg/smssecure/smssecure/recipients/RecipientProvider$RecipientDetails;)V │ │ + .line 155 │ return-object v6 │ .end method │ │ .method private notifyListeners()V │ .locals 2 │ │ .prologue ├── smali/org/smssecure/smssecure/recipients/RecipientFactory.smali │ @@ -495,25 +495,28 @@ │ move-result v0 │ │ .line 124 │ if-eq v0, v2, :cond_0 │ │ const/16 v1, 0x3e │ │ + .line 125 │ invoke-virtual {p0, v1, v0}, Ljava/lang/String;->indexOf(II)I │ │ move-result v0 │ │ if-eq v0, v2, :cond_0 │ │ const/4 v0, 0x1 │ │ + .line 124 │ :goto_0 │ return v0 │ │ + .line 125 │ :cond_0 │ const/4 v0, 0x0 │ │ goto :goto_0 │ .end method │ │ .method private static parseBracketedNumber(Ljava/lang/String;)Ljava/lang/String; ├── smali/org/smssecure/smssecure/recipients/RecipientProvider$1.smali │ @@ -34,20 +34,22 @@ │ │ const-string v1, "Amazon" │ │ const-string v2, "262966" │ │ const/4 v3, 0x0 │ │ + .line 69 │ invoke-static {}, Lorg/smssecure/smssecure/contacts/avatars/ContactPhotoFactory;->getDefaultGroupPhoto()Lorg/smssecure/smssecure/contacts/avatars/ContactPhoto; │ │ move-result-object v4 │ │ sget-object v5, Lorg/smssecure/smssecure/contacts/avatars/ContactColors;->UNKNOWN_COLOR:Lorg/smssecure/smssecure/color/MaterialColor; │ │ invoke-direct/range {v0 .. v5}, Lorg/smssecure/smssecure/recipients/RecipientProvider$RecipientDetails;->(Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;Lorg/smssecure/smssecure/contacts/avatars/ContactPhoto;Lorg/smssecure/smssecure/color/MaterialColor;)V │ │ + .line 68 │ invoke-virtual {p0, v6, v0}, Lorg/smssecure/smssecure/recipients/RecipientProvider$1;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ │ .line 71 │ return-void │ .end method ├── smali/org/smssecure/smssecure/recipients/RecipientProvider.smali │ @@ -108,15 +108,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 52 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 250 │ return-void │ .end method │ │ .method static synthetic access$300(Lorg/smssecure/smssecure/recipients/RecipientProvider;Landroid/content/Context;JLjava/lang/String;)Lorg/smssecure/smssecure/recipients/RecipientProvider$RecipientDetails; │ .locals 2 │ │ .prologue │ @@ -148,14 +147,15 @@ │ │ .line 160 │ :try_start_0 │ invoke-static {p1}, Lorg/smssecure/smssecure/database/DatabaseFactory;->getGroupDatabase(Landroid/content/Context;)Lorg/smssecure/smssecure/database/GroupDatabase; │ │ move-result-object v0 │ │ + .line 161 │ invoke-static {p2}, Lorg/smssecure/smssecure/util/GroupUtil;->getDecodedId(Ljava/lang/String;)[B │ │ move-result-object v1 │ │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/database/GroupDatabase;->getGroup([B)Lorg/smssecure/smssecure/database/GroupDatabase$GroupRecord; │ │ move-result-object v1 │ @@ -361,14 +361,15 @@ │ │ new-instance v1, Ljava/lang/StringBuilder; │ │ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V │ │ const/4 v2, 0x2 │ │ + .line 144 │ invoke-interface {v6, v2}, Landroid/database/Cursor;->getLong(I)J │ │ move-result-wide v8 │ │ invoke-virtual {v1, v8, v9}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder; │ │ move-result-object v1 │ @@ -383,14 +384,15 @@ │ │ move-result-object v1 │ │ invoke-static {v0, v1}, Landroid/net/Uri;->withAppendedPath(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri; │ │ move-result-object v0 │ │ + .line 143 │ invoke-static {p1, v0, v3}, Lorg/smssecure/smssecure/contacts/avatars/ContactPhotoFactory;->getContactPhoto(Landroid/content/Context;Landroid/net/Uri;Ljava/lang/String;)Lorg/smssecure/smssecure/contacts/avatars/ContactPhoto; │ │ move-result-object v4 │ │ .line 147 │ new-instance v0, Lorg/smssecure/smssecure/recipients/RecipientProvider$RecipientDetails; │ │ @@ -611,24 +613,27 @@ │ │ .prologue │ .line 176 │ invoke-static {p1}, Lorg/smssecure/smssecure/database/DatabaseFactory;->getRecipientPreferenceDatabase(Landroid/content/Context;)Lorg/smssecure/smssecure/database/RecipientPreferenceDatabase; │ │ move-result-object v0 │ │ + .line 177 │ invoke-virtual {v0, p2}, Lorg/smssecure/smssecure/database/RecipientPreferenceDatabase;->getRecipientsPreferences([J)Lorg/whispersystems/libaxolotl/util/guava/Optional; │ │ move-result-object v0 │ │ + .line 178 │ invoke-virtual {v0}, Lorg/whispersystems/libaxolotl/util/guava/Optional;->orNull()Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Lorg/smssecure/smssecure/database/RecipientPreferenceDatabase$RecipientsPreferences; │ │ + .line 176 │ return-object v0 │ .end method │ │ │ # virtual methods │ .method clearCache()V │ .locals 1 ├── smali/org/smssecure/smssecure/recipients/Recipients.smali │ @@ -1394,24 +1394,26 @@ │ .line 268 │ if-eqz p1, :cond_1 │ │ if-eqz v0, :cond_1 │ │ sget-object v2, Landroid/util/Patterns;->EMAIL_ADDRESS:Ljava/util/regex/Pattern; │ │ + .line 269 │ invoke-virtual {v2, v0}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher; │ │ move-result-object v2 │ │ invoke-virtual {v2}, Ljava/util/regex/Matcher;->matches()Z │ │ move-result v2 │ │ if-nez v2, :cond_1 │ │ + .line 270 │ invoke-static {v0}, Lorg/smssecure/smssecure/util/GroupUtil;->isEncodedGroup(Ljava/lang/String;)Z │ │ move-result v2 │ │ if-nez v2, :cond_1 │ │ .line 272 ├── smali/org/smssecure/smssecure/service/KeyCachingService$1.smali │ @@ -73,22 +73,24 @@ │ .line 110 │ iget-object v0, p0, Lorg/smssecure/smssecure/service/KeyCachingService$1;->this$0:Lorg/smssecure/smssecure/service/KeyCachingService; │ │ invoke-static {v0}, Lorg/smssecure/smssecure/ApplicationContext;->getInstance(Landroid/content/Context;)Lorg/smssecure/smssecure/ApplicationContext; │ │ move-result-object v0 │ │ + .line 111 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/ApplicationContext;->getJobManager()Lorg/whispersystems/jobqueue/JobManager; │ │ move-result-object v0 │ │ new-instance v1, Lorg/whispersystems/jobqueue/EncryptionKeys; │ │ iget-object v2, p0, Lorg/smssecure/smssecure/service/KeyCachingService$1;->val$masterSecret:Lorg/smssecure/smssecure/crypto/MasterSecret; │ │ + .line 112 │ invoke-static {v2}, Lorg/smssecure/smssecure/util/ParcelUtil;->serialize(Landroid/os/Parcelable;)[B │ │ move-result-object v2 │ │ invoke-direct {v1, v2}, Lorg/whispersystems/jobqueue/EncryptionKeys;->([B)V │ │ invoke-virtual {v0, v1}, Lorg/whispersystems/jobqueue/JobManager;->setEncryptionKeys(Lorg/whispersystems/jobqueue/EncryptionKeys;)V ├── smali/org/smssecure/smssecure/service/KeyCachingService.smali │ @@ -290,43 +290,49 @@ │ const v3, 0x7f0801fd │ │ .line 267 │ new-instance v0, Landroid/app/Notification; │ │ const v1, 0x7f020119 │ │ + .line 268 │ invoke-virtual {p0, v3}, Lorg/smssecure/smssecure/service/KeyCachingService;->getString(I)Ljava/lang/String; │ │ move-result-object v2 │ │ + .line 269 │ invoke-static {}, Ljava/lang/System;->currentTimeMillis()J │ │ move-result-wide v4 │ │ invoke-direct {v0, v1, v2, v4, v5}, Landroid/app/Notification;->(ILjava/lang/CharSequence;J)V │ │ .line 270 │ invoke-virtual {p0}, Lorg/smssecure/smssecure/service/KeyCachingService;->getApplicationContext()Landroid/content/Context; │ │ move-result-object v1 │ │ const v2, 0x7f0801fc │ │ + .line 271 │ invoke-virtual {p0, v2}, Lorg/smssecure/smssecure/service/KeyCachingService;->getString(I)Ljava/lang/String; │ │ move-result-object v2 │ │ + .line 272 │ invoke-virtual {p0, v3}, Lorg/smssecure/smssecure/service/KeyCachingService;->getString(I)Ljava/lang/String; │ │ move-result-object v3 │ │ + .line 273 │ invoke-direct {p0}, Lorg/smssecure/smssecure/service/KeyCachingService;->buildLaunchIntent()Landroid/app/PendingIntent; │ │ move-result-object v4 │ │ + .line 270 │ invoke-virtual {v0, v1, v2, v3, v4}, Landroid/app/Notification;->setLatestEventInfo(Landroid/content/Context;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/app/PendingIntent;)V │ │ .line 274 │ const/4 v1, 0x0 │ │ iput-object v1, v0, Landroid/app/Notification;->tickerText:Ljava/lang/CharSequence; │ │ @@ -622,14 +628,15 @@ │ │ invoke-direct {v0, p0}, Lorg/smssecure/smssecure/service/KeyCachingService$2;->(Lorg/smssecure/smssecure/service/KeyCachingService;)V │ │ const/4 v1, 0x0 │ │ new-array v1, v1, [Ljava/lang/Void; │ │ + .line 206 │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/service/KeyCachingService$2;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 207 │ return-void │ .end method │ │ .method private handleDisableService()V │ @@ -1168,14 +1175,15 @@ │ │ invoke-direct {v0, p0, p1}, Lorg/smssecure/smssecure/service/KeyCachingService$1;->(Lorg/smssecure/smssecure/service/KeyCachingService;Lorg/smssecure/smssecure/crypto/MasterSecret;)V │ │ const/4 v2, 0x0 │ │ new-array v2, v2, [Ljava/lang/Void; │ │ + .line 117 │ invoke-virtual {v0, v2}, Lorg/smssecure/smssecure/service/KeyCachingService$1;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 118 │ monitor-exit v1 │ │ .line 119 │ return-void ├── smali/org/smssecure/smssecure/service/MmsListener.smali │ @@ -72,24 +72,26 @@ │ :cond_1 │ sget v0, Landroid/os/Build$VERSION;->SDK_INT:I │ │ if-lt v0, v3, :cond_2 │ │ const-string v0, "android.provider.Telephony.WAP_PUSH_RECEIVED" │ │ + .line 51 │ invoke-virtual {p2}, Landroid/content/Intent;->getAction()Ljava/lang/String; │ │ move-result-object v2 │ │ invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z │ │ move-result v0 │ │ if-eqz v0, :cond_2 │ │ + .line 52 │ invoke-static {p1}, Lorg/smssecure/smssecure/util/Util;->isDefaultSmsProvider(Landroid/content/Context;)Z │ │ move-result v0 │ │ if-eqz v0, :cond_2 │ │ move v0, v1 │ @@ -99,14 +101,15 @@ │ │ .line 57 │ :cond_2 │ sget v0, Landroid/os/Build$VERSION;->SDK_INT:I │ │ if-ge v0, v3, :cond_3 │ │ + .line 58 │ invoke-static {p1}, Lorg/smssecure/smssecure/util/SilencePreferences;->isInterceptAllMmsEnabled(Landroid/content/Context;)Z │ │ move-result v0 │ │ if-eqz v0, :cond_3 │ │ .line 60 │ @@ -231,33 +234,36 @@ │ │ invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z │ │ move-result v0 │ │ if-eqz v0, :cond_0 │ │ + .line 85 │ invoke-static {p1}, Lorg/smssecure/smssecure/util/Util;->isDefaultSmsProvider(Landroid/content/Context;)Z │ │ move-result v0 │ │ if-nez v0, :cond_1 │ │ :cond_0 │ const-string v0, "android.provider.Telephony.WAP_PUSH_RECEIVED" │ │ + .line 86 │ invoke-virtual {p2}, Landroid/content/Intent;->getAction()Ljava/lang/String; │ │ move-result-object v1 │ │ invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z │ │ move-result v0 │ │ if-eqz v0, :cond_2 │ │ + .line 87 │ invoke-direct {p0, p1, p2}, Lorg/smssecure/smssecure/service/MmsListener;->isRelevant(Landroid/content/Context;Landroid/content/Intent;)Z │ │ move-result v0 │ │ if-eqz v0, :cond_2 │ │ .line 89 │ @@ -282,22 +288,24 @@ │ move-result v0 │ │ .line 92 │ invoke-static {p1}, Lorg/smssecure/smssecure/ApplicationContext;->getInstance(Landroid/content/Context;)Lorg/smssecure/smssecure/ApplicationContext; │ │ move-result-object v1 │ │ + .line 93 │ invoke-virtual {v1}, Lorg/smssecure/smssecure/ApplicationContext;->getJobManager()Lorg/whispersystems/jobqueue/JobManager; │ │ move-result-object v1 │ │ new-instance v2, Lorg/smssecure/smssecure/jobs/MmsReceiveJob; │ │ const-string v3, "data" │ │ + .line 94 │ invoke-virtual {p2, v3}, Landroid/content/Intent;->getByteArrayExtra(Ljava/lang/String;)[B │ │ move-result-object v3 │ │ invoke-direct {v2, p1, v3, v0}, Lorg/smssecure/smssecure/jobs/MmsReceiveJob;->(Landroid/content/Context;[BI)V │ │ invoke-virtual {v1, v2}, Lorg/whispersystems/jobqueue/JobManager;->add(Lorg/whispersystems/jobqueue/Job;)V ├── smali/org/smssecure/smssecure/service/SmsListener.smali │ @@ -176,41 +176,43 @@ │ │ invoke-virtual {p2, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z │ │ move-result v1 │ │ if-nez v1, :cond_0 │ │ - .line 53 │ + .line 54 │ invoke-virtual {p1}, Landroid/telephony/SmsMessage;->getOriginatingAddress()Ljava/lang/String; │ │ move-result-object v1 │ │ invoke-virtual {v1}, Ljava/lang/String;->length()I │ │ move-result v1 │ │ const/4 v2, 0x7 │ │ if-ge v1, v2, :cond_2 │ │ + .line 55 │ invoke-virtual {p2}, Ljava/lang/String;->toUpperCase()Ljava/lang/String; │ │ move-result-object v1 │ │ const-string v2, "//ANDROID:" │ │ invoke-virtual {v1, v2}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z │ │ move-result v1 │ │ if-nez v1, :cond_0 │ │ const-string v1, "//BREW:" │ │ + .line 56 │ invoke-virtual {p2, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z │ │ move-result v1 │ │ if-nez v1, :cond_0 │ │ :cond_2 │ @@ -265,36 +267,39 @@ │ .line 96 │ sget v1, Landroid/os/Build$VERSION;->SDK_INT:I │ │ if-lt v1, v4, :cond_2 │ │ const-string v1, "android.provider.Telephony.SMS_RECEIVED" │ │ + .line 97 │ invoke-virtual {p2}, Landroid/content/Intent;->getAction()Ljava/lang/String; │ │ move-result-object v3 │ │ invoke-virtual {v1, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z │ │ move-result v1 │ │ if-eqz v1, :cond_2 │ │ + .line 98 │ invoke-static {p1}, Lorg/smssecure/smssecure/util/Util;->isDefaultSmsProvider(Landroid/content/Context;)Z │ │ move-result v1 │ │ if-nez v1, :cond_0 │ │ .line 103 │ :cond_2 │ sget v0, Landroid/os/Build$VERSION;->SDK_INT:I │ │ if-ge v0, v4, :cond_3 │ │ + .line 104 │ invoke-static {p1}, Lorg/smssecure/smssecure/util/SilencePreferences;->isInterceptAllSmsEnabled(Landroid/content/Context;)Z │ │ move-result v0 │ │ if-eqz v0, :cond_3 │ │ .line 106 │ @@ -333,14 +338,15 @@ │ │ invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z │ │ move-result v0 │ │ if-nez v0, :cond_0 │ │ + .line 117 │ invoke-virtual {p2}, Landroid/content/Intent;->getAction()Ljava/lang/String; │ │ move-result-object v0 │ │ const-string v1, "android.provider.Telephony.SMS_RECEIVED" │ │ invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ├── smali/org/smssecure/smssecure/service/ApplicationMigrationService.smali │ @@ -99,15 +99,14 @@ │ │ const/4 v1, 0x0 │ │ invoke-direct {v0, v1, v2}, Lorg/smssecure/smssecure/service/ApplicationMigrationService$ImportState;->(ILorg/smssecure/smssecure/database/SmsMigrator$ProgressDescription;)V │ │ iput-object v0, p0, Lorg/smssecure/smssecure/service/ApplicationMigrationService;->state:Lorg/smssecure/smssecure/service/ApplicationMigrationService$ImportState; │ │ - .line 203 │ return-void │ .end method │ │ .method static synthetic access$100()Ljava/lang/String; │ .locals 1 │ │ .prologue │ @@ -254,18 +253,20 @@ │ │ invoke-virtual {p0, v0, v2}, Landroid/content/Context;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences; │ │ move-result-object v0 │ │ const-string v1, "migrated" │ │ + .line 220 │ invoke-interface {v0, v1, v2}, Landroid/content/SharedPreferences;->getBoolean(Ljava/lang/String;Z)Z │ │ move-result v0 │ │ + .line 219 │ return v0 │ .end method │ │ .method private notifyImportComplete()V │ .locals 2 │ │ .prologue │ @@ -438,14 +439,15 @@ │ │ check-cast v0, Landroid/app/NotificationManager; │ │ const/16 v1, 0x1092 │ │ iget-object v2, p0, Lorg/smssecure/smssecure/service/ApplicationMigrationService;->notification:Landroid/support/v4/app/NotificationCompat$Builder; │ │ + .line 125 │ invoke-virtual {v2}, Landroid/support/v4/app/NotificationCompat$Builder;->build()Landroid/app/Notification; │ │ move-result-object v2 │ │ invoke-virtual {v0, v1, v2}, Landroid/app/NotificationManager;->notify(ILandroid/app/Notification;)V │ │ .line 126 ├── smali/org/smssecure/smssecure/sms/MultipartSmsTransportMessageFragments.smali │ @@ -236,14 +236,15 @@ │ │ const/4 v2, 0x0 │ │ iget-object v3, p0, Lorg/smssecure/smssecure/sms/MultipartSmsTransportMessageFragments;->fragments:[[B │ │ array-length v3, v3 │ │ + .line 55 │ invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v3 │ │ aput-object v3, v1, v2 │ │ const/4 v2, 0x1 │ @@ -304,13 +305,14 @@ │ │ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v3 │ │ aput-object v3, v1, v2 │ │ + .line 54 │ invoke-static {v0, v1}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v0 │ │ return-object v0 │ .end method ├── smali/org/smssecure/smssecure/sms/TelephonyServiceState.smali │ @@ -7,15 +7,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 9 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 73 │ return-void │ .end method │ │ │ # virtual methods │ .method public isConnected(Landroid/content/Context;)Z │ .locals 1 ├── smali/org/smssecure/smssecure/util/Base64.smali │ @@ -1266,14 +1266,15 @@ │ │ new-array v2, v2, [Ljava/lang/Object; │ │ const/4 v3, 0x0 │ │ array-length v4, p0 │ │ + .line 1175 │ invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v4 │ │ aput-object v4, v2, v3 │ │ const/4 v3, 0x1 │ @@ -1288,14 +1289,15 @@ │ │ invoke-static {p2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v4 │ │ aput-object v4, v2, v3 │ │ + .line 1174 │ invoke-static {v1, v2}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v1 │ │ invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ │ throw v0 │ @@ -1447,28 +1449,30 @@ │ │ new-array v2, v2, [Ljava/lang/Object; │ │ const/4 v4, 0x0 │ │ aget-byte v5, p0, v3 │ │ + .line 1222 │ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; │ │ move-result-object v5 │ │ aput-object v5, v2, v4 │ │ const/4 v4, 0x1 │ │ invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v3 │ │ aput-object v3, v2, v4 │ │ + .line 1221 │ invoke-static {v1, v2}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v1 │ │ invoke-direct {v0, v1}, Ljava/io/IOException;->(Ljava/lang/String;)V │ │ throw v0 │ @@ -1555,26 +1559,28 @@ │ │ const-string v3, "Source array with length %d cannot have offset of %d and still process four bytes." │ │ new-array v1, v1, [Ljava/lang/Object; │ │ array-length v4, p0 │ │ + .line 1063 │ invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v4 │ │ aput-object v4, v1, v5 │ │ invoke-static {p1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v4 │ │ aput-object v4, v1, v0 │ │ + .line 1062 │ invoke-static {v3, v1}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v0 │ │ invoke-direct {v2, v0}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ │ throw v2 │ @@ -1595,26 +1601,28 @@ │ │ const-string v3, "Destination array with length %d cannot have offset of %d and still store three bytes." │ │ new-array v1, v1, [Ljava/lang/Object; │ │ array-length v4, p2 │ │ + .line 1067 │ invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v4 │ │ aput-object v4, v1, v5 │ │ invoke-static {p3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v4 │ │ aput-object v4, v1, v0 │ │ + .line 1066 │ invoke-static {v3, v1}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v0 │ │ invoke-direct {v2, v0}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V │ │ throw v2 │ @@ -3147,14 +3155,15 @@ │ .line 925 │ new-instance v1, Ljava/lang/IllegalArgumentException; │ │ const-string v3, "Cannot have offset of %d and length of %d with array of length %d" │ │ new-array v2, v2, [Ljava/lang/Object; │ │ + .line 926 │ invoke-static {p1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v4 │ │ aput-object v4, v2, v7 │ │ invoke-static {p2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; ├── smali/org/smssecure/smssecure/util/BitmapUtil.smali │ @@ -335,14 +335,15 @@ │ move-result-object v1 │ │ .line 115 │ iget-object v0, v1, Landroid/util/Pair;->first:Ljava/lang/Object; │ │ check-cast v0, Ljava/lang/Integer; │ │ + .line 116 │ invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I │ │ move-result v0 │ │ int-to-float v0, v0 │ │ mul-float/2addr v0, p2 │ @@ -359,14 +360,15 @@ │ │ int-to-float v0, v0 │ │ mul-float/2addr v0, p2 │ │ float-to-int v0, v0 │ │ + .line 115 │ invoke-static {p0, p1, v2, v0}, Lorg/smssecure/smssecure/util/BitmapUtil;->createScaledBitmapInto(Landroid/content/Context;Ljava/lang/Object;II)Landroid/graphics/Bitmap; │ │ move-result-object v0 │ │ return-object v0 │ .end method │ │ @@ -467,28 +469,30 @@ │ .line 97 │ sget-object v0, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->AT_LEAST:Lcom/bumptech/glide/load/resource/bitmap/Downsampler; │ │ invoke-static {p0, p1}, Lorg/smssecure/smssecure/util/BitmapUtil;->getInputStreamForModel(Landroid/content/Context;Ljava/lang/Object;)Ljava/io/InputStream; │ │ move-result-object v1 │ │ + .line 98 │ invoke-static {p0}, Lcom/bumptech/glide/Glide;->get(Landroid/content/Context;)Lcom/bumptech/glide/Glide; │ │ move-result-object v2 │ │ invoke-virtual {v2}, Lcom/bumptech/glide/Glide;->getBitmapPool()Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool; │ │ move-result-object v2 │ │ sget-object v5, Lcom/bumptech/glide/load/DecodeFormat;->PREFER_RGB_565:Lcom/bumptech/glide/load/DecodeFormat; │ │ move v3, p2 │ │ move v4, p3 │ │ + .line 97 │ invoke-virtual/range {v0 .. v5}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->decode(Ljava/io/InputStream;Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;IILcom/bumptech/glide/load/DecodeFormat;)Landroid/graphics/Bitmap; │ │ move-result-object v0 │ │ .line 102 │ invoke-static {p0}, Lcom/bumptech/glide/Glide;->get(Landroid/content/Context;)Lcom/bumptech/glide/Glide; │ │ @@ -559,23 +563,25 @@ │ │ const/16 v7, 0x2d │ │ .line 45 │ .line 46 │ const/4 v0, 0x0 │ │ - .line 48 │ + .line 50 │ invoke-virtual {p2, p0}, Lorg/smssecure/smssecure/mms/MediaConstraints;->getImageMaxWidth(Landroid/content/Context;)I │ │ move-result v2 │ │ + .line 51 │ invoke-virtual {p2, p0}, Lorg/smssecure/smssecure/mms/MediaConstraints;->getImageMaxHeight(Landroid/content/Context;)I │ │ move-result v3 │ │ + .line 48 │ invoke-static {p0, p1, v2, v3}, Lorg/smssecure/smssecure/util/BitmapUtil;->createScaledBitmap(Landroid/content/Context;Ljava/lang/Object;II)Landroid/graphics/Bitmap; │ │ move-result-object v3 │ │ .line 54 │ :goto_0 │ :try_start_0 │ @@ -792,14 +798,15 @@ │ .catchall {:try_start_1 .. :try_end_1} :catchall_0 │ │ .line 69 │ if-eqz v3, :cond_3 │ │ invoke-virtual {v3}, Landroid/graphics/Bitmap;->recycle()V │ │ + .line 67 │ :cond_3 │ return-object v4 │ │ :cond_4 │ move v0, v1 │ │ move v1, v2 │ @@ -990,28 +997,31 @@ │ │ move-result-object v0 │ │ const/4 v1, -0x1 │ │ const/4 v2, -0x1 │ │ + .line 87 │ invoke-interface {v0, p1, v1, v2}, Lcom/bumptech/glide/load/model/ModelLoader;->getResourceFetcher(Ljava/lang/Object;II)Lcom/bumptech/glide/load/data/DataFetcher; │ │ move-result-object v0 │ │ sget-object v1, Lcom/bumptech/glide/Priority;->NORMAL:Lcom/bumptech/glide/Priority; │ │ + .line 88 │ invoke-interface {v0, v1}, Lcom/bumptech/glide/load/data/DataFetcher;->loadData(Lcom/bumptech/glide/Priority;)Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Ljava/io/InputStream; │ :try_end_0 │ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ │ + .line 86 │ return-object v0 │ │ .line 89 │ :catch_0 │ move-exception v0 │ │ .line 90 ├── smali/org/smssecure/smssecure/util/CharacterCalculator.smali │ @@ -7,15 +7,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 19 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 23 │ return-void │ .end method │ │ │ # virtual methods │ .method public abstract calculateCharacters(I)Lorg/smssecure/smssecure/util/CharacterCalculator$CharacterState; │ .end method ├── smali/org/smssecure/smssecure/util/DynamicLanguage.smali │ @@ -15,15 +15,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 15 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 80 │ return-void │ .end method │ │ .method private static getActivityLocale(Landroid/app/Activity;)Ljava/util/Locale; │ .locals 1 │ │ .prologue │ @@ -171,22 +170,24 @@ │ │ .line 59 │ :cond_0 │ invoke-virtual {p0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; │ │ move-result-object v1 │ │ + .line 60 │ invoke-virtual {p0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; │ │ move-result-object v2 │ │ invoke-virtual {v2}, Landroid/content/res/Resources;->getDisplayMetrics()Landroid/util/DisplayMetrics; │ │ move-result-object v2 │ │ + .line 59 │ invoke-virtual {v1, v0, v2}, Landroid/content/res/Resources;->updateConfiguration(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;)V │ │ .line 62 │ :cond_1 │ return-void │ .end method ├── smali/org/smssecure/smssecure/util/DynamicTheme.smali │ @@ -11,15 +11,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 8 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 35 │ return-void │ .end method │ │ │ # virtual methods │ .method protected getSelectedTheme(Landroid/app/Activity;)I │ .locals 2 ├── smali/org/smssecure/smssecure/util/GroupUtil.smali │ @@ -29,15 +29,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 16 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 51 │ return-void │ .end method │ │ .method public static getDecodedId(Ljava/lang/String;)[B │ .locals 2 │ .annotation system Ldalvik/annotation/Throws; │ value = { ├── smali/org/smssecure/smssecure/util/MediaUtil.smali │ @@ -27,15 +27,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 30 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 141 │ return-void │ .end method │ │ .method private static generateImageThumbnail(Landroid/content/Context;Lorg/smssecure/smssecure/crypto/MasterSecret;Landroid/net/Uri;)Landroid/graphics/Bitmap; │ .locals 2 │ .annotation system Ldalvik/annotation/Throws; │ value = { │ @@ -111,14 +110,15 @@ │ │ const/4 v5, 0x4 │ │ new-array v5, v5, [Ljava/lang/Object; │ │ const/4 v6, 0x0 │ │ + .line 45 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/util/MediaUtil$ThumbnailData;->getBitmap()Landroid/graphics/Bitmap; │ │ move-result-object v7 │ │ invoke-virtual {v7}, Landroid/graphics/Bitmap;->getWidth()I │ │ move-result v7 │ @@ -143,14 +143,15 @@ │ │ move-result-object v7 │ │ aput-object v7, v5, v6 │ │ const/4 v6, 0x2 │ │ + .line 46 │ invoke-virtual {v0}, Lorg/smssecure/smssecure/util/MediaUtil$ThumbnailData;->getAspectRatio()F │ │ move-result v7 │ │ invoke-static {v7}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float; │ │ move-result-object v7 │ @@ -167,14 +168,15 @@ │ │ invoke-static {v2, v3}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; │ │ move-result-object v2 │ │ aput-object v2, v5, v6 │ │ + .line 44 │ invoke-static {v4, v5}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v2 │ │ invoke-static {v1, v2}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I │ │ .line 49 ├── smali/org/smssecure/smssecure/util/NumberUtil.smali │ @@ -150,30 +150,34 @@ │ .line 38 │ invoke-static {p0}, Landroid/telephony/PhoneNumberUtils;->isWellFormedSmsAddress(Ljava/lang/String;)Z │ │ move-result v0 │ │ if-nez v0, :cond_0 │ │ + .line 39 │ invoke-static {p0}, Lorg/smssecure/smssecure/util/NumberUtil;->isValidEmail(Ljava/lang/String;)Z │ │ move-result v0 │ │ if-nez v0, :cond_0 │ │ + .line 40 │ invoke-static {p0}, Lorg/smssecure/smssecure/util/GroupUtil;->isEncodedGroup(Ljava/lang/String;)Z │ │ move-result v0 │ │ if-eqz v0, :cond_1 │ │ :cond_0 │ const/4 v0, 0x1 │ │ + .line 38 │ :goto_0 │ return v0 │ │ + .line 40 │ :cond_1 │ const/4 v0, 0x0 │ │ goto :goto_0 │ .end method ├── smali/org/smssecure/smssecure/util/PhoneNumberFormatter.smali │ @@ -45,30 +45,31 @@ │ move-result-object v0 │ │ .line 111 │ invoke-static {p0}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I │ │ move-result v1 │ │ - .line 112 │ + .line 113 │ invoke-virtual {v0, v1}, Lcom/google/i18n/phonenumbers/PhoneNumberUtil;->getRegionCodeForCountryCode(I)Ljava/lang/String; │ │ move-result-object v1 │ │ + .line 112 │ invoke-virtual {v0, p1, v1}, Lcom/google/i18n/phonenumbers/PhoneNumberUtil;->parse(Ljava/lang/String;Ljava/lang/String;)Lcom/google/i18n/phonenumbers/Phonenumber$PhoneNumber; │ │ move-result-object v1 │ │ .line 115 │ sget-object v2, Lcom/google/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat;->E164:Lcom/google/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat; │ │ invoke-virtual {v0, v1, v2}, Lcom/google/i18n/phonenumbers/PhoneNumberUtil;->format(Lcom/google/i18n/phonenumbers/Phonenumber$PhoneNumber;Lcom/google/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat;)Ljava/lang/String; │ :try_end_0 │ - .catch Lcom/google/i18n/phonenumbers/NumberParseException; {:try_start_0 .. :try_end_0} :catch_1 │ - .catch Ljava/lang/NumberFormatException; {:try_start_0 .. :try_end_0} :catch_0 │ + .catch Lcom/google/i18n/phonenumbers/NumberParseException; {:try_start_0 .. :try_end_0} :catch_0 │ + .catch Ljava/lang/NumberFormatException; {:try_start_0 .. :try_end_0} :catch_1 │ │ move-result-object v0 │ │ .line 120 │ :goto_0 │ return-object v0 │ │ @@ -93,14 +94,15 @@ │ │ move-result-object v0 │ │ const-string v1, "[^0-9]" │ │ const-string v2, "" │ │ + .line 121 │ invoke-virtual {p0, v1, v2}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v1 │ │ const-string v2, "^0*" │ │ const-string v3, "" │ @@ -113,14 +115,15 @@ │ │ move-result-object v0 │ │ const-string v1, "[^0-9]" │ │ const-string v2, "" │ │ + .line 122 │ invoke-virtual {p1, v1, v2}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v1 │ │ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ @@ -398,14 +401,15 @@ │ :cond_1 │ new-instance v0, Ljava/util/Locale; │ │ const-string v1, "" │ │ invoke-direct {v0, v1, p0}, Ljava/util/Locale;->(Ljava/lang/String;Ljava/lang/String;)V │ │ + .line 105 │ invoke-static {}, Ljava/util/Locale;->getDefault()Ljava/util/Locale; │ │ move-result-object v1 │ │ invoke-virtual {v0, v1}, Ljava/util/Locale;->getDisplayCountry(Ljava/util/Locale;)Ljava/lang/String; │ │ move-result-object v0 ├── smali/org/smssecure/smssecure/util/SaveAttachmentTask.smali │ @@ -87,14 +87,15 @@ │ │ .prologue │ const/4 v4, 0x1 │ │ const/4 v5, 0x0 │ │ .line 43 │ + .line 44 │ invoke-virtual {p1}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; │ │ move-result-object v0 │ │ const v1, 0x7f090007 │ │ new-array v2, v4, [Ljava/lang/Object; │ @@ -105,14 +106,15 @@ │ │ aput-object v3, v2, v5 │ │ invoke-virtual {v0, v1, p3, v2}, Landroid/content/res/Resources;->getQuantityString(II[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v0 │ │ + .line 45 │ invoke-virtual {p1}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; │ │ move-result-object v1 │ │ const v2, 0x7f090008 │ │ new-array v3, v4, [Ljava/lang/Object; │ @@ -123,14 +125,15 @@ │ │ aput-object v4, v3, v5 │ │ invoke-virtual {v1, v2, p3, v3}, Landroid/content/res/Resources;->getQuantityString(II[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v1 │ │ + .line 43 │ invoke-direct {p0, p1, v0, v1}, Lorg/smssecure/smssecure/util/task/ProgressDialogAsyncTask;->(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)V │ │ .line 46 │ new-instance v0, Ljava/lang/ref/WeakReference; │ │ invoke-direct {v0, p1}, Ljava/lang/ref/WeakReference;->(Ljava/lang/Object;)V │ │ @@ -598,20 +601,22 @@ │ │ const v2, 0x7f090009 │ │ new-array v3, v3, [Ljava/lang/Object; │ │ const/4 v4, 0x0 │ │ + .line 181 │ invoke-static {p2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v5 │ │ aput-object v5, v3, v4 │ │ + .line 180 │ invoke-virtual {v1, v2, p2, v3}, Landroid/content/res/Resources;->getQuantityString(II[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v1 │ │ invoke-virtual {v0, v1}, Landroid/support/v7/app/AlertDialog$Builder;->setMessage(Ljava/lang/CharSequence;)Landroid/support/v7/app/AlertDialog$Builder; │ │ .line 182 │ @@ -830,48 +835,52 @@ │ :pswitch_0 │ const v1, 0x7f0801db │ │ invoke-static {v0, v1, v4}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast; │ │ move-result-object v0 │ │ + .line 115 │ invoke-virtual {v0}, Landroid/widget/Toast;->show()V │ │ goto :goto_0 │ │ - .line 108 │ + .line 109 │ :pswitch_1 │ invoke-virtual {v0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; │ │ move-result-object v1 │ │ const v2, 0x7f090006 │ │ iget v3, p0, Lorg/smssecure/smssecure/util/SaveAttachmentTask;->attachmentCount:I │ │ invoke-virtual {v1, v2, v3}, Landroid/content/res/Resources;->getQuantityText(II)Ljava/lang/CharSequence; │ │ move-result-object v1 │ │ + .line 108 │ invoke-static {v0, v1, v4}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast; │ │ move-result-object v0 │ │ + .line 111 │ invoke-virtual {v0}, Landroid/widget/Toast;->show()V │ │ goto :goto_0 │ │ .line 118 │ :pswitch_2 │ const v1, 0x7f080046 │ │ invoke-static {v0, v1, v4}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast; │ │ move-result-object v0 │ │ + .line 119 │ invoke-virtual {v0}, Landroid/widget/Toast;->show()V │ │ goto :goto_0 │ │ .line 106 │ :pswitch_data_0 │ .packed-switch 0x0 ├── smali/org/smssecure/smssecure/util/SmilUtil.smali │ @@ -225,42 +225,47 @@ │ │ move-result-object v0 │ │ const-string v1, "<" │ │ const-string v2, "<" │ │ + .line 127 │ invoke-virtual {v0, v1, v2}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v0 │ │ const-string v1, ">" │ │ const-string v2, ">" │ │ + .line 128 │ invoke-virtual {v0, v1, v2}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v0 │ │ const-string v1, "\"" │ │ const-string v2, """ │ │ + .line 129 │ invoke-virtual {v0, v1, v2}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v0 │ │ const-string v1, "\'" │ │ const-string v2, "'" │ │ + .line 130 │ invoke-virtual {v0, v1, v2}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v0 │ │ + .line 126 │ return-object v0 │ .end method │ │ .method private static getMediaElement(Lorg/w3c/dom/smil/SMILDocument;Lws/com/google/android/mms/pdu/PduPart;)Lorg/w3c/dom/smil/SMILMediaElement; │ .locals 3 │ │ .prologue │ @@ -284,17 +289,19 @@ │ │ if-nez v1, :cond_4 │ │ const/4 v1, 0x0 │ │ new-array v1, v1, [B │ │ + .line 116 │ :goto_1 │ invoke-direct {v2, v1}, Ljava/lang/String;->([B)V │ │ + .line 114 │ invoke-static {v0, p0, v2}, Lorg/smssecure/smssecure/util/SmilUtil;->createMediaElement(Ljava/lang/String;Lorg/w3c/dom/smil/SMILDocument;Ljava/lang/String;)Lorg/w3c/dom/smil/SMILMediaElement; │ │ move-result-object v0 │ │ return-object v0 │ │ .line 105 │ @@ -338,15 +345,15 @@ │ │ .line 112 │ :cond_3 │ const-string v0, "ref" │ │ goto :goto_0 │ │ - .line 114 │ + .line 116 │ :cond_4 │ invoke-virtual {p1}, Lws/com/google/android/mms/pdu/PduPart;->getName()[B │ │ move-result-object v1 │ │ goto :goto_1 │ .end method ├── smali/org/smssecure/smssecure/util/TelephonyUtil.smali │ @@ -177,44 +177,48 @@ │ invoke-static {v0, v4}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I │ │ .line 32 │ const-string v4, "%03d%d" │ │ new-array v5, v6, [Ljava/lang/Object; │ │ + .line 33 │ invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v0 │ │ aput-object v0, v5, v1 │ │ const/4 v3, 0x1 │ │ const v0, 0xffff │ │ if-ne v2, v0, :cond_2 │ │ move v0, v1 │ │ + .line 34 │ :goto_1 │ invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v0 │ │ aput-object v0, v5, v3 │ │ + .line 32 │ invoke-static {v4, v5}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v0 │ │ goto :goto_0 │ │ :cond_2 │ move v0, v2 │ │ + .line 33 │ goto :goto_1 │ │ .line 36 │ :cond_3 │ const/4 v0, 0x0 │ │ goto :goto_0 ├── smali/org/smssecure/smssecure/util/Trimmer$TrimmingProgressTask.smali │ @@ -112,14 +112,15 @@ │ │ const/4 v2, 0x1 │ │ invoke-static {v0, v1, v2}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast; │ │ move-result-object v0 │ │ + .line 57 │ invoke-virtual {v0}, Landroid/widget/Toast;->show()V │ │ .line 58 │ return-void │ .end method │ │ .method protected onPreExecute()V ├── smali/org/smssecure/smssecure/util/Trimmer.smali │ @@ -7,15 +7,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 12 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 18 │ return-void │ .end method │ │ .method public static trimAllThreads(Landroid/content/Context;I)V │ .locals 4 │ │ .prologue ├── smali/org/smssecure/smssecure/util/Util.smali │ @@ -284,20 +284,22 @@ │ │ const/4 v2, 0x1 │ │ invoke-direct {v1, v2}, Landroid/text/style/StyleSpan;->(I)V │ │ const/4 v2, 0x0 │ │ + .line 122 │ invoke-virtual {v0}, Landroid/text/SpannableString;->length()I │ │ move-result v3 │ │ const/16 v4, 0x21 │ │ + .line 121 │ invoke-virtual {v0, v1, v2, v3, v4}, Landroid/text/SpannableString;->setSpan(Ljava/lang/Object;III)V │ │ .line 125 │ return-object v0 │ .end method │ │ .method public static getCurrentApkReleaseVersion(Landroid/content/Context;)I │ @@ -347,14 +349,15 @@ │ │ invoke-virtual {p0, v0}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Landroid/telephony/TelephonyManager; │ │ + .line 210 │ invoke-virtual {v0}, Landroid/telephony/TelephonyManager;->getLine1Number()Ljava/lang/String; │ │ move-result-object v0 │ │ .line 212 │ invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z │ │ @@ -517,14 +520,15 @@ │ .line 283 │ sget v0, Landroid/os/Build$VERSION;->SDK_INT:I │ │ const/16 v1, 0x13 │ │ if-lt v0, v1, :cond_0 │ │ + .line 284 │ invoke-virtual {p0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; │ │ move-result-object v0 │ │ invoke-static {p0}, Landroid/provider/Telephony$Sms;->getDefaultSmsPackage(Landroid/content/Context;)Ljava/lang/String; │ │ move-result-object v1 │ @@ -534,17 +538,19 @@ │ move-result v0 │ │ if-eqz v0, :cond_1 │ │ :cond_0 │ const/4 v0, 0x1 │ │ + .line 283 │ :goto_0 │ return v0 │ │ + .line 284 │ :cond_1 │ const/4 v0, 0x0 │ │ goto :goto_0 │ .end method │ │ .method public static isEmpty(Landroid/widget/EditText;)Z │ @@ -634,29 +640,32 @@ │ │ invoke-virtual {v0}, Landroid/app/ActivityManager;->isLowRamDevice()Z │ │ move-result v1 │ │ if-nez v1, :cond_1 │ │ + .line 347 │ :cond_0 │ invoke-virtual {v0}, Landroid/app/ActivityManager;->getMemoryClass()I │ │ move-result v0 │ │ const/16 v1, 0x40 │ │ if-gt v0, v1, :cond_2 │ │ :cond_1 │ const/4 v0, 0x1 │ │ + .line 346 │ :goto_0 │ return v0 │ │ + .line 347 │ :cond_2 │ const/4 v0, 0x0 │ │ goto :goto_0 │ .end method │ │ .method public static isMainThread()Z ├── smali/org/smssecure/smssecure/util/ViewUtil.smali │ @@ -146,19 +146,21 @@ │ if-eq v0, v1, :cond_1 │ │ .line 102 │ :cond_0 │ :goto_0 │ return-object p0 │ │ + .line 103 │ :cond_1 │ invoke-virtual {p1}, Landroid/widget/TextView;->getPaint()Landroid/text/TextPaint; │ │ move-result-object v0 │ │ + .line 104 │ invoke-virtual {p1}, Landroid/widget/TextView;->getWidth()I │ │ move-result v1 │ │ invoke-virtual {p1}, Landroid/widget/TextView;->getPaddingRight()I │ │ move-result v2 │ @@ -171,14 +173,15 @@ │ │ sub-int/2addr v1, v2 │ │ int-to-float v1, v1 │ │ sget-object v2, Landroid/text/TextUtils$TruncateAt;->END:Landroid/text/TextUtils$TruncateAt; │ │ + .line 102 │ invoke-static {p0, v0, v1, v2}, Landroid/text/TextUtils;->ellipsize(Ljava/lang/CharSequence;Landroid/text/TextPaint;FLandroid/text/TextUtils$TruncateAt;)Ljava/lang/CharSequence; │ │ move-result-object p0 │ │ goto :goto_0 │ .end method │ │ @@ -425,14 +428,15 @@ │ .line 195 │ sget v0, Landroid/os/Build$VERSION;->SDK_INT:I │ │ const/16 v1, 0x11 │ │ if-lt v0, v1, :cond_0 │ │ + .line 196 │ invoke-static {p1}, Lorg/smssecure/smssecure/util/DynamicLanguage;->getLayoutDirection(Landroid/content/Context;)I │ │ move-result v0 │ │ const/4 v1, 0x1 │ │ if-ne v0, v1, :cond_0 ├── smali/org/smssecure/smssecure/util/deque/LinkedBlockingDeque.smali │ @@ -745,15 +745,15 @@ │ │ .prologue │ const/4 v0, 0x0 │ │ .line 803 │ if-nez p1, :cond_0 │ │ - .line 812 │ + .line 810 │ :goto_0 │ return v0 │ │ .line 804 │ :cond_0 │ iget-object v2, p0, Lorg/smssecure/smssecure/util/deque/LinkedBlockingDeque;->lock:Ljava/util/concurrent/locks/ReentrantLock; │ │ @@ -921,16 +921,18 @@ │ │ goto :goto_0 │ │ .line 735 │ :cond_2 │ invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ │ + .line 733 │ return v2 │ │ + .line 735 │ :catchall_0 │ move-exception v0 │ │ invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ │ throw v0 │ .end method │ @@ -1108,16 +1110,18 @@ │ .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ │ move-result v0 │ │ .line 323 │ invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ │ + .line 321 │ return v0 │ │ + .line 323 │ :catchall_0 │ move-exception v0 │ │ invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ │ throw v0 │ .end method │ @@ -1185,14 +1189,15 @@ │ │ .line 390 │ const/4 v0, 0x0 │ │ .line 395 │ invoke-virtual {v3}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ │ + .line 393 │ :goto_1 │ return v0 │ │ .line 391 │ :cond_1 │ :try_start_1 │ iget-object v4, p0, Lorg/smssecure/smssecure/util/deque/LinkedBlockingDeque;->notFull:Ljava/util/concurrent/locks/Condition; │ @@ -1259,16 +1264,18 @@ │ .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ │ move-result v0 │ │ .line 338 │ invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ │ + .line 336 │ return v0 │ │ + .line 338 │ :catchall_0 │ move-exception v0 │ │ invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ │ throw v0 │ .end method │ @@ -1336,14 +1343,15 @@ │ │ .line 413 │ const/4 v0, 0x0 │ │ .line 418 │ invoke-virtual {v3}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ │ + .line 416 │ :goto_1 │ return v0 │ │ .line 414 │ :cond_1 │ :try_start_1 │ iget-object v4, p0, Lorg/smssecure/smssecure/util/deque/LinkedBlockingDeque;->notFull:Ljava/util/concurrent/locks/Condition; │ @@ -1415,17 +1423,17 @@ │ │ const/4 v0, 0x0 │ │ .line 546 │ :goto_0 │ invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ │ + .line 544 │ return-object v0 │ │ - .line 544 │ :cond_0 │ :try_start_1 │ iget-object v0, p0, Lorg/smssecure/smssecure/util/deque/LinkedBlockingDeque;->first:Lorg/smssecure/smssecure/util/deque/LinkedBlockingDeque$Node; │ │ iget-object v0, v0, Lorg/smssecure/smssecure/util/deque/LinkedBlockingDeque$Node;->item:Ljava/lang/Object; │ :try_end_1 │ .catchall {:try_start_1 .. :try_end_1} :catchall_0 │ @@ -1466,17 +1474,17 @@ │ │ const/4 v0, 0x0 │ │ .line 556 │ :goto_0 │ invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ │ + .line 554 │ return-object v0 │ │ - .line 554 │ :cond_0 │ :try_start_1 │ iget-object v0, p0, Lorg/smssecure/smssecure/util/deque/LinkedBlockingDeque;->last:Lorg/smssecure/smssecure/util/deque/LinkedBlockingDeque$Node; │ │ iget-object v0, v0, Lorg/smssecure/smssecure/util/deque/LinkedBlockingDeque$Node;->item:Ljava/lang/Object; │ :try_end_1 │ .catchall {:try_start_1 .. :try_end_1} :catchall_0 │ @@ -1556,16 +1564,18 @@ │ .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ │ move-result-object v1 │ │ .line 446 │ invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ │ + .line 444 │ return-object v1 │ │ + .line 446 │ :catchall_0 │ move-exception v1 │ │ invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ │ throw v1 │ .end method │ @@ -1620,14 +1630,15 @@ │ │ .line 495 │ const/4 v0, 0x0 │ │ .line 500 │ invoke-virtual {v4}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ │ + .line 498 │ :goto_1 │ return-object v0 │ │ .line 496 │ :cond_0 │ :try_start_1 │ iget-object v0, p0, Lorg/smssecure/smssecure/util/deque/LinkedBlockingDeque;->notEmpty:Ljava/util/concurrent/locks/Condition; │ @@ -1678,16 +1689,18 @@ │ .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ │ move-result-object v1 │ │ .line 456 │ invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ │ + .line 454 │ return-object v1 │ │ + .line 456 │ :catchall_0 │ move-exception v1 │ │ invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ │ throw v1 │ .end method │ @@ -1742,14 +1755,15 @@ │ │ .line 513 │ const/4 v0, 0x0 │ │ .line 518 │ invoke-virtual {v4}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ │ + .line 516 │ :goto_1 │ return-object v0 │ │ .line 514 │ :cond_0 │ :try_start_1 │ iget-object v0, p0, Lorg/smssecure/smssecure/util/deque/LinkedBlockingDeque;->notEmpty:Ljava/util/concurrent/locks/Condition; │ @@ -1990,16 +2004,18 @@ │ .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ │ sub-int/2addr v0, v2 │ │ .line 700 │ invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ │ + .line 698 │ return v0 │ │ + .line 700 │ :catchall_0 │ move-exception v0 │ │ invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ │ throw v0 │ .end method │ @@ -2066,15 +2082,15 @@ │ │ .prologue │ const/4 v0, 0x0 │ │ .line 561 │ if-nez p1, :cond_0 │ │ - .line 573 │ + .line 571 │ :goto_0 │ return v0 │ │ .line 562 │ :cond_0 │ iget-object v2, p0, Lorg/smssecure/smssecure/util/deque/LinkedBlockingDeque;->lock:Ljava/util/concurrent/locks/ReentrantLock; │ │ @@ -2166,15 +2182,15 @@ │ │ .prologue │ const/4 v0, 0x0 │ │ .line 578 │ if-nez p1, :cond_0 │ │ - .line 590 │ + .line 588 │ :goto_0 │ return v0 │ │ .line 579 │ :cond_0 │ iget-object v2, p0, Lorg/smssecure/smssecure/util/deque/LinkedBlockingDeque;->lock:Ljava/util/concurrent/locks/ReentrantLock; │ │ @@ -2248,16 +2264,18 @@ │ iget v1, p0, Lorg/smssecure/smssecure/util/deque/LinkedBlockingDeque;->count:I │ :try_end_0 │ .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ │ .line 789 │ invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ │ + .line 787 │ return v1 │ │ + .line 789 │ :catchall_0 │ move-exception v1 │ │ invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ │ throw v1 │ .end method │ @@ -2331,14 +2349,15 @@ │ invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ │ throw v0 │ │ :cond_0 │ invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ │ + .line 467 │ return-object v0 │ .end method │ │ .method public takeLast()Ljava/lang/Object; │ .locals 2 │ .annotation system Ldalvik/annotation/Signature; │ value = { │ @@ -2384,14 +2403,15 @@ │ invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ │ throw v0 │ │ :cond_0 │ invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ │ + .line 480 │ return-object v0 │ .end method │ │ .method public toArray()[Ljava/lang/Object; │ .locals 6 │ │ .prologue │ @@ -2432,16 +2452,18 @@ │ │ goto :goto_0 │ │ .line 882 │ :cond_0 │ invoke-virtual {v3}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ │ + .line 880 │ return-object v4 │ │ + .line 882 │ :catchall_0 │ move-exception v0 │ │ invoke-virtual {v3}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ │ throw v0 │ .end method │ @@ -2467,15 +2489,15 @@ │ :try_start_0 │ array-length v0, p1 │ │ iget v1, p0, Lorg/smssecure/smssecure/util/deque/LinkedBlockingDeque;->count:I │ │ if-ge v0, v1, :cond_0 │ │ - .line 929 │ + .line 930 │ invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Ljava/lang/Class;->getComponentType()Ljava/lang/Class; │ │ move-result-object v0 │ @@ -2529,16 +2551,18 @@ │ :try_end_0 │ .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ │ .line 939 │ :cond_2 │ invoke-virtual {v3}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ │ + .line 937 │ return-object p1 │ │ + .line 939 │ :catchall_0 │ move-exception v0 │ │ invoke-virtual {v3}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ │ throw v0 │ .end method │ @@ -2564,14 +2588,15 @@ │ const-string v0, "[]" │ :try_end_0 │ .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ │ .line 963 │ invoke-virtual {v2}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V │ │ + .line 959 │ :goto_0 │ return-object v0 │ │ .line 952 │ :cond_0 │ :try_start_1 │ new-instance v3, Ljava/lang/StringBuilder; ├── smali/org/smssecure/smssecure/util/dualsim/SubscriptionManagerCompat.smali │ @@ -242,20 +242,22 @@ │ .line 51 │ new-instance v3, Lorg/smssecure/smssecure/util/dualsim/SubscriptionInfoCompat; │ │ invoke-virtual {v0}, Landroid/telephony/SubscriptionInfo;->getSubscriptionId()I │ │ move-result v4 │ │ + .line 52 │ invoke-virtual {v0}, Landroid/telephony/SubscriptionInfo;->getDisplayName()Ljava/lang/CharSequence; │ │ move-result-object v0 │ │ invoke-direct {v3, v4, v0}, Lorg/smssecure/smssecure/util/dualsim/SubscriptionInfoCompat;->(ILjava/lang/CharSequence;)V │ │ + .line 51 │ invoke-interface {v1, v3}, Ljava/util/List;->add(Ljava/lang/Object;)Z │ │ goto :goto_1 │ │ :cond_3 │ move-object v0, v1 ├── smali/org/smssecure/smssecure/util/task/SnackbarAsyncTask.smali │ @@ -203,14 +203,15 @@ │ │ invoke-direct {v0, p0}, Lorg/smssecure/smssecure/util/task/SnackbarAsyncTask$1;->(Lorg/smssecure/smssecure/util/task/SnackbarAsyncTask;)V │ │ const/4 v1, 0x0 │ │ new-array v1, v1, [Ljava/lang/Void; │ │ + .line 88 │ invoke-virtual {v0, v1}, Lorg/smssecure/smssecure/util/task/SnackbarAsyncTask$1;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; │ │ .line 89 │ return-void │ .end method │ │ .method protected bridge synthetic onPostExecute(Ljava/lang/Object;)V │ @@ -258,24 +259,27 @@ │ │ invoke-static {v0, v1, v2}, Landroid/support/design/widget/Snackbar;->make(Landroid/view/View;Ljava/lang/CharSequence;I)Landroid/support/design/widget/Snackbar; │ │ move-result-object v0 │ │ iget-object v1, p0, Lorg/smssecure/smssecure/util/task/SnackbarAsyncTask;->snackbarActionText:Ljava/lang/String; │ │ + .line 61 │ invoke-virtual {v0, v1, p0}, Landroid/support/design/widget/Snackbar;->setAction(Ljava/lang/CharSequence;Landroid/view/View$OnClickListener;)Landroid/support/design/widget/Snackbar; │ │ move-result-object v0 │ │ iget v1, p0, Lorg/smssecure/smssecure/util/task/SnackbarAsyncTask;->snackbarActionColor:I │ │ + .line 62 │ invoke-virtual {v0, v1}, Landroid/support/design/widget/Snackbar;->setActionTextColor(I)Landroid/support/design/widget/Snackbar; │ │ move-result-object v0 │ │ + .line 63 │ invoke-virtual {v0}, Landroid/support/design/widget/Snackbar;->show()V │ │ .line 64 │ return-void │ .end method │ │ .method protected onPreExecute()V ├── smali/org/whispersystems/jobqueue/persistence/PersistentStorage.smali │ @@ -386,14 +386,15 @@ │ │ const/4 v3, 0x1 │ │ new-array v3, v3, [Ljava/lang/String; │ │ const/4 v4, 0x0 │ │ + .line 114 │ invoke-static {p1, p2}, Ljava/lang/String;->valueOf(J)Ljava/lang/String; │ │ move-result-object v5 │ │ aput-object v5, v3, v4 │ │ invoke-virtual {v0, v1, v2, v3}, Landroid/database/sqlite/SQLiteDatabase;->delete(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)I ├── smali/org/whispersystems/libaxolotl/SessionCipher.smali │ @@ -406,17 +406,17 @@ │ │ invoke-direct {v2, v1}, Ljavax/crypto/spec/IvParameterSpec;->([B)V │ │ .line 436 │ invoke-virtual {v0, p1, p2, v2}, Ljavax/crypto/Cipher;->init(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V │ :try_end_0 │ .catch Ljava/security/NoSuchAlgorithmException; {:try_start_0 .. :try_end_0} :catch_1 │ - .catch Ljavax/crypto/NoSuchPaddingException; {:try_start_0 .. :try_end_0} :catch_0 │ + .catch Ljavax/crypto/NoSuchPaddingException; {:try_start_0 .. :try_end_0} :catch_2 │ .catch Ljava/security/InvalidKeyException; {:try_start_0 .. :try_end_0} :catch_3 │ - .catch Ljava/security/InvalidAlgorithmParameterException; {:try_start_0 .. :try_end_0} :catch_2 │ + .catch Ljava/security/InvalidAlgorithmParameterException; {:try_start_0 .. :try_end_0} :catch_0 │ │ .line 438 │ return-object v0 │ │ .line 439 │ :catch_0 │ move-exception v0 │ @@ -458,17 +458,17 @@ │ │ move-result-object v0 │ │ .line 449 │ invoke-virtual {v0, p1, p2, p3}, Ljavax/crypto/Cipher;->init(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V │ :try_end_0 │ .catch Ljava/security/NoSuchAlgorithmException; {:try_start_0 .. :try_end_0} :catch_1 │ - .catch Ljavax/crypto/NoSuchPaddingException; {:try_start_0 .. :try_end_0} :catch_0 │ + .catch Ljavax/crypto/NoSuchPaddingException; {:try_start_0 .. :try_end_0} :catch_2 │ .catch Ljava/security/InvalidKeyException; {:try_start_0 .. :try_end_0} :catch_3 │ - .catch Ljava/security/InvalidAlgorithmParameterException; {:try_start_0 .. :try_end_0} :catch_2 │ + .catch Ljava/security/InvalidAlgorithmParameterException; {:try_start_0 .. :try_end_0} :catch_0 │ │ .line 450 │ return-object v0 │ │ .line 451 │ :catch_0 │ move-exception v0 │ @@ -541,16 +541,16 @@ │ │ invoke-virtual {p2}, Lorg/whispersystems/libaxolotl/ratchet/MessageKeys;->getCounter()I │ │ move-result v2 │ │ invoke-direct {p0, v0, v1, v2}, Lorg/whispersystems/libaxolotl/SessionCipher;->getCipher(ILjavax/crypto/spec/SecretKeySpec;I)Ljavax/crypto/Cipher; │ :try_end_0 │ - .catch Ljavax/crypto/IllegalBlockSizeException; {:try_start_0 .. :try_end_0} :catch_0 │ - .catch Ljavax/crypto/BadPaddingException; {:try_start_0 .. :try_end_0} :catch_1 │ + .catch Ljavax/crypto/IllegalBlockSizeException; {:try_start_0 .. :try_end_0} :catch_1 │ + .catch Ljavax/crypto/BadPaddingException; {:try_start_0 .. :try_end_0} :catch_0 │ │ move-result-object v0 │ │ goto :goto_0 │ │ .line 405 │ :catch_0 │ @@ -881,16 +881,16 @@ │ │ invoke-virtual {p2}, Lorg/whispersystems/libaxolotl/ratchet/MessageKeys;->getCounter()I │ │ move-result v2 │ │ invoke-direct {p0, v0, v1, v2}, Lorg/whispersystems/libaxolotl/SessionCipher;->getCipher(ILjavax/crypto/spec/SecretKeySpec;I)Ljavax/crypto/Cipher; │ :try_end_0 │ - .catch Ljavax/crypto/IllegalBlockSizeException; {:try_start_0 .. :try_end_0} :catch_0 │ - .catch Ljavax/crypto/BadPaddingException; {:try_start_0 .. :try_end_0} :catch_1 │ + .catch Ljavax/crypto/IllegalBlockSizeException; {:try_start_0 .. :try_end_0} :catch_1 │ + .catch Ljavax/crypto/BadPaddingException; {:try_start_0 .. :try_end_0} :catch_0 │ │ move-result-object v0 │ │ goto :goto_0 │ │ .line 423 │ :catch_0 ├── smali/org/whispersystems/libaxolotl/groups/GroupCipher.smali │ @@ -72,20 +72,20 @@ │ invoke-direct {v3, p2, v4}, Ljavax/crypto/spec/SecretKeySpec;->([BLjava/lang/String;)V │ │ invoke-virtual {v1, v2, v3, v0}, Ljavax/crypto/Cipher;->init(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V │ │ .line 180 │ invoke-virtual {v1, p3}, Ljavax/crypto/Cipher;->doFinal([B)[B │ :try_end_0 │ - .catch Ljava/security/NoSuchAlgorithmException; {:try_start_0 .. :try_end_0} :catch_1 │ - .catch Ljavax/crypto/NoSuchPaddingException; {:try_start_0 .. :try_end_0} :catch_0 │ - .catch Ljava/security/InvalidAlgorithmParameterException; {:try_start_0 .. :try_end_0} :catch_2 │ - .catch Ljavax/crypto/IllegalBlockSizeException; {:try_start_0 .. :try_end_0} :catch_3 │ - .catch Ljavax/crypto/BadPaddingException; {:try_start_0 .. :try_end_0} :catch_4 │ - .catch Ljava/security/InvalidKeyException; {:try_start_0 .. :try_end_0} :catch_5 │ + .catch Ljava/security/NoSuchAlgorithmException; {:try_start_0 .. :try_end_0} :catch_2 │ + .catch Ljavax/crypto/NoSuchPaddingException; {:try_start_0 .. :try_end_0} :catch_3 │ + .catch Ljava/security/InvalidAlgorithmParameterException; {:try_start_0 .. :try_end_0} :catch_1 │ + .catch Ljavax/crypto/IllegalBlockSizeException; {:try_start_0 .. :try_end_0} :catch_5 │ + .catch Ljavax/crypto/BadPaddingException; {:try_start_0 .. :try_end_0} :catch_0 │ + .catch Ljava/security/InvalidKeyException; {:try_start_0 .. :try_end_0} :catch_4 │ │ move-result-object v0 │ │ return-object v0 │ │ .line 181 │ :catch_0 │ @@ -159,19 +159,19 @@ │ │ invoke-virtual {v1, v2, v3, v0}, Ljavax/crypto/Cipher;->init(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V │ │ .line 163 │ invoke-virtual {v1, p3}, Ljavax/crypto/Cipher;->doFinal([B)[B │ :try_end_0 │ .catch Ljava/security/NoSuchAlgorithmException; {:try_start_0 .. :try_end_0} :catch_3 │ - .catch Ljavax/crypto/NoSuchPaddingException; {:try_start_0 .. :try_end_0} :catch_0 │ + .catch Ljavax/crypto/NoSuchPaddingException; {:try_start_0 .. :try_end_0} :catch_4 │ .catch Ljava/security/InvalidKeyException; {:try_start_0 .. :try_end_0} :catch_5 │ - .catch Ljava/security/InvalidAlgorithmParameterException; {:try_start_0 .. :try_end_0} :catch_4 │ - .catch Ljavax/crypto/IllegalBlockSizeException; {:try_start_0 .. :try_end_0} :catch_1 │ - .catch Ljavax/crypto/BadPaddingException; {:try_start_0 .. :try_end_0} :catch_2 │ + .catch Ljava/security/InvalidAlgorithmParameterException; {:try_start_0 .. :try_end_0} :catch_0 │ + .catch Ljavax/crypto/IllegalBlockSizeException; {:try_start_0 .. :try_end_0} :catch_2 │ + .catch Ljavax/crypto/BadPaddingException; {:try_start_0 .. :try_end_0} :catch_1 │ │ move-result-object v0 │ │ return-object v0 │ │ .line 164 │ :catch_0 ├── smali/org/whispersystems/libpastelog/R.smali │ @@ -7,10 +7,9 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 9 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 29 │ return-void │ .end method ├── smali/org/whispersystems/libpastelog/SubmitLogFragment$5.smali │ @@ -38,14 +38,15 @@ │ .method public onLongClick(Landroid/view/View;)Z │ .locals 3 │ │ .prologue │ .line 258 │ iget-object v0, p0, Lorg/whispersystems/libpastelog/SubmitLogFragment$5;->this$0:Lorg/whispersystems/libpastelog/SubmitLogFragment; │ │ + .line 259 │ invoke-virtual {v0}, Lorg/whispersystems/libpastelog/SubmitLogFragment;->getActivity()Landroid/support/v4/app/FragmentActivity; │ │ move-result-object v0 │ │ const-string v1, "clipboard" │ │ invoke-virtual {v0, v1}, Landroid/support/v4/app/FragmentActivity;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; │ @@ -70,14 +71,15 @@ │ │ const/4 v2, 0x0 │ │ invoke-static {v0, v1, v2}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast; │ │ move-result-object v0 │ │ + .line 263 │ invoke-virtual {v0}, Landroid/widget/Toast;->show()V │ │ .line 264 │ const/4 v0, 0x1 │ │ return v0 │ .end method ├── smali/org/whispersystems/libpastelog/SubmitLogFragment$7.smali │ @@ -42,26 +42,29 @@ │ .line 290 │ iget-object v0, p0, Lorg/whispersystems/libpastelog/SubmitLogFragment$7;->this$0:Lorg/whispersystems/libpastelog/SubmitLogFragment; │ │ iget-object v1, p0, Lorg/whispersystems/libpastelog/SubmitLogFragment$7;->this$0:Lorg/whispersystems/libpastelog/SubmitLogFragment; │ │ iget-object v2, p0, Lorg/whispersystems/libpastelog/SubmitLogFragment$7;->val$logUrl:Ljava/lang/String; │ │ + .line 291 │ # invokes: Lorg/whispersystems/libpastelog/SubmitLogFragment;->getIntentForSupportEmail(Ljava/lang/String;)Landroid/content/Intent; │ invoke-static {v1, v2}, Lorg/whispersystems/libpastelog/SubmitLogFragment;->access$500(Lorg/whispersystems/libpastelog/SubmitLogFragment;Ljava/lang/String;)Landroid/content/Intent; │ │ move-result-object v1 │ │ iget-object v2, p0, Lorg/whispersystems/libpastelog/SubmitLogFragment$7;->this$0:Lorg/whispersystems/libpastelog/SubmitLogFragment; │ │ sget v3, Lorg/whispersystems/libpastelog/R$string;->log_submit_activity__choose_email_app:I │ │ + .line 292 │ invoke-virtual {v2, v3}, Lorg/whispersystems/libpastelog/SubmitLogFragment;->getString(I)Ljava/lang/String; │ │ move-result-object v2 │ │ + .line 290 │ # invokes: Lorg/whispersystems/libpastelog/SubmitLogFragment;->handleShowChooserForIntent(Landroid/content/Intent;Ljava/lang/String;)V │ invoke-static {v0, v1, v2}, Lorg/whispersystems/libpastelog/SubmitLogFragment;->access$600(Lorg/whispersystems/libpastelog/SubmitLogFragment;Landroid/content/Intent;Ljava/lang/String;)V │ │ .line 294 │ return-void │ .end method ├── smali/org/whispersystems/libpastelog/SubmitLogFragment.smali │ @@ -207,38 +207,41 @@ │ │ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v2 │ │ sget-object v3, Landroid/os/Build;->MANUFACTURER:Ljava/lang/String; │ │ + .line 434 │ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v2 │ │ const-string v3, " " │ │ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v2 │ │ sget-object v3, Landroid/os/Build;->MODEL:Ljava/lang/String; │ │ + .line 435 │ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v2 │ │ const-string v3, " (" │ │ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v2 │ │ sget-object v3, Landroid/os/Build;->PRODUCT:Ljava/lang/String; │ │ + .line 436 │ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v2 │ │ const-string v3, ")\n" │ │ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ @@ -260,26 +263,28 @@ │ │ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v2 │ │ sget-object v3, Landroid/os/Build$VERSION;->INCREMENTAL:Ljava/lang/String; │ │ + .line 438 │ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v2 │ │ const-string v3, ", " │ │ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v2 │ │ sget-object v3, Landroid/os/Build;->DISPLAY:Ljava/lang/String; │ │ + .line 439 │ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v2 │ │ const-string v3, ")\n" │ │ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ @@ -362,18 +367,20 @@ │ │ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/CharSequence;)Ljava/lang/StringBuilder; │ │ move-result-object v2 │ │ const-string v3, " " │ │ + .line 446 │ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v2 │ │ + .line 447 │ invoke-virtual {p0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; │ │ move-result-object v3 │ │ const/4 v4, 0x0 │ │ invoke-virtual {v0, v3, v4}, Landroid/content/pm/PackageManager;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo; │ @@ -384,14 +391,15 @@ │ │ invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v0 │ │ const-string v2, "\n" │ │ + .line 448 │ invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ :try_end_0 │ .catch Landroid/content/pm/PackageManager$NameNotFoundException; {:try_start_0 .. :try_end_0} :catch_0 │ │ .line 453 │ :goto_0 │ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ @@ -450,18 +458,20 @@ │ │ sget v2, Lorg/whispersystems/libpastelog/R$string;->log_submit_activity__please_review_this_log_from_my_app:I │ │ new-array v3, v5, [Ljava/lang/Object; │ │ aput-object p1, v3, v4 │ │ + .line 209 │ invoke-virtual {p0, v2, v3}, Lorg/whispersystems/libpastelog/SubmitLogFragment;->getString(I[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v2 │ │ + .line 207 │ invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent; │ │ .line 211 │ const-string v1, "message/rfc822" │ │ invoke-virtual {v0, v1}, Landroid/content/Intent;->setType(Ljava/lang/String;)Landroid/content/Intent; │ │ @@ -548,14 +558,15 @@ │ │ const/4 v3, 0x3 │ │ new-array v3, v3, [Ljava/lang/Object; │ │ const/4 v4, 0x0 │ │ + .line 412 │ invoke-virtual {v0}, Ljava/lang/Runtime;->totalMemory()J │ │ move-result-wide v6 │ │ invoke-static {v6, v7}, Lorg/whispersystems/libpastelog/SubmitLogFragment;->asMegs(J)J │ │ move-result-wide v6 │ @@ -564,14 +575,15 @@ │ │ move-result-object v5 │ │ aput-object v5, v3, v4 │ │ const/4 v4, 0x1 │ │ + .line 413 │ invoke-virtual {v0}, Ljava/lang/Runtime;->freeMemory()J │ │ move-result-wide v6 │ │ long-to-float v5, v6 │ │ invoke-virtual {v0}, Ljava/lang/Runtime;->totalMemory()J │ @@ -590,28 +602,30 @@ │ │ move-result-object v5 │ │ aput-object v5, v3, v4 │ │ const/4 v4, 0x2 │ │ + .line 414 │ invoke-virtual {v0}, Ljava/lang/Runtime;->maxMemory()J │ │ move-result-wide v6 │ │ invoke-static {v6, v7}, Lorg/whispersystems/libpastelog/SubmitLogFragment;->asMegs(J)J │ │ move-result-wide v6 │ │ invoke-static {v6, v7}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; │ │ move-result-object v0 │ │ aput-object v0, v3, v4 │ │ + .line 411 │ invoke-static {v1, v2, v3}, Ljava/lang/String;->format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v0 │ │ return-object v0 │ .end method │ │ @@ -800,26 +814,29 @@ │ │ move-result-object v0 │ │ new-instance v2, Lorg/whispersystems/libpastelog/SubmitLogFragment$4; │ │ invoke-direct {v2, p0, v1, p1}, Lorg/whispersystems/libpastelog/SubmitLogFragment$4;->(Lorg/whispersystems/libpastelog/SubmitLogFragment;Lorg/whispersystems/libpastelog/ShareIntentListAdapter;Landroid/content/Intent;)V │ │ + .line 221 │ invoke-virtual {v0, v1, v2}, Landroid/app/AlertDialog$Builder;->setAdapter(Landroid/widget/ListAdapter;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder; │ │ move-result-object v0 │ │ new-instance v1, Lorg/whispersystems/libpastelog/SubmitLogFragment$3; │ │ invoke-direct {v1, p0}, Lorg/whispersystems/libpastelog/SubmitLogFragment$3;->(Lorg/whispersystems/libpastelog/SubmitLogFragment;)V │ │ + .line 233 │ invoke-virtual {v0, v1}, Landroid/app/AlertDialog$Builder;->setOnCancelListener(Landroid/content/DialogInterface$OnCancelListener;)Landroid/app/AlertDialog$Builder; │ │ move-result-object v0 │ │ + .line 242 │ invoke-virtual {v0}, Landroid/app/AlertDialog$Builder;->create()Landroid/app/AlertDialog; │ │ move-result-object v0 │ │ invoke-virtual {v0}, Landroid/app/AlertDialog;->show()V │ │ .line 243 │ @@ -847,30 +864,33 @@ │ .line 276 │ sget v2, Lorg/whispersystems/libpastelog/R$string;->log_submit_activity__success:I │ │ invoke-virtual {v1, v2}, Landroid/app/AlertDialog$Builder;->setTitle(I)Landroid/app/AlertDialog$Builder; │ │ move-result-object v2 │ │ + .line 277 │ invoke-virtual {v2, v0}, Landroid/app/AlertDialog$Builder;->setView(Landroid/view/View;)Landroid/app/AlertDialog$Builder; │ │ move-result-object v0 │ │ const/4 v2, 0x0 │ │ + .line 278 │ invoke-virtual {v0, v2}, Landroid/app/AlertDialog$Builder;->setCancelable(Z)Landroid/app/AlertDialog$Builder; │ │ move-result-object v0 │ │ sget v2, Lorg/whispersystems/libpastelog/R$string;->log_submit_activity__button_got_it:I │ │ new-instance v3, Lorg/whispersystems/libpastelog/SubmitLogFragment$6; │ │ invoke-direct {v3, p0}, Lorg/whispersystems/libpastelog/SubmitLogFragment$6;->(Lorg/whispersystems/libpastelog/SubmitLogFragment;)V │ │ + .line 279 │ invoke-virtual {v0, v2, v3}, Landroid/app/AlertDialog$Builder;->setNeutralButton(ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder; │ │ .line 286 │ iget-object v0, p0, Lorg/whispersystems/libpastelog/SubmitLogFragment;->supportEmailAddress:Ljava/lang/String; │ │ if-eqz v0, :cond_0 ├── smali/org/whispersystems/libpastelog/util/Scrubber.smali │ @@ -153,14 +153,15 @@ │ │ invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v8 │ │ new-instance v9, Ljava/lang/String; │ │ + .line 54 │ invoke-virtual {v6}, Ljava/util/regex/Matcher;->group()Ljava/lang/String; │ │ move-result-object v10 │ │ invoke-virtual {v10}, Ljava/lang/String;->length()I │ │ move-result v10 │ @@ -179,14 +180,15 @@ │ │ move-result-object v9 │ │ invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v8 │ │ + .line 55 │ invoke-virtual {v6}, Ljava/util/regex/Matcher;->group()Ljava/lang/String; │ │ move-result-object v9 │ │ invoke-virtual {v6}, Ljava/util/regex/Matcher;->group()Ljava/lang/String; │ │ move-result-object v10 ├── smali/org/whispersystems/textsecure/api/crypto/AttachmentCipherInputStream.smali │ @@ -91,16 +91,16 @@ │ │ invoke-direct {v0, v1}, Lorg/whispersystems/libaxolotl/InvalidMessageException;->(Ljava/lang/String;)V │ │ throw v0 │ :try_end_0 │ .catch Ljava/security/NoSuchAlgorithmException; {:try_start_0 .. :try_end_0} :catch_0 │ .catch Ljava/security/InvalidKeyException; {:try_start_0 .. :try_end_0} :catch_4 │ - .catch Ljavax/crypto/NoSuchPaddingException; {:try_start_0 .. :try_end_0} :catch_2 │ - .catch Ljava/security/InvalidAlgorithmParameterException; {:try_start_0 .. :try_end_0} :catch_3 │ + .catch Ljavax/crypto/NoSuchPaddingException; {:try_start_0 .. :try_end_0} :catch_3 │ + .catch Ljava/security/InvalidAlgorithmParameterException; {:try_start_0 .. :try_end_0} :catch_2 │ .catch Lorg/whispersystems/libaxolotl/InvalidMacException; {:try_start_0 .. :try_end_0} :catch_1 │ │ .line 85 │ :catch_0 │ move-exception v0 │ │ .line 86 │ @@ -187,16 +187,16 @@ │ │ sub-long v0, v2, v0 │ │ iput-wide v0, p0, Lorg/whispersystems/textsecure/api/crypto/AttachmentCipherInputStream;->totalDataSize:J │ :try_end_1 │ .catch Ljava/security/NoSuchAlgorithmException; {:try_start_1 .. :try_end_1} :catch_0 │ .catch Ljava/security/InvalidKeyException; {:try_start_1 .. :try_end_1} :catch_4 │ - .catch Ljavax/crypto/NoSuchPaddingException; {:try_start_1 .. :try_end_1} :catch_2 │ - .catch Ljava/security/InvalidAlgorithmParameterException; {:try_start_1 .. :try_end_1} :catch_3 │ + .catch Ljavax/crypto/NoSuchPaddingException; {:try_start_1 .. :try_end_1} :catch_3 │ + .catch Ljava/security/InvalidAlgorithmParameterException; {:try_start_1 .. :try_end_1} :catch_2 │ .catch Lorg/whispersystems/libaxolotl/InvalidMacException; {:try_start_1 .. :try_end_1} :catch_1 │ │ .line 90 │ return-void │ │ .line 87 │ :catch_1 │ @@ -244,16 +244,16 @@ │ move-result v0 │ │ .line 126 │ const/4 v1, 0x1 │ │ iput-boolean v1, p0, Lorg/whispersystems/textsecure/api/crypto/AttachmentCipherInputStream;->done:Z │ :try_end_0 │ - .catch Ljavax/crypto/IllegalBlockSizeException; {:try_start_0 .. :try_end_0} :catch_0 │ - .catch Ljavax/crypto/BadPaddingException; {:try_start_0 .. :try_end_0} :catch_1 │ + .catch Ljavax/crypto/IllegalBlockSizeException; {:try_start_0 .. :try_end_0} :catch_1 │ + .catch Ljavax/crypto/BadPaddingException; {:try_start_0 .. :try_end_0} :catch_0 │ .catch Ljavax/crypto/ShortBufferException; {:try_start_0 .. :try_end_0} :catch_2 │ │ .line 127 │ return v0 │ │ .line 128 │ :catch_0 ├── smali/org/whispersystems/textsecure/api/crypto/AttachmentCipherOutputStream.smali │ @@ -174,16 +174,16 @@ │ .prologue │ .line 116 │ :try_start_0 │ const-string v0, "AES/CBC/PKCS5Padding" │ │ invoke-static {v0}, Ljavax/crypto/Cipher;->getInstance(Ljava/lang/String;)Ljavax/crypto/Cipher; │ :try_end_0 │ - .catch Ljava/security/NoSuchAlgorithmException; {:try_start_0 .. :try_end_0} :catch_1 │ - .catch Ljavax/crypto/NoSuchPaddingException; {:try_start_0 .. :try_end_0} :catch_0 │ + .catch Ljava/security/NoSuchAlgorithmException; {:try_start_0 .. :try_end_0} :catch_0 │ + .catch Ljavax/crypto/NoSuchPaddingException; {:try_start_0 .. :try_end_0} :catch_1 │ │ move-result-object v0 │ │ return-object v0 │ │ .line 117 │ :catch_0 │ @@ -291,16 +291,16 @@ │ iput-wide v0, p0, Lorg/whispersystems/textsecure/api/crypto/AttachmentCipherOutputStream;->ciphertextLength:J │ │ .line 96 │ iget-object v0, p0, Lorg/whispersystems/textsecure/api/crypto/AttachmentCipherOutputStream;->outputStream:Ljava/io/OutputStream; │ │ invoke-virtual {v0}, Ljava/io/OutputStream;->flush()V │ :try_end_0 │ - .catch Ljavax/crypto/IllegalBlockSizeException; {:try_start_0 .. :try_end_0} :catch_0 │ - .catch Ljavax/crypto/BadPaddingException; {:try_start_0 .. :try_end_0} :catch_1 │ + .catch Ljavax/crypto/IllegalBlockSizeException; {:try_start_0 .. :try_end_0} :catch_1 │ + .catch Ljavax/crypto/BadPaddingException; {:try_start_0 .. :try_end_0} :catch_0 │ │ .line 100 │ return-void │ │ .line 97 │ :catch_0 │ move-exception v0 ├── smali/org/whispersystems/textsecure/api/messages/TextSecureEnvelope.smali │ @@ -329,18 +329,18 @@ │ add-int/lit8 v2, v2, -0x10 │ │ add-int/lit8 v2, v2, -0xa │ │ invoke-virtual {v0, p1, v1, v2}, Ljavax/crypto/Cipher;->doFinal([BII)[B │ :try_end_0 │ .catch Ljava/security/NoSuchAlgorithmException; {:try_start_0 .. :try_end_0} :catch_2 │ - .catch Ljavax/crypto/NoSuchPaddingException; {:try_start_0 .. :try_end_0} :catch_0 │ - .catch Ljava/security/InvalidKeyException; {:try_start_0 .. :try_end_0} :catch_5 │ - .catch Ljava/security/InvalidAlgorithmParameterException; {:try_start_0 .. :try_end_0} :catch_3 │ - .catch Ljavax/crypto/IllegalBlockSizeException; {:try_start_0 .. :try_end_0} :catch_4 │ + .catch Ljavax/crypto/NoSuchPaddingException; {:try_start_0 .. :try_end_0} :catch_3 │ + .catch Ljava/security/InvalidKeyException; {:try_start_0 .. :try_end_0} :catch_4 │ + .catch Ljava/security/InvalidAlgorithmParameterException; {:try_start_0 .. :try_end_0} :catch_0 │ + .catch Ljavax/crypto/IllegalBlockSizeException; {:try_start_0 .. :try_end_0} :catch_5 │ .catch Ljavax/crypto/BadPaddingException; {:try_start_0 .. :try_end_0} :catch_1 │ │ move-result-object v0 │ │ return-object v0 │ │ .line 226 ├── smali/org/whispersystems/textsecure/api/util/PhoneNumberFormatter.smali │ @@ -60,16 +60,16 @@ │ move-result-object v1 │ │ .line 119 │ sget-object v2, Lcom/google/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat;->E164:Lcom/google/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat; │ │ invoke-virtual {v0, v1, v2}, Lcom/google/i18n/phonenumbers/PhoneNumberUtil;->format(Lcom/google/i18n/phonenumbers/Phonenumber$PhoneNumber;Lcom/google/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat;)Ljava/lang/String; │ :try_end_0 │ - .catch Lcom/google/i18n/phonenumbers/NumberParseException; {:try_start_0 .. :try_end_0} :catch_1 │ - .catch Ljava/lang/NumberFormatException; {:try_start_0 .. :try_end_0} :catch_0 │ + .catch Lcom/google/i18n/phonenumbers/NumberParseException; {:try_start_0 .. :try_end_0} :catch_0 │ + .catch Ljava/lang/NumberFormatException; {:try_start_0 .. :try_end_0} :catch_1 │ │ move-result-object v0 │ │ .line 126 │ :goto_0 │ return-object v0 ├── smali/org/whispersystems/textsecure/internal/crypto/ProvisioningCipher.smali │ @@ -85,18 +85,18 @@ │ move-result-object v0 │ │ aput-object v0, v1, v2 │ │ invoke-static {v1}, Lorg/whispersystems/textsecure/internal/util/Util;->join([[B)[B │ :try_end_0 │ .catch Ljava/security/NoSuchAlgorithmException; {:try_start_0 .. :try_end_0} :catch_1 │ - .catch Ljavax/crypto/NoSuchPaddingException; {:try_start_0 .. :try_end_0} :catch_0 │ - .catch Ljava/security/InvalidKeyException; {:try_start_0 .. :try_end_0} :catch_4 │ - .catch Ljavax/crypto/IllegalBlockSizeException; {:try_start_0 .. :try_end_0} :catch_2 │ - .catch Ljavax/crypto/BadPaddingException; {:try_start_0 .. :try_end_0} :catch_3 │ + .catch Ljavax/crypto/NoSuchPaddingException; {:try_start_0 .. :try_end_0} :catch_2 │ + .catch Ljava/security/InvalidKeyException; {:try_start_0 .. :try_end_0} :catch_3 │ + .catch Ljavax/crypto/IllegalBlockSizeException; {:try_start_0 .. :try_end_0} :catch_4 │ + .catch Ljavax/crypto/BadPaddingException; {:try_start_0 .. :try_end_0} :catch_0 │ │ move-result-object v0 │ │ return-object v0 │ │ .line 59 │ :catch_0 ├── smali/org/whispersystems/textsecure/internal/util/BlacklistingTrustManager.smali │ @@ -93,17 +93,17 @@ │ .line 72 │ invoke-virtual {v0}, Ljavax/net/ssl/TrustManagerFactory;->getTrustManagers()[Ljavax/net/ssl/TrustManager; │ │ move-result-object v0 │ │ invoke-static {v0}, Lorg/whispersystems/textsecure/internal/util/BlacklistingTrustManager;->createFor([Ljavax/net/ssl/TrustManager;)[Ljavax/net/ssl/TrustManager; │ :try_end_0 │ - .catch Ljava/security/KeyStoreException; {:try_start_0 .. :try_end_0} :catch_3 │ - .catch Ljava/security/cert/CertificateException; {:try_start_0 .. :try_end_0} :catch_0 │ - .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_2 │ + .catch Ljava/security/KeyStoreException; {:try_start_0 .. :try_end_0} :catch_0 │ + .catch Ljava/security/cert/CertificateException; {:try_start_0 .. :try_end_0} :catch_2 │ + .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_3 │ .catch Ljava/security/NoSuchAlgorithmException; {:try_start_0 .. :try_end_0} :catch_1 │ │ move-result-object v0 │ │ return-object v0 │ │ .line 73 ├── smali/pl/tajchert/waitingdots/R.smali │ @@ -7,10 +7,9 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 9 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 729 │ return-void │ .end method ├── smali/ws/com/google/android/mms/pdu/PduComposer.smali │ @@ -402,26 +402,28 @@ │ invoke-virtual {v0, p1}, Lws/com/google/android/mms/pdu/PduHeaders;->getEncodedStringValue(I)Lws/com/google/android/mms/pdu/EncodedStringValue; │ │ move-result-object v0 │ │ .line 534 │ if-eqz v0, :cond_5 │ │ + .line 535 │ invoke-virtual {v0}, Lws/com/google/android/mms/pdu/EncodedStringValue;->getString()Ljava/lang/String; │ │ move-result-object v3 │ │ invoke-static {v3}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z │ │ move-result v3 │ │ if-nez v3, :cond_5 │ │ new-instance v3, Ljava/lang/String; │ │ + .line 536 │ invoke-virtual {v0}, Lws/com/google/android/mms/pdu/EncodedStringValue;->getTextString()[B │ │ move-result-object v4 │ │ invoke-direct {v3, v4}, Ljava/lang/String;->([B)V │ │ const-string v4, "insert-address-token" │ @@ -550,14 +552,15 @@ │ │ goto/16 :goto_0 │ │ .line 589 │ :pswitch_7 │ iget-object v2, p0, Lws/com/google/android/mms/pdu/PduComposer;->mPduHeader:Lws/com/google/android/mms/pdu/PduHeaders; │ │ + .line 590 │ invoke-virtual {v2, p1}, Lws/com/google/android/mms/pdu/PduHeaders;->getEncodedStringValue(I)Lws/com/google/android/mms/pdu/EncodedStringValue; │ │ move-result-object v2 │ │ .line 591 │ if-nez v2, :cond_a │ │ @@ -594,18 +597,20 @@ │ .line 605 │ :cond_b │ invoke-virtual {p0, p1}, Lws/com/google/android/mms/pdu/PduComposer;->appendOctet(I)V │ │ .line 606 │ const-string v0, "advertisement" │ │ + .line 607 │ invoke-virtual {v0}, Ljava/lang/String;->getBytes()[B │ │ move-result-object v0 │ │ + .line 606 │ invoke-static {v2, v0}, Ljava/util/Arrays;->equals([B[B)Z │ │ move-result v0 │ │ if-eqz v0, :cond_c │ │ .line 608 │ @@ -613,18 +618,20 @@ │ │ goto/16 :goto_0 │ │ .line 609 │ :cond_c │ const-string v0, "auto" │ │ + .line 610 │ invoke-virtual {v0}, Ljava/lang/String;->getBytes()[B │ │ move-result-object v0 │ │ + .line 609 │ invoke-static {v2, v0}, Ljava/util/Arrays;->equals([B[B)Z │ │ move-result v0 │ │ if-eqz v0, :cond_d │ │ .line 611 │ @@ -634,18 +641,20 @@ │ │ goto/16 :goto_0 │ │ .line 612 │ :cond_d │ const-string v0, "personal" │ │ + .line 613 │ invoke-virtual {v0}, Ljava/lang/String;->getBytes()[B │ │ move-result-object v0 │ │ + .line 612 │ invoke-static {v2, v0}, Ljava/util/Arrays;->equals([B[B)Z │ │ move-result v0 │ │ if-eqz v0, :cond_e │ │ .line 614 │ @@ -653,18 +662,20 @@ │ │ goto/16 :goto_0 │ │ .line 615 │ :cond_e │ const-string v0, "informational" │ │ + .line 616 │ invoke-virtual {v0}, Ljava/lang/String;->getBytes()[B │ │ move-result-object v0 │ │ + .line 615 │ invoke-static {v2, v0}, Ljava/util/Arrays;->equals([B[B)Z │ │ move-result v0 │ │ if-eqz v0, :cond_f │ │ .line 617 │ @@ -1217,14 +1228,15 @@ │ :cond_5 │ sget-object v0, Lws/com/google/android/mms/pdu/PduComposer;->mContentTypeMap:Ljava/util/HashMap; │ │ new-instance v10, Ljava/lang/String; │ │ invoke-direct {v10, v9}, Ljava/lang/String;->([B)V │ │ + .line 922 │ invoke-virtual {v0, v10}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Ljava/lang/Integer; │ │ .line 923 ├── smali/ws/com/google/android/mms/pdu/PduHeaders.smali │ @@ -70,14 +70,15 @@ │ │ throw v0 │ │ .line 676 │ :sswitch_0 │ iget-object v0, p0, Lws/com/google/android/mms/pdu/PduHeaders;->mHeaderMap:Ljava/util/HashMap; │ │ + .line 677 │ invoke-static {p2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v1 │ │ invoke-virtual {v0, v1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object; │ │ move-result-object v0 │ @@ -142,14 +143,15 @@ │ .method public getEncodedStringValues(I)[Lws/com/google/android/mms/pdu/EncodedStringValue; │ .locals 2 │ │ .prologue │ .line 573 │ iget-object v0, p0, Lws/com/google/android/mms/pdu/PduHeaders;->mHeaderMap:Ljava/util/HashMap; │ │ + .line 574 │ invoke-static {p1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v1 │ │ invoke-virtual {v0, v1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object; │ │ move-result-object v0 ├── smali/ws/com/google/android/mms/pdu/PduParser.smali │ @@ -1056,14 +1056,15 @@ │ │ goto :goto_1 │ │ .line 1481 │ :cond_9 │ sget-object v0, Lws/com/google/android/mms/pdu/PduContentTypes;->contentTypes:[Ljava/lang/String; │ │ + .line 1482 │ invoke-static {p0}, Lws/com/google/android/mms/pdu/PduParser;->parseShortInteger(Ljava/io/ByteArrayInputStream;)I │ │ move-result v1 │ │ aget-object v0, v0, v1 │ │ invoke-virtual {v0}, Ljava/lang/String;->getBytes()[B │ @@ -2237,14 +2238,15 @@ │ .line 1638 │ const-string v5, "Content-Transfer-Encoding" │ │ new-instance v6, Ljava/lang/String; │ │ invoke-direct {v6, v0}, Ljava/lang/String;->([B)V │ │ + .line 1639 │ invoke-virtual {v5, v6}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z │ │ move-result v0 │ │ if-ne v1, v0, :cond_e │ │ .line 1640 │ @@ -2524,45 +2526,51 @@ │ :cond_6 │ invoke-virtual {v1}, Lws/com/google/android/mms/pdu/PduPart;->getContentLocation()[B │ │ move-result-object v0 │ │ if-nez v0, :cond_7 │ │ + .line 793 │ invoke-virtual {v1}, Lws/com/google/android/mms/pdu/PduPart;->getName()[B │ │ move-result-object v0 │ │ if-nez v0, :cond_7 │ │ + .line 794 │ invoke-virtual {v1}, Lws/com/google/android/mms/pdu/PduPart;->getFilename()[B │ │ move-result-object v0 │ │ if-nez v0, :cond_7 │ │ + .line 795 │ invoke-virtual {v1}, Lws/com/google/android/mms/pdu/PduPart;->getContentId()[B │ │ move-result-object v0 │ │ if-nez v0, :cond_7 │ │ - .line 796 │ + .line 797 │ invoke-static {}, Ljava/lang/System;->currentTimeMillis()J │ │ move-result-wide v10 │ │ + .line 796 │ invoke-static {v10, v11}, Ljava/lang/Long;->toOctalString(J)Ljava/lang/String; │ │ move-result-object v0 │ │ + .line 797 │ invoke-virtual {v0}, Ljava/lang/String;->getBytes()[B │ │ move-result-object v0 │ │ + .line 796 │ invoke-virtual {v1, v0}, Lws/com/google/android/mms/pdu/PduPart;->setContentLocation([B)V │ │ .line 801 │ :cond_7 │ if-lez v8, :cond_c │ │ .line 802 │ @@ -3222,22 +3230,24 @@ │ │ move-result v2 │ │ if-nez v2, :cond_5 │ │ const-string v2, "application/vnd.wap.multipart.related" │ │ + .line 162 │ invoke-virtual {v3, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z │ │ move-result v2 │ │ if-nez v2, :cond_5 │ │ const-string v2, "application/vnd.wap.multipart.alternative" │ │ + .line 163 │ invoke-virtual {v3, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z │ │ move-result v2 │ │ if-eqz v2, :cond_6 │ │ :cond_5 │ @@ -3761,15 +3771,15 @@ │ invoke-static {v0}, Lws/com/google/android/mms/pdu/PduParser;->log(Ljava/lang/String;)V │ │ move-object v0, v2 │ │ .line 364 │ goto/16 :goto_0 │ │ - .line 380 │ + .line 381 │ :pswitch_7 │ invoke-static {p1}, Lws/com/google/android/mms/pdu/PduParser;->parseEncodedStringValue(Ljava/io/ByteArrayInputStream;)Lws/com/google/android/mms/pdu/EncodedStringValue; │ │ move-result-object v4 │ │ .line 382 │ if-eqz v4, :cond_1 │ @@ -3820,15 +3830,15 @@ │ invoke-static {v0}, Lws/com/google/android/mms/pdu/PduParser;->log(Ljava/lang/String;)V │ │ move-object v0, v2 │ │ .line 389 │ goto/16 :goto_0 │ │ - .line 400 │ + .line 401 │ :pswitch_8 │ invoke-static {p1}, Lws/com/google/android/mms/pdu/PduParser;->parseEncodedStringValue(Ljava/io/ByteArrayInputStream;)Lws/com/google/android/mms/pdu/EncodedStringValue; │ │ move-result-object v5 │ │ .line 402 │ if-eqz v5, :cond_1 │ @@ -4139,14 +4149,15 @@ │ .line 498 │ :cond_8 │ :try_start_c │ new-instance v4, Lws/com/google/android/mms/pdu/EncodedStringValue; │ │ const-string v5, "insert-address-token" │ │ + .line 499 │ invoke-virtual {v5}, Ljava/lang/String;->getBytes()[B │ │ move-result-object v5 │ │ invoke-direct {v4, v5}, Lws/com/google/android/mms/pdu/EncodedStringValue;->([B)V │ :try_end_c │ .catch Ljava/lang/NullPointerException; {:try_start_c .. :try_end_c} :catch_11 │ @@ -4228,20 +4239,22 @@ │ .line 525 │ if-ne v12, v4, :cond_9 │ │ .line 526 │ :try_start_d │ const-string v4, "personal" │ │ + .line 527 │ invoke-virtual {v4}, Ljava/lang/String;->getBytes()[B │ │ move-result-object v4 │ │ const/16 v5, 0x8a │ │ + .line 526 │ invoke-virtual {v3, v4, v5}, Lws/com/google/android/mms/pdu/PduHeaders;->setTextString([BI)V │ :try_end_d │ .catch Ljava/lang/NullPointerException; {:try_start_d .. :try_end_d} :catch_13 │ .catch Ljava/lang/RuntimeException; {:try_start_d .. :try_end_d} :catch_14 │ │ goto/16 :goto_1 │ │ @@ -4262,20 +4275,22 @@ │ │ if-ne v5, v4, :cond_a │ │ .line 530 │ :try_start_e │ const-string v4, "advertisement" │ │ + .line 531 │ invoke-virtual {v4}, Ljava/lang/String;->getBytes()[B │ │ move-result-object v4 │ │ const/16 v5, 0x8a │ │ + .line 530 │ invoke-virtual {v3, v4, v5}, Lws/com/google/android/mms/pdu/PduHeaders;->setTextString([BI)V │ :try_end_e │ .catch Ljava/lang/NullPointerException; {:try_start_e .. :try_end_e} :catch_13 │ .catch Ljava/lang/RuntimeException; {:try_start_e .. :try_end_e} :catch_14 │ │ goto/16 :goto_1 │ │ @@ -4315,39 +4330,43 @@ │ │ if-ne v5, v4, :cond_b │ │ .line 534 │ :try_start_f │ const-string v4, "informational" │ │ + .line 535 │ invoke-virtual {v4}, Ljava/lang/String;->getBytes()[B │ │ move-result-object v4 │ │ const/16 v5, 0x8a │ │ + .line 534 │ invoke-virtual {v3, v4, v5}, Lws/com/google/android/mms/pdu/PduHeaders;->setTextString([BI)V │ │ goto/16 :goto_1 │ │ .line 537 │ :cond_b │ const/16 v5, 0x83 │ │ if-ne v5, v4, :cond_1 │ │ .line 538 │ const-string v4, "auto" │ │ + .line 539 │ invoke-virtual {v4}, Ljava/lang/String;->getBytes()[B │ │ move-result-object v4 │ │ const/16 v5, 0x8a │ │ + .line 538 │ invoke-virtual {v3, v4, v5}, Lws/com/google/android/mms/pdu/PduHeaders;->setTextString([BI)V │ :try_end_f │ .catch Ljava/lang/NullPointerException; {:try_start_f .. :try_end_f} :catch_13 │ .catch Ljava/lang/RuntimeException; {:try_start_f .. :try_end_f} :catch_14 │ │ goto/16 :goto_1 │ │ @@ -4508,15 +4527,15 @@ │ │ .line 590 │ :try_start_12 │ invoke-static {p1}, Lws/com/google/android/mms/pdu/PduParser;->parseIntegerValue(Ljava/io/ByteArrayInputStream;)J │ :try_end_12 │ .catch Ljava/lang/RuntimeException; {:try_start_12 .. :try_end_12} :catch_1a │ │ - .line 597 │ + .line 598 │ invoke-static {p1}, Lws/com/google/android/mms/pdu/PduParser;->parseEncodedStringValue(Ljava/io/ByteArrayInputStream;)Lws/com/google/android/mms/pdu/EncodedStringValue; │ │ move-result-object v4 │ │ .line 599 │ if-eqz v4, :cond_1 │ │ @@ -4752,15 +4771,15 @@ │ │ .line 693 │ :pswitch_12 │ new-instance v4, Ljava/util/HashMap; │ │ invoke-direct {v4}, Ljava/util/HashMap;->()V │ │ - .line 695 │ + .line 696 │ invoke-static {p1, v4}, Lws/com/google/android/mms/pdu/PduParser;->parseContentType(Ljava/io/ByteArrayInputStream;Ljava/util/HashMap;)[B │ │ move-result-object v0 │ │ .line 698 │ if-eqz v0, :cond_d