package androidx.profileinstaller; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.res.AssetManager; import android.util.Log; import androidx.media3.exoplayer.offline.DefaultDownloaderFactory$$ExternalSyntheticLambda0; import androidx.profileinstaller.ProfileInstaller; 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.concurrent.Executor; /* loaded from: classes2.dex */ public class ProfileInstaller { public static final int DIAGNOSTIC_CURRENT_PROFILE_DOES_NOT_EXIST = 2; public static final int DIAGNOSTIC_CURRENT_PROFILE_EXISTS = 1; public static final int DIAGNOSTIC_PROFILE_IS_COMPRESSED = 5; public static final int DIAGNOSTIC_REF_PROFILE_DOES_NOT_EXIST = 4; public static final int DIAGNOSTIC_REF_PROFILE_EXISTS = 3; private static final DiagnosticsCallback EMPTY_DIAGNOSTICS = new DiagnosticsCallback() { // from class: androidx.profileinstaller.ProfileInstaller.1 @Override // androidx.profileinstaller.ProfileInstaller.DiagnosticsCallback public void onDiagnosticReceived(int i, Object obj) { } @Override // androidx.profileinstaller.ProfileInstaller.DiagnosticsCallback public void onResultReceived(int i, Object obj) { } }; static final DiagnosticsCallback LOG_DIAGNOSTICS = new DiagnosticsCallback() { // from class: androidx.profileinstaller.ProfileInstaller.2 static final String TAG = "ProfileInstaller"; @Override // androidx.profileinstaller.ProfileInstaller.DiagnosticsCallback public void onDiagnosticReceived(int i, Object obj) { Log.d(TAG, i != 1 ? i != 2 ? i != 3 ? i != 4 ? i != 5 ? "" : "DIAGNOSTIC_PROFILE_IS_COMPRESSED" : "DIAGNOSTIC_REF_PROFILE_DOES_NOT_EXIST" : "DIAGNOSTIC_REF_PROFILE_EXISTS" : "DIAGNOSTIC_CURRENT_PROFILE_DOES_NOT_EXIST" : "DIAGNOSTIC_CURRENT_PROFILE_EXISTS"); } @Override // androidx.profileinstaller.ProfileInstaller.DiagnosticsCallback public void onResultReceived(int i, Object obj) { String str; switch (i) { case 1: str = "RESULT_INSTALL_SUCCESS"; break; case 2: str = "RESULT_ALREADY_INSTALLED"; break; case 3: str = "RESULT_UNSUPPORTED_ART_VERSION"; break; case 4: str = "RESULT_NOT_WRITABLE"; break; case 5: str = "RESULT_DESIRED_FORMAT_UNSUPPORTED"; break; case 6: str = "RESULT_BASELINE_PROFILE_NOT_FOUND"; break; case 7: str = "RESULT_IO_EXCEPTION"; break; case 8: str = "RESULT_PARSE_EXCEPTION"; break; case 9: default: str = ""; break; case 10: str = "RESULT_INSTALL_SKIP_FILE_SUCCESS"; break; case 11: str = "RESULT_DELETE_SKIP_FILE_SUCCESS"; break; } if (i == 6 || i == 7 || i == 8) { Log.e(TAG, str, (Throwable) obj); } else { Log.d(TAG, str); } } }; private static final String PROFILE_BASE_DIR = "/data/misc/profiles/cur/0"; private static final String PROFILE_FILE = "primary.prof"; private static final String PROFILE_INSTALLER_SKIP_FILE_NAME = "profileinstaller_profileWrittenFor_lastUpdateTime.dat"; private static final String PROFILE_META_LOCATION = "dexopt/baseline.profm"; private static final String PROFILE_SOURCE_LOCATION = "dexopt/baseline.prof"; public static final int RESULT_ALREADY_INSTALLED = 2; public static final int RESULT_BASELINE_PROFILE_NOT_FOUND = 6; public static final int RESULT_BENCHMARK_OPERATION_FAILURE = 15; public static final int RESULT_BENCHMARK_OPERATION_SUCCESS = 14; public static final int RESULT_BENCHMARK_OPERATION_UNKNOWN = 16; public static final int RESULT_DELETE_SKIP_FILE_SUCCESS = 11; public static final int RESULT_DESIRED_FORMAT_UNSUPPORTED = 5; public static final int RESULT_INSTALL_SKIP_FILE_SUCCESS = 10; public static final int RESULT_INSTALL_SUCCESS = 1; public static final int RESULT_IO_EXCEPTION = 7; public static final int RESULT_META_FILE_REQUIRED_BUT_NOT_FOUND = 9; public static final int RESULT_NOT_WRITABLE = 4; public static final int RESULT_PARSE_EXCEPTION = 8; public static final int RESULT_SAVE_PROFILE_SIGNALLED = 12; public static final int RESULT_SAVE_PROFILE_SKIPPED = 13; public static final int RESULT_UNSUPPORTED_ART_VERSION = 3; private static final String TAG = "ProfileInstaller"; @Retention(RetentionPolicy.SOURCE) /* loaded from: classes2.dex */ public @interface DiagnosticCode { } /* loaded from: classes2.dex */ public interface DiagnosticsCallback { void onDiagnosticReceived(int i, Object obj); void onResultReceived(int i, Object obj); } @Retention(RetentionPolicy.SOURCE) /* loaded from: classes2.dex */ public @interface ResultCode { } private ProfileInstaller() { } static void result(Executor executor, final DiagnosticsCallback diagnosticsCallback, final int i, final Object obj) { executor.execute(new Runnable() { // from class: androidx.profileinstaller.ProfileInstaller$$ExternalSyntheticLambda0 @Override // java.lang.Runnable public final void run() { ProfileInstaller.DiagnosticsCallback.this.onResultReceived(i, obj); } }); } static void diagnostic(Executor executor, final DiagnosticsCallback diagnosticsCallback, final int i, final Object obj) { executor.execute(new Runnable() { // from class: androidx.profileinstaller.ProfileInstaller$$ExternalSyntheticLambda1 @Override // java.lang.Runnable public final void run() { ProfileInstaller.DiagnosticsCallback.this.onDiagnosticReceived(i, obj); } }); } static boolean hasAlreadyWrittenProfileForThisInstall(PackageInfo packageInfo, File file, DiagnosticsCallback diagnosticsCallback) { File file2 = new File(file, PROFILE_INSTALLER_SKIP_FILE_NAME); if (!file2.exists()) { return false; } try { DataInputStream dataInputStream = new DataInputStream(new FileInputStream(file2)); try { long readLong = dataInputStream.readLong(); dataInputStream.close(); boolean z = readLong == packageInfo.lastUpdateTime; if (z) { diagnosticsCallback.onResultReceived(2, null); } return z; } finally { } } catch (IOException unused) { return false; } } static void noteProfileWrittenFor(PackageInfo packageInfo, File file) { try { DataOutputStream dataOutputStream = new DataOutputStream(new FileOutputStream(new File(file, PROFILE_INSTALLER_SKIP_FILE_NAME))); try { dataOutputStream.writeLong(packageInfo.lastUpdateTime); dataOutputStream.close(); } finally { } } catch (IOException unused) { } } static boolean deleteProfileWrittenFor(File file) { return new File(file, PROFILE_INSTALLER_SKIP_FILE_NAME).delete(); } private static boolean transcodeAndWrite(AssetManager assetManager, String str, PackageInfo packageInfo, File file, String str2, Executor executor, DiagnosticsCallback diagnosticsCallback) { DeviceProfileWriter deviceProfileWriter = new DeviceProfileWriter(assetManager, executor, diagnosticsCallback, str2, PROFILE_SOURCE_LOCATION, PROFILE_META_LOCATION, new File(new File(PROFILE_BASE_DIR, str), PROFILE_FILE)); if (!deviceProfileWriter.deviceAllowsProfileInstallerAotWrites()) { return false; } boolean write = deviceProfileWriter.read().transcodeIfNeeded().write(); if (write) { noteProfileWrittenFor(packageInfo, file); } return write; } public static void writeProfile(Context context) { writeProfile(context, new DefaultDownloaderFactory$$ExternalSyntheticLambda0(), EMPTY_DIAGNOSTICS); } public static void writeProfile(Context context, Executor executor, DiagnosticsCallback diagnosticsCallback) { writeProfile(context, executor, diagnosticsCallback, false); } /* JADX INFO: Access modifiers changed from: package-private */ public static void writeProfile(Context context, Executor executor, DiagnosticsCallback diagnosticsCallback, boolean z) { Context applicationContext = context.getApplicationContext(); String packageName = applicationContext.getPackageName(); ApplicationInfo applicationInfo = applicationContext.getApplicationInfo(); AssetManager assets = applicationContext.getAssets(); String name = new File(applicationInfo.sourceDir).getName(); boolean z2 = false; try { PackageInfo packageInfo = context.getPackageManager().getPackageInfo(packageName, 0); File filesDir = context.getFilesDir(); if (z || !hasAlreadyWrittenProfileForThisInstall(packageInfo, filesDir, diagnosticsCallback)) { Log.d(TAG, "Installing profile for " + context.getPackageName()); if (transcodeAndWrite(assets, packageName, packageInfo, filesDir, name, executor, diagnosticsCallback) && z) { z2 = true; } ProfileVerifier.writeProfileVerification(context, z2); return; } Log.d(TAG, "Skipping profile installation for " + context.getPackageName()); ProfileVerifier.writeProfileVerification(context, false); } catch (PackageManager.NameNotFoundException e) { diagnosticsCallback.onResultReceived(7, e); ProfileVerifier.writeProfileVerification(context, false); } } /* JADX INFO: Access modifiers changed from: package-private */ public static void writeSkipFile(Context context, Executor executor, DiagnosticsCallback diagnosticsCallback) { try { noteProfileWrittenFor(context.getPackageManager().getPackageInfo(context.getApplicationContext().getPackageName(), 0), context.getFilesDir()); result(executor, diagnosticsCallback, 10, null); } catch (PackageManager.NameNotFoundException e) { result(executor, diagnosticsCallback, 7, e); } } /* JADX INFO: Access modifiers changed from: package-private */ public static void deleteSkipFile(Context context, Executor executor, DiagnosticsCallback diagnosticsCallback) { deleteProfileWrittenFor(context.getFilesDir()); result(executor, diagnosticsCallback, 11, null); } }