Offset 3, 43 lines modifiedOffset 3, 30 lines modified
  
3 import·java.util.function.Function;3 import·java.util.function.Function;
4 import·java.lang.reflect.Field;4 import·java.lang.reflect.Field;
5 import·java.lang.annotation.Annotation;5 import·java.lang.annotation.Annotation;
6 import·java.util.Objects;6 import·java.util.Objects;
7 import·com.android.providers.media.util.Logging;7 import·com.android.providers.media.util.Logging;
8 import·java.util.regex.Matcher;8 import·java.util.regex.Matcher;
 9 import·java.io.IOException;
9 import·android.system.ErrnoException;10 import·android.system.ErrnoException;
10 import·android.system.Os;11 import·android.system.Os;
 12 import·com.android.providers.media.util.MimeUtils;
 13 import·com.android.providers.media.util.FileUtils;
11 import·android.content.ContentValues;14 import·android.content.ContentValues;
12 import·android.os.CancellationSignal; 
13 import·android.os.Bundle; 
14 import·java.util.Iterator; 
15 import·android.database.ContentObserver;15 import·android.database.ContentObserver;
16 import·java.util.List; 
17 import·com.google.common.collect.Iterables; 
18 import·android.provider.MediaStore$Audio$Playlists$Members; 
19 import·java.io.FileNotFoundException; 
20 import·com.android.providers.media.util.FileUtils; 
21 import·com.android.providers.media.util.MimeUtils; 
22 import·android.database.Cursor;16 import·android.database.Cursor;
23 import·android.os.Trace;17 import·android.os.Trace;
24 import·com.android.providers.media.util.BackgroundThread;18 import·com.android.providers.media.util.BackgroundThread;
25 import·java.util.Collection;19 import·java.util.Collection;
26 import·com.android.providers.media.util.ForegroundThread;20 import·com.android.providers.media.util.ForegroundThread;
27 import·android.os.SystemClock;21 import·android.os.SystemClock;
28 import·java.io.FilenameFilter;22 import·java.io.FilenameFilter;
29 import·android.os.Environment; 
30 import·android.os.RemoteException; 
31 import·java.io.IOException; 
32 import·android.provider.MediaStore; 
33 import·android.content.ContentUris; 
34 import·android.provider.MediaStore$Files; 
35 import·com.android.providers.media.playlist.Playlist; 
36 import·java.io.File;23 import·java.io.File;
37 import·android.content.ContentProviderClient;24 import·android.os.Environment;
38 import·android.provider.MediaStore$Downloads;25 import·android.provider.MediaStore$Downloads;
39 import·android.provider.MediaStore$Images$Media;26 import·android.provider.MediaStore$Images$Media;
40 import·android.provider.MediaStore$Video$Media;27 import·android.provider.MediaStore$Video$Media;
41 import·android.provider.MediaStore$Audio$Media;28 import·android.provider.MediaStore$Audio$Media;
42 import·android.provider.MediaStore$Audio$Playlists;29 import·android.provider.MediaStore$Audio$Playlists;
43 import·com.android.providers.media.util.DatabaseUtils;30 import·com.android.providers.media.util.DatabaseUtils;
44 import·android.content.pm.ProviderInfo;31 import·android.content.pm.ProviderInfo;
Offset 58, 26 lines modifiedOffset 45, 25 lines modified
58 import·android.database.sqlite.SQLiteOpenHelper;45 import·android.database.sqlite.SQLiteOpenHelper;
  
