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);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 |