188 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			188 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package androidx.profileinstaller;
 | |
| 
 | |
| import android.content.Context;
 | |
| import android.content.pm.PackageInfo;
 | |
| import android.content.pm.PackageManager;
 | |
| import android.os.Build;
 | |
| import androidx.concurrent.futures.ResolvableFuture;
 | |
| import com.google.common.util.concurrent.ListenableFuture;
 | |
| import java.io.DataInputStream;
 | |
| import java.io.DataOutputStream;
 | |
| import java.io.File;
 | |
| import java.io.FileInputStream;
 | |
| import java.io.FileOutputStream;
 | |
| import java.io.IOException;
 | |
| import java.lang.annotation.Retention;
 | |
| import java.lang.annotation.RetentionPolicy;
 | |
| import java.util.Objects;
 | |
| 
 | |
| /* loaded from: classes.dex */
 | |
| public final class ProfileVerifier {
 | |
|     private static final String CUR_PROFILES_BASE_DIR = "/data/misc/profiles/cur/0/";
 | |
|     private static final String PROFILE_FILE_NAME = "primary.prof";
 | |
|     private static final String PROFILE_INSTALLED_CACHE_FILE_NAME = "profileInstalled";
 | |
|     private static final String REF_PROFILES_BASE_DIR = "/data/misc/profiles/ref/";
 | |
|     private static final String TAG = "ProfileVerifier";
 | |
|     private static final ResolvableFuture<CompilationStatus> sFuture = ResolvableFuture.create();
 | |
|     private static final Object SYNC_OBJ = new Object();
 | |
|     private static CompilationStatus sCompilationStatus = null;
 | |
| 
 | |
|     public static ListenableFuture<CompilationStatus> getCompilationStatusAsync() {
 | |
|         return sFuture;
 | |
|     }
 | |
| 
 | |
|     private ProfileVerifier() {
 | |
|     }
 | |
| 
 | |
|     public static CompilationStatus writeProfileVerification(Context context) {
 | |
|         return writeProfileVerification(context, false);
 | |
|     }
 | |
| 
 | |
|     /* JADX WARN: Can't wrap try/catch for region: R(20:14|(1:78)(1:18)|19|(1:77)(1:23)|24|25|26|(2:63|64)(1:28)|29|(8:36|(1:40)|(1:47)|48|(2:55|56)|52|53|54)|(1:62)|(1:40)|(3:42|45|47)|48|(1:50)|55|56|52|53|54) */
 | |
|     /* JADX WARN: Code restructure failed: missing block: B:58:0x00cf, code lost:
 | |
|     
 | |
|         r3 = androidx.profileinstaller.ProfileVerifier.CompilationStatus.RESULT_CODE_ERROR_CANT_WRITE_PROFILE_VERIFICATION_RESULT_CACHE_FILE;
 | |
|      */
 | |
|     /* JADX WARN: Code restructure failed: missing block: B:60:0x00a0, code lost:
 | |
|     
 | |
|         r3 = 1;
 | |
|      */
 | |
|     /*
 | |
|         Code decompiled incorrectly, please refer to instructions dump.
 | |
|         To view partially-correct add '--show-bad-code' argument
 | |
|     */
 | |
|     static androidx.profileinstaller.ProfileVerifier.CompilationStatus writeProfileVerification(android.content.Context r18, boolean r19) {
 | |
|         /*
 | |
|             Method dump skipped, instructions count: 234
 | |
|             To view this dump add '--comments-level debug' option
 | |
|         */
 | |
|         throw new UnsupportedOperationException("Method not decompiled: androidx.profileinstaller.ProfileVerifier.writeProfileVerification(android.content.Context, boolean):androidx.profileinstaller.ProfileVerifier$CompilationStatus");
 | |
|     }
 | |
| 
 | |
|     private static CompilationStatus setCompilationStatus(int i, boolean z, boolean z2) {
 | |
|         CompilationStatus compilationStatus = new CompilationStatus(i, z, z2);
 | |
|         sCompilationStatus = compilationStatus;
 | |
|         sFuture.set(compilationStatus);
 | |
|         return sCompilationStatus;
 | |
|     }
 | |
| 
 | |
|     private static long getPackageLastUpdateTime(Context context) throws PackageManager.NameNotFoundException {
 | |
|         PackageManager packageManager = context.getApplicationContext().getPackageManager();
 | |
|         if (Build.VERSION.SDK_INT >= 33) {
 | |
|             return Api33Impl.getPackageInfo(packageManager, context).lastUpdateTime;
 | |
|         }
 | |
|         return packageManager.getPackageInfo(context.getPackageName(), 0).lastUpdateTime;
 | |
|     }
 | |
| 
 | |
|     static class Cache {
 | |
|         private static final int SCHEMA = 1;
 | |
|         final long mInstalledCurrentProfileSize;
 | |
|         final long mPackageLastUpdateTime;
 | |
|         final int mResultCode;
 | |
|         final int mSchema;
 | |
| 
 | |
|         Cache(int i, int i2, long j, long j2) {
 | |
|             this.mSchema = i;
 | |
|             this.mResultCode = i2;
 | |
|             this.mPackageLastUpdateTime = j;
 | |
|             this.mInstalledCurrentProfileSize = j2;
 | |
|         }
 | |
| 
 | |
|         public boolean equals(Object obj) {
 | |
|             if (this == obj) {
 | |
|                 return true;
 | |
|             }
 | |
|             if (obj == null || !(obj instanceof Cache)) {
 | |
|                 return false;
 | |
|             }
 | |
|             Cache cache = (Cache) obj;
 | |
|             return this.mResultCode == cache.mResultCode && this.mPackageLastUpdateTime == cache.mPackageLastUpdateTime && this.mSchema == cache.mSchema && this.mInstalledCurrentProfileSize == cache.mInstalledCurrentProfileSize;
 | |
|         }
 | |
| 
 | |
|         public int hashCode() {
 | |
|             return Objects.hash(Integer.valueOf(this.mResultCode), Long.valueOf(this.mPackageLastUpdateTime), Integer.valueOf(this.mSchema), Long.valueOf(this.mInstalledCurrentProfileSize));
 | |
|         }
 | |
| 
 | |
|         void writeOnFile(File file) throws IOException {
 | |
|             file.delete();
 | |
|             DataOutputStream dataOutputStream = new DataOutputStream(new FileOutputStream(file));
 | |
|             try {
 | |
|                 dataOutputStream.writeInt(this.mSchema);
 | |
|                 dataOutputStream.writeInt(this.mResultCode);
 | |
|                 dataOutputStream.writeLong(this.mPackageLastUpdateTime);
 | |
|                 dataOutputStream.writeLong(this.mInstalledCurrentProfileSize);
 | |
|                 dataOutputStream.close();
 | |
|             } catch (Throwable th) {
 | |
|                 try {
 | |
|                     dataOutputStream.close();
 | |
|                 } catch (Throwable th2) {
 | |
|                     th.addSuppressed(th2);
 | |
|                 }
 | |
|                 throw th;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         static Cache readFromFile(File file) throws IOException {
 | |
|             DataInputStream dataInputStream = new DataInputStream(new FileInputStream(file));
 | |
|             try {
 | |
|                 Cache cache = new Cache(dataInputStream.readInt(), dataInputStream.readInt(), dataInputStream.readLong(), dataInputStream.readLong());
 | |
|                 dataInputStream.close();
 | |
|                 return cache;
 | |
|             } catch (Throwable th) {
 | |
|                 try {
 | |
|                     dataInputStream.close();
 | |
|                 } catch (Throwable th2) {
 | |
|                     th.addSuppressed(th2);
 | |
|                 }
 | |
|                 throw th;
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public static class CompilationStatus {
 | |
|         public static final int RESULT_CODE_COMPILED_WITH_PROFILE = 1;
 | |
|         public static final int RESULT_CODE_COMPILED_WITH_PROFILE_NON_MATCHING = 3;
 | |
|         public static final int RESULT_CODE_ERROR_CACHE_FILE_EXISTS_BUT_CANNOT_BE_READ = 131072;
 | |
|         public static final int RESULT_CODE_ERROR_CANT_WRITE_PROFILE_VERIFICATION_RESULT_CACHE_FILE = 196608;
 | |
|         private static final int RESULT_CODE_ERROR_CODE_BIT_SHIFT = 16;
 | |
|         public static final int RESULT_CODE_ERROR_PACKAGE_NAME_DOES_NOT_EXIST = 65536;
 | |
|         public static final int RESULT_CODE_ERROR_UNSUPPORTED_API_VERSION = 262144;
 | |
|         public static final int RESULT_CODE_NO_PROFILE = 0;
 | |
|         public static final int RESULT_CODE_PROFILE_ENQUEUED_FOR_COMPILATION = 2;
 | |
|         private final boolean mHasCurrentProfile;
 | |
|         private final boolean mHasReferenceProfile;
 | |
|         final int mResultCode;
 | |
| 
 | |
|         @Retention(RetentionPolicy.SOURCE)
 | |
|         public @interface ResultCode {
 | |
|         }
 | |
| 
 | |
|         public int getProfileInstallResultCode() {
 | |
|             return this.mResultCode;
 | |
|         }
 | |
| 
 | |
|         public boolean hasProfileEnqueuedForCompilation() {
 | |
|             return this.mHasCurrentProfile;
 | |
|         }
 | |
| 
 | |
|         public boolean isCompiledWithProfile() {
 | |
|             return this.mHasReferenceProfile;
 | |
|         }
 | |
| 
 | |
|         CompilationStatus(int i, boolean z, boolean z2) {
 | |
|             this.mResultCode = i;
 | |
|             this.mHasCurrentProfile = z2;
 | |
|             this.mHasReferenceProfile = z;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private static class Api33Impl {
 | |
|         private Api33Impl() {
 | |
|         }
 | |
| 
 | |
|         static PackageInfo getPackageInfo(PackageManager packageManager, Context context) throws PackageManager.NameNotFoundException {
 | |
|             return packageManager.getPackageInfo(context.getPackageName(), PackageManager.PackageInfoFlags.of(0L));
 | |
|         }
 | |
|     }
 | |
| }
 |