Files
rr3-apk/decompiled-community/sources/androidx/appcompat/app/AppCompatDelegate.java
Daniel Elliott c080f0d97f Add Discord community version (64-bit only)
- Added realracing3-community.apk (71.57 MB)
- Removed 32-bit support (armeabi-v7a)
- Only includes arm64-v8a libraries
- Decompiled source code included
- Added README-community.md with analysis
2026-02-18 15:48:36 -08:00

506 lines
18 KiB
Java

package androidx.appcompat.app;
import android.app.Activity;
import android.app.Dialog;
import android.app.LocaleManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.os.Build;
import android.os.Bundle;
import android.os.LocaleList;
import android.util.AttributeSet;
import android.view.MenuInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.window.OnBackInvokedDispatcher;
import androidx.annotation.AnyThread;
import androidx.annotation.CallSuper;
import androidx.annotation.DoNotInline;
import androidx.annotation.IdRes;
import androidx.annotation.LayoutRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.annotation.RestrictTo;
import androidx.annotation.StyleRes;
import androidx.annotation.VisibleForTesting;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.appcompat.view.ActionMode;
import androidx.appcompat.widget.Toolbar;
import androidx.appcompat.widget.VectorEnabledTintResources;
import androidx.collection.ArraySet;
import androidx.core.app.AppLocalesStorageHelper;
import androidx.core.os.LocaleListCompat;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.ref.WeakReference;
import java.util.ArrayDeque;
import java.util.Iterator;
import java.util.Objects;
import java.util.Queue;
import java.util.concurrent.Executor;
/* loaded from: classes.dex */
public abstract class AppCompatDelegate {
static final String APP_LOCALES_META_DATA_HOLDER_SERVICE_NAME = "androidx.appcompat.app.AppLocalesMetadataHolderService";
static final boolean DEBUG = false;
public static final int FEATURE_ACTION_MODE_OVERLAY = 10;
public static final int FEATURE_SUPPORT_ACTION_BAR = 108;
public static final int FEATURE_SUPPORT_ACTION_BAR_OVERLAY = 109;
@Deprecated
public static final int MODE_NIGHT_AUTO = 0;
public static final int MODE_NIGHT_AUTO_BATTERY = 3;
@Deprecated
public static final int MODE_NIGHT_AUTO_TIME = 0;
public static final int MODE_NIGHT_FOLLOW_SYSTEM = -1;
public static final int MODE_NIGHT_NO = 1;
public static final int MODE_NIGHT_UNSPECIFIED = -100;
public static final int MODE_NIGHT_YES = 2;
static final String TAG = "AppCompatDelegate";
static SerialExecutor sSerialExecutorForLocalesStorage = new SerialExecutor(new ThreadPerTaskExecutor());
private static int sDefaultNightMode = -100;
private static LocaleListCompat sRequestedAppLocales = null;
private static LocaleListCompat sStoredAppLocales = null;
private static Boolean sIsAutoStoreLocalesOptedIn = null;
private static boolean sIsFrameworkSyncChecked = false;
private static final ArraySet<WeakReference<AppCompatDelegate>> sActivityDelegates = new ArraySet<>();
private static final Object sActivityDelegatesLock = new Object();
private static final Object sAppLocalesStorageSyncLock = new Object();
@Retention(RetentionPolicy.SOURCE)
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
public @interface NightMode {
}
public static int getDefaultNightMode() {
return sDefaultNightMode;
}
@Nullable
public static LocaleListCompat getRequestedAppLocales() {
return sRequestedAppLocales;
}
@Nullable
public static LocaleListCompat getStoredAppLocales() {
return sStoredAppLocales;
}
@VisibleForTesting
public static void resetStaticRequestedAndStoredLocales() {
sRequestedAppLocales = null;
sStoredAppLocales = null;
}
public abstract void addContentView(View view, ViewGroup.LayoutParams layoutParams);
public boolean applyAppLocales() {
return false;
}
public abstract boolean applyDayNight();
@Deprecated
public void attachBaseContext(Context context) {
}
public abstract View createView(@Nullable View view, String str, @NonNull Context context, @NonNull AttributeSet attributeSet);
@Nullable
public abstract <T extends View> T findViewById(@IdRes int i);
@Nullable
public Context getContextForDelegate() {
return null;
}
@Nullable
public abstract ActionBarDrawerToggle.Delegate getDrawerToggleDelegate();
public int getLocalNightMode() {
return -100;
}
public abstract MenuInflater getMenuInflater();
@Nullable
public abstract ActionBar getSupportActionBar();
public abstract boolean hasWindowFeature(int i);
public abstract void installViewFactory();
public abstract void invalidateOptionsMenu();
public abstract boolean isHandleNativeActionModesEnabled();
public abstract void onConfigurationChanged(Configuration configuration);
public abstract void onCreate(Bundle bundle);
public abstract void onDestroy();
public abstract void onPostCreate(Bundle bundle);
public abstract void onPostResume();
public abstract void onSaveInstanceState(Bundle bundle);
public abstract void onStart();
public abstract void onStop();
public abstract boolean requestWindowFeature(int i);
public abstract void setContentView(@LayoutRes int i);
public abstract void setContentView(View view);
public abstract void setContentView(View view, ViewGroup.LayoutParams layoutParams);
public abstract void setHandleNativeActionModesEnabled(boolean z);
public abstract void setLocalNightMode(int i);
@RequiresApi(33)
@CallSuper
public void setOnBackInvokedDispatcher(@Nullable OnBackInvokedDispatcher onBackInvokedDispatcher) {
}
public abstract void setSupportActionBar(@Nullable Toolbar toolbar);
public void setTheme(@StyleRes int i) {
}
public abstract void setTitle(@Nullable CharSequence charSequence);
@Nullable
public abstract ActionMode startSupportActionMode(@NonNull ActionMode.Callback callback);
public static class SerialExecutor implements Executor {
Runnable mActive;
final Executor mExecutor;
private final Object mLock = new Object();
final Queue<Runnable> mTasks = new ArrayDeque();
public SerialExecutor(Executor executor) {
this.mExecutor = executor;
}
@Override // java.util.concurrent.Executor
public void execute(final Runnable runnable) {
synchronized (this.mLock) {
try {
this.mTasks.add(new Runnable() { // from class: androidx.appcompat.app.AppCompatDelegate$SerialExecutor$$ExternalSyntheticLambda0
@Override // java.lang.Runnable
public final void run() {
AppCompatDelegate.SerialExecutor.this.lambda$execute$0(runnable);
}
});
if (this.mActive == null) {
scheduleNext();
}
} catch (Throwable th) {
throw th;
}
}
}
/* JADX INFO: Access modifiers changed from: private */
public /* synthetic */ void lambda$execute$0(Runnable runnable) {
try {
runnable.run();
} finally {
scheduleNext();
}
}
public void scheduleNext() {
synchronized (this.mLock) {
try {
Runnable poll = this.mTasks.poll();
this.mActive = poll;
if (poll != null) {
this.mExecutor.execute(poll);
}
} catch (Throwable th) {
throw th;
}
}
}
}
public static class ThreadPerTaskExecutor implements Executor {
@Override // java.util.concurrent.Executor
public void execute(Runnable runnable) {
new Thread(runnable).start();
}
}
@NonNull
public static AppCompatDelegate create(@NonNull Activity activity, @Nullable AppCompatCallback appCompatCallback) {
return new AppCompatDelegateImpl(activity, appCompatCallback);
}
@NonNull
public static AppCompatDelegate create(@NonNull Dialog dialog, @Nullable AppCompatCallback appCompatCallback) {
return new AppCompatDelegateImpl(dialog, appCompatCallback);
}
@NonNull
public static AppCompatDelegate create(@NonNull Context context, @NonNull Window window, @Nullable AppCompatCallback appCompatCallback) {
return new AppCompatDelegateImpl(context, window, appCompatCallback);
}
@NonNull
public static AppCompatDelegate create(@NonNull Context context, @NonNull Activity activity, @Nullable AppCompatCallback appCompatCallback) {
return new AppCompatDelegateImpl(context, activity, appCompatCallback);
}
@NonNull
@CallSuper
public Context attachBaseContext2(@NonNull Context context) {
attachBaseContext(context);
return context;
}
public static void setDefaultNightMode(int i) {
if ((i == -1 || i == 0 || i == 1 || i == 2 || i == 3) && sDefaultNightMode != i) {
sDefaultNightMode = i;
applyDayNightToActiveDelegates();
}
}
public static void setApplicationLocales(@NonNull LocaleListCompat localeListCompat) {
Objects.requireNonNull(localeListCompat);
if (Build.VERSION.SDK_INT >= 33) {
Object localeManagerForApplication = getLocaleManagerForApplication();
if (localeManagerForApplication != null) {
Api33Impl.localeManagerSetApplicationLocales(localeManagerForApplication, Api24Impl.localeListForLanguageTags(localeListCompat.toLanguageTags()));
return;
}
return;
}
if (localeListCompat.equals(sRequestedAppLocales)) {
return;
}
synchronized (sActivityDelegatesLock) {
sRequestedAppLocales = localeListCompat;
applyLocalesToActiveDelegates();
}
}
@NonNull
@AnyThread
public static LocaleListCompat getApplicationLocales() {
if (Build.VERSION.SDK_INT >= 33) {
Object localeManagerForApplication = getLocaleManagerForApplication();
if (localeManagerForApplication != null) {
return LocaleListCompat.wrap(Api33Impl.localeManagerGetApplicationLocales(localeManagerForApplication));
}
} else {
LocaleListCompat localeListCompat = sRequestedAppLocales;
if (localeListCompat != null) {
return localeListCompat;
}
}
return LocaleListCompat.getEmptyLocaleList();
}
@VisibleForTesting
public static void setIsAutoStoreLocalesOptedIn(boolean z) {
sIsAutoStoreLocalesOptedIn = Boolean.valueOf(z);
}
@RequiresApi(33)
public static Object getLocaleManagerForApplication() {
Context contextForDelegate;
Iterator<WeakReference<AppCompatDelegate>> it = sActivityDelegates.iterator();
while (it.hasNext()) {
AppCompatDelegate appCompatDelegate = it.next().get();
if (appCompatDelegate != null && (contextForDelegate = appCompatDelegate.getContextForDelegate()) != null) {
return contextForDelegate.getSystemService("locale");
}
}
return null;
}
public static boolean isAutoStorageOptedIn(Context context) {
if (sIsAutoStoreLocalesOptedIn == null) {
try {
Bundle bundle = AppLocalesMetadataHolderService.getServiceInfo(context).metaData;
if (bundle != null) {
sIsAutoStoreLocalesOptedIn = Boolean.valueOf(bundle.getBoolean("autoStoreLocales"));
}
} catch (PackageManager.NameNotFoundException unused) {
sIsAutoStoreLocalesOptedIn = Boolean.FALSE;
}
}
return sIsAutoStoreLocalesOptedIn.booleanValue();
}
public void asyncExecuteSyncRequestedAndStoredLocales(final Context context) {
sSerialExecutorForLocalesStorage.execute(new Runnable() { // from class: androidx.appcompat.app.AppCompatDelegate$$ExternalSyntheticLambda0
@Override // java.lang.Runnable
public final void run() {
AppCompatDelegate.syncRequestedAndStoredLocales(context);
}
});
}
public static void syncRequestedAndStoredLocales(final Context context) {
if (isAutoStorageOptedIn(context)) {
if (Build.VERSION.SDK_INT >= 33) {
if (sIsFrameworkSyncChecked) {
return;
}
sSerialExecutorForLocalesStorage.execute(new Runnable() { // from class: androidx.appcompat.app.AppCompatDelegate$$ExternalSyntheticLambda1
@Override // java.lang.Runnable
public final void run() {
AppCompatDelegate.lambda$syncRequestedAndStoredLocales$1(context);
}
});
return;
}
synchronized (sAppLocalesStorageSyncLock) {
try {
LocaleListCompat localeListCompat = sRequestedAppLocales;
if (localeListCompat == null) {
if (sStoredAppLocales == null) {
sStoredAppLocales = LocaleListCompat.forLanguageTags(AppLocalesStorageHelper.readLocales(context));
}
if (sStoredAppLocales.isEmpty()) {
} else {
sRequestedAppLocales = sStoredAppLocales;
}
} else if (!localeListCompat.equals(sStoredAppLocales)) {
LocaleListCompat localeListCompat2 = sRequestedAppLocales;
sStoredAppLocales = localeListCompat2;
AppLocalesStorageHelper.persistLocales(context, localeListCompat2.toLanguageTags());
}
} catch (Throwable th) {
throw th;
}
}
}
}
/* JADX INFO: Access modifiers changed from: private */
public static /* synthetic */ void lambda$syncRequestedAndStoredLocales$1(Context context) {
syncLocalesToFramework(context);
sIsFrameworkSyncChecked = true;
}
public static void setCompatVectorFromResourcesEnabled(boolean z) {
VectorEnabledTintResources.setCompatVectorFromResourcesEnabled(z);
}
public static boolean isCompatVectorFromResourcesEnabled() {
return VectorEnabledTintResources.isCompatVectorFromResourcesEnabled();
}
public static void addActiveDelegate(@NonNull AppCompatDelegate appCompatDelegate) {
synchronized (sActivityDelegatesLock) {
removeDelegateFromActives(appCompatDelegate);
sActivityDelegates.add(new WeakReference<>(appCompatDelegate));
}
}
public static void removeActivityDelegate(@NonNull AppCompatDelegate appCompatDelegate) {
synchronized (sActivityDelegatesLock) {
removeDelegateFromActives(appCompatDelegate);
}
}
public 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 (getApplicationLocales().isEmpty()) {
String readLocales = AppLocalesStorageHelper.readLocales(context);
Object systemService = context.getSystemService("locale");
if (systemService != null) {
Api33Impl.localeManagerSetApplicationLocales(systemService, Api24Impl.localeListForLanguageTags(readLocales));
}
}
context.getPackageManager().setComponentEnabledSetting(componentName, 1, 1);
}
}
}
private static void removeDelegateFromActives(@NonNull AppCompatDelegate appCompatDelegate) {
synchronized (sActivityDelegatesLock) {
try {
Iterator<WeakReference<AppCompatDelegate>> it = sActivityDelegates.iterator();
while (it.hasNext()) {
AppCompatDelegate appCompatDelegate2 = it.next().get();
if (appCompatDelegate2 == appCompatDelegate || appCompatDelegate2 == null) {
it.remove();
}
}
} catch (Throwable th) {
throw th;
}
}
}
private static void applyDayNightToActiveDelegates() {
synchronized (sActivityDelegatesLock) {
try {
Iterator<WeakReference<AppCompatDelegate>> it = sActivityDelegates.iterator();
while (it.hasNext()) {
AppCompatDelegate appCompatDelegate = it.next().get();
if (appCompatDelegate != null) {
appCompatDelegate.applyDayNight();
}
}
} catch (Throwable th) {
throw th;
}
}
}
private static void applyLocalesToActiveDelegates() {
Iterator<WeakReference<AppCompatDelegate>> it = sActivityDelegates.iterator();
while (it.hasNext()) {
AppCompatDelegate appCompatDelegate = it.next().get();
if (appCompatDelegate != null) {
appCompatDelegate.applyAppLocales();
}
}
}
@RequiresApi(24)
public static class Api24Impl {
private Api24Impl() {
}
@DoNotInline
public static LocaleList localeListForLanguageTags(String str) {
return LocaleList.forLanguageTags(str);
}
}
@RequiresApi(33)
public static class Api33Impl {
private Api33Impl() {
}
@DoNotInline
public static void localeManagerSetApplicationLocales(Object obj, LocaleList localeList) {
((LocaleManager) obj).setApplicationLocales(localeList);
}
@DoNotInline
public static LocaleList localeManagerGetApplicationLocales(Object obj) {
return ((LocaleManager) obj).getApplicationLocales();
}
}
}