237 lines
9.8 KiB
Java
237 lines
9.8 KiB
Java
package androidx.appcompat.app;
|
|
|
|
import android.content.ComponentName;
|
|
import android.content.Context;
|
|
import android.os.Build;
|
|
import android.util.Log;
|
|
import android.util.Xml;
|
|
import androidx.appcompat.app.AppCompatDelegate;
|
|
import androidx.appcompat.app.AppLocalesStorageHelper;
|
|
import java.io.FileNotFoundException;
|
|
import java.io.FileOutputStream;
|
|
import java.io.IOException;
|
|
import java.util.ArrayDeque;
|
|
import java.util.Queue;
|
|
import java.util.concurrent.Executor;
|
|
import org.xmlpull.v1.XmlSerializer;
|
|
|
|
/* loaded from: classes.dex */
|
|
class AppLocalesStorageHelper {
|
|
static final String APPLICATION_LOCALES_RECORD_FILE = "androidx.appcompat.app.AppCompatDelegate.application_locales_record_file";
|
|
static final String APP_LOCALES_META_DATA_HOLDER_SERVICE_NAME = "androidx.appcompat.app.AppLocalesMetadataHolderService";
|
|
static final String LOCALE_RECORD_ATTRIBUTE_TAG = "application_locales";
|
|
static final String LOCALE_RECORD_FILE_TAG = "locales";
|
|
static final String TAG = "AppLocalesStorageHelper";
|
|
|
|
private AppLocalesStorageHelper() {
|
|
}
|
|
|
|
/* JADX WARN: Code restructure failed: missing block: B:14:0x0040, code lost:
|
|
|
|
if (r3 != null) goto L40;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:22:0x0042, code lost:
|
|
|
|
r3.close();
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:33:0x0039, code lost:
|
|
|
|
r2 = r4.getAttributeValue(null, androidx.appcompat.app.AppLocalesStorageHelper.LOCALE_RECORD_ATTRIBUTE_TAG);
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:43:0x004f, code lost:
|
|
|
|
if (r3 == null) goto L27;
|
|
*/
|
|
/*
|
|
Code decompiled incorrectly, please refer to instructions dump.
|
|
To view partially-correct add '--show-bad-code' argument
|
|
*/
|
|
static java.lang.String readLocales(android.content.Context r9) {
|
|
/*
|
|
java.lang.String r0 = "androidx.appcompat.app.AppCompatDelegate.application_locales_record_file"
|
|
java.lang.String r1 = "AppLocalesStorageHelper"
|
|
java.lang.String r2 = ""
|
|
java.io.FileInputStream r3 = r9.openFileInput(r0) // Catch: java.io.FileNotFoundException -> L74
|
|
org.xmlpull.v1.XmlPullParser r4 = android.util.Xml.newPullParser() // Catch: java.lang.Throwable -> L48 java.lang.Throwable -> L4a
|
|
java.lang.String r5 = "UTF-8"
|
|
r4.setInput(r3, r5) // Catch: java.lang.Throwable -> L48 java.lang.Throwable -> L4a
|
|
int r5 = r4.getDepth() // Catch: java.lang.Throwable -> L48 java.lang.Throwable -> L4a
|
|
L17:
|
|
int r6 = r4.next() // Catch: java.lang.Throwable -> L48 java.lang.Throwable -> L4a
|
|
r7 = 1
|
|
if (r6 == r7) goto L40
|
|
r7 = 3
|
|
if (r6 != r7) goto L27
|
|
int r8 = r4.getDepth() // Catch: java.lang.Throwable -> L48 java.lang.Throwable -> L4a
|
|
if (r8 <= r5) goto L40
|
|
L27:
|
|
if (r6 == r7) goto L17
|
|
r7 = 4
|
|
if (r6 != r7) goto L2d
|
|
goto L17
|
|
L2d:
|
|
java.lang.String r6 = r4.getName() // Catch: java.lang.Throwable -> L48 java.lang.Throwable -> L4a
|
|
java.lang.String r7 = "locales"
|
|
boolean r6 = r6.equals(r7) // Catch: java.lang.Throwable -> L48 java.lang.Throwable -> L4a
|
|
if (r6 == 0) goto L17
|
|
java.lang.String r5 = "application_locales"
|
|
r6 = 0
|
|
java.lang.String r2 = r4.getAttributeValue(r6, r5) // Catch: java.lang.Throwable -> L48 java.lang.Throwable -> L4a
|
|
L40:
|
|
if (r3 == 0) goto L52
|
|
L42:
|
|
r3.close() // Catch: java.io.IOException -> L46
|
|
goto L52
|
|
L46:
|
|
goto L52
|
|
L48:
|
|
r9 = move-exception
|
|
goto L6e
|
|
L4a:
|
|
java.lang.String r4 = "Reading app Locales : Unable to parse through file :androidx.appcompat.app.AppCompatDelegate.application_locales_record_file"
|
|
android.util.Log.w(r1, r4) // Catch: java.lang.Throwable -> L48
|
|
if (r3 == 0) goto L52
|
|
goto L42
|
|
L52:
|
|
boolean r3 = r2.isEmpty()
|
|
if (r3 != 0) goto L6a
|
|
java.lang.StringBuilder r9 = new java.lang.StringBuilder
|
|
java.lang.String r0 = "Reading app Locales : Locales read from file: androidx.appcompat.app.AppCompatDelegate.application_locales_record_file , appLocales: "
|
|
r9.<init>(r0)
|
|
r9.append(r2)
|
|
java.lang.String r9 = r9.toString()
|
|
android.util.Log.d(r1, r9)
|
|
goto L6d
|
|
L6a:
|
|
r9.deleteFile(r0)
|
|
L6d:
|
|
return r2
|
|
L6e:
|
|
if (r3 == 0) goto L73
|
|
r3.close() // Catch: java.io.IOException -> L73
|
|
L73:
|
|
throw r9
|
|
L74:
|
|
java.lang.String r9 = "Reading app Locales : Locales record file not found: androidx.appcompat.app.AppCompatDelegate.application_locales_record_file"
|
|
android.util.Log.w(r1, r9)
|
|
return r2
|
|
*/
|
|
throw new UnsupportedOperationException("Method not decompiled: androidx.appcompat.app.AppLocalesStorageHelper.readLocales(android.content.Context):java.lang.String");
|
|
}
|
|
|
|
static void persistLocales(Context context, String str) {
|
|
if (str.equals("")) {
|
|
context.deleteFile(APPLICATION_LOCALES_RECORD_FILE);
|
|
return;
|
|
}
|
|
try {
|
|
FileOutputStream openFileOutput = context.openFileOutput(APPLICATION_LOCALES_RECORD_FILE, 0);
|
|
XmlSerializer newSerializer = Xml.newSerializer();
|
|
try {
|
|
try {
|
|
newSerializer.setOutput(openFileOutput, null);
|
|
newSerializer.startDocument("UTF-8", true);
|
|
newSerializer.startTag(null, LOCALE_RECORD_FILE_TAG);
|
|
newSerializer.attribute(null, LOCALE_RECORD_ATTRIBUTE_TAG, str);
|
|
newSerializer.endTag(null, LOCALE_RECORD_FILE_TAG);
|
|
newSerializer.endDocument();
|
|
Log.d(TAG, "Storing App Locales : app-locales: " + str + " persisted successfully.");
|
|
if (openFileOutput == null) {
|
|
return;
|
|
}
|
|
} catch (Exception e) {
|
|
Log.w(TAG, "Storing App Locales : Failed to persist app-locales: " + str, e);
|
|
if (openFileOutput == null) {
|
|
return;
|
|
}
|
|
}
|
|
try {
|
|
openFileOutput.close();
|
|
} catch (IOException unused) {
|
|
}
|
|
} catch (Throwable th) {
|
|
if (openFileOutput != null) {
|
|
try {
|
|
openFileOutput.close();
|
|
} catch (IOException unused2) {
|
|
}
|
|
}
|
|
throw th;
|
|
}
|
|
} catch (FileNotFoundException unused3) {
|
|
Log.w(TAG, String.format("Storing App Locales : FileNotFoundException: Cannot open file %s for writing ", APPLICATION_LOCALES_RECORD_FILE));
|
|
}
|
|
}
|
|
|
|
static void syncLocalesToFramework(Context context) {
|
|
if (Build.VERSION.SDK_INT >= 33) {
|
|
ComponentName componentName = new ComponentName(context, APP_LOCALES_META_DATA_HOLDER_SERVICE_NAME);
|
|
if (context.getPackageManager().getComponentEnabledSetting(componentName) != 1) {
|
|
if (AppCompatDelegate.getApplicationLocales().isEmpty()) {
|
|
String readLocales = readLocales(context);
|
|
Object systemService = context.getSystemService("locale");
|
|
if (systemService != null) {
|
|
AppCompatDelegate.Api33Impl.localeManagerSetApplicationLocales(systemService, AppCompatDelegate.Api24Impl.localeListForLanguageTags(readLocales));
|
|
}
|
|
}
|
|
context.getPackageManager().setComponentEnabledSetting(componentName, 1, 1);
|
|
}
|
|
}
|
|
}
|
|
|
|
static class ThreadPerTaskExecutor implements Executor {
|
|
ThreadPerTaskExecutor() {
|
|
}
|
|
|
|
@Override // java.util.concurrent.Executor
|
|
public void execute(Runnable runnable) {
|
|
new Thread(runnable).start();
|
|
}
|
|
}
|
|
|
|
static class SerialExecutor implements Executor {
|
|
Runnable mActive;
|
|
final Executor mExecutor;
|
|
private final Object mLock = new Object();
|
|
final Queue<Runnable> mTasks = new ArrayDeque();
|
|
|
|
SerialExecutor(Executor executor) {
|
|
this.mExecutor = executor;
|
|
}
|
|
|
|
@Override // java.util.concurrent.Executor
|
|
public void execute(final Runnable runnable) {
|
|
synchronized (this.mLock) {
|
|
this.mTasks.add(new Runnable() { // from class: androidx.appcompat.app.AppLocalesStorageHelper$SerialExecutor$$ExternalSyntheticLambda0
|
|
@Override // java.lang.Runnable
|
|
public final void run() {
|
|
AppLocalesStorageHelper.SerialExecutor.this.m43xd188c474(runnable);
|
|
}
|
|
});
|
|
if (this.mActive == null) {
|
|
scheduleNext();
|
|
}
|
|
}
|
|
}
|
|
|
|
/* renamed from: lambda$execute$0$androidx-appcompat-app-AppLocalesStorageHelper$SerialExecutor, reason: not valid java name */
|
|
/* synthetic */ void m43xd188c474(Runnable runnable) {
|
|
try {
|
|
runnable.run();
|
|
} finally {
|
|
scheduleNext();
|
|
}
|
|
}
|
|
|
|
protected void scheduleNext() {
|
|
synchronized (this.mLock) {
|
|
Runnable poll = this.mTasks.poll();
|
|
this.mActive = poll;
|
|
if (poll != null) {
|
|
this.mExecutor.execute(poll);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|