--- /home/hans/code/fdroid/data/tmp/com.selesca.xkcdmuzei_1.apk +++ /home/hans/code/fdroid/data/tmp/sigcp_com.selesca.xkcdmuzei_1.apk ├── zipinfo {} │ @@ -1,9 +1,9 @@ │ -Zip file size: 120677 bytes, number of entries: 7 │ +Zip file size: 121890 bytes, number of entries: 7 │ -rw---- 2.0 fat 356 bl defN 14-Oct-20 08:10 META-INF/MANIFEST.MF │ -rw---- 2.0 fat 477 bl defN 14-Oct-20 08:10 META-INF/5BE36F26.SF │ -rw---- 2.0 fat 1332 bl defN 14-Oct-20 08:10 META-INF/5BE36F26.RSA │ --rw---- 2.0 fat 2236 bX defN 14-Oct-20 05:37 AndroidManifest.xml │ --rw---- 1.0 fat 968 b- stor 14-Oct-20 05:37 resources.arsc │ --rw---- 1.0 fat 3383 b- stor 14-Oct-20 05:37 res/drawable-nodpi/ic_source.png │ --rw---- 2.0 fat 461904 bl defN 14-Oct-20 05:37 classes.dex │ -7 files, 470656 bytes uncompressed, 119758 bytes compressed: 74.6% │ +-rw---- 2.0 fat 2236 bX defN 08-Jan-01 00:00 AndroidManifest.xml │ +-rw---- 1.0 fat 968 b- stor 08-Jan-01 00:00 resources.arsc │ +-rw---- 1.0 fat 3383 b- stor 08-Jan-01 00:00 res/drawable-nodpi/ic_source.png │ +-rw---- 2.0 fat 465784 bl defN 08-Jan-01 00:00 classes.dex │ +7 files, 474536 bytes uncompressed, 120994 bytes compressed: 74.5% ├── smali/com/google/android/apps/muzei/api/Artwork$Builder.smali │ @@ -19,109 +19,109 @@ │ │ │ # direct methods │ .method public constructor ()V │ .locals 2 │ │ .prologue │ - .line 123 │ + .line 125 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 124 │ + .line 126 │ new-instance v0, Lcom/google/android/apps/muzei/api/Artwork; │ │ const/4 v1, 0x0 │ │ invoke-direct {v0, v1}, Lcom/google/android/apps/muzei/api/Artwork;->(Lcom/google/android/apps/muzei/api/Artwork$1;)V │ │ iput-object v0, p0, Lcom/google/android/apps/muzei/api/Artwork$Builder;->mArtwork:Lcom/google/android/apps/muzei/api/Artwork; │ │ - .line 125 │ + .line 127 │ return-void │ .end method │ │ │ # virtual methods │ .method public build()Lcom/google/android/apps/muzei/api/Artwork; │ .locals 1 │ │ .prologue │ - .line 197 │ + .line 199 │ iget-object v0, p0, Lcom/google/android/apps/muzei/api/Artwork$Builder;->mArtwork:Lcom/google/android/apps/muzei/api/Artwork; │ │ return-object v0 │ .end method │ │ .method public byline(Ljava/lang/String;)Lcom/google/android/apps/muzei/api/Artwork$Builder; │ .locals 1 │ .param p1, "byline" # Ljava/lang/String; │ │ .prologue │ - .line 163 │ + .line 165 │ iget-object v0, p0, Lcom/google/android/apps/muzei/api/Artwork$Builder;->mArtwork:Lcom/google/android/apps/muzei/api/Artwork; │ │ # setter for: Lcom/google/android/apps/muzei/api/Artwork;->mByline:Ljava/lang/String; │ invoke-static {v0, p1}, Lcom/google/android/apps/muzei/api/Artwork;->access$302(Lcom/google/android/apps/muzei/api/Artwork;Ljava/lang/String;)Ljava/lang/String; │ │ - .line 164 │ + .line 166 │ return-object p0 │ .end method │ │ .method public imageUri(Landroid/net/Uri;)Lcom/google/android/apps/muzei/api/Artwork$Builder; │ .locals 1 │ .param p1, "imageUri" # Landroid/net/Uri; │ │ .prologue │ - .line 147 │ + .line 149 │ iget-object v0, p0, Lcom/google/android/apps/muzei/api/Artwork$Builder;->mArtwork:Lcom/google/android/apps/muzei/api/Artwork; │ │ # setter for: Lcom/google/android/apps/muzei/api/Artwork;->mImageUri:Landroid/net/Uri; │ invoke-static {v0, p1}, Lcom/google/android/apps/muzei/api/Artwork;->access$102(Lcom/google/android/apps/muzei/api/Artwork;Landroid/net/Uri;)Landroid/net/Uri; │ │ - .line 148 │ + .line 150 │ return-object p0 │ .end method │ │ .method public title(Ljava/lang/String;)Lcom/google/android/apps/muzei/api/Artwork$Builder; │ .locals 1 │ .param p1, "title" # Ljava/lang/String; │ │ .prologue │ - .line 155 │ + .line 157 │ iget-object v0, p0, Lcom/google/android/apps/muzei/api/Artwork$Builder;->mArtwork:Lcom/google/android/apps/muzei/api/Artwork; │ │ # setter for: Lcom/google/android/apps/muzei/api/Artwork;->mTitle:Ljava/lang/String; │ invoke-static {v0, p1}, Lcom/google/android/apps/muzei/api/Artwork;->access$202(Lcom/google/android/apps/muzei/api/Artwork;Ljava/lang/String;)Ljava/lang/String; │ │ - .line 156 │ + .line 158 │ return-object p0 │ .end method │ │ .method public token(Ljava/lang/String;)Lcom/google/android/apps/muzei/api/Artwork$Builder; │ .locals 1 │ .param p1, "token" # Ljava/lang/String; │ │ .prologue │ - .line 171 │ + .line 173 │ iget-object v0, p0, Lcom/google/android/apps/muzei/api/Artwork$Builder;->mArtwork:Lcom/google/android/apps/muzei/api/Artwork; │ │ # setter for: Lcom/google/android/apps/muzei/api/Artwork;->mToken:Ljava/lang/String; │ invoke-static {v0, p1}, Lcom/google/android/apps/muzei/api/Artwork;->access$402(Lcom/google/android/apps/muzei/api/Artwork;Ljava/lang/String;)Ljava/lang/String; │ │ - .line 172 │ + .line 174 │ return-object p0 │ .end method │ │ .method public viewIntent(Landroid/content/Intent;)Lcom/google/android/apps/muzei/api/Artwork$Builder; │ .locals 1 │ .param p1, "viewIntent" # Landroid/content/Intent; │ │ .prologue │ - .line 188 │ + .line 190 │ iget-object v0, p0, Lcom/google/android/apps/muzei/api/Artwork$Builder;->mArtwork:Lcom/google/android/apps/muzei/api/Artwork; │ │ # setter for: Lcom/google/android/apps/muzei/api/Artwork;->mViewIntent:Landroid/content/Intent; │ invoke-static {v0, p1}, Lcom/google/android/apps/muzei/api/Artwork;->access$502(Lcom/google/android/apps/muzei/api/Artwork;Landroid/content/Intent;)Landroid/content/Intent; │ │ - .line 189 │ + .line 191 │ return-object p0 │ .end method ├── smali/com/google/android/apps/muzei/api/Artwork.smali │ @@ -39,98 +39,98 @@ │ │ │ # direct methods │ .method private constructor ()V │ .locals 0 │ │ .prologue │ - .line 51 │ + .line 53 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 52 │ + .line 54 │ return-void │ .end method │ │ .method synthetic constructor (Lcom/google/android/apps/muzei/api/Artwork$1;)V │ .locals 0 │ .param p1, "x0" # Lcom/google/android/apps/muzei/api/Artwork$1; │ │ .prologue │ - .line 37 │ + .line 39 │ invoke-direct {p0}, Lcom/google/android/apps/muzei/api/Artwork;->()V │ │ return-void │ .end method │ │ .method static synthetic access$102(Lcom/google/android/apps/muzei/api/Artwork;Landroid/net/Uri;)Landroid/net/Uri; │ .locals 0 │ .param p0, "x0" # Lcom/google/android/apps/muzei/api/Artwork; │ .param p1, "x1" # Landroid/net/Uri; │ │ .prologue │ - .line 37 │ + .line 39 │ iput-object p1, p0, Lcom/google/android/apps/muzei/api/Artwork;->mImageUri:Landroid/net/Uri; │ │ return-object p1 │ .end method │ │ .method static synthetic access$202(Lcom/google/android/apps/muzei/api/Artwork;Ljava/lang/String;)Ljava/lang/String; │ .locals 0 │ .param p0, "x0" # Lcom/google/android/apps/muzei/api/Artwork; │ .param p1, "x1" # Ljava/lang/String; │ │ .prologue │ - .line 37 │ + .line 39 │ iput-object p1, p0, Lcom/google/android/apps/muzei/api/Artwork;->mTitle:Ljava/lang/String; │ │ return-object p1 │ .end method │ │ .method static synthetic access$302(Lcom/google/android/apps/muzei/api/Artwork;Ljava/lang/String;)Ljava/lang/String; │ .locals 0 │ .param p0, "x0" # Lcom/google/android/apps/muzei/api/Artwork; │ .param p1, "x1" # Ljava/lang/String; │ │ .prologue │ - .line 37 │ + .line 39 │ iput-object p1, p0, Lcom/google/android/apps/muzei/api/Artwork;->mByline:Ljava/lang/String; │ │ return-object p1 │ .end method │ │ .method static synthetic access$402(Lcom/google/android/apps/muzei/api/Artwork;Ljava/lang/String;)Ljava/lang/String; │ .locals 0 │ .param p0, "x0" # Lcom/google/android/apps/muzei/api/Artwork; │ .param p1, "x1" # Ljava/lang/String; │ │ .prologue │ - .line 37 │ + .line 39 │ iput-object p1, p0, Lcom/google/android/apps/muzei/api/Artwork;->mToken:Ljava/lang/String; │ │ return-object p1 │ .end method │ │ .method static synthetic access$502(Lcom/google/android/apps/muzei/api/Artwork;Landroid/content/Intent;)Landroid/content/Intent; │ .locals 0 │ .param p0, "x0" # Lcom/google/android/apps/muzei/api/Artwork; │ .param p1, "x1" # Landroid/content/Intent; │ │ .prologue │ - .line 37 │ + .line 39 │ iput-object p1, p0, Lcom/google/android/apps/muzei/api/Artwork;->mViewIntent:Landroid/content/Intent; │ │ return-object p1 │ .end method │ │ .method public static fromBundle(Landroid/os/Bundle;)Lcom/google/android/apps/muzei/api/Artwork; │ .locals 5 │ .param p0, "bundle" # Landroid/os/Bundle; │ │ .prologue │ - .line 219 │ + .line 221 │ new-instance v3, Lcom/google/android/apps/muzei/api/Artwork$Builder; │ │ invoke-direct {v3}, Lcom/google/android/apps/muzei/api/Artwork$Builder;->()V │ │ const-string v4, "title" │ │ invoke-virtual {p0, v4}, Landroid/os/Bundle;->getString(Ljava/lang/String;)Ljava/lang/String; │ @@ -157,93 +157,239 @@ │ │ move-result-object v4 │ │ invoke-virtual {v3, v4}, Lcom/google/android/apps/muzei/api/Artwork$Builder;->token(Ljava/lang/String;)Lcom/google/android/apps/muzei/api/Artwork$Builder; │ │ move-result-object v0 │ │ - .line 224 │ + .line 226 │ .local v0, "builder":Lcom/google/android/apps/muzei/api/Artwork$Builder; │ const-string v3, "imageUri" │ │ invoke-virtual {p0, v3}, Landroid/os/Bundle;->getString(Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v1 │ │ - .line 225 │ + .line 227 │ .local v1, "imageUri":Ljava/lang/String; │ invoke-static {v1}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z │ │ move-result v3 │ │ if-nez v3, :cond_0 │ │ - .line 226 │ + .line 228 │ invoke-static {v1}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri; │ │ move-result-object v3 │ │ invoke-virtual {v0, v3}, Lcom/google/android/apps/muzei/api/Artwork$Builder;->imageUri(Landroid/net/Uri;)Lcom/google/android/apps/muzei/api/Artwork$Builder; │ │ - .line 230 │ + .line 232 │ :cond_0 │ :try_start_0 │ const-string v3, "viewIntent" │ │ invoke-virtual {p0, v3}, Landroid/os/Bundle;->getString(Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v2 │ │ - .line 231 │ + .line 233 │ .local v2, "viewIntent":Ljava/lang/String; │ invoke-static {v2}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z │ │ move-result v3 │ │ if-nez v3, :cond_1 │ │ - .line 232 │ + .line 234 │ const/4 v3, 0x1 │ │ invoke-static {v2, v3}, Landroid/content/Intent;->parseUri(Ljava/lang/String;I)Landroid/content/Intent; │ │ move-result-object v3 │ │ invoke-virtual {v0, v3}, Lcom/google/android/apps/muzei/api/Artwork$Builder;->viewIntent(Landroid/content/Intent;)Lcom/google/android/apps/muzei/api/Artwork$Builder; │ :try_end_0 │ .catch Ljava/net/URISyntaxException; {:try_start_0 .. :try_end_0} :catch_0 │ │ - .line 237 │ + .line 239 │ .end local v2 # "viewIntent":Ljava/lang/String; │ :cond_1 │ :goto_0 │ invoke-virtual {v0}, Lcom/google/android/apps/muzei/api/Artwork$Builder;->build()Lcom/google/android/apps/muzei/api/Artwork; │ │ move-result-object v3 │ │ return-object v3 │ │ - .line 234 │ + .line 236 │ :catch_0 │ move-exception v3 │ │ goto :goto_0 │ .end method │ │ +.method public static fromCursor(Landroid/database/Cursor;)Lcom/google/android/apps/muzei/api/Artwork; │ + .locals 9 │ + .param p0, "cursor" # Landroid/database/Cursor; │ + │ + .prologue │ + const/4 v8, -0x1 │ + │ + .line 306 │ + new-instance v0, Lcom/google/android/apps/muzei/api/Artwork$Builder; │ + │ + invoke-direct {v0}, Lcom/google/android/apps/muzei/api/Artwork$Builder;->()V │ + │ + .line 307 │ + .local v0, "builder":Lcom/google/android/apps/muzei/api/Artwork$Builder; │ + const-string v7, "imageUri" │ + │ + invoke-interface {p0, v7}, Landroid/database/Cursor;->getColumnIndex(Ljava/lang/String;)I │ + │ + move-result v2 │ + │ + .line 308 │ + .local v2, "imageUriColumnIndex":I │ + if-eq v2, v8, :cond_0 │ + │ + .line 309 │ + invoke-interface {p0, v2}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; │ + │ + move-result-object v7 │ + │ + invoke-static {v7}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri; │ + │ + move-result-object v7 │ + │ + invoke-virtual {v0, v7}, Lcom/google/android/apps/muzei/api/Artwork$Builder;->imageUri(Landroid/net/Uri;)Lcom/google/android/apps/muzei/api/Artwork$Builder; │ + │ + .line 311 │ + :cond_0 │ + const-string v7, "title" │ + │ + invoke-interface {p0, v7}, Landroid/database/Cursor;->getColumnIndex(Ljava/lang/String;)I │ + │ + move-result v3 │ + │ + .line 312 │ + .local v3, "titleColumnIndex":I │ + if-eq v3, v8, :cond_1 │ + │ + .line 313 │ + invoke-interface {p0, v3}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; │ + │ + move-result-object v7 │ + │ + invoke-virtual {v0, v7}, Lcom/google/android/apps/muzei/api/Artwork$Builder;->title(Ljava/lang/String;)Lcom/google/android/apps/muzei/api/Artwork$Builder; │ + │ + .line 315 │ + :cond_1 │ + const-string v7, "byline" │ + │ + invoke-interface {p0, v7}, Landroid/database/Cursor;->getColumnIndex(Ljava/lang/String;)I │ + │ + move-result v1 │ + │ + .line 316 │ + .local v1, "bylineColumnIndex":I │ + if-eq v1, v8, :cond_2 │ + │ + .line 317 │ + invoke-interface {p0, v1}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; │ + │ + move-result-object v7 │ + │ + invoke-virtual {v0, v7}, Lcom/google/android/apps/muzei/api/Artwork$Builder;->byline(Ljava/lang/String;)Lcom/google/android/apps/muzei/api/Artwork$Builder; │ + │ + .line 319 │ + :cond_2 │ + const-string v7, "token" │ + │ + invoke-interface {p0, v7}, Landroid/database/Cursor;->getColumnIndex(Ljava/lang/String;)I │ + │ + move-result v4 │ + │ + .line 320 │ + .local v4, "tokenColumnIndex":I │ + if-eq v4, v8, :cond_3 │ + │ + .line 321 │ + invoke-interface {p0, v4}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; │ + │ + move-result-object v7 │ + │ + invoke-virtual {v0, v7}, Lcom/google/android/apps/muzei/api/Artwork$Builder;->token(Ljava/lang/String;)Lcom/google/android/apps/muzei/api/Artwork$Builder; │ + │ + .line 323 │ + :cond_3 │ + const-string v7, "viewIntent" │ + │ + invoke-interface {p0, v7}, Landroid/database/Cursor;->getColumnIndex(Ljava/lang/String;)I │ + │ + move-result v6 │ + │ + .line 324 │ + .local v6, "viewIntentColumnIndex":I │ + if-eq v6, v8, :cond_4 │ + │ + .line 326 │ + :try_start_0 │ + invoke-interface {p0, v6}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; │ + │ + move-result-object v5 │ + │ + .line 327 │ + .local v5, "viewIntent":Ljava/lang/String; │ + invoke-static {v5}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z │ + │ + move-result v7 │ + │ + if-nez v7, :cond_4 │ + │ + .line 328 │ + const/4 v7, 0x1 │ + │ + invoke-static {v5, v7}, Landroid/content/Intent;->parseUri(Ljava/lang/String;I)Landroid/content/Intent; │ + │ + move-result-object v7 │ + │ + invoke-virtual {v0, v7}, Lcom/google/android/apps/muzei/api/Artwork$Builder;->viewIntent(Landroid/content/Intent;)Lcom/google/android/apps/muzei/api/Artwork$Builder; │ + :try_end_0 │ + .catch Ljava/net/URISyntaxException; {:try_start_0 .. :try_end_0} :catch_0 │ + │ + .line 333 │ + .end local v5 # "viewIntent":Ljava/lang/String; │ + :cond_4 │ + :goto_0 │ + invoke-virtual {v0}, Lcom/google/android/apps/muzei/api/Artwork$Builder;->build()Lcom/google/android/apps/muzei/api/Artwork; │ + │ + move-result-object v7 │ + │ + return-object v7 │ + │ + .line 330 │ + :catch_0 │ + move-exception v7 │ + │ + goto :goto_0 │ +.end method │ + │ .method public static fromJson(Lorg/json/JSONObject;)Lcom/google/android/apps/muzei/api/Artwork; │ .locals 7 │ .param p0, "jsonObject" # Lorg/json/JSONObject; │ .annotation system Ldalvik/annotation/Throws; │ value = { │ Lorg/json/JSONException; │ } │ .end annotation │ │ .prologue │ - .line 258 │ + .line 260 │ new-instance v4, Lcom/google/android/apps/muzei/api/Artwork$Builder; │ │ invoke-direct {v4}, Lcom/google/android/apps/muzei/api/Artwork$Builder;->()V │ │ const-string v5, "title" │ │ invoke-virtual {p0, v5}, Lorg/json/JSONObject;->optString(Ljava/lang/String;)Ljava/lang/String; │ @@ -270,96 +416,96 @@ │ │ move-result-object v5 │ │ invoke-virtual {v4, v5}, Lcom/google/android/apps/muzei/api/Artwork$Builder;->token(Ljava/lang/String;)Lcom/google/android/apps/muzei/api/Artwork$Builder; │ │ move-result-object v0 │ │ - .line 263 │ + .line 265 │ .local v0, "builder":Lcom/google/android/apps/muzei/api/Artwork$Builder; │ const-string v4, "imageUri" │ │ invoke-virtual {p0, v4}, Lorg/json/JSONObject;->optString(Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v2 │ │ - .line 264 │ + .line 266 │ .local v2, "imageUri":Ljava/lang/String; │ invoke-static {v2}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z │ │ move-result v4 │ │ if-nez v4, :cond_0 │ │ - .line 265 │ + .line 267 │ invoke-static {v2}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri; │ │ move-result-object v4 │ │ invoke-virtual {v0, v4}, Lcom/google/android/apps/muzei/api/Artwork$Builder;->imageUri(Landroid/net/Uri;)Lcom/google/android/apps/muzei/api/Artwork$Builder; │ │ - .line 269 │ + .line 271 │ :cond_0 │ :try_start_0 │ const-string v4, "viewIntent" │ │ invoke-virtual {p0, v4}, Lorg/json/JSONObject;->optString(Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v3 │ │ - .line 270 │ + .line 272 │ .local v3, "viewIntent":Ljava/lang/String; │ const-string v4, "detailsUri" │ │ invoke-virtual {p0, v4}, Lorg/json/JSONObject;->optString(Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v1 │ │ - .line 271 │ + .line 273 │ .local v1, "detailsUri":Ljava/lang/String; │ invoke-static {v3}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z │ │ move-result v4 │ │ if-nez v4, :cond_2 │ │ - .line 272 │ + .line 274 │ const/4 v4, 0x1 │ │ invoke-static {v3, v4}, Landroid/content/Intent;->parseUri(Ljava/lang/String;I)Landroid/content/Intent; │ │ move-result-object v4 │ │ invoke-virtual {v0, v4}, Lcom/google/android/apps/muzei/api/Artwork$Builder;->viewIntent(Landroid/content/Intent;)Lcom/google/android/apps/muzei/api/Artwork$Builder; │ :try_end_0 │ .catch Ljava/net/URISyntaxException; {:try_start_0 .. :try_end_0} :catch_0 │ │ - .line 279 │ + .line 281 │ .end local v1 # "detailsUri":Ljava/lang/String; │ .end local v3 # "viewIntent":Ljava/lang/String; │ :cond_1 │ :goto_0 │ invoke-virtual {v0}, Lcom/google/android/apps/muzei/api/Artwork$Builder;->build()Lcom/google/android/apps/muzei/api/Artwork; │ │ move-result-object v4 │ │ return-object v4 │ │ - .line 273 │ + .line 275 │ .restart local v1 # "detailsUri":Ljava/lang/String; │ .restart local v3 # "viewIntent":Ljava/lang/String; │ :cond_2 │ :try_start_1 │ invoke-static {v1}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z │ │ move-result v4 │ │ if-nez v4, :cond_1 │ │ - .line 274 │ + .line 276 │ new-instance v4, Landroid/content/Intent; │ │ const-string v5, "android.intent.action.VIEW" │ │ invoke-static {v1}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri; │ │ move-result-object v6 │ @@ -368,87 +514,87 @@ │ │ invoke-virtual {v0, v4}, Lcom/google/android/apps/muzei/api/Artwork$Builder;->viewIntent(Landroid/content/Intent;)Lcom/google/android/apps/muzei/api/Artwork$Builder; │ :try_end_1 │ .catch Ljava/net/URISyntaxException; {:try_start_1 .. :try_end_1} :catch_0 │ │ goto :goto_0 │ │ - .line 276 │ + .line 278 │ .end local v1 # "detailsUri":Ljava/lang/String; │ .end local v3 # "viewIntent":Ljava/lang/String; │ :catch_0 │ move-exception v4 │ │ goto :goto_0 │ .end method │ │ │ # virtual methods │ .method public getByline()Ljava/lang/String; │ .locals 1 │ │ .prologue │ - .line 79 │ + .line 81 │ iget-object v0, p0, Lcom/google/android/apps/muzei/api/Artwork;->mByline:Ljava/lang/String; │ │ return-object v0 │ .end method │ │ .method public getImageUri()Landroid/net/Uri; │ .locals 1 │ │ .prologue │ - .line 60 │ + .line 62 │ iget-object v0, p0, Lcom/google/android/apps/muzei/api/Artwork;->mImageUri:Landroid/net/Uri; │ │ return-object v0 │ .end method │ │ .method public getTitle()Ljava/lang/String; │ .locals 1 │ │ .prologue │ - .line 69 │ + .line 71 │ iget-object v0, p0, Lcom/google/android/apps/muzei/api/Artwork;->mTitle:Ljava/lang/String; │ │ return-object v0 │ .end method │ │ .method public getToken()Ljava/lang/String; │ .locals 1 │ │ .prologue │ - .line 89 │ + .line 91 │ iget-object v0, p0, Lcom/google/android/apps/muzei/api/Artwork;->mToken:Ljava/lang/String; │ │ return-object v0 │ .end method │ │ .method public getViewIntent()Landroid/content/Intent; │ .locals 1 │ │ .prologue │ - .line 99 │ + .line 101 │ iget-object v0, p0, Lcom/google/android/apps/muzei/api/Artwork;->mViewIntent:Landroid/content/Intent; │ │ return-object v0 │ .end method │ │ .method public toBundle()Landroid/os/Bundle; │ .locals 4 │ │ .prologue │ const/4 v2, 0x0 │ │ - .line 205 │ + .line 207 │ new-instance v0, Landroid/os/Bundle; │ │ invoke-direct {v0}, Landroid/os/Bundle;->()V │ │ - .line 206 │ + .line 208 │ .local v0, "bundle":Landroid/os/Bundle; │ const-string v3, "imageUri" │ │ iget-object v1, p0, Lcom/google/android/apps/muzei/api/Artwork;->mImageUri:Landroid/net/Uri; │ │ if-eqz v1, :cond_1 │ │ @@ -457,36 +603,36 @@ │ invoke-virtual {v1}, Landroid/net/Uri;->toString()Ljava/lang/String; │ │ move-result-object v1 │ │ :goto_0 │ invoke-virtual {v0, v3, v1}, Landroid/os/Bundle;->putString(Ljava/lang/String;Ljava/lang/String;)V │ │ - .line 207 │ + .line 209 │ const-string v1, "title" │ │ iget-object v3, p0, Lcom/google/android/apps/muzei/api/Artwork;->mTitle:Ljava/lang/String; │ │ invoke-virtual {v0, v1, v3}, Landroid/os/Bundle;->putString(Ljava/lang/String;Ljava/lang/String;)V │ │ - .line 208 │ + .line 210 │ const-string v1, "byline" │ │ iget-object v3, p0, Lcom/google/android/apps/muzei/api/Artwork;->mByline:Ljava/lang/String; │ │ invoke-virtual {v0, v1, v3}, Landroid/os/Bundle;->putString(Ljava/lang/String;Ljava/lang/String;)V │ │ - .line 209 │ + .line 211 │ const-string v1, "token" │ │ iget-object v3, p0, Lcom/google/android/apps/muzei/api/Artwork;->mToken:Ljava/lang/String; │ │ invoke-virtual {v0, v1, v3}, Landroid/os/Bundle;->putString(Ljava/lang/String;Ljava/lang/String;)V │ │ - .line 210 │ + .line 212 │ const-string v1, "viewIntent" │ │ iget-object v3, p0, Lcom/google/android/apps/muzei/api/Artwork;->mViewIntent:Landroid/content/Intent; │ │ if-eqz v3, :cond_0 │ │ iget-object v2, p0, Lcom/google/android/apps/muzei/api/Artwork;->mViewIntent:Landroid/content/Intent; │ @@ -496,41 +642,118 @@ │ invoke-virtual {v2, v3}, Landroid/content/Intent;->toUri(I)Ljava/lang/String; │ │ move-result-object v2 │ │ :cond_0 │ invoke-virtual {v0, v1, v2}, Landroid/os/Bundle;->putString(Ljava/lang/String;Ljava/lang/String;)V │ │ - .line 212 │ + .line 214 │ + return-object v0 │ + │ + :cond_1 │ + move-object v1, v2 │ + │ + .line 208 │ + goto :goto_0 │ +.end method │ + │ +.method public toContentValues()Landroid/content/ContentValues; │ + .locals 4 │ + │ + .prologue │ + const/4 v2, 0x0 │ + │ + .line 288 │ + new-instance v0, Landroid/content/ContentValues; │ + │ + invoke-direct {v0}, Landroid/content/ContentValues;->()V │ + │ + .line 289 │ + .local v0, "values":Landroid/content/ContentValues; │ + const-string v3, "imageUri" │ + │ + iget-object v1, p0, Lcom/google/android/apps/muzei/api/Artwork;->mImageUri:Landroid/net/Uri; │ + │ + if-eqz v1, :cond_1 │ + │ + iget-object v1, p0, Lcom/google/android/apps/muzei/api/Artwork;->mImageUri:Landroid/net/Uri; │ + │ + invoke-virtual {v1}, Landroid/net/Uri;->toString()Ljava/lang/String; │ + │ + move-result-object v1 │ + │ + :goto_0 │ + invoke-virtual {v0, v3, v1}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 291 │ + const-string v1, "title" │ + │ + iget-object v3, p0, Lcom/google/android/apps/muzei/api/Artwork;->mTitle:Ljava/lang/String; │ + │ + invoke-virtual {v0, v1, v3}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 292 │ + const-string v1, "byline" │ + │ + iget-object v3, p0, Lcom/google/android/apps/muzei/api/Artwork;->mByline:Ljava/lang/String; │ + │ + invoke-virtual {v0, v1, v3}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 293 │ + const-string v1, "token" │ + │ + iget-object v3, p0, Lcom/google/android/apps/muzei/api/Artwork;->mToken:Ljava/lang/String; │ + │ + invoke-virtual {v0, v1, v3}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 294 │ + const-string v1, "viewIntent" │ + │ + iget-object v3, p0, Lcom/google/android/apps/muzei/api/Artwork;->mViewIntent:Landroid/content/Intent; │ + │ + if-eqz v3, :cond_0 │ + │ + iget-object v2, p0, Lcom/google/android/apps/muzei/api/Artwork;->mViewIntent:Landroid/content/Intent; │ + │ + const/4 v3, 0x1 │ + │ + invoke-virtual {v2, v3}, Landroid/content/Intent;->toUri(I)Ljava/lang/String; │ + │ + move-result-object v2 │ + │ + :cond_0 │ + invoke-virtual {v0, v1, v2}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V │ + │ + .line 296 │ return-object v0 │ │ :cond_1 │ move-object v1, v2 │ │ - .line 206 │ + .line 289 │ goto :goto_0 │ .end method │ │ .method public toJson()Lorg/json/JSONObject; │ .locals 4 │ .annotation system Ldalvik/annotation/Throws; │ value = { │ Lorg/json/JSONException; │ } │ .end annotation │ │ .prologue │ const/4 v2, 0x0 │ │ - .line 244 │ + .line 246 │ new-instance v0, Lorg/json/JSONObject; │ │ invoke-direct {v0}, Lorg/json/JSONObject;->()V │ │ - .line 245 │ + .line 247 │ .local v0, "jsonObject":Lorg/json/JSONObject; │ const-string v3, "imageUri" │ │ iget-object v1, p0, Lcom/google/android/apps/muzei/api/Artwork;->mImageUri:Landroid/net/Uri; │ │ if-eqz v1, :cond_1 │ │ @@ -539,36 +762,36 @@ │ invoke-virtual {v1}, Landroid/net/Uri;->toString()Ljava/lang/String; │ │ move-result-object v1 │ │ :goto_0 │ invoke-virtual {v0, v3, v1}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject; │ │ - .line 246 │ + .line 248 │ const-string v1, "title" │ │ iget-object v3, p0, Lcom/google/android/apps/muzei/api/Artwork;->mTitle:Ljava/lang/String; │ │ invoke-virtual {v0, v1, v3}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject; │ │ - .line 247 │ + .line 249 │ const-string v1, "byline" │ │ iget-object v3, p0, Lcom/google/android/apps/muzei/api/Artwork;->mByline:Ljava/lang/String; │ │ invoke-virtual {v0, v1, v3}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject; │ │ - .line 248 │ + .line 250 │ const-string v1, "token" │ │ iget-object v3, p0, Lcom/google/android/apps/muzei/api/Artwork;->mToken:Ljava/lang/String; │ │ invoke-virtual {v0, v1, v3}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject; │ │ - .line 249 │ + .line 251 │ const-string v1, "viewIntent" │ │ iget-object v3, p0, Lcom/google/android/apps/muzei/api/Artwork;->mViewIntent:Landroid/content/Intent; │ │ if-eqz v3, :cond_0 │ │ iget-object v2, p0, Lcom/google/android/apps/muzei/api/Artwork;->mViewIntent:Landroid/content/Intent; │ @@ -578,16 +801,16 @@ │ invoke-virtual {v2, v3}, Landroid/content/Intent;->toUri(I)Ljava/lang/String; │ │ move-result-object v2 │ │ :cond_0 │ invoke-virtual {v0, v1, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject; │ │ - .line 251 │ + .line 253 │ return-object v0 │ │ :cond_1 │ move-object v1, v2 │ │ - .line 245 │ + .line 247 │ goto :goto_0 │ .end method ├── smali/com/google/android/apps/muzei/api/MuzeiArtSource.smali │ @@ -324,19 +324,22 @@ │ invoke-direct {v2}, Lcom/google/android/apps/muzei/api/internal/SourceState;->()V │ │ iput-object v2, p0, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->mCurrentState:Lcom/google/android/apps/muzei/api/internal/SourceState; │ │ goto :goto_0 │ .end method │ │ -.method private loadSubscriptions()V │ +.method private declared-synchronized loadSubscriptions()V │ .locals 9 │ │ .prologue │ .line 719 │ + monitor-enter p0 │ + │ + :try_start_0 │ new-instance v6, Ljava/util/HashMap; │ │ invoke-direct {v6}, Ljava/util/HashMap;->()V │ │ iput-object v6, p0, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->mSubscriptions:Ljava/util/Map; │ │ .line 720 │ @@ -400,64 +403,83 @@ │ aget-object v5, v0, v6 │ │ .line 726 │ .local v5, "token":Ljava/lang/String; │ iget-object v6, p0, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->mSubscriptions:Ljava/util/Map; │ │ invoke-interface {v6, v4, v5}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ + :try_end_0 │ + .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ │ goto :goto_0 │ │ - .line 729 │ + .line 719 │ .end local v0 # "arr":[Ljava/lang/String; │ .end local v1 # "i$":Ljava/util/Iterator; │ .end local v2 # "serializedSubscription":Ljava/lang/String; │ + .end local v3 # "serializedSubscriptions":Ljava/util/Set;, "Ljava/util/Set;" │ .end local v4 # "subscriber":Landroid/content/ComponentName; │ .end local v5 # "token":Ljava/lang/String; │ + :catchall_0 │ + move-exception v6 │ + │ + monitor-exit p0 │ + │ + throw v6 │ + │ + .line 729 │ + .restart local v3 # "serializedSubscriptions":Ljava/util/Set;, "Ljava/util/Set;" │ :cond_0 │ + monitor-exit p0 │ + │ return-void │ .end method │ │ -.method private processAndDispatchSubscriberAdded(Landroid/content/ComponentName;)V │ - .locals 8 │ +.method private declared-synchronized processAndDispatchSubscriberAdded(Landroid/content/ComponentName;)V │ + .locals 10 │ .param p1, "subscriber" # Landroid/content/ComponentName; │ │ .prologue │ - const-wide/16 v6, 0x0 │ + const-wide/16 v8, 0x0 │ │ - const/4 v5, 0x1 │ + const/4 v7, 0x1 │ │ .line 589 │ + monitor-enter p0 │ + │ const/4 v0, 0x0 │ │ .line 590 │ .local v0, "updateDueToSchedule":Z │ + :try_start_0 │ iget-object v3, p0, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->mSubscriptions:Ljava/util/Map; │ │ invoke-interface {v3}, Ljava/util/Map;->size()I │ │ move-result v3 │ │ - if-ne v3, v5, :cond_0 │ + if-ne v3, v7, :cond_0 │ │ .line 591 │ invoke-virtual {p0}, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->onEnabled()V │ │ .line 594 │ iget-object v3, p0, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->mSharedPrefs:Landroid/content/SharedPreferences; │ │ const-string v4, "scheduled_update_time_millis" │ │ - invoke-interface {v3, v4, v6, v7}, Landroid/content/SharedPreferences;->getLong(Ljava/lang/String;J)J │ + const-wide/16 v5, 0x0 │ + │ + invoke-interface {v3, v4, v5, v6}, Landroid/content/SharedPreferences;->getLong(Ljava/lang/String;J)J │ │ move-result-wide v1 │ │ .line 595 │ .local v1, "updateTimeMillis":J │ - cmp-long v3, v1, v6 │ + cmp-long v3, v1, v8 │ │ if-lez v3, :cond_0 │ │ .line 596 │ invoke-static {}, Ljava/lang/System;->currentTimeMillis()J │ │ move-result-wide v3 │ @@ -488,48 +510,69 @@ │ │ iget-object v3, p0, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->mSubscriptions:Ljava/util/Map; │ │ invoke-interface {v3}, Ljava/util/Map;->size()I │ │ move-result v3 │ │ - if-ne v3, v5, :cond_1 │ + if-ne v3, v7, :cond_1 │ │ iget-object v3, p0, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->mCurrentState:Lcom/google/android/apps/muzei/api/internal/SourceState; │ │ invoke-virtual {v3}, Lcom/google/android/apps/muzei/api/internal/SourceState;->getCurrentArtwork()Lcom/google/android/apps/muzei/api/Artwork; │ │ move-result-object v3 │ │ if-nez v3, :cond_1 │ │ .line 614 │ - invoke-virtual {p0, v5}, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->onUpdate(I)V │ + const/4 v3, 0x1 │ + │ + invoke-virtual {p0, v3}, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->onUpdate(I)V │ │ .line 618 │ :cond_1 │ invoke-direct {p0, p1}, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->publishCurrentState(Landroid/content/ComponentName;)V │ + :try_end_0 │ + .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ │ .line 619 │ + monitor-exit p0 │ + │ return-void │ │ .line 603 │ .restart local v1 # "updateTimeMillis":J │ :cond_2 │ + :try_start_1 │ invoke-direct {p0, v1, v2}, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->setUpdateAlarm(J)V │ + :try_end_1 │ + .catchall {:try_start_1 .. :try_end_1} :catchall_0 │ │ goto :goto_0 │ + │ + .line 589 │ + .end local v1 # "updateTimeMillis":J │ + :catchall_0 │ + move-exception v3 │ + │ + monitor-exit p0 │ + │ + throw v3 │ .end method │ │ -.method private processAndDispatchSubscriberRemoved(Landroid/content/ComponentName;)V │ +.method private declared-synchronized processAndDispatchSubscriberRemoved(Landroid/content/ComponentName;)V │ .locals 1 │ .param p1, "subscriber" # Landroid/content/ComponentName; │ │ .prologue │ .line 623 │ + monitor-enter p0 │ + │ + :try_start_0 │ invoke-virtual {p0, p1}, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->onSubscriberRemoved(Landroid/content/ComponentName;)V │ │ .line 624 │ iget-object v0, p0, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->mSubscriptions:Ljava/util/Map; │ │ invoke-interface {v0}, Ljava/util/Map;->size()I │ │ @@ -538,18 +581,30 @@ │ if-nez v0, :cond_0 │ │ .line 625 │ invoke-direct {p0}, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->clearUpdateAlarm()V │ │ .line 626 │ invoke-virtual {p0}, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->onDisabled()V │ + :try_end_0 │ + .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ │ .line 628 │ :cond_0 │ + monitor-exit p0 │ + │ return-void │ + │ + .line 623 │ + :catchall_0 │ + move-exception v0 │ + │ + monitor-exit p0 │ + │ + throw v0 │ .end method │ │ .method private processHandleCommand(ILandroid/os/Bundle;)V │ .locals 5 │ .param p1, "commandId" # I │ .param p2, "extras" # Landroid/os/Bundle; │ │ @@ -646,37 +701,45 @@ │ .line 646 │ invoke-virtual {p0}, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->onNetworkAvailable()V │ │ .line 647 │ return-void │ .end method │ │ -.method private processSubscribe(Landroid/content/ComponentName;Ljava/lang/String;)V │ +.method private declared-synchronized processSubscribe(Landroid/content/ComponentName;Ljava/lang/String;)V │ .locals 3 │ .param p1, "subscriber" # Landroid/content/ComponentName; │ .param p2, "token" # Ljava/lang/String; │ │ .prologue │ .line 553 │ + monitor-enter p0 │ + │ if-nez p1, :cond_1 │ │ .line 554 │ + :try_start_0 │ const-string v1, "MuzeiArtSource" │ │ const-string v2, "No subscriber given." │ │ invoke-static {v1, v2}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I │ + :try_end_0 │ + .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ │ .line 585 │ :cond_0 │ :goto_0 │ + monitor-exit p0 │ + │ return-void │ │ .line 558 │ :cond_1 │ + :try_start_1 │ iget-object v1, p0, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->mSubscriptions:Ljava/util/Map; │ │ invoke-interface {v1, p1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object; │ │ move-result-object v0 │ │ check-cast v0, Ljava/lang/String; │ @@ -699,19 +762,32 @@ │ │ .line 566 │ invoke-direct {p0, p1}, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->processAndDispatchSubscriberRemoved(Landroid/content/ComponentName;)V │ │ .line 584 │ :goto_1 │ invoke-direct {p0}, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->saveSubscriptions()V │ + :try_end_1 │ + .catchall {:try_start_1 .. :try_end_1} :catchall_0 │ │ goto :goto_0 │ │ + .line 553 │ + .end local v0 # "oldToken":Ljava/lang/String; │ + :catchall_0 │ + move-exception v1 │ + │ + monitor-exit p0 │ + │ + throw v1 │ + │ .line 570 │ + .restart local v0 # "oldToken":Ljava/lang/String; │ :cond_2 │ + :try_start_2 │ invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z │ │ move-result v1 │ │ if-nez v1, :cond_3 │ │ .line 572 │ @@ -733,23 +809,28 @@ │ .line 580 │ iget-object v1, p0, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->mSubscriptions:Ljava/util/Map; │ │ invoke-interface {v1, p1, p2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; │ │ .line 581 │ invoke-direct {p0, p1}, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->processAndDispatchSubscriberAdded(Landroid/content/ComponentName;)V │ + :try_end_2 │ + .catchall {:try_start_2 .. :try_end_2} :catchall_0 │ │ goto :goto_1 │ .end method │ │ -.method private publishCurrentState()V │ +.method private declared-synchronized publishCurrentState()V │ .locals 3 │ │ .prologue │ .line 683 │ + monitor-enter p0 │ + │ + :try_start_0 │ iget-object v2, p0, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->mSubscriptions:Ljava/util/Map; │ │ invoke-interface {v2}, Ljava/util/Map;->keySet()Ljava/util/Set; │ │ move-result-object v2 │ │ invoke-interface {v2}, Ljava/util/Set;->iterator()Ljava/util/Iterator; │ @@ -769,29 +850,46 @@ │ move-result-object v1 │ │ check-cast v1, Landroid/content/ComponentName; │ │ .line 684 │ .local v1, "subscription":Landroid/content/ComponentName; │ invoke-direct {p0, v1}, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->publishCurrentState(Landroid/content/ComponentName;)V │ + :try_end_0 │ + .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ │ goto :goto_0 │ │ - .line 686 │ + .line 683 │ + .end local v0 # "i$":Ljava/util/Iterator; │ .end local v1 # "subscription":Landroid/content/ComponentName; │ + :catchall_0 │ + move-exception v2 │ + │ + monitor-exit p0 │ + │ + throw v2 │ + │ + .line 686 │ + .restart local v0 # "i$":Ljava/util/Iterator; │ :cond_0 │ + monitor-exit p0 │ + │ return-void │ .end method │ │ -.method private publishCurrentState(Landroid/content/ComponentName;)V │ +.method private declared-synchronized publishCurrentState(Landroid/content/ComponentName;)V │ .locals 7 │ .param p1, "subscriber" # Landroid/content/ComponentName; │ │ .prologue │ .line 689 │ + monitor-enter p0 │ + │ + :try_start_0 │ iget-object v4, p0, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->mSubscriptions:Ljava/util/Map; │ │ invoke-interface {v4, p1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object; │ │ move-result-object v3 │ │ check-cast v3, Ljava/lang/String; │ @@ -824,22 +922,27 @@ │ move-result-object v5 │ │ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v5 │ │ invoke-static {v4, v5}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I │ + :try_end_0 │ + .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ │ .line 716 │ :cond_0 │ :goto_0 │ + monitor-exit p0 │ + │ return-void │ │ .line 696 │ :cond_1 │ + :try_start_1 │ new-instance v4, Landroid/content/Intent; │ │ const-string v5, "com.google.android.apps.muzei.api.action.PUBLISH_UPDATE" │ │ invoke-direct {v4, v5}, Landroid/content/Intent;->(Ljava/lang/String;)V │ │ invoke-virtual {v4, p1}, Landroid/content/Intent;->setComponent(Landroid/content/ComponentName;)Landroid/content/Intent; │ @@ -862,20 +965,22 @@ │ │ invoke-virtual {v4}, Lcom/google/android/apps/muzei/api/internal/SourceState;->toBundle()Landroid/os/Bundle; │ │ move-result-object v4 │ │ :goto_1 │ invoke-virtual {v5, v6, v4}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/Intent; │ + :try_end_1 │ + .catchall {:try_start_1 .. :try_end_1} :catchall_0 │ │ move-result-object v1 │ │ .line 701 │ .local v1, "intent":Landroid/content/Intent; │ - :try_start_0 │ + :try_start_2 │ invoke-virtual {p0, v1}, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->startService(Landroid/content/Intent;)Landroid/content/ComponentName; │ │ move-result-object v2 │ │ .line 702 │ .local v2, "returnedSubscriber":Landroid/content/ComponentName; │ if-nez v2, :cond_0 │ @@ -909,26 +1014,28 @@ │ iget-object v4, p0, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->mHandler:Landroid/os/Handler; │ │ new-instance v5, Lcom/google/android/apps/muzei/api/MuzeiArtSource$2; │ │ invoke-direct {v5, p0, p1}, Lcom/google/android/apps/muzei/api/MuzeiArtSource$2;->(Lcom/google/android/apps/muzei/api/MuzeiArtSource;Landroid/content/ComponentName;)V │ │ invoke-virtual {v4, v5}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z │ - :try_end_0 │ - .catch Ljava/lang/SecurityException; {:try_start_0 .. :try_end_0} :catch_0 │ + :try_end_2 │ + .catch Ljava/lang/SecurityException; {:try_start_2 .. :try_end_2} :catch_0 │ + .catchall {:try_start_2 .. :try_end_2} :catchall_0 │ │ goto :goto_0 │ │ .line 713 │ .end local v2 # "returnedSubscriber":Landroid/content/ComponentName; │ :catch_0 │ move-exception v0 │ │ .line 714 │ .local v0, "e":Ljava/lang/SecurityException; │ + :try_start_3 │ const-string v4, "MuzeiArtSource" │ │ new-instance v5, Ljava/lang/StringBuilder; │ │ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V │ │ const-string v6, "Couldn\'t publish update, id=" │ @@ -944,20 +1051,32 @@ │ move-result-object v5 │ │ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v5 │ │ invoke-static {v4, v5, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I │ + :try_end_3 │ + .catchall {:try_start_3 .. :try_end_3} :catchall_0 │ │ goto :goto_0 │ │ - .line 696 │ + .line 689 │ .end local v0 # "e":Ljava/lang/SecurityException; │ .end local v1 # "intent":Landroid/content/Intent; │ + .end local v3 # "token":Ljava/lang/String; │ + :catchall_0 │ + move-exception v4 │ + │ + monitor-exit p0 │ + │ + throw v4 │ + │ + .line 696 │ + .restart local v3 # "token":Ljava/lang/String; │ :cond_2 │ const/4 v4, 0x0 │ │ goto :goto_1 │ .end method │ │ .method private saveState()V │ @@ -1025,19 +1144,22 @@ │ move-result-object v2 │ │ invoke-static {v1, v2, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I │ │ goto :goto_0 │ .end method │ │ -.method private saveSubscriptions()V │ +.method private declared-synchronized saveSubscriptions()V │ .locals 5 │ │ .prologue │ .line 732 │ + monitor-enter p0 │ + │ + :try_start_0 │ new-instance v1, Ljava/util/HashSet; │ │ invoke-direct {v1}, Ljava/util/HashSet;->()V │ │ .line 733 │ .local v1, "serializedSubscriptions":Ljava/util/Set;, "Ljava/util/Set;" │ iget-object v3, p0, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->mSubscriptions:Ljava/util/Map; │ @@ -1097,35 +1219,54 @@ │ move-result-object v3 │ │ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v3 │ │ invoke-interface {v1, v3}, Ljava/util/Set;->add(Ljava/lang/Object;)Z │ + :try_end_0 │ + .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ │ goto :goto_0 │ │ - .line 737 │ + .line 732 │ + .end local v0 # "i$":Ljava/util/Iterator; │ + .end local v1 # "serializedSubscriptions":Ljava/util/Set;, "Ljava/util/Set;" │ .end local v2 # "subscriber":Landroid/content/ComponentName; │ + :catchall_0 │ + move-exception v3 │ + │ + monitor-exit p0 │ + │ + throw v3 │ + │ + .line 737 │ + .restart local v0 # "i$":Ljava/util/Iterator; │ + .restart local v1 # "serializedSubscriptions":Ljava/util/Set;, "Ljava/util/Set;" │ :cond_0 │ + :try_start_1 │ iget-object v3, p0, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->mSharedPrefs:Landroid/content/SharedPreferences; │ │ invoke-interface {v3}, Landroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor; │ │ move-result-object v3 │ │ const-string v4, "subscriptions" │ │ invoke-interface {v3, v4, v1}, Landroid/content/SharedPreferences$Editor;->putStringSet(Ljava/lang/String;Ljava/util/Set;)Landroid/content/SharedPreferences$Editor; │ │ move-result-object v3 │ │ invoke-interface {v3}, Landroid/content/SharedPreferences$Editor;->commit()Z │ + :try_end_1 │ + .catchall {:try_start_1 .. :try_end_1} :catchall_0 │ │ .line 738 │ + monitor-exit p0 │ + │ return-void │ .end method │ │ .method private setUpdateAlarm(J)V │ .locals 4 │ .param p1, "nextTimeMillis" # J │ │ @@ -1301,36 +1442,50 @@ │ invoke-static {p0, v0}, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->getSharedPreferences(Landroid/content/Context;Ljava/lang/String;)Landroid/content/SharedPreferences; │ │ move-result-object v0 │ │ return-object v0 │ .end method │ │ -.method protected final isEnabled()Z │ +.method protected final declared-synchronized isEnabled()Z │ .locals 1 │ │ .prologue │ .line 504 │ + monitor-enter p0 │ + │ + :try_start_0 │ iget-object v0, p0, Lcom/google/android/apps/muzei/api/MuzeiArtSource;->mSubscriptions:Ljava/util/Map; │ │ invoke-interface {v0}, Ljava/util/Map;->size()I │ + :try_end_0 │ + .catchall {:try_start_0 .. :try_end_0} :catchall_0 │ │ move-result v0 │ │ if-lez v0, :cond_0 │ │ const/4 v0, 0x1 │ │ :goto_0 │ + monitor-exit p0 │ + │ return v0 │ │ :cond_0 │ const/4 v0, 0x0 │ │ goto :goto_0 │ + │ + :catchall_0 │ + move-exception v0 │ + │ + monitor-exit p0 │ + │ + throw v0 │ .end method │ │ .method protected onAllowSubscription(Landroid/content/ComponentName;)Z │ .locals 1 │ .param p1, "subscriber" # Landroid/content/ComponentName; │ │ .prologue ├── smali/com/selesca/xkcdmuzei/R.smali │ @@ -18,10 +18,9 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 10 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 21 │ return-void │ .end method ├── smali/com/selesca/xkcdmuzei/XkcdArtSource$1.smali │ @@ -20,14 +20,15 @@ │ # instance fields │ .field final synthetic this$0:Lcom/selesca/xkcdmuzei/XkcdArtSource; │ │ │ # direct methods │ .method constructor (Lcom/selesca/xkcdmuzei/XkcdArtSource;)V │ .locals 0 │ + .param p1, "this$0" # Lcom/selesca/xkcdmuzei/XkcdArtSource; │ │ .prologue │ .line 65 │ iput-object p1, p0, Lcom/selesca/xkcdmuzei/XkcdArtSource$1;->this$0:Lcom/selesca/xkcdmuzei/XkcdArtSource; │ │ invoke-direct {p0}, Ljava/lang/Object;->()V ├── smali/com/selesca/xkcdmuzei/XkcdArtSource.smali │ @@ -113,26 +113,29 @@ │ .local v7, "token":Ljava/lang/String; │ new-instance v8, Lretrofit/RestAdapter$Builder; │ │ invoke-direct {v8}, Lretrofit/RestAdapter$Builder;->()V │ │ const-string v9, "http://xkcd.com" │ │ + .line 57 │ invoke-virtual {v8, v9}, Lretrofit/RestAdapter$Builder;->setServer(Ljava/lang/String;)Lretrofit/RestAdapter$Builder; │ │ move-result-object v8 │ │ new-instance v9, Lcom/selesca/xkcdmuzei/XkcdArtSource$1; │ │ invoke-direct {v9, p0}, Lcom/selesca/xkcdmuzei/XkcdArtSource$1;->(Lcom/selesca/xkcdmuzei/XkcdArtSource;)V │ │ + .line 65 │ invoke-virtual {v8, v9}, Lretrofit/RestAdapter$Builder;->setErrorHandler(Lretrofit/ErrorHandler;)Lretrofit/RestAdapter$Builder; │ │ move-result-object v8 │ │ + .line 77 │ invoke-virtual {v8}, Lretrofit/RestAdapter$Builder;->build()Lretrofit/RestAdapter; │ │ move-result-object v5 │ │ .line 79 │ .local v5, "restAdapter":Lretrofit/RestAdapter; │ const/4 v3, 0x0 │ @@ -211,34 +214,38 @@ │ :cond_1 │ new-instance v8, Lcom/google/android/apps/muzei/api/Artwork$Builder; │ │ invoke-direct {v8}, Lcom/google/android/apps/muzei/api/Artwork$Builder;->()V │ │ iget-object v9, v3, Lcom/selesca/xkcdmuzei/XkcdService$Photo;->title:Ljava/lang/String; │ │ + .line 94 │ invoke-virtual {v8, v9}, Lcom/google/android/apps/muzei/api/Artwork$Builder;->title(Ljava/lang/String;)Lcom/google/android/apps/muzei/api/Artwork$Builder; │ │ move-result-object v8 │ │ iget-object v9, v3, Lcom/selesca/xkcdmuzei/XkcdService$Photo;->alt:Ljava/lang/String; │ │ + .line 95 │ invoke-virtual {v8, v9}, Lcom/google/android/apps/muzei/api/Artwork$Builder;->byline(Ljava/lang/String;)Lcom/google/android/apps/muzei/api/Artwork$Builder; │ │ move-result-object v8 │ │ iget-object v9, v3, Lcom/selesca/xkcdmuzei/XkcdService$Photo;->img:Ljava/lang/String; │ │ + .line 96 │ invoke-static {v9}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri; │ │ move-result-object v9 │ │ invoke-virtual {v8, v9}, Lcom/google/android/apps/muzei/api/Artwork$Builder;->imageUri(Landroid/net/Uri;)Lcom/google/android/apps/muzei/api/Artwork$Builder; │ │ move-result-object v8 │ │ + .line 97 │ invoke-virtual {v8, v7}, Lcom/google/android/apps/muzei/api/Artwork$Builder;->token(Ljava/lang/String;)Lcom/google/android/apps/muzei/api/Artwork$Builder; │ │ move-result-object v8 │ │ new-instance v9, Landroid/content/Intent; │ │ const-string v10, "android.intent.action.VIEW" │ @@ -257,28 +264,32 @@ │ │ move-result-object v11 │ │ invoke-virtual {v11}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ move-result-object v11 │ │ + .line 99 │ invoke-static {v11}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri; │ │ move-result-object v11 │ │ invoke-direct {v9, v10, v11}, Landroid/content/Intent;->(Ljava/lang/String;Landroid/net/Uri;)V │ │ + .line 98 │ invoke-virtual {v8, v9}, Lcom/google/android/apps/muzei/api/Artwork$Builder;->viewIntent(Landroid/content/Intent;)Lcom/google/android/apps/muzei/api/Artwork$Builder; │ │ move-result-object v8 │ │ + .line 100 │ invoke-virtual {v8}, Lcom/google/android/apps/muzei/api/Artwork$Builder;->build()Lcom/google/android/apps/muzei/api/Artwork; │ │ move-result-object v8 │ │ + .line 93 │ invoke-virtual {p0, v8}, Lcom/selesca/xkcdmuzei/XkcdArtSource;->publishArtwork(Lcom/google/android/apps/muzei/api/Artwork;)V │ │ .line 102 │ invoke-static {}, Ljava/lang/System;->currentTimeMillis()J │ │ move-result-wide v8