package androidx.core.graphics; import android.content.Context; import android.content.res.Resources; import android.net.Uri; import android.os.CancellationSignal; import android.os.ParcelFileDescriptor; import android.os.Process; import android.os.StrictMode; import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import androidx.annotation.RestrictTo; import androidx.core.provider.FontsContractCompat; import b.d.b.a.a; import java.io.Closeable; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.nio.ByteBuffer; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; import java.util.Collections; import java.util.HashMap; import java.util.Map; @RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX}) /* loaded from: classes.dex */ public class TypefaceCompatUtil { private static final String CACHE_FILE_PREFIX = ".font"; private static final String TAG = "TypefaceCompatUtil"; private TypefaceCompatUtil() { } public static void closeQuietly(Closeable closeable) { if (closeable != null) { try { closeable.close(); } catch (IOException unused) { } } } @Nullable @RequiresApi(19) public static ByteBuffer copyToDirectBuffer(Context context, Resources resources, int i) { File tempFile = getTempFile(context); if (tempFile == null) { return null; } try { if (!copyToFile(tempFile, resources, i)) { return null; } return mmap(tempFile); } finally { tempFile.delete(); } } public static boolean copyToFile(File file, Resources resources, int i) { InputStream inputStream; Throwable th; try { inputStream = resources.openRawResource(i); try { boolean copyToFile = copyToFile(file, inputStream); closeQuietly(inputStream); return copyToFile; } catch (Throwable th2) { th = th2; closeQuietly(inputStream); throw th; } } catch (Throwable th3) { th = th3; inputStream = null; } } public static boolean copyToFile(File file, InputStream inputStream) { Throwable th; IOException e; FileOutputStream fileOutputStream; StrictMode.ThreadPolicy allowThreadDiskWrites = StrictMode.allowThreadDiskWrites(); FileOutputStream fileOutputStream2 = null; try { try { fileOutputStream = new FileOutputStream(file, false); } catch (IOException e2) { e = e2; } } catch (Throwable th2) { th = th2; } try { byte[] bArr = new byte[1024]; while (true) { int read = inputStream.read(bArr); if (read != -1) { fileOutputStream.write(bArr, 0, read); } else { closeQuietly(fileOutputStream); StrictMode.setThreadPolicy(allowThreadDiskWrites); return true; } } } catch (IOException e3) { e = e3; fileOutputStream2 = fileOutputStream; Log.e(TAG, "Error copying resource contents to temp file: " + e.getMessage()); closeQuietly(fileOutputStream2); StrictMode.setThreadPolicy(allowThreadDiskWrites); return false; } catch (Throwable th3) { th = th3; fileOutputStream2 = fileOutputStream; closeQuietly(fileOutputStream2); StrictMode.setThreadPolicy(allowThreadDiskWrites); throw th; } } @Nullable public static File getTempFile(Context context) { File cacheDir = context.getCacheDir(); if (cacheDir == null) { return null; } StringBuilder R = a.R(CACHE_FILE_PREFIX); R.append(Process.myPid()); R.append("-"); R.append(Process.myTid()); R.append("-"); String sb = R.toString(); for (int i = 0; i < 100; i++) { File file = new File(cacheDir, a.p(sb, i)); if (file.createNewFile()) { return file; } } return null; } @Nullable @RequiresApi(19) public static ByteBuffer mmap(Context context, CancellationSignal cancellationSignal, Uri uri) { try { ParcelFileDescriptor openFileDescriptor = context.getContentResolver().openFileDescriptor(uri, "r", cancellationSignal); if (openFileDescriptor == null) { if (openFileDescriptor != null) { openFileDescriptor.close(); } return null; } FileInputStream fileInputStream = new FileInputStream(openFileDescriptor.getFileDescriptor()); try { FileChannel channel = fileInputStream.getChannel(); MappedByteBuffer map = channel.map(FileChannel.MapMode.READ_ONLY, 0L, channel.size()); fileInputStream.close(); openFileDescriptor.close(); return map; } catch (Throwable th) { try { fileInputStream.close(); } catch (Throwable th2) { th.addSuppressed(th2); } throw th; } } catch (IOException unused) { return null; } } @Nullable @RequiresApi(19) private static ByteBuffer mmap(File file) { try { FileInputStream fileInputStream = new FileInputStream(file); FileChannel channel = fileInputStream.getChannel(); MappedByteBuffer map = channel.map(FileChannel.MapMode.READ_ONLY, 0L, channel.size()); fileInputStream.close(); return map; } catch (IOException unused) { return null; } } @NonNull @RequiresApi(19) @RestrictTo({RestrictTo.Scope.LIBRARY}) public static Map readFontInfoIntoByteBuffer(@NonNull Context context, @NonNull FontsContractCompat.FontInfo[] fontInfoArr, @Nullable CancellationSignal cancellationSignal) { HashMap hashMap = new HashMap(); for (FontsContractCompat.FontInfo fontInfo : fontInfoArr) { if (fontInfo.getResultCode() == 0) { Uri uri = fontInfo.getUri(); if (!hashMap.containsKey(uri)) { hashMap.put(uri, mmap(context, cancellationSignal, uri)); } } } return Collections.unmodifiableMap(hashMap); } }