59 public·class·DatabaseHelper·extends·SQLiteOpenHelper·implements·AutoCloseable46 public·class·DatabaseHelper·extends·SQLiteOpenHelper·implements·AutoCloseable
60 {47 {
61 ····public·static·final·String·CURRENT_GENERATION_CLAUSE·=·"SELECT·generation·FROM·local_metadata";48 ····public·static·final·String·CURRENT_GENERATION_CLAUSE·=·"SELECT·generation·FROM·local_metadata";
62 ····static·final·String·EXTERNAL_DATABASE_NAME·=·"external.db";49 ····static·final·String·EXTERNAL_DATABASE_NAME·=·"external.db";
63 ····static·final·String·INTERNAL_DATABASE_NAME·=·"internal.db";50 ····static·final·String·INTERNAL_DATABASE_NAME·=·"internal.db";
64 ····private·static·final·int·NOTIFY_BATCH_SIZE·=·256;51 ····private·static·final·long·RENAME_TIMEOUT·=·10000L;
65 ····private·static·final·long·PASSTHROUGH_WAIT_TIMEOUT·=·10000L; 
66 ····static·final·int·VERSION_J·=·509;52 ····static·final·int·VERSION_J·=·509;
67 ····static·final·int·VERSION_K·=·700;53 ····static·final·int·VERSION_K·=·700;
68 ····static·final·int·VERSION_L·=·700;54 ····static·final·int·VERSION_L·=·700;
69 ····static·final·int·VERSION_LATEST·=·1114;55 ····static·final·int·VERSION_LATEST·=·1115;
70 ····static·final·int·VERSION_M·=·800;56 ····static·final·int·VERSION_M·=·800;
71 ····static·final·int·VERSION_N·=·800;57 ····static·final·int·VERSION_N·=·800;
72 ····static·final·int·VERSION_O·=·800;58 ····static·final·int·VERSION_O·=·800;
73 ····static·final·int·VERSION_P·=·900;59 ····static·final·int·VERSION_P·=·900;
74 ····static·final·int·VERSION_Q·=·1023;60 ····static·final·int·VERSION_Q·=·1023;
75 ····static·final·int·VERSION_R·=·1114;61 ····static·final·int·VERSION_R·=·1115;
76 ····private·static·final·String·XATTR_UUID·=·"user.uuid";62 ····private·static·final·String·XATTR_UUID·=·"user.uuid";
77 ····private·static·final·ArraySet·sMigrateColumns;63 ····private·static·final·ArraySet·sMigrateColumns;
78 ····final·Class·mColumnAnnotation;64 ····final·Class·mColumnAnnotation;
79 ····final·Context·mContext;65 ····final·Context·mContext;
80 ····final·boolean·mEarlyUpgrade;66 ····final·boolean·mEarlyUpgrade;
81 ····final·DatabaseHelper$OnFilesChangeListener·mFilesListener;67 ····final·DatabaseHelper$OnFilesChangeListener·mFilesListener;
82 ····final·Set·mFilterVolumeNames;68 ····final·Set·mFilterVolumeNames;
Offset 313, 94 lines modifiedOffset 299, 31 lines modified
313 ············sb5.append("CREATE·VIEW·downloads·AS·SELECT·");299 ············sb5.append("CREATE·VIEW·downloads·AS·SELECT·");
314 ············final·Class[]·array5·=·new·Class[n];300 ············final·Class[]·array5·=·new·Class[n];
315 ············array5[0]·=·MediaStore$Downloads.class;301 ············array5[0]·=·MediaStore$Downloads.class;
316 ············sb5.append(String.join((CharSequence)",",·(Iterable<?·extends·CharSequence>)this.getProjectionMap(array5).keySet()));302 ············sb5.append(String.join((CharSequence)",",·(Iterable<?·extends·CharSequence>)this.getProjectionMap(array5).keySet()));
317 ············sb5.append("·FROM·files·WHERE·is_download=1");303 ············sb5.append("·FROM·files·WHERE·is_download=1");
318 ············sqLiteDatabase.execSQL(sb5.toString());304 ············sqLiteDatabase.execSQL(sb5.toString());
319 ············final·StringBuilder·sb6·=·new·StringBuilder();305 ············final·StringBuilder·sb6·=·new·StringBuilder();
320 ············sb6.append("CREATE·VIEW·audio_artists·AS·SELECT···artist_id·AS·_id,·MIN(artist)·AS·artist,·artist_key·AS·artist_key,·COUNT(DISTINCT·album_id)·AS·number_of_albums,·COUNT(DISTINCT·_id)·AS·number_of_tracks·FROM·audio·WHERE·volume_name·IN·");306 ············sb6.append("CREATE·VIEW·audio_artists·AS·SELECT···artist_id·AS·_id,·MIN(artist)·AS·artist,·artist_key·AS·artist_key,·COUNT(DISTINCT·album_id)·AS·number_of_albums,·COUNT(DISTINCT·_id)·AS·number_of_tracks·FROM·audio·WHERE·is_music=1·AND·volume_name·IN·");
321 ············sb6.append(bindList);307 ············sb6.append(bindList);
322 ············sb6.append("·GROUP·BY·artist_id");308 ············sb6.append("·GROUP·BY·artist_id");
323 ············sqLiteDatabase.execSQL(sb6.toString());309 ············sqLiteDatabase.execSQL(sb6.toString());
324 ············final·StringBuilder·sb7·=·new·StringBuilder();310 ············final·StringBuilder·sb7·=·new·StringBuilder();
325 ············sb7.append("CREATE·VIEW·audio_albums·AS·SELECT···album_id·AS·_id,·album_id·AS·album_id,·MIN(album)·AS·album,·album_key·AS·album_key,·artist_id·AS·artist_id,·artist·AS·artist,·artist_key·AS·artist_key,·COUNT(DISTINCT·_id)·AS·numsongs,·COUNT(DISTINCT·_id)·AS·numsongs_by_artist,·MIN(year)·AS·minyear,·MAX(year)·AS·maxyear,·NULL·AS·album_art·FROM·audio·WHERE·volume_name·IN·");311 ············sb7.append("CREATE·VIEW·audio_albums·AS·SELECT···album_id·AS·_id,·album_id·AS·album_id,·MIN(album)·AS·album,·album_key·AS·album_key,·artist_id·AS·artist_id,·artist·AS·artist,·artist_key·AS·artist_key,·COUNT(DISTINCT·_id)·AS·numsongs,·COUNT(DISTINCT·_id)·AS·numsongs_by_artist,·MIN(year)·AS·minyear,·MAX(year)·AS·maxyear,·NULL·AS·album_art·FROM·audio·WHERE·is_music=1·AND·volume_name·IN·");
326 ············sb7.append(bindList);312 ············sb7.append(bindList);
327 ············sb7.append("·GROUP·BY·album_id");313 ············sb7.append("·GROUP·BY·album_id");
328 ············sqLiteDatabase.execSQL(sb7.toString());314 ············sqLiteDatabase.execSQL(sb7.toString());
329 ············final·StringBuilder·sb8·=·new·StringBuilder();315 ············final·StringBuilder·sb8·=·new·StringBuilder();
330 ············sb8.append("CREATE·VIEW·audio_genres·AS·SELECT···genre_id·AS·_id,·MIN(genre)·AS·name·FROM·audio·WHERE·volume_name·IN·");316 ············sb8.append("CREATE·VIEW·audio_genres·AS·SELECT···genre_id·AS·_id,·MIN(genre)·AS·name·FROM·audio·WHERE·volume_name·IN·");
331 ············sb8.append(bindList);317 ············sb8.append(bindList);
332 ············sb8.append("·GROUP·BY·genre_id");318 ············sb8.append("·GROUP·BY·genre_id");
333 ············sqLiteDatabase.execSQL(sb8.toString());319 ············sqLiteDatabase.execSQL(sb8.toString());
334 ········}320 ········}
335 ····}321 ····}
336 ····322 ····
337 ····private·void·createPlaylistFile(final·ContentProviderClient·contentProviderClient,·Uri·query,·final·File·file)·{ 
338 ········final·String[]·array·=·{·"audio_id",·"play_order"·}; 
339 ········final·Playlist·playlist·=·new·Playlist(); 
340 ········final·String·s·=·"play_order"; 
341 ········final·Uri·uri·=·query; 
342 ········final·String[]·array2·=·array; 
343 ········final·String·s2·=·null; 
344 ········final·String[]·array3·=·null; 
345 ········try·{ 
346 ············query·=·(Uri)contentProviderClient.query(uri,·array2,·s2,·array3,·s); 
347 ············try·{ 
348 ················String·s3; 
349 ················while·(true)·{ 
350 ····················final·boolean·moveToNext·=·((Cursor)query).moveToNext(); 
351 ····················s3·=·"MediaProvider"; 
352 ····················if·(!moveToNext)·{ 
353 ························break; 
354 ····················} 
355 ····················final·long·long1·=·((Cursor)query).getLong(0); 
356 ····················final·int·int1·=·((Cursor)query).getInt(1); 
357 ····················final·String·queryForData·=·this.queryForData(contentProviderClient,·MediaStore.rewriteToLegacy(ContentUris.withAppendedId(MediaStore$Files.getContentUri(this.mVolumeName),·long1))); 
358 ····················if·(queryForData·==·null)·{ 
359 ························final·StringBuilder·sb·=·new·StringBuilder(); 
360 ························sb.append("Couldn't·find·audio·file·for·"); 
361 ························sb.append(long1); 
362 ························sb.append(",·continuing.."); 
363 ························Log.e(s3,·sb.toString()); 
364 ····················} 
365 ····················else·{ 
366 ························playlist.add(int1,·file.toPath().getParent().relativize(new·File(queryForData).toPath())); 
367 ····················} 
368 ················} 
369 ················try·{ 
370 ····················writeToPlaylistFileWithRetry(file,·playlist); 
371 ················} 
372 ················catch·(IOException·ex2)·{ 
373 ····················final·StringBuilder·sb2·=·new·StringBuilder(); 
374 ····················sb2.append("Couldn't·migrate·playlist·file·"); 
375 ····················sb2.append(file); 
376 ····················Log.wtf(s3,·sb2.toString()); 
377 ················} 
378 ················if·(query·!=·null)·{ 
379 ····················((Cursor)query).close(); 
380 ················} 
381 ············} 
382 ············finally·{ 
383 ················if·(query·!=·null)·{ 
384 ····················try·{ 
385 ························((Cursor)query).close(); 
386 ····················} 
387 ····················finally·{ 
388 ························final·Throwable·t; 
389 ························final·Throwable·t2; 
390 ························t.addSuppressed(t2); 
391 ····················} 
392 ················} 
393 ············} 
394 ········} 
395 ········catch·(RemoteException·ex)·{ 
396 ············throw·new·IllegalStateException((Throwable)ex); 
397 ········} 
398 ····} 
399 ···· 
400 ····private·static·void·deleteLegacyThumbnailData()·{323 ····private·static·void·deleteLegacyThumbnailData()·{
401 ········File[]·listFiles·=·new·File(Environment.getExternalStorageDirectory(),·"/DCIM/.thumbnails").listFiles((FilenameFilter)-$$Lambda$DatabaseHelper$mjNM6NKW1wog4qZIJGvH3Io8aIc.INSTANCE);324 ········File[]·listFiles·=·new·File(Environment.getExternalStorageDirectory(),·"/DCIM/.thumbnails").listFiles((FilenameFilter)-$$Lambda$DatabaseHelper$mjNM6NKW1wog4qZIJGvH3Io8aIc.INSTANCE);
402 ········int·i·=·0;325 ········int·i·=·0;
403 ········if·(listFiles·==·null)·{326 ········if·(listFiles·==·null)·{
404 ············listFiles·=·new·File[0];327 ············listFiles·=·new·File[0];
405 ········}328 ········}
406 ········while·(i·<·listFiles.length)·{329 ········while·(i·<·listFiles.length)·{
Offset 439, 15 lines modifiedOffset 362, 15 lines modified
439 ············}362 ············}
440 ············return;363 ············return;
441 ········}364 ········}
442 ········throw·new·IllegalStateException("No·transaction·in·progress");365 ········throw·new·IllegalStateException("No·transaction·in·progress");
443 ····}366 ····}
444 ····367 ····
445 ····public·static·int·getDatabaseVersion(final·Context·context)·{368 ····public·static·int·getDatabaseVersion(final·Context·context)·{
446 ········return·1114;369 ········return·1115;
447 ····}370 ····}
448 ····371 ····
449 ····public·static·long·getGeneration(final·SQLiteDatabase·sqLiteDatabase)·{372 ····public·static·long·getGeneration(final·SQLiteDatabase·sqLiteDatabase)·{
450 ········return·android.database.DatabaseUtils.longForQuery(sqLiteDatabase,·"SELECT·generation·FROM·local_metadata;",·(String[])null);373 ········return·android.database.DatabaseUtils.longForQuery(sqLiteDatabase,·"SELECT·generation·FROM·local_metadata;",·(String[])null);
451 ····}374 ····}
452 ····375 ····
453 ····public·static·long·getItemCount(final·SQLiteDatabase·sqLiteDatabase)·{376 ····public·static·long·getItemCount(final·SQLiteDatabase·sqLiteDatabase)·{
Offset 751, 15 lines modifiedOffset 674, 15 lines modified
751 ········//···217:·astore··········12674 ········//···217:·astore··········12
752 ········//···219:·aload···········12675 ········//···219:·aload···········12
753 ········//···221:·invokespecial···android/content/ContentValues.<init>:()V676 ········//···221:·invokespecial···android/content/ContentValues.<init>:()V
754 ········//···224:·aload···········11677 ········//···224:·aload···········11
755 ········//···226:·invokeinterface·android/database/Cursor.moveToNext:()Z678 ········//···226:·invokeinterface·android/database/Cursor.moveToNext:()Z
756 ········//···231:·istore··········13679 ········//···231:·istore··········13
757 ········//···233:·iload···········13680 ········//···233:·iload···········13
758 ········//···235:·ifeq············979681 ········//···235:·ifeq············735
759 ········//···238:·aload···········12682 ········//···238:·aload···········12
760 ········//···240:·invokevirtual···android/content/ContentValues.clear:()V683 ········//···240:·invokevirtual···android/content/ContentValues.clear:()V
761 ········//···243:·aload···········11684 ········//···243:·aload···········11
762 ········//···245:·aload_3········685 ········//···245:·aload_3········
763 ········//···246:·invokeinterface·android/database/Cursor.getColumnIndex:(Ljava/lang/String;)I686 ········//···246:·invokeinterface·android/database/Cursor.getColumnIndex:(Ljava/lang/String;)I
764 ········//···251:·istore··········13687 ········//···251:·istore··········13
765 ········//···253:·aload···········11688 ········//···253:·aload···········11
Offset 793, 504 lines modifiedOffset 716, 370 lines modified
793 ········//···322:·aload···········11716 ········//···322:·aload···········11
794 ········//···324:·aload···········12717 ········//···324:·aload···········12
795 ········//···326:·invokestatic····com/android/providers/media/util/DatabaseUtils.copyFromCursorToContentValues:(Ljava/lang/String;Landroid/database/Cursor;Landroid/content/ContentValues;)V718 ········//···326:·invokestatic····com/android/providers/media/util/DatabaseUtils.copyFromCursorToContentValues:(Ljava/lang/String;Landroid/database/Cursor;Landroid/content/ContentValues;)V
796 ········//···329:·goto············290719 ········//···329:·goto············290
797 ········//···332:·aload···········4720 ········//···332:·aload···········4
798 ········//···334:·invokestatic····com/android/providers/media/util/FileUtils.extractVolumePath:(Ljava/lang/String;)Ljava/lang/String;721 ········//···334:·invokestatic····com/android/providers/media/util/FileUtils.extractVolumePath:(Ljava/lang/String;)Ljava/lang/String;
799 ········//···337:·astore··········7722 ········//···337:·astore··········7
800 ········//···339:·ldc·············"media_type"723 ········//···339:·ldc_w···········";·continuing"
801 ········//···341:·astore··········8724 ········//···342:·astore··········8
802 ········//···343:·aload···········11725 ········//···344:·aload···········7
803 ········//···345:·aload···········8726 ········//···346:·ifnull··········469
804 ········//···347:·invokeinterface·android/database/Cursor.getColumnIndex:(Ljava/lang/String;)I727 ········//···349:·new·············Ljava/io/File;
805 ········//···352:·istore··········14728 ········//···352:·astore··········10
806 ········//···354:·aload···········11729 ········//···354:·aload···········10
807 ········//···356:·iload···········14730 ········//···356:·aload···········7
808 ········//···358:·invokeinterface·android/database/Cursor.getInt:(I)I731 ········//···358:·invokespecial···java/io/File.<init>:(Ljava/lang/String;)V
809 ········//···363:·istore··········14732 ········//···361:·aload···········12
810 ········//···365:·aload_2········733 ········//···363:·aload···········10
811 ········//···366:·getfield········com/android/providers/media/DatabaseHelper.mInternal:Z734 ········//···365:·iconst_0·······
812 ········//···369:·istore··········9735 ········//···366:·invokestatic····com/android/providers/media/util/FileUtils.computeDataFromValues:(Landroid/content/ContentValues;Ljava/io/File;Z)V
813 ········//···371:·iload···········9736 ········//···369:·aload···········12
814 ········//···373:·ifne············583737 ········//···371:·aload_3········
815 ········//···376:·aload···········7738 ········//···372:·invokevirtual···android/content/ContentValues.getAsString:(Ljava/lang/String;)Ljava/lang/String;
816 ········//···378:·ifnull··········583739 ········//···375:·astore··········7
817 ········//···381:·iconst_4·······740 ········//···377:·aload···········4
818 ········//···382:·istore··········9741 ········//···379:·aload···········7
819 ········//···384:·iload···········14742 ········//···381:·invokestatic····java/util/Objects.equals:(Ljava/lang/Object;Ljava/lang/Object;)Z
 743 ········//···384:·istore··········9
820 ········//···386:·iload···········9744 ········//···386:·iload···········9
821 ········//···388:·if_icmpne·······583745 ········//···388:·ifne············469
822 ········//···391:·new·············Ljava/io/File;746 ········//···391:·aload···········4
823 ········//···394:·astore··········8747 ········//···393:·aload···········7
824 ········//···396:·aload···········8748 ········//···395:·invokestatic····com/android/providers/media/DatabaseHelper.renameWithRetry:(Ljava/lang/String;Ljava/lang/String;)V
825 ········//···398:·aload···········4749 ········//···398:·goto············469
826 ········//···400:·invokespecial···java/io/File.<init>:(Ljava/lang/String;)V750 ········//···401:·astore··········4
827 ········//···403:·aload···········8751 ········//···403:·aload···········4
828 ········//···405:·invokevirtual···java/io/File.exists:()Z752 ········//···405:·astore··········7
829 ········//···408:·istore··········9753 ········//···407:·new·············Ljava/lang/StringBuilder;
830 ········//···410:·iload···········9754 ········//···410:·astore··········4
831 ········//···412:·ifne············583755 ········//···412:·aload···········4
832 ········//···415:·getstatic·······com/android/providers/media/util/Logging.LOGV:Z756 ········//···414:·invokespecial···java/lang/StringBuilder.<init>:()V
833 ········//···418:·istore··········9757 ········//···417:·ldc_w···········"Failed·to·rename·"
834 ········//···420:·iload···········9758 ········//···420:·astore··········10
835 ········//···422:·ifeq············471759 ········//···422:·aload···········4
836 ········//···425:·new·············Ljava/lang/StringBuilder;760 ········//···424:·aload···········10
837 ········//···428:·astore··········10761 ········//···426:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
838 ········//···430:·aload···········10762 ········//···429:·pop············
839 ········//···432:·invokespecial···java/lang/StringBuilder.<init>:()V763 ········//···430:·aload···········4
840 ········//···435:·ldc_w···········"Migrating·playlist·file·"764 ········//···432:·aload···········12
841 ········//···438:·astore··········15765 ········//···434:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
842 ········//···440:·aload···········10766 ········//···437:·pop············
843 ········//···442:·aload···········15767 ········//···438:·aload···········4
844 ········//···444:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;768 ········//···440:·aload···········8
845 ········//···447:·pop············769 ········//···442:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
846 ········//···448:·aload···········10770 ········//···445:·pop············
847 ········//···450:·aload···········8771 ········//···446:·aload···········4
848 ········//···452:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;772 ········//···448:·invokevirtual···java/lang/StringBuilder.toString:()Ljava/lang/String;
849 ········//···455:·pop············773 ········//···451:·astore··········4
850 ········//···456:·aload···········10774 ········//···453:·aload···········6
851 ········//···458:·invokevirtual···java/lang/StringBuilder.toString:()Ljava/lang/String;775 ········//···455:·aload···········4
852 ········//···461:·astore··········8776 ········//···457:·aload···········7
853 ········//···463:·aload···········6777 ········//···459:·invokestatic····android/util/Log.wtf:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
854 ········//···465:·aload···········8778 ········//···462:·pop············
855 ········//···467:·invokestatic····android/util/Log.v:(Ljava/lang/String;Ljava/lang/String;)I779 ········//···463:·aload···········12
856 ········//···470:·pop············780 ········//···465:·iconst_0·······
857 ········//···471:·ldc·············"_id"781 ········//···466:·invokestatic····com/android/providers/media/util/FileUtils.computeValuesFromData:(Landroid/content/ContentValues;Z)V
858 ········//···473:·astore··········8782 ········//···469:·ldc_w···········"files"
859 ········//···475:·aload···········11783 ········//···472:·astore··········4
860 ········//···477:·aload···········8784 ········//···474:·aload_1········
861 ········//···479:·invokeinterface·android/database/Cursor.getColumnIndex:(Ljava/lang/String;)I785 ········//···475:·aload···········4
862 ········//···484:·istore··········14786 ········//···477:·aconst_null····
863 ········//···486:·aload···········11787 ········//···478:·aload···········12
864 ········//···488:·iload···········14788 ········//···480:·invokevirtual···android/database/sqlite/SQLiteDatabase.insert:(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J
865 ········//···490:·invokeinterface·android/database/Cursor.getLong:(I)J789 ········//···483:·lstore··········15
866 ········//···495:·lstore··········16790 ········//···485:·iconst_m1······
867 ········//···497:·aload_2········791 ········//···486:·i2l············
868 ········//···498:·aload···········5792 ········//···487:·lstore··········17
869 ········//···500:·lload···········16793 ········//···489:·lload···········15
870 ········//···502:·invokespecial···com/android/providers/media/DatabaseHelper.migratePlaylistFiles:(Landroid/content/ContentProviderClient;J)Ljava/lang/String;794 ········//···491:·lload···········17
871 ········//···505:·astore··········8795 ········//···493:·lcmp···········
872 ········//···507:·aload···········8796 ········//···494:·istore··········13
873 ········//···509:·ifnonnull·······569797 ········//···496:·iload···········13
874 ········//···512:·aload···········4798 ········//···498:·ifne············555
875 ········//···514:·astore··········8799 ········//···501:·new·············Ljava/lang/StringBuilder;
876 ········//···516:·goto············569800 ········//···504:·astore··········4
877 ········//···519:·pop············801 ········//···506:·aload···········4
878 ········//···520:·new·············Ljava/lang/StringBuilder;802 ········//···508:·invokespecial···java/lang/StringBuilder.<init>:()V
879 ········//···523:·astore··········8803 ········//···511:·ldc_w···········"Failed·to·insert·"
880 ········//···525:·aload···········8804 ········//···514:·astore··········7
881 ········//···527:·invokespecial···java/lang/StringBuilder.<init>:()V805 ········//···516:·aload···········4
882 ········//···530:·ldc_w···········"Couldn't·migrate·playlist·file·"806 ········//···518:·aload···········7
883 ········//···533:·astore··········10807 ········//···520:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
884 ········//···535:·aload···········8808 ········//···523:·pop············
885 ········//···537:·aload···········10809 ········//···524:·aload···········4
886 ········//···539:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;810 ········//···526:·aload···········12
887 ········//···542:·pop············811 ········//···528:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
888 ········//···543:·aload···········8812 ········//···531:·pop············
889 ········//···545:·aload···········4813 ········//···532:·aload···········4
890 ········//···547:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;814 ········//···534:·aload···········8
891 ········//···550:·pop············815 ········//···536:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
892 ········//···551:·aload···········8816 ········//···539:·pop············
893 ········//···553:·invokevirtual···java/lang/StringBuilder.toString:()Ljava/lang/String;817 ········//···540:·aload···········4
894 ········//···556:·astore··········8818 ········//···542:·invokevirtual···java/lang/StringBuilder.toString:()Ljava/lang/String;
895 ········//···558:·aload···········6819 ········//···545:·astore··········4
896 ········//···560:·aload···········8820 ········//···547:·aload···········6
897 ········//···562:·invokestatic····android/util/Log.wtf:(Ljava/lang/String;Ljava/lang/String;)I821 ········//···549:·aload···········4
898 ········//···565:·pop············822 ········//···551:·invokestatic····android/util/Log.w:(Ljava/lang/String;Ljava/lang/String;)I
899 ········//···566:·goto············512823 ········//···554:·pop············
900 ········//···569:·aload···········12824 ········//···555:·aload···········11
901 ········//···571:·aload_3········825 ········//···557:·invokeinterface·android/database/Cursor.getPosition:()I
902 ········//···572:·aload···········8826 ········//···562:·istore··········13
903 ········//···574:·invokevirtual···android/content/ContentValues.put:(Ljava/lang/String;Ljava/lang/String;)V827 ········//···564:·iload···········13
904 ········//···577:·aload···········12828 ········//···566:·sipush··········2000
905 ········//···579:·iconst_0·······829 ········//···569:·irem···········
906 ········//···580:·invokestatic····com/android/providers/media/util/FileUtils.computeValuesFromData:(Landroid/content/ContentValues;Z)V830 ········//···570:·istore··········13
907 ········//···583:·ldc_w···········";·continuing"831 ········//···572:·iload···········13
908 ········//···586:·astore··········8832 ········//···574:·ifne············732
909 ········//···588:·aload···········7833 ········//···577:·aload_1········
910 ········//···590:·ifnull··········713834 ········//···578:·invokevirtual···android/database/sqlite/SQLiteDatabase.setTransactionSuccessful:()V
911 ········//···593:·new·············Ljava/io/File;835 ········//···581:·aload_1········
912 ········//···596:·astore··········10836 ········//···582:·invokevirtual···android/database/sqlite/SQLiteDatabase.endTransaction:()V
913 ········//···598:·aload···········10837 ········//···585:·aload_1········
914 ········//···600:·aload···········7838 ········//···586:·invokevirtual···android/database/sqlite/SQLiteDatabase.beginTransaction:()V
915 ········//···602:·invokespecial···java/io/File.<init>:(Ljava/lang/String;)V839 ········//···589:·aload···········11
916 ········//···605:·aload···········12840 ········//···591:·invokeinterface·android/database/Cursor.getPosition:()I
917 ········//···607:·aload···········10841 ········//···596:·istore··········13
918 ········//···609:·iconst_0·······842 ········//···598:·aload···········11
919 ········//···610:·invokestatic····com/android/providers/media/util/FileUtils.computeDataFromValues:(Landroid/content/ContentValues;Ljava/io/File;Z)V843 ········//···600:·invokeinterface·android/database/Cursor.getCount:()I
920 ········//···613:·aload···········12844 ········//···605:·istore··········19
921 ········//···615:·aload_3········845 ········//···607:·new·············Ljava/lang/StringBuilder;
922 ········//···616:·invokevirtual···android/content/ContentValues.getAsString:(Ljava/lang/String;)Ljava/lang/String;846 ········//···610:·astore··········8
923 ········//···619:·astore··········7847 ········//···612:·aload···········8
924 ········//···621:·aload···········4848 ········//···614:·invokespecial···java/lang/StringBuilder.<init>:()V
925 ········//···623:·aload···········7849 ········//···617:·ldc_w···········"Migrated·"
926 ········//···625:·invokestatic····java/util/Objects.equals:(Ljava/lang/Object;Ljava/lang/Object;)Z850 ········//···620:·astore··········10
927 ········//···628:·istore··········9851 ········//···622:·aload···········8
928 ········//···630:·iload···········9852 ········//···624:·aload···········10
929 ········//···632:·ifne············713853 ········//···626:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
930 ········//···635:·aload···········4854 ········//···629:·pop············
931 ········//···637:·aload···········7855 ········//···630:·aload···········8
932 ········//···639:·invokestatic····com/android/providers/media/DatabaseHelper.renameWithRetry:(Ljava/lang/String;Ljava/lang/String;)V856 ········//···632:·iload···········13
933 ········//···642:·goto············713857 ········//···634:·invokevirtual···java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
934 ········//···645:·astore··········4858 ········//···637:·pop············
935 ········//···647:·aload···········4859 ········//···638:·ldc_w···········"·of·"
936 ········//···649:·astore··········7860 ········//···641:·astore··········10
937 ········//···651:·new·············Ljava/lang/StringBuilder;861 ········//···643:·aload···········8
938 ········//···654:·astore··········4862 ········//···645:·aload···········10
939 ········//···656:·aload···········4863 ········//···647:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
940 ········//···658:·invokespecial···java/lang/StringBuilder.<init>:()V864 ········//···650:·pop············
941 ········//···661:·ldc_w···········"Failed·to·rename·"865 ········//···651:·aload···········8
942 ········//···664:·astore··········10866 ········//···653:·iload···········19
943 ········//···666:·aload···········4867 ········//···655:·invokevirtual···java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
944 ········//···668:·aload···········10868 ········//···658:·pop············
945 ········//···670:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;869 ········//···659:·ldc_w···········"..."
946 ········//···673:·pop············870 ········//···662:·astore··········10
947 ········//···674:·aload···········4871 ········//···664:·aload···········8
948 ········//···676:·aload···········12872 ········//···666:·aload···········10
949 ········//···678:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;873 ········//···668:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
950 ········//···681:·pop············874 ········//···671:·pop············
951 ········//···682:·aload···········4875 ········//···672:·aload···········8
952 ········//···684:·aload···········8876 ········//···674:·invokevirtual···java/lang/StringBuilder.toString:()Ljava/lang/String;
953 ········//···686:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;877 ········//···677:·astore··········8
954 ········//···689:·pop············878 ········//···679:·aload···········6
955 ········//···690:·aload···········4879 ········//···681:·aload···········8
956 ········//···692:·invokevirtual···java/lang/StringBuilder.toString:()Ljava/lang/String;880 ········//···683:·invokestatic····android/util/Log.v:(Ljava/lang/String;Ljava/lang/String;)I
957 ········//···695:·astore··········4881 ········//···686:·pop············
958 ········//···697:·aload···········6882 ········//···687:·aload_2········
959 ········//···699:·aload···········4883 ········//···688:·getfield········com/android/providers/media/DatabaseHelper.mMigrationListener:Lcom/android/providers/media/DatabaseHelper$OnLegacyMigrationListener;
960 ········//···701:·aload···········7884 ········//···691:·astore··········8
961 ········//···703:·invokestatic····android/util/Log.wtf:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I885 ········//···693:·aload_2········
962 ········//···706:·pop············886 ········//···694:·getfield········com/android/providers/media/DatabaseHelper.mVolumeName:Ljava/lang/String;
963 ········//···707:·aload···········12887 ········//···697:·astore··········10
964 ········//···709:·iconst_0·······888 ········//···699:·iload···········13
965 ········//···710:·invokestatic····com/android/providers/media/util/FileUtils.computeValuesFromData:(Landroid/content/ContentValues;Z)V889 ········//···701:·i2l············
966 ········//···713:·ldc_w···········"files"890 ········//···702:·lstore··········20
967 ········//···716:·astore··········4891 ········//···704:·iload···········19
968 ········//···718:·aload_1········892 ········//···706:·i2l············
969 ········//···719:·aload···········4893 ········//···707:·lstore··········22
970 ········//···721:·aconst_null····894 ········//···709:·aload···········8
971 ········//···722:·aload···········12895 ········//···711:·astore··········7
972 ········//···724:·invokevirtual···android/database/sqlite/SQLiteDatabase.insert:(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J896 ········//···713:·aload···········5
973 ········//···727:·lstore··········18897 ········//···715:·astore··········8
974 ········//···729:·iconst_m1······898 ········//···717:·aload···········7
975 ········//···730:·i2l············899 ········//···719:·aload···········5
976 ········//···731:·lstore··········20900 ········//···721:·aload···········10
977 ········//···733:·lload···········18901 ········//···723:·lload···········20
978 ········//···735:·lload···········20902 ········//···725:·lload···········22
979 ········//···737:·lcmp···········903 ········//···727:·invokeinterface·com/android/providers/media/DatabaseHelper$OnLegacyMigrationListener.onProgress:(Landroid/content/ContentProviderClient;Ljava/lang/String;JJ)V
980 ········//···738:·istore··········13904 ········//···732:·goto············224
981 ········//···740:·iload···········13905 ········//···735:·ldc_w···········"Finished·migration·from·legacy·provider"
982 ········//···742:·ifne············799906 ········//···738:·astore··········4
983 ········//···745:·new·············Ljava/lang/StringBuilder;907 ········//···740:·aload···········6
984 ········//···748:·astore··········4908 ········//···742:·aload···········4
985 ········//···750:·aload···········4909 ········//···744:·invokestatic····android/util/Log.d:(Ljava/lang/String;Ljava/lang/String;)I
986 ········//···752:·invokespecial···java/lang/StringBuilder.<init>:()V910 ········//···747:·pop············
987 ········//···755:·ldc_w···········"Failed·to·insert·"911 ········//···748:·aload···········11
988 ········//···758:·astore··········7912 ········//···750:·ifnull··········812
989 ········//···760:·aload···········4913 ········//···753:·aload···········11
990 ········//···762:·aload···········7914 ········//···755:·invokeinterface·android/database/Cursor.close:()V
991 ········//···764:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;915 ········//···760:·goto············812
992 ········//···767:·pop············916 ········//···763:·astore··········4
993 ········//···768:·aload···········4917 ········//···765:·aload···········4
994 ········//···770:·aload···········12918 ········//···767:·astore_3·······
995 ········//···772:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;919 ········//···768:·aload···········11
996 ········//···775:·pop············920 ········//···770:·ifnull··········795
997 ········//···776:·aload···········4921 ········//···773:·aload···········11
998 ········//···778:·aload···········8922 ········//···775:·invokeinterface·android/database/Cursor.close:()V
999 ········//···780:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;923 ········//···780:·goto············795
1000 ········//···783:·pop············924 ········//···783:·astore··········4
1001 ········//···784:·aload···········4925 ········//···785:·aload···········4
1002 ········//···786:·invokevirtual···java/lang/StringBuilder.toString:()Ljava/lang/String;926 ········//···787:·astore··········7
1003 ········//···789:·astore··········4927 ········//···789:·aload_3········
1004 ········//···791:·aload···········6928 ········//···790:·aload···········4
1005 ········//···793:·aload···········4929 ········//···792:·invokevirtual···java/lang/Throwable.addSuppressed:(Ljava/lang/Throwable;)V
1006 ········//···795:·invokestatic····android/util/Log.w:(Ljava/lang/String;Ljava/lang/String;)I930 ········//···795:·aload_3········
1007 ········//···798:·pop············931 ········//···796:·athrow·········
1008 ········//···799:·aload···········11932 ········//···797:·astore··········4
1009 ········//···801:·invokeinterface·android/database/Cursor.getPosition:()I933 ········//···799:·ldc_w···········"Failed·migration·from·legacy·provider"
1010 ········//···806:·istore··········13934 ········//···802:·astore_3·······
1011 ········//···808:·iload···········13935 ········//···803:·aload···········6
1012 ········//···810:·sipush··········2000936 ········//···805:·aload_3········
1013 ········//···813:·irem···········937 ········//···806:·aload···········4
1014 ········//···814:·istore··········13938 ········//···808:·invokestatic····android/util/Log.wtf:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
1015 ········//···816:·iload···········13939 ········//···811:·pop············
1016 ········//···818:·ifne············976940 ········//···812:·aload_1········
1017 ········//···821:·aload_1········941 ········//···813:·invokevirtual···android/database/sqlite/SQLiteDatabase.setTransactionSuccessful:()V
1018 ········//···822:·invokevirtual···android/database/sqlite/SQLiteDatabase.setTransactionSuccessful:()V942 ········//···816:·aload_1········
1019 ········//···825:·aload_1········943 ········//···817:·invokevirtual···android/database/sqlite/SQLiteDatabase.endTransaction:()V
1020 ········//···826:·invokevirtual···android/database/sqlite/SQLiteDatabase.endTransaction:()V944 ········//···820:·aload_2········
1021 ········//···829:·aload_1········945 ········//···821:·getfield········com/android/providers/media/DatabaseHelper.mMigrationListener:Lcom/android/providers/media/DatabaseHelper$OnLegacyMigrationListener;
1022 ········//···830:·invokevirtual···android/database/sqlite/SQLiteDatabase.beginTransaction:()V946 ········//···824:·astore··········4
1023 ········//···833:·aload···········11947 ········//···826:·aload_2········
1024 ········//···835:·invokeinterface·android/database/Cursor.getPosition:()I948 ········//···827:·getfield········com/android/providers/media/DatabaseHelper.mVolumeName:Ljava/lang/String;
1025 ········//···840:·istore··········13949 ········//···830:·astore_2·······
1026 ········//···842:·aload···········11950 ········//···831:·aload···········4
1027 ········//···844:·invokeinterface·android/database/Cursor.getCount:()I951 ········//···833:·aload···········5
1028 ········//···849:·istore··········22952 ········//···835:·aload_2········
1029 ········//···851:·new·············Ljava/lang/StringBuilder;953 ········//···836:·invokeinterface·com/android/providers/media/DatabaseHelper$OnLegacyMigrationListener.onFinished:(Landroid/content/ContentProviderClient;Ljava/lang/String;)V
1030 ········//···854:·astore··········8954 ········//···841:·aload···········5
1031 ········//···856:·aload···········8955 ········//···843:·ifnull··········851
1032 ········//···858:·invokespecial···java/lang/StringBuilder.<init>:()V956 ········//···846:·aload···········5
1033 ········//···861:·ldc_w···········"Migrated·"957 ········//···848:·invokevirtual···android/content/ContentProviderClient.close:()V
1034 ········//···864:·astore··········10958 ········//···851:·return·········
1035 ········//···866:·aload···········8959 ········//···852:·astore··········4
1036 ········//···868:·aload···········10960 ········//···854:·aload···········4
1037 ········//···870:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;961 ········//···856:·astore_2·······
1038 ········//···873:·pop············962 ········//···857:·aload···········5
1039 ········//···874:·aload···········8963 ········//···859:·ifnull··········881
1040 ········//···876:·iload···········13964 ········//···862:·aload···········5
1041 ········//···878:·invokevirtual···java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;965 ········//···864:·invokevirtual···android/content/ContentProviderClient.close:()V
1042 ········//···881:·pop············966 ········//···867:·goto············881
1043 ········//···882:·ldc_w···········"·of·"967 ········//···870:·astore··········4
1044 ········//···885:·astore··········10968 ········//···872:·aload···········4
1045 ········//···887:·aload···········8969 ········//···874:·astore_3·······
1046 ········//···889:·aload···········10970 ········//···875:·aload_2········
1047 ········//···891:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;971 ········//···876:·aload···········4
1048 ········//···894:·pop············972 ········//···878:·invokevirtual···java/lang/Throwable.addSuppressed:(Ljava/lang/Throwable;)V
1049 ········//···895:·aload···········8973 ········//···881:·aload_2········
1050 ········//···897:·iload···········22974 ········//···882:·athrow·········
1051 ········//···899:·invokevirtual···java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder; 
1052 ········//···902:·pop············ 
1053 ········//···903:·ldc_w···········"..." 
1054 ········//···906:·astore··········10 
1055 ········//···908:·aload···········8 
1056 ········//···910:·aload···········10 
1057 ········//···912:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; 
1058 ········//···915:·pop············ 
1059 ········//···916:·aload···········8 
1060 ········//···918:·invokevirtual···java/lang/StringBuilder.toString:()Ljava/lang/String; 
1061 ········//···921:·astore··········8 
1062 ········//···923:·aload···········6 
1063 ········//···925:·aload···········8 
1064 ········//···927:·invokestatic····android/util/Log.v:(Ljava/lang/String;Ljava/lang/String;)I 
1065 ········//···930:·pop············ 
1066 ········//···931:·aload_2········ 
1067 ········//···932:·getfield········com/android/providers/media/DatabaseHelper.mMigrationListener:Lcom/android/providers/media/DatabaseHelper$OnLegacyMigrationListener; 
1068 ········//···935:·astore··········8 
1069 ········//···937:·aload_2········ 
1070 ········//···938:·getfield········com/android/providers/media/DatabaseHelper.mVolumeName:Ljava/lang/String; 
1071 ········//···941:·astore··········10 
1072 ········//···943:·iload···········13 
1073 ········//···945:·i2l············ 
1074 ········//···946:·lstore··········23 
1075 ········//···948:·iload···········22 
1076 ········//···950:·i2l············ 
1077 ········//···951:·lstore··········25 
1078 ········//···953:·aload···········8 
1079 ········//···955:·astore··········7 
1080 ········//···957:·aload···········5 
1081 ········//···959:·astore··········8 
1082 ········//···961:·aload···········7 
1083 ········//···963:·aload···········5 
1084 ········//···965:·aload···········10 
1085 ········//···967:·lload···········23 
1086 ········//···969:·lload···········25 
1087 ········//···971:·invokeinterface·com/android/providers/media/DatabaseHelper$OnLegacyMigrationListener.onProgress:(Landroid/content/ContentProviderClient;Ljava/lang/String;JJ)V 
1088 ········//···976:·goto············224 
1089 ········//···979:·ldc_w···········"Finished·migration·from·legacy·provider" 
1090 ········//···982:·astore··········4 
1091 ········//···984:·aload···········6 
1092 ········//···986:·aload···········4 
1093 ········//···988:·invokestatic····android/util/Log.d:(Ljava/lang/String;Ljava/lang/String;)I 
1094 ········//···991:·pop············ 
1095 ········//···992:·aload···········11 
1096 ········//···994:·ifnull··········1056 
1097 ········//···997:·aload···········11 
1098 ········//···999:·invokeinterface·android/database/Cursor.close:()V 
1099 ········//··1004:·goto············1056 
1100 ········//··1007:·astore··········4 
1101 ········//··1009:·aload···········4 
1102 ········//··1011:·astore_3······· 
1103 ········//··1012:·aload···········11 
1104 ········//··1014:·ifnull··········1039 
1105 ········//··1017:·aload···········11 
1106 ········//··1019:·invokeinterface·android/database/Cursor.close:()V 
1107 ········//··1024:·goto············1039 
1108 ········//··1027:·astore··········4 
1109 ········//··1029:·aload···········4 
1110 ········//··1031:·astore··········7 
1111 ········//··1033:·aload_3········ 
1112 ········//··1034:·aload···········4 
1113 ········//··1036:·invokevirtual···java/lang/Throwable.addSuppressed:(Ljava/lang/Throwable;)V 
1114 ········//··1039:·aload_3········ 
1115 ········//··1040:·athrow········· 
1116 ········//··1041:·astore··········4 
1117 ········//··1043:·ldc_w···········"Failed·migration·from·legacy·provider" 
1118 ········//··1046:·astore_3······· 
1119 ········//··1047:·aload···········6 
1120 ········//··1049:·aload_3········ 
1121 ········//··1050:·aload···········4 
1122 ········//··1052:·invokestatic····android/util/Log.wtf:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I 
1123 ········//··1055:·pop············ 
1124 ········//··1056:·aload_1········ 
1125 ········//··1057:·invokevirtual···android/database/sqlite/SQLiteDatabase.setTransactionSuccessful:()V 
1126 ········//··1060:·aload_1········ 
1127 ········//··1061:·invokevirtual···android/database/sqlite/SQLiteDatabase.endTransaction:()V 
1128 ········//··1064:·aload_2········ 
1129 ········//··1065:·getfield········com/android/providers/media/DatabaseHelper.mMigrationListener:Lcom/android/providers/media/DatabaseHelper$OnLegacyMigrationListener; 
1130 ········//··1068:·astore··········4 
1131 ········//··1070:·aload_2········ 
1132 ········//··1071:·getfield········com/android/providers/media/DatabaseHelper.mVolumeName:Ljava/lang/String; 
1133 ········//··1074:·astore_2······· 
1134 ········//··1075:·aload···········4 
1135 ········//··1077:·aload···········5 
1136 ········//··1079:·aload_2········ 
1137 ········//··1080:·invokeinterface·com/android/providers/media/DatabaseHelper$OnLegacyMigrationListener.onFinished:(Landroid/content/ContentProviderClient;Ljava/lang/String;)V 
1138 ········//··1085:·aload···········5 
1139 ········//··1087:·ifnull··········1095 
1140 ········//··1090:·aload···········5 
1141 ········//··1092:·invokevirtual···android/content/ContentProviderClient.close:()V 
1142 ········//··1095:·return········· 
1143 ········//··1096:·astore··········4 
1144 ········//··1098:·aload···········4 
1145 ········//··1100:·astore_2······· 
1146 ········//··1101:·aload···········5 
1147 ········//··1103:·ifnull··········1125 
1148 ········//··1106:·aload···········5 
1149 ········//··1108:·invokevirtual···android/content/ContentProviderClient.close:()V 
1150 ········//··1111:·goto············1125 
1151 ········//··1114:·astore··········4 
1152 ········//··1116:·aload···········4 
1153 ········//··1118:·astore_3······· 
1154 ········//··1119:·aload_2········ 
1155 ········//··1120:·aload···········4 
1156 ········//··1122:·invokevirtual···java/lang/Throwable.addSuppressed:(Ljava/lang/Throwable;)V 
1157 ········//··1125:·aload_2········ 
1158 ········//··1126:·athrow········· 
1159 ········//····Exceptions:975 ········//····Exceptions:
1160 ········//··Try···········Handler976 ········//··Try···········Handler
1161 ········//··Start··End····Start··End····Type·················977 ········//··Start··End····Start··End····Type·················
1162 ········//··-----··-----··-----··-----··---------------------978 ········//··-----··-----··-----··-----··---------------------
1163 ········//··41·····47·····1096···1127···Any979 ········//··41·····47·····852····883····Any
1164 ········//··58·····62·····1096···1127···Any980 ········//··58·····62·····852····883····Any
1165 ········//··64·····69·····1096···1127···Any981 ········//··64·····69·····852····883····Any
1166 ········//··71·····76·····1096···1127···Any982 ········//··71·····76·····852····883····Any
1167 ········//··78·····81·····1096···1127···Any983 ········//··78·····81·····852····883····Any
1168 ········//··83·····88·····1096···1127···Any984 ········//··83·····88·····852····883····Any
1169 ········//··100····105····1096···1127···Any985 ········//··100····105····852····883····Any
1170 ········//··114····119····1096···1127···Any986 ········//··114····119····852····883····Any
1171 ········//··128····133····1096···1127···Any987 ········//··128····133····852····883····Any
1172 ········//··133····137····1096···1127···Any988 ········//··133····137····852····883····Any
1173 ········//··144····150····1096···1127···Any989 ········//··144····150····852····883····Any
1174 ········//··150····154····1096···1127···Any990 ········//··150····154····852····883····Any
1175 ········//··156····160····1096···1127···Any991 ········//··156····160····852····883····Any
1176 ········//··166····173····1096···1127···Any992 ········//··166····173····852····883····Any
1177 ········//··173····176····1041···1056···Ljava/lang/Exception;993 ········//··173····176····797····812····Ljava/lang/Exception;
1178 ········//··173····176····1096···1127···Any994 ········//··173····176····852····883····Any
1179 ········//··178····182····1041···1056···Ljava/lang/Exception;995 ········//··178····182····797····812····Ljava/lang/Exception;
1180 ········//··178····182····1096···1127···Any996 ········//··178····182····852····883····Any
1181 ········//··186····191····1041···1056···Ljava/lang/Exception;997 ········//··186····191····797····812····Ljava/lang/Exception;
1182 ········//··186····191····1096···1127···Any998 ········//··186····191····852····883····Any
1183 ········//··193····198····1041···1056···Ljava/lang/Exception;999 ········//··193····198····797····812····Ljava/lang/Exception;
1184 ········//··193····198····1096···1127···Any1000 ········//··193····198····852····883····Any
1185 ········//··208····212····1041···1056···Ljava/lang/Exception;1001 ········//··208····212····797····812····Ljava/lang/Exception;
1186 ········//··208····212····1096···1127···Any1002 ········//··208····212····852····883····Any
1187 ········//··214····217····1007···1041···Any1003 ········//··214····217····763····797····Any
1188 ········//··219····224····1007···1041···Any1004 ········//··219····224····763····797····Any
1189 ········//··224····231····1007···1041···Any1005 ········//··224····231····763····797····Any
1190 ········//··238····243····1007···1041···Any1006 ········//··238····243····763····797····Any
1191 ········//··245····251····1007···1041···Any1007 ········//··245····251····763····797····Any
1192 ········//··255····262····1007···1041···Any1008 ········//··255····262····763····797····Any
1193 ········//··267····272····1007···1041···Any1009 ········//··267····272····763····797····Any
1194 ········//··274····278····1007···1041···Any1010 ········//··274····278····763····797····Any
1195 ········//··278····281····1007···1041···Any1011 ········//··278····281····763····797····Any
1196 ········//··283····288····1007···1041···Any1012 ········//··283····288····763····797····Any
1197 ········//··290····297····1007···1041···Any1013 ········//··290····297····763····797····Any
1198 ········//··304····311····1007···1041···Any1014 ········//··304····311····763····797····Any
1199 ········//··313····318····1007···1041···Any1015 ········//··313····318····763····797····Any
1200 ········//··324····329····1007···1041···Any1016 ········//··324····329····763····797····Any
1201 ········//··332····337····1007···1041···Any1017 ········//··332····337····763····797····Any
1202 ········//··345····352····1007···1041···Any1018 ········//··349····352····763····797····Any
1203 ········//··356····363····1007···1041···Any1019 ········//··356····361····763····797····Any
1204 ········//··365····369····1007···1041···Any1020 ········//··365····369····763····797····Any
1205 ········//··391····394····1007···1041···Any1021 ········//··371····375····763····797····Any
1206 ········//··398····403····1007···1041···Any1022 ········//··379····384····763····797····Any
1207 ········//··403····408····1007···1041···Any1023 ········//··393····398····401····469····Ljava/io/IOException;
1208 ········//··415····418····1007···1041···Any1024 ········//··393····398····763····797····Any
1209 ········//··425····428····1007···1041···Any1025 ········//··407····410····763····797····Any
1210 ········//··430····435····1007···1041···Any1026 ········//··412····417····763····797····Any
1211 ········//··442····448····1007···1041···Any1027 ········//··424····430····763····797····Any
1212 ········//··450····456····1007···1041···Any1028 ········//··432····438····763····797····Any
1213 ········//··456····461····1007···1041···Any1029 ········//··440····446····763····797····Any
1214 ········//··465····471····1007···1041···Any1030 ········//··446····451····763····797····Any
1215 ········//··477····484····519····569····Ljava/lang/Exception;1031 ········//··457····463····763····797····Any
1216 ········//··477····484····1007···1041···Any1032 ········//··465····469····763····797····Any
1217 ········//··488····495····519····569····Ljava/lang/Exception;1033 ········//··478····483····763····797····Any
1218 ········//··488····495····1007···1041···Any1034 ········//··501····504····763····797····Any
1219 ········//··500····505····519····569····Ljava/lang/Exception;1035 ········//··506····511····763····797····Any
1220 ········//··500····505····1007···1041···Any1036 ········//··518····524····763····797····Any
1221 ········//··520····523····1007···1041···Any1037 ········//··526····532····763····797····Any
1222 ········//··525····530····1007···1041···Any1038 ········//··534····540····763····797····Any
1223 ········//··537····543····1007···1041···Any1039 ········//··540····545····763····797····Any
1224 ········//··545····551····1007···1041···Any1040 ········//··549····555····763····797····Any
1225 ········//··551····556····1007···1041···Any1041 ········//··555····562····763····797····Any
1226 ········//··560····566····1007···1041···Any1042 ········//··566····570····763····797····Any
1227 ········//··572····577····1007···1041···Any1043 ········//··577····581····763····797····Any
1228 ········//··579····583····1007···1041···Any1044 ········//··581····585····763····797····Any
1229 ········//··593····596····1007···1041···Any1045 ········//··585····589····763····797····Any
1230 ········//··600····605····1007···1041···Any1046 ········//··589····596····763····797····Any
1231 ········//··609····613····1007···1041···Any1047 ········//··598····605····763····797····Any
1232 ········//··615····619····1007···1041···Any1048 ········//··607····610····763····797····Any
1233 ········//··623····628····1007···1041···Any1049 ········//··612····617····763····797····Any
1234 ········//··637····642····645····713····Ljava/io/IOException;1050 ········//··624····630····763····797····Any
1235 ········//··637····642····1007···1041···Any1051 ········//··632····638····763····797····Any
1236 ········//··651····654····1007···1041···Any1052 ········//··645····651····763····797····Any
1237 ········//··656····661····1007···1041···Any1053 ········//··653····659····763····797····Any
1238 ········//··668····674····1007···1041···Any1054 ········//··666····672····763····797····Any
1239 ········//··676····682····1007···1041···Any1055 ········//··672····677····763····797····Any
1240 ········//··684····690····1007···1041···Any1056 ········//··681····687····763····797····Any
1241 ········//··690····695····1007···1041···Any1057 ········//··687····691····763····797····Any
1242 ········//··701····707····1007···1041···Any1058 ········//··693····697····763····797····Any
1243 ········//··709····713····1007···1041···Any1059 ········//··725····732····763····797····Any
1244 ········//··722····727····1007···1041···Any1060 ········//··742····748····763····797····Any
1245 ········//··745····748····1007···1041···Any1061 ········//··753····760····797····812····Ljava/lang/Exception;
1246 ········//··750····755····1007···1041···Any1062 ········//··753····760····852····883····Any
1247 ········//··762····768····1007···1041···Any1063 ········//··773····780····783····795····Any
1248 ········//··770····776····1007···1041···Any1064 ········//··790····795····797····812····Ljava/lang/Exception;
1249 ········//··778····784····1007···1041···Any1065 ········//··790····795····852····883····Any
1250 ········//··784····789····1007···1041···Any1066 ········//··795····797····797····812····Ljava/lang/Exception;
1251 ········//··793····799····1007···1041···Any1067 ········//··795····797····852····883····Any
1252 ········//··799····806····1007···1041···Any1068 ········//··806····812····852····883····Any
1253 ········//··810····814····1007···1041···Any1069 ········//··812····816····852····883····Any
1254 ········//··821····825····1007···1041···Any1070 ········//··816····820····852····883····Any
1255 ········//··825····829····1007···1041···Any1071 ········//··820····824····852····883····Any
1256 ········//··829····833····1007···1041···Any1072 ········//··826····830····852····883····Any
1257 ········//··833····840····1007···1041···Any1073 ········//··835····841····852····883····Any
1258 ········//··842····849····1007···1041···Any1074 ········//··862····867····870····881····Any
1259 ········//··851····854····1007···1041···Any 
1260 ········//··856····861····1007···1041···Any 
1261 ········//··868····874····1007···1041···Any 
1262 ········//··876····882····1007···1041···Any 
1263 ········//··889····895····1007···1041···Any 
1264 ········//··897····903····1007···1041···Any 
1265 ········//··910····916····1007···1041···Any 
1266 ········//··916····921····1007···1041···Any 
1267 ········//··925····931····1007···1041···Any 
1268 ········//··931····935····1007···1041···Any 
1269 ········//··937····941····1007···1041···Any 
1270 ········//··969····976····1007···1041···Any 
1271 ········//··986····992····1007···1041···Any 
1272 ········//··997····1004···1041···1056···Ljava/lang/Exception; 
1273 ········//··997····1004···1096···1127···Any 
1274 ········//··1017···1024···1027···1039···Any 
1275 ········//··1034···1039···1041···1056···Ljava/lang/Exception; 
1276 ········//··1034···1039···1096···1127···Any 
1277 ········//··1039···1041···1041···1056···Ljava/lang/Exception; 
1278 ········//··1039···1041···1096···1127···Any 
1279 ········//··1050···1056···1096···1127···Any 
1280 ········//··1056···1060···1096···1127···Any 
1281 ········//··1060···1064···1096···1127···Any 
1282 ········//··1064···1068···1096···1127···Any 
1283 ········//··1070···1074···1096···1127···Any 
1284 ········//··1079···1085···1096···1127···Any 
1285 ········//··1106···1111···1114···1125···Any 
1286 ········//·1075 ········//·
1287 ········//·The·error·that·occurred·was:1076 ········//·The·error·that·occurred·was:
1288 ········//·1077 ········//·
1289 ········//·java.lang.IndexOutOfBoundsException:·Index:·506,·Size:·5061078 ········//·java.lang.IndexOutOfBoundsException:·Index:·399,·Size:·399
1290 ········//·····at·java.util.ArrayList.rangeCheck(ArrayList.java:659)1079 ········//·····at·java.util.ArrayList.rangeCheck(ArrayList.java:659)
1291 ········//·····at·java.util.ArrayList.get(ArrayList.java:435)1080 ········//·····at·java.util.ArrayList.get(ArrayList.java:435)
1292 ········//·····at·com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3321)1081 ········//·····at·com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3321)
1293 ········//·····at·com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3569)1082 ········//·····at·com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3569)
1294 ········//·····at·com.strobel.decompiler.ast.AstBuilder.build(AstBuilder.java:113)1083 ········//·····at·com.strobel.decompiler.ast.AstBuilder.build(AstBuilder.java:113)
1295 ········//·····at·com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:211)1084 ········//·····at·com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:211)
1296 ········//·····at·com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99)1085 ········//·····at·com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99)
Offset 1305, 100 lines modifiedOffset 1094, 18 lines modified
1305 ········//·····at·com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59)1094 ········//·····at·com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59)
1306 ········//·····at·com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:336)1095 ········//·····at·com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:336)
1307 ········//·····at·com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:144)1096 ········//·····at·com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:144)
1308 ········//·1097 ········//·
1309 ········throw·new·IllegalStateException("An·error·occurred·while·decompiling·this·method.");1098 ········throw·new·IllegalStateException("An·error·occurred·while·decompiling·this·method.");
1310 ····}1099 ····}
1311 ····1100 ····
1312 ····private·String·migratePlaylistFiles(final·ContentProviderClient·contentProviderClient,·final·long·n)·{ 
1313 ········final·StringBuilder·sb·=·new·StringBuilder(); 
1314 ········sb.append("media_type=4·AND·_id="); 
1315 ········sb.append(n); 
1316 ········final·String·string·=·sb.toString(); 
1317 ········final·String·s·=·"_id"; 
1318 ········final·String·s2·=·"_data"; 
1319 ········final·String·s3·=·"mime_type"; 
1320 ········final·String·s4·=·"name"; 
1321 ········final·String[]·array·=·{·s,·s2,·s3,·s4·}; 
1322 ········final·Uri·rewriteToLegacy·=·MediaStore.rewriteToLegacy(MediaStore$Files.getContentUri(this.mVolumeName)); 
1323 ········final·String[]·array2·=·array; 
1324 ········final·String·s5·=·string; 
1325 ········final·String[]·array3·=·null; 
1326 ········try·{ 
1327 ············final·Cursor·query·=·contentProviderClient.query(rewriteToLegacy,·array2,·s5,·array3,·(String)null); 
1328 ············try·{ 
1329 ················if·(!query.moveToFirst())·{ 
1330 ····················final·StringBuilder·sb2·=·new·StringBuilder(); 
1331 ····················sb2.append("Couldn't·find·database·row·for·playlist·file"); 
1332 ····················sb2.append(n); 
1333 ····················throw·new·IllegalStateException(sb2.toString()); 
1334 ················} 
1335 ················final·String·string2·=·query.getString(query.getColumnIndex(s2)); 
1336 ················File·buildUniqueFile·=·new·File(string2); 
1337 ················if·(!buildUniqueFile.exists())·{ 
1338 ····················String·string3·=·query.getString(query.getColumnIndex(s3)); 
1339 ····················if·(!MimeUtils.isPlaylistMimeType(string3))·{ 
1340 ························string3·=·"audio/mpegurl"; 
1341 ····················} 
1342 ····················File·parentFile·=·buildUniqueFile.getParentFile(); 
1343 ····················if·(parentFile.getName().equalsIgnoreCase("Playlists"))·{ 
1344 ························parentFile·=·new·File(parentFile.getParentFile(),·Environment.DIRECTORY_MUSIC); 
1345 ····················} 
1346 ····················final·String·string4·=·query.getString(query.getColumnIndex(s4)); 
1347 ····················final·File·file·=·parentFile; 
1348 ····················final·String·s6·=·string3; 
1349 ····················try·{ 
1350 ························buildUniqueFile·=·FileUtils.buildUniqueFile(file,·s6,·string4); 
1351 ····················} 
1352 ····················catch·(FileNotFoundException·ex)·{ 
1353 ························final·String·s7·=·"MediaProvider"; 
1354 ························final·StringBuilder·sb3·=·new·StringBuilder(); 
1355 ························sb3.append("Couldn't·create·unique·file·for·"); 
1356 ························sb3.append(buildUniqueFile); 
1357 ························sb3.append(",·using·actual·playlist·file·name"); 
1358 ························Log.e(s7,·sb3.toString(),·(Throwable)ex); 
1359 ····················} 
1360 ····················this.createPlaylistFile(contentProviderClient,·MediaStore.rewriteToLegacy(MediaStore$Audio$Playlists$Members.getContentUri(this.mVolumeName,·query.getLong(query.getColumnIndex(s)))),·buildUniqueFile); 
1361 ····················final·String·absolutePath·=·buildUniqueFile.getAbsolutePath(); 
1362 ····················if·(query·!=·null)·{ 
1363 ························query.close(); 
1364 ····················} 
1365 ····················return·absolutePath; 
1366 ················} 
1367 ················final·StringBuilder·sb4·=·new·StringBuilder(); 
1368 ················sb4.append("Playlist·file·exists·"); 
1369 ················sb4.append(string2); 
1370 ················throw·new·IllegalStateException(sb4.toString()); 
1371 ············} 
1372 ············finally·{ 
1373 ················if·(query·!=·null)·{ 
1374 ····················try·{ 
1375 ························query.close(); 
1376 ····················} 
1377 ····················finally·{ 
1378 ························final·Throwable·t; 
1379 ························final·Throwable·t2; 
1380 ························t.addSuppressed(t2); 
1381 ····················} 
1382 ················} 
1383 ············} 
1384 ········} 
1385 ········catch·(RemoteException·ex2)·{ 
1386 ············throw·new·IllegalStateException((Throwable)ex2); 
1387 ········} 
1388 ····} 
1389 ···· 
1390 ····private·void·notifyChangeInternal(final·Collection·collection,·final·int·n)·{1101 ····private·void·notifyChangeInternal(final·Collection·collection,·final·int·n)·{
1391 ········Trace.beginSection("notifyChange");1102 ········Trace.beginSection("notifyChange");
1392 ········final·int·n2·=·256; 
1393 ········try·{1103 ········try·{
1394 ············final·Iterator·iterator·=·Iterables.partition((Iterable)collection,·n2).iterator();1104 ············this.mContext.getContentResolver().notifyChange(collection,·(ContentObserver)null,·n);
1395 ············while·(iterator.hasNext())·{ 
1396 ················this.mContext.getContentResolver().notifyChange((Collection)(List)iterator.next(),·(ContentObserver)null,·n); 
1397 ············} 
1398 ········}1105 ········}
1399 ········finally·{1106 ········finally·{
1400 ············Trace.endSection();1107 ············Trace.endSection();
1401 ········}1108 ········}
1402 ····}1109 ····}
1403 ····1110 ····
1404 ····private·void·notifySingleChangeInternal(final·Uri·uri,·final·int·n)·{1111 ····private·void·notifySingleChangeInternal(final·Uri·uri,·final·int·n)·{
Offset 1407, 58 lines modifiedOffset 1114, 14 lines modified
1407 ············this.mContext.getContentResolver().notifyChange(uri,·(ContentObserver)null,·n);1114 ············this.mContext.getContentResolver().notifyChange(uri,·(ContentObserver)null,·n);
1408 ········}1115 ········}
1409 ········finally·{1116 ········finally·{
1410 ············Trace.endSection();1117 ············Trace.endSection();
1411 ········}1118 ········}
1412 ····}1119 ····}
1413 ····1120 ····
1414 ····private·String·queryForData(ContentProviderClient·query,·final·Uri·uri)·{ 
1415 ········final·String·s·=·"_data"; 
1416 ········try·{ 
1417 ············final·String[]·array·=·{·s·}; 
1418 ············try·{ 
1419 ················query·=·(ContentProviderClient)query.query(uri,·array,·Bundle.EMPTY,·(CancellationSignal)null); 
1420 ················try·{ 
1421 ····················if·(((Cursor)query).moveToFirst())·{ 
1422 ························final·String·string·=·((Cursor)query).getString(0); 
1423 ························if·(query·!=·null)·{ 
1424 ····························((Cursor)query).close(); 
1425 ························} 
1426 ························return·string; 
1427 ····················} 
1428 ····················if·(query·!=·null)·{ 
1429 ························((Cursor)query).close(); 
1430 ························return·null; 
1431 ····················} 
1432 ····················return·null; 
1433 ················} 
1434 ················finally·{ 
1435 ····················if·(query·!=·null)·{ 
1436 ························try·{ 
1437 ····························((Cursor)query).close(); 
1438 ························} 
1439 ························finally·{ 
1440 ····························final·Throwable·t; 
1441 ····························final·Throwable·t2; 
1442 ····························t.addSuppressed(t2); 
1443 ························} 
1444 ····················} 
1445 ················} 
1446 ············} 
1447 ············catch·(Exception·ex)·{ 
1448 ················final·StringBuilder·sb·=·new·StringBuilder(); 
1449 ················sb.append("Exception·occurred·while·querying·for·data·file·for·"); 
1450 ················sb.append(uri); 
1451 ················Log.wtf("MediaProvider",·sb.toString(),·(Throwable)ex); 
1452 ············} 
1453 ········} 
1454 ········catch·(Exception·ex2)·{} 
1455 ········return·null; 
1456 ····} 
1457 ···· 
1458 ····private·static·void·recomputeDataValues(final·SQLiteDatabase·sqLiteDatabase,·final·boolean·b)·{1121 ····private·static·void·recomputeDataValues(final·SQLiteDatabase·sqLiteDatabase,·final·boolean·b)·{
1459 ········final·String·s·=·"_data";1122 ········final·String·s·=·"_data";
1460 ········final·Cursor·query·=·sqLiteDatabase.query("files",·new·String[]·{·"_id",·s·},·(String)null,·(String[])null,·(String)null,·(String)null,·(String)null,·(String)null);1123 ········final·Cursor·query·=·sqLiteDatabase.query("files",·new·String[]·{·"_id",·s·},·(String)null,·(String[])null,·(String)null,·(String)null,·(String)null,·(String)null);
1461 ········final·String·s2·=·"MediaProvider";1124 ········final·String·s2·=·"MediaProvider";
1462 ········try·{1125 ········try·{
1463 ············final·StringBuilder·sb·=·new·StringBuilder();1126 ············final·StringBuilder·sb·=·new·StringBuilder();
1464 ············sb.append("Recomputing·");1127 ············sb.append("Recomputing·");
Offset 1701, 14 lines modifiedOffset 1364, 18 lines modified
1701 ····1364 ····
1702 ····private·static·void·updateAddXmpMm(final·SQLiteDatabase·sqLiteDatabase,·final·boolean·b)·{1365 ····private·static·void·updateAddXmpMm(final·SQLiteDatabase·sqLiteDatabase,·final·boolean·b)·{
1703 ········sqLiteDatabase.execSQL("ALTER·TABLE·files·ADD·COLUMN·document_id·TEXT·DEFAULT·NULL;");1366 ········sqLiteDatabase.execSQL("ALTER·TABLE·files·ADD·COLUMN·document_id·TEXT·DEFAULT·NULL;");
1704 ········sqLiteDatabase.execSQL("ALTER·TABLE·files·ADD·COLUMN·instance_id·TEXT·DEFAULT·NULL;");1367 ········sqLiteDatabase.execSQL("ALTER·TABLE·files·ADD·COLUMN·instance_id·TEXT·DEFAULT·NULL;");
1705 ········sqLiteDatabase.execSQL("ALTER·TABLE·files·ADD·COLUMN·original_document_id·TEXT·DEFAULT·NULL;");1368 ········sqLiteDatabase.execSQL("ALTER·TABLE·files·ADD·COLUMN·original_document_id·TEXT·DEFAULT·NULL;");
1706 ····}1369 ····}
1707 ····1370 ····
 1371 ····private·static·void·updateAudioAlbumId(final·SQLiteDatabase·sqLiteDatabase,·final·boolean·b)·{
 1372 ········sqLiteDatabase.execSQL("UPDATE·files·SET·date_modified=0·WHERE·media_type=2;");
 1373 ····}
 1374 ····
1708 ····private·static·void·updateClearDirectories(final·SQLiteDatabase·sqLiteDatabase,·final·boolean·b)·{1375 ····private·static·void·updateClearDirectories(final·SQLiteDatabase·sqLiteDatabase,·final·boolean·b)·{
1709 ········sqLiteDatabase.execSQL("UPDATE·files·SET·primary_directory=NULL,·secondary_directory=NULL;");1376 ········sqLiteDatabase.execSQL("UPDATE·files·SET·primary_directory=NULL,·secondary_directory=NULL;");
1710 ····}1377 ····}
1711 ····1378 ····
1712 ····private·static·void·updateClearLocation(final·SQLiteDatabase·sqLiteDatabase,·final·boolean·b)·{1379 ····private·static·void·updateClearLocation(final·SQLiteDatabase·sqLiteDatabase,·final·boolean·b)·{
1713 ········sqLiteDatabase.execSQL("UPDATE·files·SET·latitude=NULL,·longitude=NULL;");1380 ········sqLiteDatabase.execSQL("UPDATE·files·SET·latitude=NULL,·longitude=NULL;");
1714 ····}1381 ····}
Offset 1821, 14 lines modifiedOffset 1488, 17 lines modified
1821 ············}1488 ············}
1822 ············if·(n·<·1111)·{1489 ············if·(n·<·1111)·{
1823 ················recomputeMediaTypeValues(sqLiteDatabase);1490 ················recomputeMediaTypeValues(sqLiteDatabase);
1824 ············}1491 ············}
1825 ············if·(n·<·1112)·{1492 ············if·(n·<·1112)·{
1826 ················updateAddXmp(sqLiteDatabase,·mInternal);1493 ················updateAddXmp(sqLiteDatabase,·mInternal);
1827 ············}1494 ············}
 1495 ············if·(n·<·1115)·{
 1496 ················updateAudioAlbumId(sqLiteDatabase,·mInternal);
 1497 ············}
1828 ············if·(!this.mLegacyProvider)·{1498 ············if·(!this.mLegacyProvider)·{
1829 ················n4·=·n5;1499 ················n4·=·n5;
1830 ············}1500 ············}
1831 ············if·(n4·!=·0)·{1501 ············if·(n4·!=·0)·{
1832 ················recomputeDataValues(sqLiteDatabase,·mInternal);1502 ················recomputeDataValues(sqLiteDatabase,·mInternal);
1833 ············}1503 ············}
1834 ········}1504 ········}
Offset 1903, 41 lines modifiedOffset 1573, 14 lines modified
1903 ········final·StringBuilder·sb·=·new·StringBuilder();1573 ········final·StringBuilder·sb·=·new·StringBuilder();
1904 ········sb.append("UPDATE·files·SET·is_download=1·WHERE·_data·REGEXP·'");1574 ········sb.append("UPDATE·files·SET·is_download=1·WHERE·_data·REGEXP·'");
1905 ········sb.append(FileUtils.PATTERN_DOWNLOADS_FILE);1575 ········sb.append(FileUtils.PATTERN_DOWNLOADS_FILE);
1906 ········sb.append("'");1576 ········sb.append("'");
1907 ········sqLiteDatabase.execSQL(sb.toString());1577 ········sqLiteDatabase.execSQL(sb.toString());
1908 ····}1578 ····}
1909 ····1579 ····
1910 ····private·static·String·writeToPlaylistFileWithRetry(final·File·file,·final·Playlist·playlist)·{ 
1911 ········final·String·s·=·"MediaProvider"; 
1912 ········while·(SystemClock.elapsedRealtime()·-·SystemClock.elapsedRealtime()·<=·10000L)·{ 
1913 ············try·{ 
1914 ················final·File·parentFile·=·file.getParentFile(); 
1915 ················try·{ 
1916 ····················parentFile.mkdirs(); 
1917 ····················file.createNewFile(); 
1918 ····················try·{ 
1919 ························playlist.write(file); 
1920 ····················} 
1921 ····················catch·(IOException·ex)·{ 
1922 ························final·StringBuilder·sb·=·new·StringBuilder(); 
1923 ························sb.append("Failed·to·migrate·playlist·file,·retrying·"); 
1924 ························sb.append(ex); 
1925 ························Log.i(s,·sb.toString()); 
1926 ····················} 
1927 ················} 
1928 ················catch·(IOException·ex2)·{} 
1929 ············} 
1930 ············catch·(IOException·ex3)·{} 
1931 ············Log.i(s,·"Waiting·for·passthrough·to·be·mounted..."); 
1932 ············SystemClock.sleep((long)100); 
1933 ········} 
1934 ········throw·new·IOException("Passthrough·failed·to·mount"); 
1935 ····} 
1936 ···· 
1937 ····public·void·beginTransaction()·{1580 ····public·void·beginTransaction()·{
1938 ········final·StringBuilder·sb·=·new·StringBuilder();1581 ········final·StringBuilder·sb·=·new·StringBuilder();
1939 ········sb.append("transaction·");1582 ········sb.append("transaction·");
1940 ········sb.append(this.getDatabaseName());1583 ········sb.append(this.getDatabaseName());
1941 ········Trace.beginSection(sb.toString());1584 ········Trace.beginSection(sb.toString());
1942 ········Trace.beginSection("beginTransaction");1585 ········Trace.beginSection("beginTransaction");
1943 ········try·{1586 ········try·{