Offset 3, 52 lines modifiedOffset 3, 39 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;
 23 import·java.io.File;
29 import·android.os.Environment;24 import·android.os.Environment;
30 import·android.os.RemoteException; 
31 import·android.provider.MediaStore; 
32 import·android.content.ContentUris; 
33 import·android.provider.MediaStore$Files; 
34 import·com.android.providers.media.playlist.Playlist; 
35 import·android.content.ContentProviderClient; 
36 import·android.provider.MediaStore$Downloads;25 import·android.provider.MediaStore$Downloads;
37 import·android.provider.MediaStore$Images$Media;26 import·android.provider.MediaStore$Images$Media;
38 import·android.provider.MediaStore$Video$Media;27 import·android.provider.MediaStore$Video$Media;
39 import·android.provider.MediaStore$Audio$Media;28 import·android.provider.MediaStore$Audio$Media;
40 import·android.provider.MediaStore$Audio$Playlists;29 import·android.provider.MediaStore$Audio$Playlists;
41 import·com.android.providers.media.util.DatabaseUtils;30 import·com.android.providers.media.util.DatabaseUtils;
42 import·android.content.pm.ProviderInfo;31 import·android.content.pm.ProviderInfo;
43 import·android.content.pm.PackageInfo;32 import·android.content.pm.PackageInfo;
44 import·android.content.pm.PackageManager;33 import·android.content.pm.PackageManager;
45 import·java.io.IOException; 
46 import·java.io.File; 
47 import·android.util.Log;34 import·android.util.Log;
48 import·android.net.Uri;35 import·android.net.Uri;
49 import·android.database.sqlite.SQLiteDatabase;36 import·android.database.sqlite.SQLiteDatabase;
50 import·android.database.sqlite.SQLiteDatabase$CursorFactory;37 import·android.database.sqlite.SQLiteDatabase$CursorFactory;
51 import·java.util.concurrent.locks.ReentrantReadWriteLock;38 import·java.util.concurrent.locks.ReentrantReadWriteLock;
52 import·android.util.ArrayMap;39 import·android.util.ArrayMap;
53 import·java.util.function.UnaryOperator;40 import·java.util.function.UnaryOperator;
Offset 58, 112 lines modifiedOffset 45, 101 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·=·1115;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·=·1115;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 ····private·static·Object·sMigrationLock; 
79 ····final·Class·mColumnAnnotation;64 ····final·Class·mColumnAnnotation;
80 ····final·Context·mContext;65 ····final·Context·mContext;
81 ····final·boolean·mEarlyUpgrade;66 ····final·boolean·mEarlyUpgrade;
82 ····final·DatabaseHelper$OnFilesChangeListener·mFilesListener;67 ····final·DatabaseHelper$OnFilesChangeListener·mFilesListener;
83 ····final·Set·mFilterVolumeNames;68 ····final·Set·mFilterVolumeNames;
84 ····final·UnaryOperator·mIdGenerator;69 ····final·UnaryOperator·mIdGenerator;
85 ····final·boolean·mInternal;70 ····final·boolean·mInternal;
86 ····final·boolean·mLegacyProvider;71 ····final·boolean·mLegacyProvider;
87 ····private·final·String·mMigrationFileName;72 ····boolean·mMigrateFromLegacy;
88 ····final·DatabaseHelper$OnLegacyMigrationListener·mMigrationListener;73 ····final·DatabaseHelper$OnLegacyMigrationListener·mMigrationListener;
89 ····final·String·mName;74 ····final·String·mName;
90 ····private·final·ArrayMap·mProjectionMapCache;75 ····private·final·ArrayMap·mProjectionMapCache;
91 ····long·mScanStartTime;76 ····long·mScanStartTime;
92 ····long·mScanStopTime;77 ····long·mScanStopTime;
93 ····final·DatabaseHelper$OnSchemaChangeListener·mSchemaListener;78 ····final·DatabaseHelper$OnSchemaChangeListener·mSchemaListener;
94 ····private·final·ReentrantReadWriteLock·mSchemaLock;79 ····private·final·ReentrantReadWriteLock·mSchemaLock;
95 ····private·final·ThreadLocal·mTransactionState;80 ····private·final·ThreadLocal·mTransactionState;
96 ····final·int·mVersion;81 ····final·int·mVersion;
97 ····final·String·mVolumeName;82 ····final·String·mVolumeName;
98 ····83 ····
99 ····static·{84 ····static·{
100 ········DatabaseHelper.sMigrationLock·=·new·Object(); 
101 ········sMigrateColumns·=·new·ArraySet();85 ········sMigrateColumns·=·new·ArraySet();
102 ····}86 ····}
103 ····87 ····
104 ····public·DatabaseHelper(final·Context·mContext,·String·string,·final·int·mVersion,·final·boolean·mInternal,·final·boolean·mEarlyUpgrade,·final·boolean·mLegacyProvider,·final·Class·mColumnAnnotation,·final·DatabaseHelper$OnSchemaChangeListener·mSchemaListener,·final·DatabaseHelper$OnFilesChangeListener·mFilesListener,·final·DatabaseHelper$OnLegacyMigrationListener·mMigrationListener,·final·UnaryOperator·mIdGenerator)·{88 ····public·DatabaseHelper(final·Context·mContext,·String·s,·final·int·mVersion,·final·boolean·mInternal,·final·boolean·mEarlyUpgrade,·final·boolean·mLegacyProvider,·final·Class·mColumnAnnotation,·final·DatabaseHelper$OnSchemaChangeListener·mSchemaListener,·final·DatabaseHelper$OnFilesChangeListener·mFilesListener,·final·DatabaseHelper$OnLegacyMigrationListener·mMigrationListener,·final·UnaryOperator·mIdGenerator)·{
105 ········super(mContext,·string,·(SQLiteDatabase$CursorFactory)null,·mVersion);89 ········super(mContext,·s,·(SQLiteDatabase$CursorFactory)null,·mVersion);
106 ········this.mFilterVolumeNames·=·(Set)new·ArraySet();90 ········this.mFilterVolumeNames·=·(Set)new·ArraySet();
107 ········this.mSchemaLock·=·new·ReentrantReadWriteLock();91 ········this.mSchemaLock·=·new·ReentrantReadWriteLock();
108 ········this.mProjectionMapCache·=·new·ArrayMap();92 ········this.mProjectionMapCache·=·new·ArrayMap();
109 ········this.mTransactionState·=·new·ThreadLocal();93 ········this.mTransactionState·=·new·ThreadLocal();
110 ········DatabaseHelper.sMigrateColumns.add((Object)"_id");94 ········DatabaseHelper.sMigrateColumns.add((Object)"_id");
111 ········DatabaseHelper.sMigrateColumns.add((Object)"_data");95 ········DatabaseHelper.sMigrateColumns.add((Object)"_data");
112 ········DatabaseHelper.sMigrateColumns.add((Object)"volume_name");96 ········DatabaseHelper.sMigrateColumns.add((Object)"volume_name");
113 ········DatabaseHelper.sMigrateColumns.add((Object)"media_type");97 ········DatabaseHelper.sMigrateColumns.add((Object)"media_type");
114 ········DatabaseHelper.sMigrateColumns.add((Object)"date_added");98 ········DatabaseHelper.sMigrateColumns.add((Object)"date_added");
115 ········DatabaseHelper.sMigrateColumns.add((Object)"date_expires");99 ········DatabaseHelper.sMigrateColumns.add((Object)"date_expires");
116 ········DatabaseHelper.sMigrateColumns.add((Object)"is_pending");100 ········DatabaseHelper.sMigrateColumns.add((Object)"is_pending");
117 ········DatabaseHelper.sMigrateColumns.add((Object)"is_trashed");101 ········DatabaseHelper.sMigrateColumns.add((Object)"is_trashed");
118 ········DatabaseHelper.sMigrateColumns.add((Object)"is_favorite");102 ········DatabaseHelper.sMigrateColumns.add((Object)"is_favorite");
119 ········DatabaseHelper.sMigrateColumns.add((Object)"owner_package_name");103 ········DatabaseHelper.sMigrateColumns.add((Object)"owner_package_name");
120 ········DatabaseHelper.sMigrateColumns.add((Object)"orientation"); 
121 ········DatabaseHelper.sMigrateColumns.add((Object)"parent"); 
122 ········final·ArraySet·sMigrateColumns·=·DatabaseHelper.sMigrateColumns;104 ········final·ArraySet·sMigrateColumns·=·DatabaseHelper.sMigrateColumns;
123 ········final·String·s·=·"bookmark";105 ········final·String·s2·=·"bookmark";
124 ········sMigrateColumns.add((Object)s);106 ········sMigrateColumns.add((Object)s2);
125 ········DatabaseHelper.sMigrateColumns.add((Object)"tags");107 ········DatabaseHelper.sMigrateColumns.add((Object)"tags");
126 ········DatabaseHelper.sMigrateColumns.add((Object)"category");108 ········DatabaseHelper.sMigrateColumns.add((Object)"category");
127 ········DatabaseHelper.sMigrateColumns.add((Object)s);109 ········DatabaseHelper.sMigrateColumns.add((Object)s2);
128 ········DatabaseHelper.sMigrateColumns.add((Object)"isprivate"); 
129 ········DatabaseHelper.sMigrateColumns.add((Object)"download_uri");110 ········DatabaseHelper.sMigrateColumns.add((Object)"download_uri");
130 ········DatabaseHelper.sMigrateColumns.add((Object)"referer_uri");111 ········DatabaseHelper.sMigrateColumns.add((Object)"referer_uri");
131 ········this.mContext·=·mContext;112 ········this.mContext·=·mContext;
132 ········this.mName·=·string;113 ········this.mName·=·s;
133 ········this.mVersion·=·mVersion;114 ········this.mVersion·=·mVersion;
134 ········final·String·s2·=·"internal";115 ········final·String·s3·=·"internal";
135 ········if·(mInternal)·{116 ········if·(mInternal)·{
136 ············string·=·s2;117 ············s·=·s3;
137 ········}118 ········}
138 ········else·{119 ········else·{
139 ············string·=·"external";120 ············s·=·"external";
140 ········}121 ········}
141 ········this.mVolumeName·=·string;122 ········this.mVolumeName·=·s;
142 ········this.mInternal·=·mInternal;123 ········this.mInternal·=·mInternal;
143 ········this.mEarlyUpgrade·=·mEarlyUpgrade;124 ········this.mEarlyUpgrade·=·mEarlyUpgrade;
144 ········this.mLegacyProvider·=·mLegacyProvider;125 ········this.mLegacyProvider·=·mLegacyProvider;
145 ········this.mColumnAnnotation·=·mColumnAnnotation;126 ········this.mColumnAnnotation·=·mColumnAnnotation;
146 ········this.mSchemaListener·=·mSchemaListener;127 ········this.mSchemaListener·=·mSchemaListener;
147 ········this.mFilesListener·=·mFilesListener;128 ········this.mFilesListener·=·mFilesListener;
148 ········this.mMigrationListener·=·mMigrationListener;129 ········this.mMigrationListener·=·mMigrationListener;
149 ········this.mIdGenerator·=·mIdGenerator;130 ········this.mIdGenerator·=·mIdGenerator;
150 ········final·StringBuilder·sb·=·new·StringBuilder();131 ········if·(mInternal)·{
151 ········sb.append(".");132 ············this.mFilterVolumeNames.add(s3);
152 ········sb.append(this.mVolumeName); 
153 ········string·=·sb.toString(); 
154 ········this.mMigrationFileName·=·string; 
155 ········if·(this.mInternal)·{ 
156 ············this.mFilterVolumeNames.add(s2); 
157 ········}133 ········}
158 ········else·{134 ········else·{
159 ············final·Set·mFilterVolumeNames·=·this.mFilterVolumeNames;135 ············final·Set·mFilterVolumeNames·=·this.mFilterVolumeNames;
160 ············string·=·"external_primary";136 ············s·=·"external_primary";
161 ············mFilterVolumeNames.add(string);137 ············mFilterVolumeNames.add(s);
162 ········}138 ········}
163 ········this.setWriteAheadLoggingEnabled(true);139 ········this.setWriteAheadLoggingEnabled(true);
164 ····}140 ····}
165 ····141 ····
166 ····public·DatabaseHelper(final·Context·context,·final·String·s,·final·boolean·b,·final·boolean·b2,·final·boolean·b3,·final·Class·clazz,·final·DatabaseHelper$OnSchemaChangeListener·databaseHelper$OnSchemaChangeListener,·final·DatabaseHelper$OnFilesChangeListener·databaseHelper$OnFilesChangeListener,·final·DatabaseHelper$OnLegacyMigrationListener·databaseHelper$OnLegacyMigrationListener,·final·UnaryOperator·unaryOperator)·{142 ····public·DatabaseHelper(final·Context·context,·final·String·s,·final·boolean·b,·final·boolean·b2,·final·boolean·b3,·final·Class·clazz,·final·DatabaseHelper$OnSchemaChangeListener·databaseHelper$OnSchemaChangeListener,·final·DatabaseHelper$OnFilesChangeListener·databaseHelper$OnFilesChangeListener,·final·DatabaseHelper$OnLegacyMigrationListener·databaseHelper$OnLegacyMigrationListener,·final·UnaryOperator·unaryOperator)·{
167 ········this(context,·s,·getDatabaseVersion(context),·b,·b2,·b3,·clazz,·databaseHelper$OnSchemaChangeListener,·databaseHelper$OnFilesChangeListener,·databaseHelper$OnLegacyMigrationListener,·unaryOperator);143 ········this(context,·s,·getDatabaseVersion(context),·b,·b2,·b3,·clazz,·databaseHelper$OnSchemaChangeListener,·databaseHelper$OnFilesChangeListener,·databaseHelper$OnLegacyMigrationListener,·unaryOperator);
168 ····}144 ····}
Offset 195, 26 lines modifiedOffset 171, 25 lines modified
195 ········sqLiteDatabase.execSQL("CREATE·INDEX·path_index·ON·files(_data)");171 ········sqLiteDatabase.execSQL("CREATE·INDEX·path_index·ON·files(_data)");
196 ········sqLiteDatabase.execSQL("CREATE·INDEX·sort_index·ON·files(datetaken·ASC,·_id·ASC)");172 ········sqLiteDatabase.execSQL("CREATE·INDEX·sort_index·ON·files(datetaken·ASC,·_id·ASC)");
197 ········sqLiteDatabase.execSQL("CREATE·INDEX·title_idx·ON·files(title)");173 ········sqLiteDatabase.execSQL("CREATE·INDEX·title_idx·ON·files(title)");
198 ········sqLiteDatabase.execSQL("CREATE·INDEX·titlekey_index·ON·files(title_key)");174 ········sqLiteDatabase.execSQL("CREATE·INDEX·titlekey_index·ON·files(title_key)");
199 ····}175 ····}
200 ····176 ····
201 ····private·void·createLatestSchema(final·SQLiteDatabase·sqLiteDatabase)·{177 ····private·void·createLatestSchema(final·SQLiteDatabase·sqLiteDatabase)·{
202 ········final·String·s·=·"MediaProvider";178 ········Label_0170:·{
203 ········Label_0173:·{ 
204 ············try·{179 ············try·{
205 ················final·Context·mContext·=·this.mContext;180 ················final·Context·mContext·=·this.mContext;
206 ················try·{181 ················try·{
207 ····················final·PackageManager·packageManager·=·mContext.getPackageManager();182 ····················final·PackageManager·packageManager·=·mContext.getPackageManager();
208 ····················try·{183 ····················try·{
209 ························final·Context·mContext2·=·this.mContext;184 ························final·Context·mContext2·=·this.mContext;
210 ························try·{185 ························try·{
211 ····························final·PackageInfo·packageInfo·=·packageManager.getPackageInfo(mContext2.getPackageName(),·8);186 ····························final·PackageInfo·packageInfo·=·packageManager.getPackageInfo(mContext2.getPackageName(),·8);
212 ····························if·(packageInfo·==·null·||·packageInfo.providers·==·null)·{187 ····························if·(packageInfo·==·null·||·packageInfo.providers·==·null)·{
213 ································break·Label_0173;188 ································break·Label_0170;
214 ····························}189 ····························}
215 ····························final·ProviderInfo[]·providers·=·packageInfo.providers;190 ····························final·ProviderInfo[]·providers·=·packageInfo.providers;
216 ····························try·{191 ····························try·{
217 ································final·int·length·=·providers.length;192 ································final·int·length·=·providers.length;
218 ································int·i·=·0;193 ································int·i·=·0;
219 ································while·(i·<·length)·{194 ································while·(i·<·length)·{
220 ····································final·ProviderInfo·providerInfo·=·providers[i];195 ····································final·ProviderInfo·providerInfo·=·providers[i];
Offset 227, 33 lines modifiedOffset 202, 33 lines modified
227 ················································sb.append(providerInfo.authority);202 ················································sb.append(providerInfo.authority);
228 ················································final·String·string·=·sb.toString();203 ················································final·String·string·=·sb.toString();
229 ················································try·{204 ················································try·{
230 ····················································mContext3.revokeUriPermission(Uri.parse(string),·3);205 ····················································mContext3.revokeUriPermission(Uri.parse(string),·3);
231 ····················································++i;206 ····················································++i;
232 ················································}207 ················································}
233 ················································catch·(Exception·ex)·{208 ················································catch·(Exception·ex)·{
234 ····················································Log.w(s,·"Failed·to·revoke·permissions",·(Throwable)ex);209 ····················································Log.w("MediaProvider",·"Failed·to·revoke·permissions",·(Throwable)ex);
235 ················································}210 ················································}
236 ············································}211 ············································}
237 ············································catch·(Exception·ex3)·{}212 ············································catch·(Exception·ex2)·{}
238 ········································}213 ········································}
239 ········································catch·(Exception·ex4)·{}214 ········································catch·(Exception·ex3)·{}
240 ····································}215 ····································}
241 ····································catch·(Exception·ex5)·{}216 ····································catch·(Exception·ex4)·{}
242 ································}217 ································}
243 ····························}218 ····························}
244 ····························catch·(Exception·ex6)·{}219 ····························catch·(Exception·ex5)·{}
245 ························}220 ························}
246 ························catch·(Exception·ex7)·{}221 ························catch·(Exception·ex6)·{}
247 ····················}222 ····················}
248 ····················catch·(Exception·ex8)·{}223 ····················catch·(Exception·ex7)·{}
249 ················}224 ················}
250 ················catch·(Exception·ex9)·{}225 ················catch·(Exception·ex8)·{}
251 ············}226 ············}
252 ············catch·(Exception·ex10)·{}227 ············catch·(Exception·ex9)·{}
253 ········}228 ········}
254 ········makePristineSchema(sqLiteDatabase);229 ········makePristineSchema(sqLiteDatabase);
255 ········sqLiteDatabase.execSQL("CREATE·TABLE·local_metadata·(generation·INTEGER·DEFAULT·0)");230 ········sqLiteDatabase.execSQL("CREATE·TABLE·local_metadata·(generation·INTEGER·DEFAULT·0)");
256 ········sqLiteDatabase.execSQL("INSERT·INTO·local_metadata·VALUES·(0)");231 ········sqLiteDatabase.execSQL("INSERT·INTO·local_metadata·VALUES·(0)");
257 ········sqLiteDatabase.execSQL("CREATE·TABLE·android_metadata·(locale·TEXT)");232 ········sqLiteDatabase.execSQL("CREATE·TABLE·android_metadata·(locale·TEXT)");
258 ········sqLiteDatabase.execSQL("CREATE·TABLE·thumbnails·(_id·INTEGER·PRIMARY·KEY,_data·TEXT,image_id·INTEGER,kind·INTEGER,width·INTEGER,height·INTEGER)");233 ········sqLiteDatabase.execSQL("CREATE·TABLE·thumbnails·(_id·INTEGER·PRIMARY·KEY,_data·TEXT,image_id·INTEGER,kind·INTEGER,width·INTEGER,height·INTEGER)");
259 ········sqLiteDatabase.execSQL("CREATE·TABLE·album_art·(album_id·INTEGER·PRIMARY·KEY,_data·TEXT)");234 ········sqLiteDatabase.execSQL("CREATE·TABLE·album_art·(album_id·INTEGER·PRIMARY·KEY,_data·TEXT)");
Offset 263, 34 lines modifiedOffset 238, 15 lines modified
263 ········if·(!this.mInternal)·{238 ········if·(!this.mInternal)·{
264 ············sqLiteDatabase.execSQL("CREATE·TABLE·audio_playlists_map·(_id·INTEGER·PRIMARY·KEY,audio_id·INTEGER·NOT·NULL,playlist_id·INTEGER·NOT·NULL,play_order·INTEGER·NOT·NULL)");239 ············sqLiteDatabase.execSQL("CREATE·TABLE·audio_playlists_map·(_id·INTEGER·PRIMARY·KEY,audio_id·INTEGER·NOT·NULL,playlist_id·INTEGER·NOT·NULL,play_order·INTEGER·NOT·NULL)");
265 ········}240 ········}
266 ········this.createLatestViews(sqLiteDatabase,·this.mInternal);241 ········this.createLatestViews(sqLiteDatabase,·this.mInternal);
267 ········createLatestTriggers(sqLiteDatabase,·this.mInternal);242 ········createLatestTriggers(sqLiteDatabase,·this.mInternal);
268 ········createLatestIndexes(sqLiteDatabase,·this.mInternal);243 ········createLatestIndexes(sqLiteDatabase,·this.mInternal);
269 ········if·(!this.mLegacyProvider)·{244 ········if·(!this.mLegacyProvider)·{
270 ············try·{245 ············this.mMigrateFromLegacy·=·true;
271 ················try·{ 
272 ····················final·Context·mContext4·=·this.mContext; 
273 ····················try·{ 
274 ························final·File·filesDir·=·mContext4.getFilesDir(); 
275 ························try·{ 
276 ····························new·File(filesDir,·this.mMigrationFileName).createNewFile(); 
277 ························} 
278 ························catch·(IOException·ex2)·{ 
279 ····························final·StringBuilder·sb2·=·new·StringBuilder(); 
280 ····························sb2.append("Failed·to·create·a·migration·file:·."); 
281 ····························sb2.append(this.mVolumeName); 
282 ····························Log.e(s,·sb2.toString(),·(Throwable)ex2); 
283 ························} 
284 ····················} 
285 ····················catch·(IOException·ex11)·{} 
286 ················} 
287 ················catch·(IOException·ex12)·{} 
288 ············} 
289 ············catch·(IOException·ex13)·{} 
290 ········}246 ········}
291 ····}247 ····}
292 ····248 ····
293 ····private·static·void·createLatestTriggers(final·SQLiteDatabase·sqLiteDatabase,·final·boolean·b)·{249 ····private·static·void·createLatestTriggers(final·SQLiteDatabase·sqLiteDatabase,·final·boolean·b)·{
294 ········makePristineTriggers(sqLiteDatabase);250 ········makePristineTriggers(sqLiteDatabase);
295 ········sqLiteDatabase.execSQL("CREATE·TRIGGER·files_insert·AFTER·INSERT·ON·files·BEGIN·SELECT·_INSERT(new.volume_name||':'||new._id||':'||new.media_type||':'||new.is_download);·END");251 ········sqLiteDatabase.execSQL("CREATE·TRIGGER·files_insert·AFTER·INSERT·ON·files·BEGIN·SELECT·_INSERT(new.volume_name||':'||new._id||':'||new.media_type||':'||new.is_download);·END");
296 ········sqLiteDatabase.execSQL("CREATE·TRIGGER·files_update·AFTER·UPDATE·ON·files·BEGIN·SELECT·_UPDATE(old.volume_name||':'||old._id||':'||old.media_type||':'||old.is_download||':'||new._id||':'||new.media_type||':'||new.is_download||':'||ifnull(old.owner_package_name,'null')||':'||ifnull(new.owner_package_name,'null')||':'||old._data);·END");252 ········sqLiteDatabase.execSQL("CREATE·TRIGGER·files_update·AFTER·UPDATE·ON·files·BEGIN·SELECT·_UPDATE(old.volume_name||':'||old._id||':'||old.media_type||':'||old.is_download||':'||new._id||':'||new.media_type||':'||new.is_download||':'||ifnull(old.owner_package_name,'null')||':'||ifnull(new.owner_package_name,'null')||':'||old._data);·END");
Offset 360, 77 lines modifiedOffset 316, 14 lines modified
360 ············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·");
361 ············sb8.append(bindList);317 ············sb8.append(bindList);
362 ············sb8.append("·GROUP·BY·genre_id");318 ············sb8.append("·GROUP·BY·genre_id");
363 ············sqLiteDatabase.execSQL(sb8.toString());319 ············sqLiteDatabase.execSQL(sb8.toString());
364 ········}320 ········}
365 ····}321 ····}
366 ····322 ····
367 ····private·void·createPlaylistFile(final·ContentProviderClient·contentProviderClient,·Uri·query,·final·File·file)·{ 
368 ········final·String[]·array·=·{·"audio_id",·"play_order"·}; 
369 ········final·Playlist·playlist·=·new·Playlist(); 
370 ········final·String·s·=·"play_order"; 
371 ········final·Uri·uri·=·query; 
372 ········final·String[]·array2·=·array; 
373 ········final·String·s2·=·null; 
374 ········final·String[]·array3·=·null; 
375 ········try·{ 
376 ············query·=·(Uri)contentProviderClient.query(uri,·array2,·s2,·array3,·s); 
377 ············try·{ 
378 ················String·s3; 
379 ················while·(true)·{ 
380 ····················final·boolean·moveToNext·=·((Cursor)query).moveToNext(); 
381 ····················s3·=·"MediaProvider"; 
382 ····················if·(!moveToNext)·{ 
383 ························break; 
384 ····················} 
385 ····················final·long·long1·=·((Cursor)query).getLong(0); 
386 ····················final·int·int1·=·((Cursor)query).getInt(1); 
387 ····················final·String·queryForData·=·this.queryForData(contentProviderClient,·MediaStore.rewriteToLegacy(ContentUris.withAppendedId(MediaStore$Files.getContentUri(this.mVolumeName),·long1))); 
388 ····················if·(queryForData·==·null)·{ 
389 ························final·StringBuilder·sb·=·new·StringBuilder(); 
390 ························sb.append("Couldn't·find·audio·file·for·"); 
391 ························sb.append(long1); 
392 ························sb.append(",·continuing.."); 
393 ························Log.e(s3,·sb.toString()); 
394 ····················} 
395 ····················else·{ 
396 ························playlist.add(int1,·file.toPath().getParent().relativize(new·File(queryForData).toPath())); 
397 ····················} 
398 ················} 
399 ················try·{ 
400 ····················writeToPlaylistFileWithRetry(file,·playlist); 
401 ················} 
402 ················catch·(IOException·ex2)·{ 
403 ····················final·StringBuilder·sb2·=·new·StringBuilder(); 
404 ····················sb2.append("Couldn't·migrate·playlist·file·"); 
405 ····················sb2.append(file); 
406 ····················Log.wtf(s3,·sb2.toString()); 
407 ················} 
408 ················if·(query·!=·null)·{ 
409 ····················((Cursor)query).close(); 
410 ················} 
411 ············} 
412 ············finally·{ 
413 ················if·(query·!=·null)·{ 
414 ····················try·{ 
415 ························((Cursor)query).close(); 
416 ····················} 
417 ····················finally·{ 
418 ························final·Throwable·t; 
419 ························final·Throwable·t2; 
420 ························t.addSuppressed(t2); 
421 ····················} 
422 ················} 
423 ············} 
424 ········} 
425 ········catch·(RemoteException·ex)·{ 
426 ············throw·new·IllegalStateException((Throwable)ex); 
427 ········} 
428 ····} 
429 ···· 
430 ····private·static·void·deleteLegacyThumbnailData()·{323 ····private·static·void·deleteLegacyThumbnailData()·{
431 ········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);
432 ········int·i·=·0;325 ········int·i·=·0;
433 ········if·(listFiles·==·null)·{326 ········if·(listFiles·==·null)·{
434 ············listFiles·=·new·File[0];327 ············listFiles·=·new·File[0];
435 ········}328 ········}
436 ········while·(i·<·listFiles.length)·{329 ········while·(i·<·listFiles.length)·{
Offset 781, 15 lines modifiedOffset 674, 15 lines modified
781 ········//···217:·astore··········12674 ········//···217:·astore··········12
782 ········//···219:·aload···········12675 ········//···219:·aload···········12
783 ········//···221:·invokespecial···android/content/ContentValues.<init>:()V676 ········//···221:·invokespecial···android/content/ContentValues.<init>:()V
784 ········//···224:·aload···········11677 ········//···224:·aload···········11
785 ········//···226:·invokeinterface·android/database/Cursor.moveToNext:()Z678 ········//···226:·invokeinterface·android/database/Cursor.moveToNext:()Z
786 ········//···231:·istore··········13679 ········//···231:·istore··········13
787 ········//···233:·iload···········13680 ········//···233:·iload···········13
788 ········//···235:·ifeq············979681 ········//···235:·ifeq············735
789 ········//···238:·aload···········12682 ········//···238:·aload···········12
790 ········//···240:·invokevirtual···android/content/ContentValues.clear:()V683 ········//···240:·invokevirtual···android/content/ContentValues.clear:()V
791 ········//···243:·aload···········11684 ········//···243:·aload···········11
792 ········//···245:·aload_3········685 ········//···245:·aload_3········
793 ········//···246:·invokeinterface·android/database/Cursor.getColumnIndex:(Ljava/lang/String;)I686 ········//···246:·invokeinterface·android/database/Cursor.getColumnIndex:(Ljava/lang/String;)I
794 ········//···251:·istore··········13687 ········//···251:·istore··········13
795 ········//···253:·aload···········11688 ········//···253:·aload···········11
Offset 823, 504 lines modifiedOffset 716, 370 lines modified
823 ········//···322:·aload···········11716 ········//···322:·aload···········11
824 ········//···324:·aload···········12717 ········//···324:·aload···········12
825 ········//···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
826 ········//···329:·goto············290719 ········//···329:·goto············290
827 ········//···332:·aload···········4720 ········//···332:·aload···········4
828 ········//···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;
829 ········//···337:·astore··········7722 ········//···337:·astore··········7
830 ········//···339:·ldc·············"media_type"723 ········//···339:·ldc_w···········";·continuing"
831 ········//···341:·astore··········8724 ········//···342:·astore··········8
832 ········//···343:·aload···········11725 ········//···344:·aload···········7
833 ········//···345:·aload···········8726 ········//···346:·ifnull··········469
834 ········//···347:·invokeinterface·android/database/Cursor.getColumnIndex:(Ljava/lang/String;)I727 ········//···349:·new·············Ljava/io/File;
835 ········//···352:·istore··········14728 ········//···352:·astore··········10
836 ········//···354:·aload···········11729 ········//···354:·aload···········10
837 ········//···356:·iload···········14730 ········//···356:·aload···········7
838 ········//···358:·invokeinterface·android/database/Cursor.getInt:(I)I731 ········//···358:·invokespecial···java/io/File.<init>:(Ljava/lang/String;)V
839 ········//···363:·istore··········14732 ········//···361:·aload···········12
840 ········//···365:·aload_2········733 ········//···363:·aload···········10
841 ········//···366:·getfield········com/android/providers/media/DatabaseHelper.mInternal:Z734 ········//···365:·iconst_0·······
842 ········//···369:·istore··········9735 ········//···366:·invokestatic····com/android/providers/media/util/FileUtils.computeDataFromValues:(Landroid/content/ContentValues;Ljava/io/File;Z)V
843 ········//···371:·iload···········9736 ········//···369:·aload···········12
844 ········//···373:·ifne············583737 ········//···371:·aload_3········
845 ········//···376:·aload···········7738 ········//···372:·invokevirtual···android/content/ContentValues.getAsString:(Ljava/lang/String;)Ljava/lang/String;
846 ········//···378:·ifnull··········583739 ········//···375:·astore··········7
847 ········//···381:·iconst_4·······740 ········//···377:·aload···········4
848 ········//···382:·istore··········9741 ········//···379:·aload···········7
849 ········//···384:·iload···········14742 ········//···381:·invokestatic····java/util/Objects.equals:(Ljava/lang/Object;Ljava/lang/Object;)Z
 743 ········//···384:·istore··········9
850 ········//···386:·iload···········9744 ········//···386:·iload···········9
851 ········//···388:·if_icmpne·······583745 ········//···388:·ifne············469
852 ········//···391:·new·············Ljava/io/File;746 ········//···391:·aload···········4
853 ········//···394:·astore··········8747 ········//···393:·aload···········7
854 ········//···396:·aload···········8748 ········//···395:·invokestatic····com/android/providers/media/DatabaseHelper.renameWithRetry:(Ljava/lang/String;Ljava/lang/String;)V
855 ········//···398:·aload···········4749 ········//···398:·goto············469
856 ········//···400:·invokespecial···java/io/File.<init>:(Ljava/lang/String;)V750 ········//···401:·astore··········4
857 ········//···403:·aload···········8751 ········//···403:·aload···········4
858 ········//···405:·invokevirtual···java/io/File.exists:()Z752 ········//···405:·astore··········7
859 ········//···408:·istore··········9753 ········//···407:·new·············Ljava/lang/StringBuilder;
860 ········//···410:·iload···········9754 ········//···410:·astore··········4
861 ········//···412:·ifne············583755 ········//···412:·aload···········4
862 ········//···415:·getstatic·······com/android/providers/media/util/Logging.LOGV:Z756 ········//···414:·invokespecial···java/lang/StringBuilder.<init>:()V
863 ········//···418:·istore··········9757 ········//···417:·ldc_w···········"Failed·to·rename·"
864 ········//···420:·iload···········9758 ········//···420:·astore··········10
865 ········//···422:·ifeq············471759 ········//···422:·aload···········4
866 ········//···425:·new·············Ljava/lang/StringBuilder;760 ········//···424:·aload···········10
867 ········//···428:·astore··········10761 ········//···426:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
868 ········//···430:·aload···········10762 ········//···429:·pop············
869 ········//···432:·invokespecial···java/lang/StringBuilder.<init>:()V763 ········//···430:·aload···········4
870 ········//···435:·ldc_w···········"Migrating·playlist·file·"764 ········//···432:·aload···········12
871 ········//···438:·astore··········15765 ········//···434:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
872 ········//···440:·aload···········10766 ········//···437:·pop············
873 ········//···442:·aload···········15767 ········//···438:·aload···········4
874 ········//···444:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;768 ········//···440:·aload···········8
875 ········//···447:·pop············769 ········//···442:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
876 ········//···448:·aload···········10770 ········//···445:·pop············
877 ········//···450:·aload···········8771 ········//···446:·aload···········4
878 ········//···452:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;772 ········//···448:·invokevirtual···java/lang/StringBuilder.toString:()Ljava/lang/String;
879 ········//···455:·pop············773 ········//···451:·astore··········4
880 ········//···456:·aload···········10774 ········//···453:·aload···········6
881 ········//···458:·invokevirtual···java/lang/StringBuilder.toString:()Ljava/lang/String;775 ········//···455:·aload···········4
882 ········//···461:·astore··········8776 ········//···457:·aload···········7
883 ········//···463:·aload···········6777 ········//···459:·invokestatic····android/util/Log.wtf:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
884 ········//···465:·aload···········8778 ········//···462:·pop············
885 ········//···467:·invokestatic····android/util/Log.v:(Ljava/lang/String;Ljava/lang/String;)I779 ········//···463:·aload···········12
886 ········//···470:·pop············780 ········//···465:·iconst_0·······
887 ········//···471:·ldc·············"_id"781 ········//···466:·invokestatic····com/android/providers/media/util/FileUtils.computeValuesFromData:(Landroid/content/ContentValues;Z)V
888 ········//···473:·astore··········8782 ········//···469:·ldc_w···········"files"
889 ········//···475:·aload···········11783 ········//···472:·astore··········4
890 ········//···477:·aload···········8784 ········//···474:·aload_1········
891 ········//···479:·invokeinterface·android/database/Cursor.getColumnIndex:(Ljava/lang/String;)I785 ········//···475:·aload···········4
892 ········//···484:·istore··········14786 ········//···477:·aconst_null····
893 ········//···486:·aload···········11787 ········//···478:·aload···········12
894 ········//···488:·iload···········14788 ········//···480:·invokevirtual···android/database/sqlite/SQLiteDatabase.insert:(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J
895 ········//···490:·invokeinterface·android/database/Cursor.getLong:(I)J789 ········//···483:·lstore··········15
896 ········//···495:·lstore··········16790 ········//···485:·iconst_m1······
897 ········//···497:·aload_2········791 ········//···486:·i2l············
898 ········//···498:·aload···········5792 ········//···487:·lstore··········17
899 ········//···500:·lload···········16793 ········//···489:·lload···········15
900 ········//···502:·invokespecial···com/android/providers/media/DatabaseHelper.migratePlaylistFiles:(Landroid/content/ContentProviderClient;J)Ljava/lang/String;794 ········//···491:·lload···········17
901 ········//···505:·astore··········8795 ········//···493:·lcmp···········
902 ········//···507:·aload···········8796 ········//···494:·istore··········13
903 ········//···509:·ifnonnull·······569797 ········//···496:·iload···········13
904 ········//···512:·aload···········4798 ········//···498:·ifne············555
905 ········//···514:·astore··········8799 ········//···501:·new·············Ljava/lang/StringBuilder;
906 ········//···516:·goto············569800 ········//···504:·astore··········4
907 ········//···519:·pop············801 ········//···506:·aload···········4
908 ········//···520:·new·············Ljava/lang/StringBuilder;802 ········//···508:·invokespecial···java/lang/StringBuilder.<init>:()V
909 ········//···523:·astore··········8803 ········//···511:·ldc_w···········"Failed·to·insert·"
910 ········//···525:·aload···········8804 ········//···514:·astore··········7
911 ········//···527:·invokespecial···java/lang/StringBuilder.<init>:()V805 ········//···516:·aload···········4
912 ········//···530:·ldc_w···········"Couldn't·migrate·playlist·file·"806 ········//···518:·aload···········7
913 ········//···533:·astore··········10807 ········//···520:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
914 ········//···535:·aload···········8808 ········//···523:·pop············
915 ········//···537:·aload···········10809 ········//···524:·aload···········4
916 ········//···539:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;810 ········//···526:·aload···········12
917 ········//···542:·pop············811 ········//···528:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
918 ········//···543:·aload···········8812 ········//···531:·pop············
919 ········//···545:·aload···········4813 ········//···532:·aload···········4
920 ········//···547:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;814 ········//···534:·aload···········8
921 ········//···550:·pop············815 ········//···536:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
922 ········//···551:·aload···········8816 ········//···539:·pop············
923 ········//···553:·invokevirtual···java/lang/StringBuilder.toString:()Ljava/lang/String;817 ········//···540:·aload···········4
924 ········//···556:·astore··········8818 ········//···542:·invokevirtual···java/lang/StringBuilder.toString:()Ljava/lang/String;
925 ········//···558:·aload···········6819 ········//···545:·astore··········4
926 ········//···560:·aload···········8820 ········//···547:·aload···········6
927 ········//···562:·invokestatic····android/util/Log.wtf:(Ljava/lang/String;Ljava/lang/String;)I821 ········//···549:·aload···········4
928 ········//···565:·pop············822 ········//···551:·invokestatic····android/util/Log.w:(Ljava/lang/String;Ljava/lang/String;)I
929 ········//···566:·goto············512823 ········//···554:·pop············
930 ········//···569:·aload···········12824 ········//···555:·aload···········11
931 ········//···571:·aload_3········825 ········//···557:·invokeinterface·android/database/Cursor.getPosition:()I
932 ········//···572:·aload···········8826 ········//···562:·istore··········13
933 ········//···574:·invokevirtual···android/content/ContentValues.put:(Ljava/lang/String;Ljava/lang/String;)V827 ········//···564:·iload···········13
934 ········//···577:·aload···········12828 ········//···566:·sipush··········2000
935 ········//···579:·iconst_0·······829 ········//···569:·irem···········
936 ········//···580:·invokestatic····com/android/providers/media/util/FileUtils.computeValuesFromData:(Landroid/content/ContentValues;Z)V830 ········//···570:·istore··········13
937 ········//···583:·ldc_w···········";·continuing"831 ········//···572:·iload···········13
938 ········//···586:·astore··········8832 ········//···574:·ifne············732
939 ········//···588:·aload···········7833 ········//···577:·aload_1········
940 ········//···590:·ifnull··········713834 ········//···578:·invokevirtual···android/database/sqlite/SQLiteDatabase.setTransactionSuccessful:()V
941 ········//···593:·new·············Ljava/io/File;835 ········//···581:·aload_1········
942 ········//···596:·astore··········10836 ········//···582:·invokevirtual···android/database/sqlite/SQLiteDatabase.endTransaction:()V
943 ········//···598:·aload···········10837 ········//···585:·aload_1········
944 ········//···600:·aload···········7838 ········//···586:·invokevirtual···android/database/sqlite/SQLiteDatabase.beginTransaction:()V
945 ········//···602:·invokespecial···java/io/File.<init>:(Ljava/lang/String;)V839 ········//···589:·aload···········11
946 ········//···605:·aload···········12840 ········//···591:·invokeinterface·android/database/Cursor.getPosition:()I
947 ········//···607:·aload···········10841 ········//···596:·istore··········13
948 ········//···609:·iconst_0·······842 ········//···598:·aload···········11
949 ········//···610:·invokestatic····com/android/providers/media/util/FileUtils.computeDataFromValues:(Landroid/content/ContentValues;Ljava/io/File;Z)V843 ········//···600:·invokeinterface·android/database/Cursor.getCount:()I
950 ········//···613:·aload···········12844 ········//···605:·istore··········19
951 ········//···615:·aload_3········845 ········//···607:·new·············Ljava/lang/StringBuilder;
952 ········//···616:·invokevirtual···android/content/ContentValues.getAsString:(Ljava/lang/String;)Ljava/lang/String;846 ········//···610:·astore··········8
953 ········//···619:·astore··········7847 ········//···612:·aload···········8
954 ········//···621:·aload···········4848 ········//···614:·invokespecial···java/lang/StringBuilder.<init>:()V
955 ········//···623:·aload···········7849 ········//···617:·ldc_w···········"Migrated·"
956 ········//···625:·invokestatic····java/util/Objects.equals:(Ljava/lang/Object;Ljava/lang/Object;)Z850 ········//···620:·astore··········10
957 ········//···628:·istore··········9851 ········//···622:·aload···········8
958 ········//···630:·iload···········9852 ········//···624:·aload···········10
959 ········//···632:·ifne············713853 ········//···626:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
960 ········//···635:·aload···········4854 ········//···629:·pop············
961 ········//···637:·aload···········7855 ········//···630:·aload···········8
962 ········//···639:·invokestatic····com/android/providers/media/DatabaseHelper.renameWithRetry:(Ljava/lang/String;Ljava/lang/String;)V856 ········//···632:·iload···········13
963 ········//···642:·goto············713857 ········//···634:·invokevirtual···java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
964 ········//···645:·astore··········4858 ········//···637:·pop············
965 ········//···647:·aload···········4859 ········//···638:·ldc_w···········"·of·"
966 ········//···649:·astore··········7860 ········//···641:·astore··········10
967 ········//···651:·new·············Ljava/lang/StringBuilder;861 ········//···643:·aload···········8
968 ········//···654:·astore··········4862 ········//···645:·aload···········10
969 ········//···656:·aload···········4863 ········//···647:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
970 ········//···658:·invokespecial···java/lang/StringBuilder.<init>:()V864 ········//···650:·pop············
971 ········//···661:·ldc_w···········"Failed·to·rename·"865 ········//···651:·aload···········8
972 ········//···664:·astore··········10866 ········//···653:·iload···········19
973 ········//···666:·aload···········4867 ········//···655:·invokevirtual···java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
974 ········//···668:·aload···········10868 ········//···658:·pop············
975 ········//···670:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;869 ········//···659:·ldc_w···········"..."
976 ········//···673:·pop············870 ········//···662:·astore··········10
977 ········//···674:·aload···········4871 ········//···664:·aload···········8
978 ········//···676:·aload···········12872 ········//···666:·aload···········10
979 ········//···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;
980 ········//···681:·pop············874 ········//···671:·pop············
981 ········//···682:·aload···········4875 ········//···672:·aload···········8
982 ········//···684:·aload···········8876 ········//···674:·invokevirtual···java/lang/StringBuilder.toString:()Ljava/lang/String;
983 ········//···686:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;877 ········//···677:·astore··········8
984 ········//···689:·pop············878 ········//···679:·aload···········6
985 ········//···690:·aload···········4879 ········//···681:·aload···········8
986 ········//···692:·invokevirtual···java/lang/StringBuilder.toString:()Ljava/lang/String;880 ········//···683:·invokestatic····android/util/Log.v:(Ljava/lang/String;Ljava/lang/String;)I
987 ········//···695:·astore··········4881 ········//···686:·pop············
988 ········//···697:·aload···········6882 ········//···687:·aload_2········
989 ········//···699:·aload···········4883 ········//···688:·getfield········com/android/providers/media/DatabaseHelper.mMigrationListener:Lcom/android/providers/media/DatabaseHelper$OnLegacyMigrationListener;
990 ········//···701:·aload···········7884 ········//···691:·astore··········8
991 ········//···703:·invokestatic····android/util/Log.wtf:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I885 ········//···693:·aload_2········
992 ········//···706:·pop············886 ········//···694:·getfield········com/android/providers/media/DatabaseHelper.mVolumeName:Ljava/lang/String;
993 ········//···707:·aload···········12887 ········//···697:·astore··········10
994 ········//···709:·iconst_0·······888 ········//···699:·iload···········13
995 ········//···710:·invokestatic····com/android/providers/media/util/FileUtils.computeValuesFromData:(Landroid/content/ContentValues;Z)V889 ········//···701:·i2l············
996 ········//···713:·ldc_w···········"files"890 ········//···702:·lstore··········20
997 ········//···716:·astore··········4891 ········//···704:·iload···········19
998 ········//···718:·aload_1········892 ········//···706:·i2l············
999 ········//···719:·aload···········4893 ········//···707:·lstore··········22
1000 ········//···721:·aconst_null····894 ········//···709:·aload···········8
1001 ········//···722:·aload···········12895 ········//···711:·astore··········7
1002 ········//···724:·invokevirtual···android/database/sqlite/SQLiteDatabase.insert:(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J896 ········//···713:·aload···········5
1003 ········//···727:·lstore··········18897 ········//···715:·astore··········8
1004 ········//···729:·iconst_m1······898 ········//···717:·aload···········7
1005 ········//···730:·i2l············899 ········//···719:·aload···········5
1006 ········//···731:·lstore··········20900 ········//···721:·aload···········10
1007 ········//···733:·lload···········18901 ········//···723:·lload···········20
1008 ········//···735:·lload···········20902 ········//···725:·lload···········22
1009 ········//···737:·lcmp···········903 ········//···727:·invokeinterface·com/android/providers/media/DatabaseHelper$OnLegacyMigrationListener.onProgress:(Landroid/content/ContentProviderClient;Ljava/lang/String;JJ)V
1010 ········//···738:·istore··········13904 ········//···732:·goto············224
1011 ········//···740:·iload···········13905 ········//···735:·ldc_w···········"Finished·migration·from·legacy·provider"
1012 ········//···742:·ifne············799906 ········//···738:·astore··········4
1013 ········//···745:·new·············Ljava/lang/StringBuilder;907 ········//···740:·aload···········6
1014 ········//···748:·astore··········4908 ········//···742:·aload···········4
1015 ········//···750:·aload···········4909 ········//···744:·invokestatic····android/util/Log.d:(Ljava/lang/String;Ljava/lang/String;)I
1016 ········//···752:·invokespecial···java/lang/StringBuilder.<init>:()V910 ········//···747:·pop············
1017 ········//···755:·ldc_w···········"Failed·to·insert·"911 ········//···748:·aload···········11
1018 ········//···758:·astore··········7912 ········//···750:·ifnull··········812
1019 ········//···760:·aload···········4913 ········//···753:·aload···········11
1020 ········//···762:·aload···········7914 ········//···755:·invokeinterface·android/database/Cursor.close:()V
1021 ········//···764:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;915 ········//···760:·goto············812
1022 ········//···767:·pop············916 ········//···763:·astore··········4
1023 ········//···768:·aload···········4917 ········//···765:·aload···········4
1024 ········//···770:·aload···········12918 ········//···767:·astore_3·······
1025 ········//···772:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;919 ········//···768:·aload···········11
1026 ········//···775:·pop············920 ········//···770:·ifnull··········795
1027 ········//···776:·aload···········4921 ········//···773:·aload···········11
1028 ········//···778:·aload···········8922 ········//···775:·invokeinterface·android/database/Cursor.close:()V
1029 ········//···780:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;923 ········//···780:·goto············795
1030 ········//···783:·pop············924 ········//···783:·astore··········4
1031 ········//···784:·aload···········4925 ········//···785:·aload···········4
1032 ········//···786:·invokevirtual···java/lang/StringBuilder.toString:()Ljava/lang/String;926 ········//···787:·astore··········7
1033 ········//···789:·astore··········4927 ········//···789:·aload_3········
1034 ········//···791:·aload···········6928 ········//···790:·aload···········4
1035 ········//···793:·aload···········4929 ········//···792:·invokevirtual···java/lang/Throwable.addSuppressed:(Ljava/lang/Throwable;)V
1036 ········//···795:·invokestatic····android/util/Log.w:(Ljava/lang/String;Ljava/lang/String;)I930 ········//···795:·aload_3········
1037 ········//···798:·pop············931 ········//···796:·athrow·········
1038 ········//···799:·aload···········11932 ········//···797:·astore··········4
1039 ········//···801:·invokeinterface·android/database/Cursor.getPosition:()I933 ········//···799:·ldc_w···········"Failed·migration·from·legacy·provider"
1040 ········//···806:·istore··········13934 ········//···802:·astore_3·······
1041 ········//···808:·iload···········13935 ········//···803:·aload···········6
1042 ········//···810:·sipush··········2000936 ········//···805:·aload_3········
1043 ········//···813:·irem···········937 ········//···806:·aload···········4
1044 ········//···814:·istore··········13938 ········//···808:·invokestatic····android/util/Log.wtf:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
1045 ········//···816:·iload···········13939 ········//···811:·pop············
1046 ········//···818:·ifne············976940 ········//···812:·aload_1········
1047 ········//···821:·aload_1········941 ········//···813:·invokevirtual···android/database/sqlite/SQLiteDatabase.setTransactionSuccessful:()V
1048 ········//···822:·invokevirtual···android/database/sqlite/SQLiteDatabase.setTransactionSuccessful:()V942 ········//···816:·aload_1········
1049 ········//···825:·aload_1········943 ········//···817:·invokevirtual···android/database/sqlite/SQLiteDatabase.endTransaction:()V
1050 ········//···826:·invokevirtual···android/database/sqlite/SQLiteDatabase.endTransaction:()V944 ········//···820:·aload_2········
1051 ········//···829:·aload_1········945 ········//···821:·getfield········com/android/providers/media/DatabaseHelper.mMigrationListener:Lcom/android/providers/media/DatabaseHelper$OnLegacyMigrationListener;
1052 ········//···830:·invokevirtual···android/database/sqlite/SQLiteDatabase.beginTransaction:()V946 ········//···824:·astore··········4
1053 ········//···833:·aload···········11947 ········//···826:·aload_2········
1054 ········//···835:·invokeinterface·android/database/Cursor.getPosition:()I948 ········//···827:·getfield········com/android/providers/media/DatabaseHelper.mVolumeName:Ljava/lang/String;
1055 ········//···840:·istore··········13949 ········//···830:·astore_2·······
1056 ········//···842:·aload···········11950 ········//···831:·aload···········4
1057 ········//···844:·invokeinterface·android/database/Cursor.getCount:()I951 ········//···833:·aload···········5
1058 ········//···849:·istore··········22952 ········//···835:·aload_2········
1059 ········//···851:·new·············Ljava/lang/StringBuilder;953 ········//···836:·invokeinterface·com/android/providers/media/DatabaseHelper$OnLegacyMigrationListener.onFinished:(Landroid/content/ContentProviderClient;Ljava/lang/String;)V
1060 ········//···854:·astore··········8954 ········//···841:·aload···········5
1061 ········//···856:·aload···········8955 ········//···843:·ifnull··········851
1062 ········//···858:·invokespecial···java/lang/StringBuilder.<init>:()V956 ········//···846:·aload···········5
1063 ········//···861:·ldc_w···········"Migrated·"957 ········//···848:·invokevirtual···android/content/ContentProviderClient.close:()V
1064 ········//···864:·astore··········10958 ········//···851:·return·········
1065 ········//···866:·aload···········8959 ········//···852:·astore··········4
1066 ········//···868:·aload···········10960 ········//···854:·aload···········4
1067 ········//···870:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;961 ········//···856:·astore_2·······
1068 ········//···873:·pop············962 ········//···857:·aload···········5
1069 ········//···874:·aload···········8963 ········//···859:·ifnull··········881
1070 ········//···876:·iload···········13964 ········//···862:·aload···········5
1071 ········//···878:·invokevirtual···java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;965 ········//···864:·invokevirtual···android/content/ContentProviderClient.close:()V
1072 ········//···881:·pop············966 ········//···867:·goto············881
1073 ········//···882:·ldc_w···········"·of·"967 ········//···870:·astore··········4
1074 ········//···885:·astore··········10968 ········//···872:·aload···········4
1075 ········//···887:·aload···········8969 ········//···874:·astore_3·······
1076 ········//···889:·aload···········10970 ········//···875:·aload_2········
1077 ········//···891:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;971 ········//···876:·aload···········4
1078 ········//···894:·pop············972 ········//···878:·invokevirtual···java/lang/Throwable.addSuppressed:(Ljava/lang/Throwable;)V
1079 ········//···895:·aload···········8973 ········//···881:·aload_2········
1080 ········//···897:·iload···········22974 ········//···882:·athrow·········
1081 ········//···899:·invokevirtual···java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder; 
1082 ········//···902:·pop············ 
1083 ········//···903:·ldc_w···········"..." 
1084 ········//···906:·astore··········10 
1085 ········//···908:·aload···········8 
1086 ········//···910:·aload···········10 
1087 ········//···912:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; 
1088 ········//···915:·pop············ 
1089 ········//···916:·aload···········8 
1090 ········//···918:·invokevirtual···java/lang/StringBuilder.toString:()Ljava/lang/String; 
1091 ········//···921:·astore··········8 
1092 ········//···923:·aload···········6 
1093 ········//···925:·aload···········8 
1094 ········//···927:·invokestatic····android/util/Log.v:(Ljava/lang/String;Ljava/lang/String;)I 
1095 ········//···930:·pop············ 
1096 ········//···931:·aload_2········ 
1097 ········//···932:·getfield········com/android/providers/media/DatabaseHelper.mMigrationListener:Lcom/android/providers/media/DatabaseHelper$OnLegacyMigrationListener; 
1098 ········//···935:·astore··········8 
1099 ········//···937:·aload_2········ 
1100 ········//···938:·getfield········com/android/providers/media/DatabaseHelper.mVolumeName:Ljava/lang/String; 
1101 ········//···941:·astore··········10 
1102 ········//···943:·iload···········13 
1103 ········//···945:·i2l············ 
1104 ········//···946:·lstore··········23 
1105 ········//···948:·iload···········22 
1106 ········//···950:·i2l············ 
1107 ········//···951:·lstore··········25 
1108 ········//···953:·aload···········8 
1109 ········//···955:·astore··········7 
1110 ········//···957:·aload···········5 
1111 ········//···959:·astore··········8 
1112 ········//···961:·aload···········7 
1113 ········//···963:·aload···········5 
1114 ········//···965:·aload···········10 
1115 ········//···967:·lload···········23 
1116 ········//···969:·lload···········25 
1117 ········//···971:·invokeinterface·com/android/providers/media/DatabaseHelper$OnLegacyMigrationListener.onProgress:(Landroid/content/ContentProviderClient;Ljava/lang/String;JJ)V 
1118 ········//···976:·goto············224 
1119 ········//···979:·ldc_w···········"Finished·migration·from·legacy·provider" 
1120 ········//···982:·astore··········4 
1121 ········//···984:·aload···········6 
1122 ········//···986:·aload···········4 
1123 ········//···988:·invokestatic····android/util/Log.d:(Ljava/lang/String;Ljava/lang/String;)I 
1124 ········//···991:·pop············ 
1125 ········//···992:·aload···········11 
1126 ········//···994:·ifnull··········1056 
1127 ········//···997:·aload···········11 
1128 ········//···999:·invokeinterface·android/database/Cursor.close:()V 
1129 ········//··1004:·goto············1056 
1130 ········//··1007:·astore··········4 
1131 ········//··1009:·aload···········4 
1132 ········//··1011:·astore_3······· 
1133 ········//··1012:·aload···········11 
1134 ········//··1014:·ifnull··········1039 
1135 ········//··1017:·aload···········11 
1136 ········//··1019:·invokeinterface·android/database/Cursor.close:()V 
1137 ········//··1024:·goto············1039 
1138 ········//··1027:·astore··········4 
1139 ········//··1029:·aload···········4 
1140 ········//··1031:·astore··········7 
1141 ········//··1033:·aload_3········ 
1142 ········//··1034:·aload···········4 
1143 ········//··1036:·invokevirtual···java/lang/Throwable.addSuppressed:(Ljava/lang/Throwable;)V 
1144 ········//··1039:·aload_3········ 
1145 ········//··1040:·athrow········· 
1146 ········//··1041:·astore··········4 
1147 ········//··1043:·ldc_w···········"Failed·migration·from·legacy·provider" 
1148 ········//··1046:·astore_3······· 
1149 ········//··1047:·aload···········6 
1150 ········//··1049:·aload_3········ 
1151 ········//··1050:·aload···········4 
1152 ········//··1052:·invokestatic····android/util/Log.wtf:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I 
1153 ········//··1055:·pop············ 
1154 ········//··1056:·aload_1········ 
1155 ········//··1057:·invokevirtual···android/database/sqlite/SQLiteDatabase.setTransactionSuccessful:()V 
1156 ········//··1060:·aload_1········ 
1157 ········//··1061:·invokevirtual···android/database/sqlite/SQLiteDatabase.endTransaction:()V 
1158 ········//··1064:·aload_2········ 
1159 ········//··1065:·getfield········com/android/providers/media/DatabaseHelper.mMigrationListener:Lcom/android/providers/media/DatabaseHelper$OnLegacyMigrationListener; 
1160 ········//··1068:·astore··········4 
1161 ········//··1070:·aload_2········ 
1162 ········//··1071:·getfield········com/android/providers/media/DatabaseHelper.mVolumeName:Ljava/lang/String; 
1163 ········//··1074:·astore_2······· 
1164 ········//··1075:·aload···········4 
1165 ········//··1077:·aload···········5 
1166 ········//··1079:·aload_2········ 
1167 ········//··1080:·invokeinterface·com/android/providers/media/DatabaseHelper$OnLegacyMigrationListener.onFinished:(Landroid/content/ContentProviderClient;Ljava/lang/String;)V 
1168 ········//··1085:·aload···········5 
1169 ········//··1087:·ifnull··········1095 
1170 ········//··1090:·aload···········5 
1171 ········//··1092:·invokevirtual···android/content/ContentProviderClient.close:()V 
1172 ········//··1095:·return········· 
1173 ········//··1096:·astore··········4 
1174 ········//··1098:·aload···········4 
1175 ········//··1100:·astore_2······· 
1176 ········//··1101:·aload···········5 
1177 ········//··1103:·ifnull··········1125 
1178 ········//··1106:·aload···········5 
1179 ········//··1108:·invokevirtual···android/content/ContentProviderClient.close:()V 
1180 ········//··1111:·goto············1125 
1181 ········//··1114:·astore··········4 
1182 ········//··1116:·aload···········4 
1183 ········//··1118:·astore_3······· 
1184 ········//··1119:·aload_2········ 
1185 ········//··1120:·aload···········4 
1186 ········//··1122:·invokevirtual···java/lang/Throwable.addSuppressed:(Ljava/lang/Throwable;)V 
1187 ········//··1125:·aload_2········ 
1188 ········//··1126:·athrow········· 
1189 ········//····Exceptions:975 ········//····Exceptions:
1190 ········//··Try···········Handler976 ········//··Try···········Handler
1191 ········//··Start··End····Start··End····Type·················977 ········//··Start··End····Start··End····Type·················
1192 ········//··-----··-----··-----··-----··---------------------978 ········//··-----··-----··-----··-----··---------------------
1193 ········//··41·····47·····1096···1127···Any979 ········//··41·····47·····852····883····Any
1194 ········//··58·····62·····1096···1127···Any980 ········//··58·····62·····852····883····Any
1195 ········//··64·····69·····1096···1127···Any981 ········//··64·····69·····852····883····Any
1196 ········//··71·····76·····1096···1127···Any982 ········//··71·····76·····852····883····Any
1197 ········//··78·····81·····1096···1127···Any983 ········//··78·····81·····852····883····Any
1198 ········//··83·····88·····1096···1127···Any984 ········//··83·····88·····852····883····Any
1199 ········//··100····105····1096···1127···Any985 ········//··100····105····852····883····Any
1200 ········//··114····119····1096···1127···Any986 ········//··114····119····852····883····Any
1201 ········//··128····133····1096···1127···Any987 ········//··128····133····852····883····Any
1202 ········//··133····137····1096···1127···Any988 ········//··133····137····852····883····Any
1203 ········//··144····150····1096···1127···Any989 ········//··144····150····852····883····Any
1204 ········//··150····154····1096···1127···Any990 ········//··150····154····852····883····Any
1205 ········//··156····160····1096···1127···Any991 ········//··156····160····852····883····Any
1206 ········//··166····173····1096···1127···Any992 ········//··166····173····852····883····Any
1207 ········//··173····176····1041···1056···Ljava/lang/Exception;993 ········//··173····176····797····812····Ljava/lang/Exception;
1208 ········//··173····176····1096···1127···Any994 ········//··173····176····852····883····Any
1209 ········//··178····182····1041···1056···Ljava/lang/Exception;995 ········//··178····182····797····812····Ljava/lang/Exception;
1210 ········//··178····182····1096···1127···Any996 ········//··178····182····852····883····Any
1211 ········//··186····191····1041···1056···Ljava/lang/Exception;997 ········//··186····191····797····812····Ljava/lang/Exception;
1212 ········//··186····191····1096···1127···Any998 ········//··186····191····852····883····Any
1213 ········//··193····198····1041···1056···Ljava/lang/Exception;999 ········//··193····198····797····812····Ljava/lang/Exception;
1214 ········//··193····198····1096···1127···Any1000 ········//··193····198····852····883····Any
1215 ········//··208····212····1041···1056···Ljava/lang/Exception;1001 ········//··208····212····797····812····Ljava/lang/Exception;
1216 ········//··208····212····1096···1127···Any1002 ········//··208····212····852····883····Any
1217 ········//··214····217····1007···1041···Any1003 ········//··214····217····763····797····Any
1218 ········//··219····224····1007···1041···Any1004 ········//··219····224····763····797····Any
1219 ········//··224····231····1007···1041···Any1005 ········//··224····231····763····797····Any
1220 ········//··238····243····1007···1041···Any1006 ········//··238····243····763····797····Any
1221 ········//··245····251····1007···1041···Any1007 ········//··245····251····763····797····Any
1222 ········//··255····262····1007···1041···Any1008 ········//··255····262····763····797····Any
1223 ········//··267····272····1007···1041···Any1009 ········//··267····272····763····797····Any
1224 ········//··274····278····1007···1041···Any1010 ········//··274····278····763····797····Any
1225 ········//··278····281····1007···1041···Any1011 ········//··278····281····763····797····Any
1226 ········//··283····288····1007···1041···Any1012 ········//··283····288····763····797····Any
1227 ········//··290····297····1007···1041···Any1013 ········//··290····297····763····797····Any
1228 ········//··304····311····1007···1041···Any1014 ········//··304····311····763····797····Any
1229 ········//··313····318····1007···1041···Any1015 ········//··313····318····763····797····Any
1230 ········//··324····329····1007···1041···Any1016 ········//··324····329····763····797····Any
1231 ········//··332····337····1007···1041···Any1017 ········//··332····337····763····797····Any
1232 ········//··345····352····1007···1041···Any1018 ········//··349····352····763····797····Any
1233 ········//··356····363····1007···1041···Any1019 ········//··356····361····763····797····Any
1234 ········//··365····369····1007···1041···Any1020 ········//··365····369····763····797····Any
1235 ········//··391····394····1007···1041···Any1021 ········//··371····375····763····797····Any
1236 ········//··398····403····1007···1041···Any1022 ········//··379····384····763····797····Any
1237 ········//··403····408····1007···1041···Any1023 ········//··393····398····401····469····Ljava/io/IOException;
1238 ········//··415····418····1007···1041···Any1024 ········//··393····398····763····797····Any
1239 ········//··425····428····1007···1041···Any1025 ········//··407····410····763····797····Any
1240 ········//··430····435····1007···1041···Any1026 ········//··412····417····763····797····Any
1241 ········//··442····448····1007···1041···Any1027 ········//··424····430····763····797····Any
1242 ········//··450····456····1007···1041···Any1028 ········//··432····438····763····797····Any
1243 ········//··456····461····1007···1041···Any1029 ········//··440····446····763····797····Any
1244 ········//··465····471····1007···1041···Any1030 ········//··446····451····763····797····Any
1245 ········//··477····484····519····569····Ljava/lang/Exception;1031 ········//··457····463····763····797····Any
1246 ········//··477····484····1007···1041···Any1032 ········//··465····469····763····797····Any
1247 ········//··488····495····519····569····Ljava/lang/Exception;1033 ········//··478····483····763····797····Any
1248 ········//··488····495····1007···1041···Any1034 ········//··501····504····763····797····Any
1249 ········//··500····505····519····569····Ljava/lang/Exception;1035 ········//··506····511····763····797····Any
1250 ········//··500····505····1007···1041···Any1036 ········//··518····524····763····797····Any
1251 ········//··520····523····1007···1041···Any1037 ········//··526····532····763····797····Any
1252 ········//··525····530····1007···1041···Any1038 ········//··534····540····763····797····Any
1253 ········//··537····543····1007···1041···Any1039 ········//··540····545····763····797····Any
1254 ········//··545····551····1007···1041···Any1040 ········//··549····555····763····797····Any
1255 ········//··551····556····1007···1041···Any1041 ········//··555····562····763····797····Any
1256 ········//··560····566····1007···1041···Any1042 ········//··566····570····763····797····Any
1257 ········//··572····577····1007···1041···Any1043 ········//··577····581····763····797····Any
1258 ········//··579····583····1007···1041···Any1044 ········//··581····585····763····797····Any
1259 ········//··593····596····1007···1041···Any1045 ········//··585····589····763····797····Any
1260 ········//··600····605····1007···1041···Any1046 ········//··589····596····763····797····Any
1261 ········//··609····613····1007···1041···Any1047 ········//··598····605····763····797····Any
1262 ········//··615····619····1007···1041···Any1048 ········//··607····610····763····797····Any
1263 ········//··623····628····1007···1041···Any1049 ········//··612····617····763····797····Any
1264 ········//··637····642····645····713····Ljava/io/IOException;1050 ········//··624····630····763····797····Any
1265 ········//··637····642····1007···1041···Any1051 ········//··632····638····763····797····Any
1266 ········//··651····654····1007···1041···Any1052 ········//··645····651····763····797····Any
1267 ········//··656····661····1007···1041···Any1053 ········//··653····659····763····797····Any
1268 ········//··668····674····1007···1041···Any1054 ········//··666····672····763····797····Any
1269 ········//··676····682····1007···1041···Any1055 ········//··672····677····763····797····Any
1270 ········//··684····690····1007···1041···Any1056 ········//··681····687····763····797····Any
1271 ········//··690····695····1007···1041···Any1057 ········//··687····691····763····797····Any
1272 ········//··701····707····1007···1041···Any1058 ········//··693····697····763····797····Any
1273 ········//··709····713····1007···1041···Any1059 ········//··725····732····763····797····Any
1274 ········//··722····727····1007···1041···Any1060 ········//··742····748····763····797····Any
1275 ········//··745····748····1007···1041···Any1061 ········//··753····760····797····812····Ljava/lang/Exception;
1276 ········//··750····755····1007···1041···Any1062 ········//··753····760····852····883····Any
1277 ········//··762····768····1007···1041···Any1063 ········//··773····780····783····795····Any
1278 ········//··770····776····1007···1041···Any1064 ········//··790····795····797····812····Ljava/lang/Exception;
1279 ········//··778····784····1007···1041···Any1065 ········//··790····795····852····883····Any
1280 ········//··784····789····1007···1041···Any1066 ········//··795····797····797····812····Ljava/lang/Exception;
1281 ········//··793····799····1007···1041···Any1067 ········//··795····797····852····883····Any
1282 ········//··799····806····1007···1041···Any1068 ········//··806····812····852····883····Any
1283 ········//··810····814····1007···1041···Any1069 ········//··812····816····852····883····Any
1284 ········//··821····825····1007···1041···Any1070 ········//··816····820····852····883····Any
1285 ········//··825····829····1007···1041···Any1071 ········//··820····824····852····883····Any
1286 ········//··829····833····1007···1041···Any1072 ········//··826····830····852····883····Any
1287 ········//··833····840····1007···1041···Any1073 ········//··835····841····852····883····Any
1288 ········//··842····849····1007···1041···Any1074 ········//··862····867····870····881····Any
1289 ········//··851····854····1007···1041···Any 
1290 ········//··856····861····1007···1041···Any 
1291 ········//··868····874····1007···1041···Any 
1292 ········//··876····882····1007···1041···Any 
1293 ········//··889····895····1007···1041···Any 
1294 ········//··897····903····1007···1041···Any 
1295 ········//··910····916····1007···1041···Any 
1296 ········//··916····921····1007···1041···Any 
1297 ········//··925····931····1007···1041···Any 
1298 ········//··931····935····1007···1041···Any 
1299 ········//··937····941····1007···1041···Any 
1300 ········//··969····976····1007···1041···Any 
1301 ········//··986····992····1007···1041···Any 
1302 ········//··997····1004···1041···1056···Ljava/lang/Exception; 
1303 ········//··997····1004···1096···1127···Any 
1304 ········//··1017···1024···1027···1039···Any 
1305 ········//··1034···1039···1041···1056···Ljava/lang/Exception; 
1306 ········//··1034···1039···1096···1127···Any 
1307 ········//··1039···1041···1041···1056···Ljava/lang/Exception; 
1308 ········//··1039···1041···1096···1127···Any 
1309 ········//··1050···1056···1096···1127···Any 
1310 ········//··1056···1060···1096···1127···Any 
1311 ········//··1060···1064···1096···1127···Any 
1312 ········//··1064···1068···1096···1127···Any 
1313 ········//··1070···1074···1096···1127···Any 
1314 ········//··1079···1085···1096···1127···Any 
1315 ········//··1106···1111···1114···1125···Any 
1316 ········//·1075 ········//·
1317 ········//·The·error·that·occurred·was:1076 ········//·The·error·that·occurred·was:
1318 ········//·1077 ········//·
1319 ········//·java.lang.IndexOutOfBoundsException:·Index:·506,·Size:·5061078 ········//·java.lang.IndexOutOfBoundsException:·Index:·399,·Size:·399
1320 ········//·····at·java.util.ArrayList.rangeCheck(ArrayList.java:659)1079 ········//·····at·java.util.ArrayList.rangeCheck(ArrayList.java:659)
1321 ········//·····at·java.util.ArrayList.get(ArrayList.java:435)1080 ········//·····at·java.util.ArrayList.get(ArrayList.java:435)
1322 ········//·····at·com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3321)1081 ········//·····at·com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3321)
1323 ········//·····at·com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3569)1082 ········//·····at·com.strobel.decompiler.ast.AstBuilder.convertToAst(AstBuilder.java:3569)
1324 ········//·····at·com.strobel.decompiler.ast.AstBuilder.build(AstBuilder.java:113)1083 ········//·····at·com.strobel.decompiler.ast.AstBuilder.build(AstBuilder.java:113)
1325 ········//·····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)
1326 ········//·····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 1335, 100 lines modifiedOffset 1094, 18 lines modified
1335 ········//·····at·com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59)1094 ········//·····at·com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59)
1336 ········//·····at·com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:336)1095 ········//·····at·com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:336)
1337 ········//·····at·com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:144)1096 ········//·····at·com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:144)
1338 ········//·1097 ········//·
1339 ········throw·new·IllegalStateException("An·error·occurred·while·decompiling·this·method.");1098 ········throw·new·IllegalStateException("An·error·occurred·while·decompiling·this·method.");
1340 ····}1099 ····}
1341 ····1100 ····
1342 ····private·String·migratePlaylistFiles(final·ContentProviderClient·contentProviderClient,·final·long·n)·{ 
1343 ········final·StringBuilder·sb·=·new·StringBuilder(); 
1344 ········sb.append("media_type=4·AND·_id="); 
1345 ········sb.append(n); 
1346 ········final·String·string·=·sb.toString(); 
1347 ········final·String·s·=·"_id"; 
1348 ········final·String·s2·=·"_data"; 
1349 ········final·String·s3·=·"mime_type"; 
1350 ········final·String·s4·=·"name"; 
1351 ········final·String[]·array·=·{·s,·s2,·s3,·s4·}; 
1352 ········final·Uri·rewriteToLegacy·=·MediaStore.rewriteToLegacy(MediaStore$Files.getContentUri(this.mVolumeName)); 
1353 ········final·String[]·array2·=·array; 
1354 ········final·String·s5·=·string; 
1355 ········final·String[]·array3·=·null; 
1356 ········try·{ 
1357 ············final·Cursor·query·=·contentProviderClient.query(rewriteToLegacy,·array2,·s5,·array3,·(String)null); 
1358 ············try·{ 
1359 ················if·(!query.moveToFirst())·{ 
1360 ····················final·StringBuilder·sb2·=·new·StringBuilder(); 
1361 ····················sb2.append("Couldn't·find·database·row·for·playlist·file"); 
1362 ····················sb2.append(n); 
1363 ····················throw·new·IllegalStateException(sb2.toString()); 
1364 ················} 
1365 ················final·String·string2·=·query.getString(query.getColumnIndex(s2)); 
1366 ················File·buildUniqueFile·=·new·File(string2); 
1367 ················if·(!buildUniqueFile.exists())·{ 
1368 ····················String·string3·=·query.getString(query.getColumnIndex(s3)); 
1369 ····················if·(!MimeUtils.isPlaylistMimeType(string3))·{ 
1370 ························string3·=·"audio/mpegurl"; 
1371 ····················} 
1372 ····················File·parentFile·=·buildUniqueFile.getParentFile(); 
1373 ····················if·(parentFile.getName().equalsIgnoreCase("Playlists"))·{ 
1374 ························parentFile·=·new·File(parentFile.getParentFile(),·Environment.DIRECTORY_MUSIC); 
1375 ····················} 
1376 ····················final·String·string4·=·query.getString(query.getColumnIndex(s4)); 
1377 ····················final·File·file·=·parentFile; 
1378 ····················final·String·s6·=·string3; 
1379 ····················try·{ 
1380 ························buildUniqueFile·=·FileUtils.buildUniqueFile(file,·s6,·string4); 
1381 ····················} 
1382 ····················catch·(FileNotFoundException·ex)·{ 
1383 ························final·String·s7·=·"MediaProvider"; 
1384 ························final·StringBuilder·sb3·=·new·StringBuilder(); 
1385 ························sb3.append("Couldn't·create·unique·file·for·"); 
1386 ························sb3.append(buildUniqueFile); 
1387 ························sb3.append(",·using·actual·playlist·file·name"); 
1388 ························Log.e(s7,·sb3.toString(),·(Throwable)ex); 
1389 ····················} 
1390 ····················this.createPlaylistFile(contentProviderClient,·MediaStore.rewriteToLegacy(MediaStore$Audio$Playlists$Members.getContentUri(this.mVolumeName,·query.getLong(query.getColumnIndex(s)))),·buildUniqueFile); 
1391 ····················final·String·absolutePath·=·buildUniqueFile.getAbsolutePath(); 
1392 ····················if·(query·!=·null)·{ 
1393 ························query.close(); 
1394 ····················} 
1395 ····················return·absolutePath; 
1396 ················} 
1397 ················final·StringBuilder·sb4·=·new·StringBuilder(); 
1398 ················sb4.append("Playlist·file·exists·"); 
1399 ················sb4.append(string2); 
1400 ················throw·new·IllegalStateException(sb4.toString()); 
1401 ············} 
1402 ············finally·{ 
1403 ················if·(query·!=·null)·{ 
1404 ····················try·{ 
1405 ························query.close(); 
1406 ····················} 
1407 ····················finally·{ 
1408 ························final·Throwable·t; 
1409 ························final·Throwable·t2; 
1410 ························t.addSuppressed(t2); 
1411 ····················} 
1412 ················} 
1413 ············} 
1414 ········} 
1415 ········catch·(RemoteException·ex2)·{ 
1416 ············throw·new·IllegalStateException((Throwable)ex2); 
1417 ········} 
1418 ····} 
1419 ···· 
1420 ····private·void·notifyChangeInternal(final·Collection·collection,·final·int·n)·{1101 ····private·void·notifyChangeInternal(final·Collection·collection,·final·int·n)·{
1421 ········Trace.beginSection("notifyChange");1102 ········Trace.beginSection("notifyChange");
1422 ········final·int·n2·=·256; 
1423 ········try·{1103 ········try·{
1424 ············final·Iterator·iterator·=·Iterables.partition((Iterable)collection,·n2).iterator();1104 ············this.mContext.getContentResolver().notifyChange(collection,·(ContentObserver)null,·n);
1425 ············while·(iterator.hasNext())·{ 
1426 ················this.mContext.getContentResolver().notifyChange((Collection)(List)iterator.next(),·(ContentObserver)null,·n); 
1427 ············} 
1428 ········}1105 ········}
1429 ········finally·{1106 ········finally·{
1430 ············Trace.endSection();1107 ············Trace.endSection();
1431 ········}1108 ········}
1432 ····}1109 ····}
1433 ····1110 ····
1434 ····private·void·notifySingleChangeInternal(final·Uri·uri,·final·int·n)·{1111 ····private·void·notifySingleChangeInternal(final·Uri·uri,·final·int·n)·{
Offset 1437, 58 lines modifiedOffset 1114, 14 lines modified
1437 ············this.mContext.getContentResolver().notifyChange(uri,·(ContentObserver)null,·n);1114 ············this.mContext.getContentResolver().notifyChange(uri,·(ContentObserver)null,·n);
1438 ········}1115 ········}
1439 ········finally·{1116 ········finally·{
1440 ············Trace.endSection();1117 ············Trace.endSection();
1441 ········}1118 ········}
1442 ····}1119 ····}
1443 ····1120 ····
1444 ····private·String·queryForData(ContentProviderClient·query,·final·Uri·uri)·{ 
1445 ········final·String·s·=·"_data"; 
1446 ········try·{ 
1447 ············final·String[]·array·=·{·s·}; 
1448 ············try·{ 
1449 ················query·=·(ContentProviderClient)query.query(uri,·array,·Bundle.EMPTY,·(CancellationSignal)null); 
1450 ················try·{ 
1451 ····················if·(((Cursor)query).moveToFirst())·{ 
1452 ························final·String·string·=·((Cursor)query).getString(0); 
1453 ························if·(query·!=·null)·{ 
1454 ····························((Cursor)query).close(); 
1455 ························} 
1456 ························return·string; 
1457 ····················} 
1458 ····················if·(query·!=·null)·{ 
1459 ························((Cursor)query).close(); 
1460 ························return·null; 
1461 ····················} 
1462 ····················return·null; 
1463 ················} 
1464 ················finally·{ 
1465 ····················if·(query·!=·null)·{ 
1466 ························try·{ 
1467 ····························((Cursor)query).close(); 
1468 ························} 
1469 ························finally·{ 
1470 ····························final·Throwable·t; 
1471 ····························final·Throwable·t2; 
1472 ····························t.addSuppressed(t2); 
1473 ························} 
1474 ····················} 
1475 ················} 
1476 ············} 
1477 ············catch·(Exception·ex)·{ 
1478 ················final·StringBuilder·sb·=·new·StringBuilder(); 
1479 ················sb.append("Exception·occurred·while·querying·for·data·file·for·"); 
1480 ················sb.append(uri); 
1481 ················Log.wtf("MediaProvider",·sb.toString(),·(Throwable)ex); 
1482 ············} 
1483 ········} 
1484 ········catch·(Exception·ex2)·{} 
1485 ········return·null; 
1486 ····} 
1487 ···· 
1488 ····private·static·void·recomputeDataValues(final·SQLiteDatabase·sqLiteDatabase,·final·boolean·b)·{1121 ····private·static·void·recomputeDataValues(final·SQLiteDatabase·sqLiteDatabase,·final·boolean·b)·{
1489 ········final·String·s·=·"_data";1122 ········final·String·s·=·"_data";
1490 ········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);
1491 ········final·String·s2·=·"MediaProvider";1124 ········final·String·s2·=·"MediaProvider";
1492 ········try·{1125 ········try·{
Max diff block lines reached; 7664/77500 bytes (9.89%) of diff not shown.